diff options
author | 2023-06-01 21:16:47 -0400 | |
---|---|---|
committer | 2023-06-01 18:16:47 -0700 | |
commit | 4df1d37ddc54242c339765f22fb90ba2e9e3a99a (patch) | |
tree | d63ede76463e7ecba78a4d4b31e5e8158193552f /src/bun.js/builtins/codegen/replacements.ts | |
parent | 03ffd1c732aaaa30b5481f197221ce96da559e63 (diff) | |
download | bun-4df1d37ddc54242c339765f22fb90ba2e9e3a99a.tar.gz bun-4df1d37ddc54242c339765f22fb90ba2e9e3a99a.tar.zst bun-4df1d37ddc54242c339765f22fb90ba2e9e3a99a.zip |
Bundle and minify `.exports.js` files. (#3036)
* move all exports.js into src/js
* finalize the sort of this
* and it works
* add test.ts to gitignore
* okay
* convert some to ts just to show
* finish up
* fixup makefile
* minify syntax in dev
* finish rebase
* dont minify all modules
* merge
* finish rebase merge
* flaky test that hangs
Diffstat (limited to 'src/bun.js/builtins/codegen/replacements.ts')
-rw-r--r-- | src/bun.js/builtins/codegen/replacements.ts | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/src/bun.js/builtins/codegen/replacements.ts b/src/bun.js/builtins/codegen/replacements.ts deleted file mode 100644 index 05c81b901..000000000 --- a/src/bun.js/builtins/codegen/replacements.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { LoaderKeys } from "../../../api/schema"; - -// This is a list of extra syntax replacements to do. Kind of like macros -// These are only run on code itself, not string contents or comments. -export const replacements: ReplacementRule[] = [ - { from: /\bthrow new TypeError\b/g, to: "$throwTypeError" }, - { from: /\bthrow new RangeError\b/g, to: "$throwRangeError" }, - { from: /\bthrow new OutOfMemoryError\b/g, to: "$throwOutOfMemoryError" }, - { from: /\bnew TypeError\b/g, to: "$makeTypeError" }, -]; - -// These rules are run on the entire file, including within strings. -export const globalReplacements: ReplacementRule[] = [ - { - from: /\bnotImplementedIssue\(\s*([0-9]+)\s*,\s*((?:"[^"]*"|'[^']+'))\s*\)/g, - to: "new TypeError(`${$2} is not implemented yet. See https://github.com/oven-sh/bun/issues/$1`)", - }, - { - from: /\bnotImplementedIssueFn\(\s*([0-9]+)\s*,\s*((?:"[^"]*"|'[^']+'))\s*\)/g, - to: "() => $throwTypeError(`${$2} is not implemented yet. See https://github.com/oven-sh/bun/issues/$1`)", - }, -]; - -// This is a list of globals we should access using @ notation -// undefined -> __intrinsic__undefined -> @undefined -export const globalsToPrefix = [ - "AbortSignal", - "Array", - "ArrayBuffer", - "Buffer", - "Bun", - "Infinity", - "Loader", - "Promise", - "ReadableByteStreamController", - "ReadableStream", - "ReadableStreamBYOBReader", - "ReadableStreamBYOBRequest", - "ReadableStreamDefaultController", - "ReadableStreamDefaultReader", - "TransformStream", - "TransformStreamDefaultController", - "Uint8Array", - "WritableStream", - "WritableStreamDefaultController", - "WritableStreamDefaultWriter", - "isFinite", - "isNaN", - "undefined", -]; - -// These enums map to $<enum>IdToLabel and $<enum>LabelToId -// Make sure to define in ./builtins.d.ts -export const enums = { - Loader: LoaderKeys, - ImportKind: [ - "entry-point", - "import-statement", - "require-call", - "dynamic-import", - "require-resolve", - "import-rule", - "url-token", - "internal", - ], -}; - -// These identifiers have typedef but not present at runtime (converted with replacements) -// If they are present in the bundle after runtime, we warn at the user. -// TODO: implement this check. -export const warnOnIdentifiersNotPresentAtRuntime = [ - // - "OutOfMemoryError", - "notImplementedIssue", - "notImplementedIssueFn", -]; - -export interface ReplacementRule { - from: RegExp; - to: string; - global?: boolean; -} - -/** Applies source code replacements as defined in `replacements` */ -export function applyReplacements(src: string) { - let result = src.replace(/\$([a-zA-Z0-9_]+)\b/gm, `__intrinsic__$1`); - for (const replacement of replacements) { - result = result.replace(replacement.from, replacement.to.replaceAll("$", "__intrinsic__")); - } - return result; -} - -/** Applies source code replacements as defined in `globalReplacements` */ -export function applyGlobalReplacements(src: string) { - let result = src; - for (const replacement of globalReplacements) { - result = result.replace(replacement.from, replacement.to.replaceAll("$", "__intrinsic__")); - } - return result; -} |