aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/builtins/codegen/replacements.ts
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-06-01 21:16:47 -0400
committerGravatar GitHub <noreply@github.com> 2023-06-01 18:16:47 -0700
commit4df1d37ddc54242c339765f22fb90ba2e9e3a99a (patch)
treed63ede76463e7ecba78a4d4b31e5e8158193552f /src/bun.js/builtins/codegen/replacements.ts
parent03ffd1c732aaaa30b5481f197221ce96da559e63 (diff)
downloadbun-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.ts100
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;
-}