@expo/metro-config 0.17.2 → 0.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/build/ExpoMetroConfig.js +239 -366
  2. package/build/ExpoMetroConfig.js.map +1 -1
  3. package/build/babel-core.js +6 -23
  4. package/build/babel-core.js.map +1 -1
  5. package/build/babel-transformer.js +117 -162
  6. package/build/babel-transformer.js.map +1 -1
  7. package/build/customizeFrame.js +84 -78
  8. package/build/customizeFrame.js.map +1 -1
  9. package/build/env.js +23 -37
  10. package/build/env.js.map +1 -1
  11. package/build/file-store.js +13 -21
  12. package/build/file-store.js.map +1 -1
  13. package/build/getModulesPaths.js +31 -48
  14. package/build/getModulesPaths.js.map +1 -1
  15. package/build/getWatchFolders.js +70 -98
  16. package/build/getWatchFolders.js.map +1 -1
  17. package/build/loadBabelConfig.js +30 -49
  18. package/build/loadBabelConfig.js.map +1 -1
  19. package/build/rewriteRequestUrl.js +82 -142
  20. package/build/rewriteRequestUrl.js.map +1 -1
  21. package/build/serializer/debugId.js +23 -22
  22. package/build/serializer/debugId.js.map +1 -1
  23. package/build/serializer/environmentVariableSerializerPlugin.js +90 -101
  24. package/build/serializer/environmentVariableSerializerPlugin.js.map +1 -1
  25. package/build/serializer/exportHermes.js +96 -133
  26. package/build/serializer/exportHermes.js.map +1 -1
  27. package/build/serializer/exportPath.js +18 -35
  28. package/build/serializer/exportPath.js.map +1 -1
  29. package/build/serializer/fork/baseJSBundle.js +124 -147
  30. package/build/serializer/fork/baseJSBundle.js.map +1 -1
  31. package/build/serializer/fork/js.js +81 -116
  32. package/build/serializer/fork/js.js.map +1 -1
  33. package/build/serializer/fork/processModules.js +22 -36
  34. package/build/serializer/fork/processModules.js.map +1 -1
  35. package/build/serializer/getCssDeps.js +64 -95
  36. package/build/serializer/getCssDeps.js.map +1 -1
  37. package/build/serializer/jsOutput.js +6 -16
  38. package/build/serializer/jsOutput.js.map +1 -1
  39. package/build/serializer/serializeChunks.js +406 -483
  40. package/build/serializer/serializeChunks.js.map +1 -1
  41. package/build/serializer/serializerAssets.js +1 -0
  42. package/build/serializer/serializerAssets.js.map +1 -1
  43. package/build/serializer/withExpoSerializers.js +165 -236
  44. package/build/serializer/withExpoSerializers.js.map +1 -1
  45. package/build/transform-worker/asset-transformer.js +21 -44
  46. package/build/transform-worker/asset-transformer.js.map +1 -1
  47. package/build/transform-worker/css-modules.js +57 -84
  48. package/build/transform-worker/css-modules.js.map +1 -1
  49. package/build/transform-worker/css.js +21 -20
  50. package/build/transform-worker/css.js.map +1 -1
  51. package/build/transform-worker/getAssets.js +38 -75
  52. package/build/transform-worker/getAssets.js.map +1 -1
  53. package/build/transform-worker/metro-transform-worker.js +384 -489
  54. package/build/transform-worker/metro-transform-worker.js.map +1 -1
  55. package/build/transform-worker/postcss.js +176 -233
  56. package/build/transform-worker/postcss.js.map +1 -1
  57. package/build/transform-worker/sass.js +30 -38
  58. package/build/transform-worker/sass.js.map +1 -1
  59. package/build/transform-worker/transform-worker.js +156 -188
  60. package/build/transform-worker/transform-worker.js.map +1 -1
  61. package/build/transform-worker/utils/require.js +30 -28
  62. package/build/transform-worker/utils/require.js.map +1 -1
  63. package/build/transformSync.js +40 -28
  64. package/build/transformSync.js.map +1 -1
  65. package/build/transformer/createExoticTransformer.js +96 -129
  66. package/build/transformer/createExoticTransformer.js.map +1 -1
  67. package/build/transformer/createMatcher.js +37 -46
  68. package/build/transformer/createMatcher.js.map +1 -1
  69. package/build/transformer/createMultiRuleTransformer.js +170 -240
  70. package/build/transformer/createMultiRuleTransformer.js.map +1 -1
  71. package/build/transformer/generateFunctionMap.js +20 -23
  72. package/build/transformer/generateFunctionMap.js.map +1 -1
  73. package/build/transformer/getBabelConfig.js +94 -127
  74. package/build/transformer/getBabelConfig.js.map +1 -1
  75. package/build/transformer/getCacheKey.js +17 -31
  76. package/build/transformer/getCacheKey.js.map +1 -1
  77. package/build/transformer/index.js +11 -62
  78. package/build/transformer/index.js.map +1 -1
  79. package/build/transformer/metro-expo-exotic-babel-transformer.js +3 -12
  80. package/build/transformer/metro-expo-exotic-babel-transformer.js.map +1 -1
  81. package/build/traveling/metro-config.js +12 -19
  82. package/build/traveling/metro-config.js.map +1 -1
  83. package/build/utils/hash.js +8 -14
  84. package/build/utils/hash.js.map +1 -1
  85. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"exportHermes.js","names":["_spawnAsync","data","_interopRequireDefault","require","_chalk","_fsExtra","_metroSourceMap","_os","_path","_process","obj","__esModule","default","debug","importHermesCommandFromProject","platformExecutable","getHermesCommandPlatform","hermescLocations","process","env","location","resolve","Error","os","platform","currentHermesBuild","buildHermesBundleAsync","options","directlyBuildHermesBundleAsync","code","map","minify","filename","tempDir","path","join","tmpdir","Math","random","Date","now","fs","ensureDir","tempBundleFile","writeFile","tempSourcemapFile","tempHbcFile","hermesCommand","args","push","spawnAsync","hbc","sourcemap","readFile","Promise","all","createHermesSourcemapAsync","error","console","chalk","red","output","remove","hermesMapFile","bundlerSourcemap","JSON","parse","hermesSourcemap","readJSON","stringify","composeSourceMaps"],"sources":["../../src/serializer/exportHermes.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\nimport fs from 'fs-extra';\nimport { composeSourceMaps } from 'metro-source-map';\nimport os from 'os';\nimport path from 'path';\nimport process from 'process';\n\nconst debug = require('debug')('expo:metro:hermes') as typeof console.log;\n\nfunction importHermesCommandFromProject(): string {\n const platformExecutable = getHermesCommandPlatform();\n const hermescLocations = [\n // Override hermesc dir by environment variables\n process.env['REACT_NATIVE_OVERRIDE_HERMES_DIR']\n ? `${process.env['REACT_NATIVE_OVERRIDE_HERMES_DIR']}/build/bin/hermesc`\n : '',\n\n // Building hermes from source\n 'react-native/ReactAndroid/hermes-engine/build/hermes/bin/hermesc',\n\n // Prebuilt hermesc in official react-native 0.69+\n `react-native/sdks/hermesc/${platformExecutable}`,\n\n // Legacy hermes-engine package\n `hermes-engine/${platformExecutable}`,\n ];\n\n for (const location of hermescLocations) {\n try {\n return require.resolve(location);\n } catch {}\n }\n throw new Error('Cannot find the hermesc executable.');\n}\n\nfunction getHermesCommandPlatform(): string {\n switch (os.platform()) {\n case 'darwin':\n return 'osx-bin/hermesc';\n case 'linux':\n return 'linux64-bin/hermesc';\n case 'win32':\n return 'win64-bin/hermesc.exe';\n default:\n throw new Error(`Unsupported host platform for Hermes compiler: ${os.platform()}`);\n }\n}\n\ninterface HermesBundleOutput {\n hbc: Uint8Array;\n sourcemap: string | null;\n}\n\ntype BuildHermesOptions = {\n filename: string;\n code: string;\n map: string | null;\n minify?: boolean;\n};\n\n// Only one hermes build at a time is supported.\nlet currentHermesBuild: Promise<HermesBundleOutput> | null = null;\n\nexport async function buildHermesBundleAsync(\n options: BuildHermesOptions\n): Promise<HermesBundleOutput> {\n if (currentHermesBuild) {\n debug(`Waiting for existing Hermes builds to finish`);\n await currentHermesBuild;\n }\n currentHermesBuild = directlyBuildHermesBundleAsync(options);\n return await currentHermesBuild;\n}\n\nasync function directlyBuildHermesBundleAsync({\n code,\n map,\n minify = false,\n filename,\n}: BuildHermesOptions): Promise<HermesBundleOutput> {\n const tempDir = path.join(os.tmpdir(), `expo-bundler-${Math.random()}-${Date.now()}`);\n await fs.ensureDir(tempDir);\n try {\n const tempBundleFile = path.join(tempDir, 'index.js');\n await fs.writeFile(tempBundleFile, code);\n\n if (map) {\n const tempSourcemapFile = path.join(tempDir, 'index.js.map');\n await fs.writeFile(tempSourcemapFile, map);\n }\n\n const tempHbcFile = path.join(tempDir, 'index.hbc');\n const hermesCommand = importHermesCommandFromProject();\n const args = ['-emit-binary', '-out', tempHbcFile, tempBundleFile];\n if (minify) {\n args.push('-O');\n }\n if (map) {\n args.push('-output-source-map');\n }\n\n debug(`Running hermesc: ${hermesCommand} ${args.join(' ')}`);\n await spawnAsync(hermesCommand, args);\n\n let hbc: Buffer;\n let sourcemap: string | null = null;\n\n if (!map) {\n hbc = await fs.readFile(tempHbcFile);\n } else {\n [hbc, sourcemap] = await Promise.all([\n fs.readFile(tempHbcFile),\n createHermesSourcemapAsync(map, `${tempHbcFile}.map`),\n ]);\n }\n return {\n hbc,\n sourcemap,\n };\n } catch (error: any) {\n console.error(chalk.red(`\\nFailed to generate Hermes bytecode for: ${filename}`));\n if ('status' in error) {\n console.error(error.output.join('\\n'));\n }\n throw error;\n } finally {\n await fs.remove(tempDir);\n }\n}\n\nasync function createHermesSourcemapAsync(\n sourcemap: string,\n hermesMapFile: string\n): Promise<string> {\n const bundlerSourcemap = JSON.parse(sourcemap);\n const hermesSourcemap = await fs.readJSON(hermesMapFile);\n return JSON.stringify(composeSourceMaps([bundlerSourcemap, hermesSourcemap]));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"exportHermes.js","sourceRoot":"","sources":["../../src/serializer/exportHermes.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAC3C,kDAA0B;AAC1B,wDAA0B;AAC1B,uDAAqD;AACrD,4CAAoB;AACpB,gDAAwB;AACxB,sDAA8B;AAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAuB,CAAC;AAE1E,SAAS,8BAA8B;IACrC,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;IACtD,MAAM,gBAAgB,GAAG;QACvB,gDAAgD;QAChD,iBAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;YAC7C,CAAC,CAAC,GAAG,iBAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,oBAAoB;YACxE,CAAC,CAAC,EAAE;QAEN,8BAA8B;QAC9B,kEAAkE;QAElE,kDAAkD;QAClD,6BAA6B,kBAAkB,EAAE;QAEjD,+BAA+B;QAC/B,iBAAiB,kBAAkB,EAAE;KACtC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE;QACvC,IAAI;YACF,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAClC;QAAC,MAAM,GAAE;KACX;IACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,wBAAwB;IAC/B,QAAQ,YAAE,CAAC,QAAQ,EAAE,EAAE;QACrB,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC;QAC3B,KAAK,OAAO;YACV,OAAO,qBAAqB,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,uBAAuB,CAAC;QACjC;YACE,MAAM,IAAI,KAAK,CAAC,kDAAkD,YAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;KACtF;AACH,CAAC;AAcD,gDAAgD;AAChD,IAAI,kBAAkB,GAAuC,IAAI,CAAC;AAE3D,KAAK,UAAU,sBAAsB,CAC1C,OAA2B;IAE3B,IAAI,kBAAkB,EAAE;QACtB,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACtD,MAAM,kBAAkB,CAAC;KAC1B;IACD,kBAAkB,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAC7D,OAAO,MAAM,kBAAkB,CAAC;AAClC,CAAC;AATD,wDASC;AAED,KAAK,UAAU,8BAA8B,CAAC,EAC5C,IAAI,EACJ,GAAG,EACH,MAAM,GAAG,KAAK,EACd,QAAQ,GACW;IACnB,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtF,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI;QACF,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEzC,IAAI,GAAG,EAAE;YACP,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC7D,MAAM,kBAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;SAC5C;QAED,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,8BAA8B,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QACnE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjB;QACD,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACjC;QAED,KAAK,CAAC,oBAAoB,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAA,qBAAU,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAEtC,IAAI,GAAW,CAAC;QAChB,IAAI,SAAS,GAAkB,IAAI,CAAC;QAEpC,IAAI,CAAC,GAAG,EAAE;YACR,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SACtC;aAAM;YACL,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACnC,kBAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACxB,0BAA0B,CAAC,GAAG,EAAE,GAAG,WAAW,MAAM,CAAC;aACtD,CAAC,CAAC;SACJ;QACD,OAAO;YACL,GAAG;YACH,SAAS;SACV,CAAC;KACH;IAAC,OAAO,KAAU,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6CAA6C,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClF,IAAI,QAAQ,IAAI,KAAK,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACxC;QACD,MAAM,KAAK,CAAC;KACb;YAAS;QACR,MAAM,kBAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC1B;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,SAAiB,EACjB,aAAqB;IAErB,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAA,oCAAiB,EAAC,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC"}
@@ -1,44 +1,27 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getExportPathForDependencyWithOptions = getExportPathForDependencyWithOptions;
7
- function _path() {
8
- const data = _interopRequireDefault(require("path"));
9
- _path = function () {
10
- return data;
11
- };
12
- return data;
13
- }
14
- function _getCssDeps() {
15
- const data = require("./getCssDeps");
16
- _getCssDeps = function () {
17
- return data;
18
- };
19
- return data;
20
- }
21
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getExportPathForDependencyWithOptions = void 0;
22
7
  /**
23
8
  * Copyright © 2023 650 Industries.
24
9
  *
25
10
  * This source code is licensed under the MIT license found in the
26
11
  * LICENSE file in the root directory of this source tree.
27
12
  */
28
-
29
- function getExportPathForDependencyWithOptions(dependencyPath, {
30
- platform,
31
- src,
32
- serverRoot
33
- }) {
34
- const bundlePath = _path().default.relative(serverRoot, dependencyPath);
35
- const relativePathname = _path().default.join(_path().default.dirname(bundlePath),
36
- // Strip the file extension
37
- _path().default.basename(bundlePath, _path().default.extname(bundlePath)));
38
- const name = (0, _getCssDeps().fileNameFromContents)({
39
- filepath: relativePathname,
40
- src
41
- });
42
- return `_expo/static/js/${platform}/${name}.js`;
13
+ const path_1 = __importDefault(require("path"));
14
+ const getCssDeps_1 = require("./getCssDeps");
15
+ function getExportPathForDependencyWithOptions(dependencyPath, { platform, src, serverRoot }) {
16
+ const bundlePath = path_1.default.relative(serverRoot, dependencyPath);
17
+ const relativePathname = path_1.default.join(path_1.default.dirname(bundlePath),
18
+ // Strip the file extension
19
+ path_1.default.basename(bundlePath, path_1.default.extname(bundlePath)));
20
+ const name = (0, getCssDeps_1.fileNameFromContents)({
21
+ filepath: relativePathname,
22
+ src,
23
+ });
24
+ return `_expo/static/js/${platform}/${name}.js`;
43
25
  }
26
+ exports.getExportPathForDependencyWithOptions = getExportPathForDependencyWithOptions;
44
27
  //# sourceMappingURL=exportPath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exportPath.js","names":["_path","data","_interopRequireDefault","require","_getCssDeps","obj","__esModule","default","getExportPathForDependencyWithOptions","dependencyPath","platform","src","serverRoot","bundlePath","path","relative","relativePathname","join","dirname","basename","extname","name","fileNameFromContents","filepath"],"sources":["../../src/serializer/exportPath.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport path from 'path';\n\nimport { fileNameFromContents } from './getCssDeps';\n\nexport function getExportPathForDependencyWithOptions(\n dependencyPath: string,\n { platform, src, serverRoot }: { platform: string; serverRoot: string; src: string }\n): string {\n const bundlePath = path.relative(serverRoot, dependencyPath);\n const relativePathname = path.join(\n path.dirname(bundlePath),\n // Strip the file extension\n path.basename(bundlePath, path.extname(bundlePath))\n );\n const name = fileNameFromContents({\n filepath: relativePathname,\n src,\n });\n return `_expo/static/js/${platform}/${name}.js`;\n}\n"],"mappings":";;;;;;AAMA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAoD,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AARpD;AACA;AACA;AACA;AACA;AACA;;AAKO,SAASG,qCAAqCA,CACnDC,cAAsB,EACtB;EAAEC,QAAQ;EAAEC,GAAG;EAAEC;AAAkE,CAAC,EAC5E;EACR,MAAMC,UAAU,GAAGC,eAAI,CAACC,QAAQ,CAACH,UAAU,EAAEH,cAAc,CAAC;EAC5D,MAAMO,gBAAgB,GAAGF,eAAI,CAACG,IAAI,CAChCH,eAAI,CAACI,OAAO,CAACL,UAAU,CAAC;EACxB;EACAC,eAAI,CAACK,QAAQ,CAACN,UAAU,EAAEC,eAAI,CAACM,OAAO,CAACP,UAAU,CAAC,CACpD,CAAC;EACD,MAAMQ,IAAI,GAAG,IAAAC,kCAAoB,EAAC;IAChCC,QAAQ,EAAEP,gBAAgB;IAC1BL;EACF,CAAC,CAAC;EACF,OAAQ,mBAAkBD,QAAS,IAAGW,IAAK,KAAI;AACjD"}
1
+ {"version":3,"file":"exportPath.js","sourceRoot":"","sources":["../../src/serializer/exportPath.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;GAKG;AACH,gDAAwB;AAExB,6CAAoD;AAEpD,SAAgB,qCAAqC,CACnD,cAAsB,EACtB,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAyD;IAEpF,MAAM,UAAU,GAAG,cAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAChC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACxB,2BAA2B;IAC3B,cAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CACpD,CAAC;IACF,MAAM,IAAI,GAAG,IAAA,iCAAoB,EAAC;QAChC,QAAQ,EAAE,gBAAgB;QAC1B,GAAG;KACJ,CAAC,CAAC;IACH,OAAO,mBAAmB,QAAQ,IAAI,IAAI,KAAK,CAAC;AAClD,CAAC;AAfD,sFAeC"}
@@ -1,49 +1,4 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.baseJSBundle = baseJSBundle;
7
- exports.baseJSBundleWithDependencies = baseJSBundleWithDependencies;
8
- exports.getBaseUrlOption = getBaseUrlOption;
9
- exports.getPlatformOption = getPlatformOption;
10
- exports.getSplitChunksOption = getSplitChunksOption;
11
- function _jscSafeUrl() {
12
- const data = require("jsc-safe-url");
13
- _jscSafeUrl = function () {
14
- return data;
15
- };
16
- return data;
17
- }
18
- function _CountingSet() {
19
- const data = _interopRequireDefault(require("metro/src/lib/CountingSet"));
20
- _CountingSet = function () {
21
- return data;
22
- };
23
- return data;
24
- }
25
- function _countLines() {
26
- const data = _interopRequireDefault(require("metro/src/lib/countLines"));
27
- _countLines = function () {
28
- return data;
29
- };
30
- return data;
31
- }
32
- function _getAppendScripts() {
33
- const data = _interopRequireDefault(require("metro/src/lib/getAppendScripts"));
34
- _getAppendScripts = function () {
35
- return data;
36
- };
37
- return data;
38
- }
39
- function _processModules() {
40
- const data = require("./processModules");
41
- _processModules = function () {
42
- return data;
43
- };
44
- return data;
45
- }
46
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
2
  /**
48
3
  * Copyright © 2022 650 Industries.
49
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -54,117 +9,139 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
54
9
  * Fork with bundle splitting and better source map support.
55
10
  * https://github.com/facebook/metro/blob/bbdd7d7c5e6e0feb50a9967ffae1f723c1d7c4e8/packages/metro/src/DeltaBundler/Serializers/baseJSBundle.js#L1
56
11
  */
57
-
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.baseJSBundleWithDependencies = exports.baseJSBundle = exports.getBaseUrlOption = exports.getSplitChunksOption = exports.getPlatformOption = void 0;
17
+ const jsc_safe_url_1 = require("jsc-safe-url");
18
+ const CountingSet_1 = __importDefault(require("metro/src/lib/CountingSet"));
19
+ const countLines_1 = __importDefault(require("metro/src/lib/countLines"));
20
+ const getAppendScripts_1 = __importDefault(require("metro/src/lib/getAppendScripts"));
21
+ const processModules_1 = require("./processModules");
58
22
  function getPlatformOption(graph, options) {
59
- var _graph$transformOptio, _url$searchParams$get;
60
- if (((_graph$transformOptio = graph.transformOptions) === null || _graph$transformOptio === void 0 ? void 0 : _graph$transformOptio.platform) != null) {
61
- return graph.transformOptions.platform;
62
- }
63
- if (!options.sourceUrl) {
64
- return null;
65
- }
66
- const sourceUrl = (0, _jscSafeUrl().isJscSafeUrl)(options.sourceUrl) ? (0, _jscSafeUrl().toNormalUrl)(options.sourceUrl) : options.sourceUrl;
67
- const url = new URL(sourceUrl, 'https://expo.dev');
68
- return (_url$searchParams$get = url.searchParams.get('platform')) !== null && _url$searchParams$get !== void 0 ? _url$searchParams$get : null;
23
+ if (graph.transformOptions?.platform != null) {
24
+ return graph.transformOptions.platform;
25
+ }
26
+ if (!options.sourceUrl) {
27
+ return null;
28
+ }
29
+ const sourceUrl = (0, jsc_safe_url_1.isJscSafeUrl)(options.sourceUrl)
30
+ ? (0, jsc_safe_url_1.toNormalUrl)(options.sourceUrl)
31
+ : options.sourceUrl;
32
+ const url = new URL(sourceUrl, 'https://expo.dev');
33
+ return url.searchParams.get('platform') ?? null;
69
34
  }
35
+ exports.getPlatformOption = getPlatformOption;
70
36
  function getSplitChunksOption(graph, options) {
71
- // Only enable when the entire bundle is being split, and only run on web.
72
- return !options.includeAsyncPaths && getPlatformOption(graph, options) === 'web';
37
+ // Only enable when the entire bundle is being split, and only run on web.
38
+ return !options.includeAsyncPaths && getPlatformOption(graph, options) === 'web';
73
39
  }
40
+ exports.getSplitChunksOption = getSplitChunksOption;
74
41
  function getBaseUrlOption(graph, options) {
75
- var _graph$transformOptio2, _graph$transformOptio3;
76
- const baseUrl = (_graph$transformOptio2 = graph.transformOptions) === null || _graph$transformOptio2 === void 0 ? void 0 : (_graph$transformOptio3 = _graph$transformOptio2.customTransformOptions) === null || _graph$transformOptio3 === void 0 ? void 0 : _graph$transformOptio3.baseUrl;
77
- if (typeof baseUrl === 'string') {
78
- // This tells us that the value came over a URL and may be encoded.
79
- const mayBeEncoded = options.serializerOptions == null;
80
- const option = mayBeEncoded ? decodeURIComponent(baseUrl) : baseUrl;
81
- return option.replace(/\/+$/, '') + '/';
82
- }
83
- return '/';
42
+ const baseUrl = graph.transformOptions?.customTransformOptions?.baseUrl;
43
+ if (typeof baseUrl === 'string') {
44
+ // This tells us that the value came over a URL and may be encoded.
45
+ const mayBeEncoded = options.serializerOptions == null;
46
+ const option = mayBeEncoded ? decodeURIComponent(baseUrl) : baseUrl;
47
+ return option.replace(/\/+$/, '') + '/';
48
+ }
49
+ return '/';
84
50
  }
51
+ exports.getBaseUrlOption = getBaseUrlOption;
85
52
  function baseJSBundle(entryPoint, preModules, graph, options) {
86
- var _options$serializerOp;
87
- const platform = getPlatformOption(graph, options);
88
- if (platform == null) {
89
- throw new Error('platform could not be determined for Metro bundle');
90
- }
91
- return baseJSBundleWithDependencies(entryPoint, preModules, [...graph.dependencies.values()], {
92
- ...options,
93
- baseUrl: getBaseUrlOption(graph, options),
94
- splitChunks: getSplitChunksOption(graph, options),
95
- platform,
96
- skipWrapping: !!((_options$serializerOp = options.serializerOptions) !== null && _options$serializerOp !== void 0 && _options$serializerOp.skipWrapping),
97
- computedAsyncModulePaths: null
98
- });
53
+ const platform = getPlatformOption(graph, options);
54
+ if (platform == null) {
55
+ throw new Error('platform could not be determined for Metro bundle');
56
+ }
57
+ return baseJSBundleWithDependencies(entryPoint, preModules, [...graph.dependencies.values()], {
58
+ ...options,
59
+ baseUrl: getBaseUrlOption(graph, options),
60
+ splitChunks: getSplitChunksOption(graph, options),
61
+ platform,
62
+ skipWrapping: !!options.serializerOptions?.skipWrapping,
63
+ computedAsyncModulePaths: null,
64
+ });
99
65
  }
66
+ exports.baseJSBundle = baseJSBundle;
100
67
  function baseJSBundleWithDependencies(entryPoint, preModules, dependencies, options) {
101
- var _options$serializerOp2;
102
- for (const module of dependencies) {
103
- options.createModuleId(module.path);
104
- }
105
- const processModulesOptions = {
106
- filter: options.processModuleFilter,
107
- createModuleId: options.createModuleId,
108
- dev: options.dev,
109
- includeAsyncPaths: options.includeAsyncPaths,
110
- projectRoot: options.projectRoot,
111
- serverRoot: options.serverRoot,
112
- sourceUrl: options.sourceUrl,
113
- platform: options.platform,
114
- baseUrl: options.baseUrl,
115
- splitChunks: options.splitChunks,
116
- skipWrapping: options.skipWrapping,
117
- computedAsyncModulePaths: options.computedAsyncModulePaths
118
- };
119
-
120
- // Do not prepend polyfills or the require runtime when only modules are requested
121
- if (options.modulesOnly) {
122
- preModules = [];
123
- }
124
- const preCode = (0, _processModules().processModules)(preModules, processModulesOptions).map(([, code]) => code.src).join('\n');
125
- const modules = [...dependencies].sort((a, b) => options.createModuleId(a.path) - options.createModuleId(b.path));
126
- const sourceMapUrl = ((_options$serializerOp2 = options.serializerOptions) === null || _options$serializerOp2 === void 0 ? void 0 : _options$serializerOp2.includeSourceMaps) === false ? undefined : options.sourceMapUrl;
127
- const modulesWithAnnotations = (0, _getAppendScripts().default)(entryPoint, [...preModules, ...modules], {
128
- asyncRequireModulePath: options.asyncRequireModulePath,
129
- createModuleId: options.createModuleId,
130
- getRunModuleStatement: options.getRunModuleStatement,
131
- inlineSourceMap: options.inlineSourceMap,
132
- runBeforeMainModule: options.runBeforeMainModule,
133
- runModule: options.runModule,
134
- shouldAddToIgnoreList: options.shouldAddToIgnoreList,
135
- sourceMapUrl,
136
- // This directive doesn't make a lot of sense in the context of a large single bundle that represent
137
- // multiple files. It's usually used for things like TypeScript where you want the file name to appear with a
138
- // different extension. Since it's unclear to me (Bacon) how it is used on native, I'm only disabling in web.
139
- sourceUrl: options.platform === 'web' ? undefined : options.sourceUrl
140
- });
141
-
142
- // If the `debugId` annotation is available and we aren't inlining the source map, add it to the bundle.
143
- // NOTE: We may want to move this assertion up further.
144
- const hasExternalMaps = !options.inlineSourceMap && !!sourceMapUrl;
145
- if (hasExternalMaps && options.debugId != null) {
146
- const code = `//# debugId=${options.debugId}`;
147
- modulesWithAnnotations.push({
148
- path: 'debug-id-annotation',
149
- dependencies: new Map(),
150
- getSource: () => Buffer.from(''),
151
- inverseDependencies: new (_CountingSet().default)(),
152
- output: [{
153
- type: 'js/script/virtual',
154
- data: {
155
- code,
156
- lineCount: (0, _countLines().default)(code),
157
- map: []
158
- }
159
- }]
68
+ for (const module of dependencies) {
69
+ options.createModuleId(module.path);
70
+ }
71
+ const processModulesOptions = {
72
+ filter: options.processModuleFilter,
73
+ createModuleId: options.createModuleId,
74
+ dev: options.dev,
75
+ includeAsyncPaths: options.includeAsyncPaths,
76
+ projectRoot: options.projectRoot,
77
+ serverRoot: options.serverRoot,
78
+ sourceUrl: options.sourceUrl,
79
+ platform: options.platform,
80
+ baseUrl: options.baseUrl,
81
+ splitChunks: options.splitChunks,
82
+ skipWrapping: options.skipWrapping,
83
+ computedAsyncModulePaths: options.computedAsyncModulePaths,
84
+ };
85
+ // Do not prepend polyfills or the require runtime when only modules are requested
86
+ if (options.modulesOnly) {
87
+ preModules = [];
88
+ }
89
+ const preCode = (0, processModules_1.processModules)(preModules, processModulesOptions)
90
+ .map(([, code]) => code.src)
91
+ .join('\n');
92
+ const modules = [...dependencies].sort((a, b) => options.createModuleId(a.path) - options.createModuleId(b.path));
93
+ const sourceMapUrl = options.serializerOptions?.includeSourceMaps === false ? undefined : options.sourceMapUrl;
94
+ const modulesWithAnnotations = (0, getAppendScripts_1.default)(entryPoint, [...preModules, ...modules], {
95
+ asyncRequireModulePath: options.asyncRequireModulePath,
96
+ createModuleId: options.createModuleId,
97
+ getRunModuleStatement: options.getRunModuleStatement,
98
+ inlineSourceMap: options.inlineSourceMap,
99
+ runBeforeMainModule: options.runBeforeMainModule,
100
+ runModule: options.runModule,
101
+ shouldAddToIgnoreList: options.shouldAddToIgnoreList,
102
+ sourceMapUrl,
103
+ // This directive doesn't make a lot of sense in the context of a large single bundle that represent
104
+ // multiple files. It's usually used for things like TypeScript where you want the file name to appear with a
105
+ // different extension. Since it's unclear to me (Bacon) how it is used on native, I'm only disabling in web.
106
+ sourceUrl: options.platform === 'web' ? undefined : options.sourceUrl,
160
107
  });
161
- }
162
- const postCode = (0, _processModules().processModules)(modulesWithAnnotations, processModulesOptions).map(([, code]) => code.src).join('\n');
163
- const mods = (0, _processModules().processModules)([...dependencies], processModulesOptions).map(([module, code]) => [options.createModuleId(module.path), code]);
164
- return {
165
- pre: preCode,
166
- post: postCode,
167
- modules: mods.map(([id, code]) => [id, typeof code === 'number' ? code : code.src])
168
- };
108
+ // If the `debugId` annotation is available and we aren't inlining the source map, add it to the bundle.
109
+ // NOTE: We may want to move this assertion up further.
110
+ const hasExternalMaps = !options.inlineSourceMap && !!sourceMapUrl;
111
+ if (hasExternalMaps && options.debugId != null) {
112
+ const code = `//# debugId=${options.debugId}`;
113
+ modulesWithAnnotations.push({
114
+ path: 'debug-id-annotation',
115
+ dependencies: new Map(),
116
+ getSource: () => Buffer.from(''),
117
+ inverseDependencies: new CountingSet_1.default(),
118
+ output: [
119
+ {
120
+ type: 'js/script/virtual',
121
+ data: {
122
+ code,
123
+ lineCount: (0, countLines_1.default)(code),
124
+ map: [],
125
+ },
126
+ },
127
+ ],
128
+ });
129
+ }
130
+ const postCode = (0, processModules_1.processModules)(modulesWithAnnotations, processModulesOptions)
131
+ .map(([, code]) => code.src)
132
+ .join('\n');
133
+ const mods = (0, processModules_1.processModules)([...dependencies], processModulesOptions).map(([module, code]) => [
134
+ options.createModuleId(module.path),
135
+ code,
136
+ ]);
137
+ return {
138
+ pre: preCode,
139
+ post: postCode,
140
+ modules: mods.map(([id, code]) => [
141
+ id,
142
+ typeof code === 'number' ? code : code.src,
143
+ ]),
144
+ };
169
145
  }
146
+ exports.baseJSBundleWithDependencies = baseJSBundleWithDependencies;
170
147
  //# sourceMappingURL=baseJSBundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseJSBundle.js","names":["_jscSafeUrl","data","require","_CountingSet","_interopRequireDefault","_countLines","_getAppendScripts","_processModules","obj","__esModule","default","getPlatformOption","graph","options","_graph$transformOptio","_url$searchParams$get","transformOptions","platform","sourceUrl","isJscSafeUrl","toNormalUrl","url","URL","searchParams","get","getSplitChunksOption","includeAsyncPaths","getBaseUrlOption","_graph$transformOptio2","_graph$transformOptio3","baseUrl","customTransformOptions","mayBeEncoded","serializerOptions","option","decodeURIComponent","replace","baseJSBundle","entryPoint","preModules","_options$serializerOp","Error","baseJSBundleWithDependencies","dependencies","values","splitChunks","skipWrapping","computedAsyncModulePaths","_options$serializerOp2","module","createModuleId","path","processModulesOptions","filter","processModuleFilter","dev","projectRoot","serverRoot","modulesOnly","preCode","processModules","map","code","src","join","modules","sort","a","b","sourceMapUrl","includeSourceMaps","undefined","modulesWithAnnotations","getAppendScripts","asyncRequireModulePath","getRunModuleStatement","inlineSourceMap","runBeforeMainModule","runModule","shouldAddToIgnoreList","hasExternalMaps","debugId","push","Map","getSource","Buffer","from","inverseDependencies","CountingSet","output","type","lineCount","countLines","postCode","mods","pre","post","id"],"sources":["../../../src/serializer/fork/baseJSBundle.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Fork with bundle splitting and better source map support.\n * https://github.com/facebook/metro/blob/bbdd7d7c5e6e0feb50a9967ffae1f723c1d7c4e8/packages/metro/src/DeltaBundler/Serializers/baseJSBundle.js#L1\n */\n\nimport { isJscSafeUrl, toNormalUrl } from 'jsc-safe-url';\nimport type { MixedOutput, Module, ReadOnlyGraph, SerializerOptions } from 'metro';\nimport CountingSet from 'metro/src/lib/CountingSet';\nimport countLines from 'metro/src/lib/countLines';\nimport getAppendScripts from 'metro/src/lib/getAppendScripts';\n\nimport { processModules } from './processModules';\n\nexport type ModuleMap = [number, string][];\n\nexport type Bundle = {\n modules: ModuleMap;\n post: string;\n pre: string;\n};\n\nexport type ExpoSerializerOptions = SerializerOptions & {\n serializerOptions?: {\n baseUrl?: string;\n skipWrapping?: boolean;\n output?: string;\n includeBytecode?: boolean;\n includeSourceMaps?: boolean;\n };\n // Chunk-based stable identifier for the bundle that is used for identifying the bundle.\n // https://sentry.engineering/blog/the-case-for-debug-ids\n // https://bun.sh/docs/bundler#sourcemap\n debugId?: string;\n};\n\nexport function getPlatformOption(\n graph: Pick<ReadOnlyGraph, 'transformOptions'>,\n options: Pick<SerializerOptions, 'sourceUrl'>\n): string | null {\n if (graph.transformOptions?.platform != null) {\n return graph.transformOptions.platform;\n }\n if (!options.sourceUrl) {\n return null;\n }\n\n const sourceUrl = isJscSafeUrl(options.sourceUrl)\n ? toNormalUrl(options.sourceUrl)\n : options.sourceUrl;\n const url = new URL(sourceUrl, 'https://expo.dev');\n return url.searchParams.get('platform') ?? null;\n}\n\nexport function getSplitChunksOption(\n graph: Pick<ReadOnlyGraph, 'transformOptions'>,\n options: Pick<SerializerOptions, 'includeAsyncPaths' | 'sourceUrl'>\n): boolean {\n // Only enable when the entire bundle is being split, and only run on web.\n return !options.includeAsyncPaths && getPlatformOption(graph, options) === 'web';\n}\n\nexport function getBaseUrlOption(\n graph: Pick<ReadOnlyGraph, 'transformOptions'>,\n options: Pick<ExpoSerializerOptions, 'serializerOptions'>\n): string {\n const baseUrl = graph.transformOptions?.customTransformOptions?.baseUrl;\n if (typeof baseUrl === 'string') {\n // This tells us that the value came over a URL and may be encoded.\n const mayBeEncoded = options.serializerOptions == null;\n const option = mayBeEncoded ? decodeURIComponent(baseUrl) : baseUrl;\n\n return option.replace(/\\/+$/, '') + '/';\n }\n return '/';\n}\n\nexport function baseJSBundle(\n entryPoint: string,\n preModules: readonly Module[],\n graph: Pick<ReadOnlyGraph, 'dependencies' | 'transformOptions'>,\n options: ExpoSerializerOptions\n): Bundle {\n const platform = getPlatformOption(graph, options);\n if (platform == null) {\n throw new Error('platform could not be determined for Metro bundle');\n }\n\n return baseJSBundleWithDependencies(entryPoint, preModules, [...graph.dependencies.values()], {\n ...options,\n baseUrl: getBaseUrlOption(graph, options),\n splitChunks: getSplitChunksOption(graph, options),\n platform,\n skipWrapping: !!options.serializerOptions?.skipWrapping,\n computedAsyncModulePaths: null,\n });\n}\n\nexport function baseJSBundleWithDependencies(\n entryPoint: string,\n preModules: readonly Module[],\n dependencies: Module<MixedOutput>[],\n options: ExpoSerializerOptions & {\n platform: string;\n baseUrl: string;\n splitChunks: boolean;\n skipWrapping: boolean;\n computedAsyncModulePaths: Record<string, string> | null;\n debugId?: string;\n }\n): Bundle {\n for (const module of dependencies) {\n options.createModuleId(module.path);\n }\n\n const processModulesOptions = {\n filter: options.processModuleFilter,\n createModuleId: options.createModuleId,\n dev: options.dev,\n includeAsyncPaths: options.includeAsyncPaths,\n projectRoot: options.projectRoot,\n serverRoot: options.serverRoot,\n sourceUrl: options.sourceUrl,\n platform: options.platform,\n baseUrl: options.baseUrl,\n splitChunks: options.splitChunks,\n skipWrapping: options.skipWrapping,\n computedAsyncModulePaths: options.computedAsyncModulePaths,\n };\n\n // Do not prepend polyfills or the require runtime when only modules are requested\n if (options.modulesOnly) {\n preModules = [];\n }\n\n const preCode = processModules(preModules, processModulesOptions)\n .map(([, code]) => code.src)\n .join('\\n');\n\n const modules = [...dependencies].sort(\n (a: Module<MixedOutput>, b: Module<MixedOutput>) =>\n options.createModuleId(a.path) - options.createModuleId(b.path)\n );\n\n const sourceMapUrl =\n options.serializerOptions?.includeSourceMaps === false ? undefined : options.sourceMapUrl;\n\n const modulesWithAnnotations = getAppendScripts(entryPoint, [...preModules, ...modules], {\n asyncRequireModulePath: options.asyncRequireModulePath,\n createModuleId: options.createModuleId,\n getRunModuleStatement: options.getRunModuleStatement,\n inlineSourceMap: options.inlineSourceMap,\n runBeforeMainModule: options.runBeforeMainModule,\n runModule: options.runModule,\n shouldAddToIgnoreList: options.shouldAddToIgnoreList,\n sourceMapUrl,\n // This directive doesn't make a lot of sense in the context of a large single bundle that represent\n // multiple files. It's usually used for things like TypeScript where you want the file name to appear with a\n // different extension. Since it's unclear to me (Bacon) how it is used on native, I'm only disabling in web.\n sourceUrl: options.platform === 'web' ? undefined : options.sourceUrl,\n });\n\n // If the `debugId` annotation is available and we aren't inlining the source map, add it to the bundle.\n // NOTE: We may want to move this assertion up further.\n const hasExternalMaps = !options.inlineSourceMap && !!sourceMapUrl;\n if (hasExternalMaps && options.debugId != null) {\n const code = `//# debugId=${options.debugId}`;\n modulesWithAnnotations.push({\n path: 'debug-id-annotation',\n dependencies: new Map(),\n getSource: (): Buffer => Buffer.from(''),\n inverseDependencies: new CountingSet(),\n output: [\n {\n type: 'js/script/virtual',\n data: {\n code,\n lineCount: countLines(code),\n map: [],\n },\n },\n ],\n });\n }\n\n const postCode = processModules(modulesWithAnnotations, processModulesOptions)\n .map(([, code]) => code.src)\n .join('\\n');\n\n const mods = processModules([...dependencies], processModulesOptions).map(([module, code]) => [\n options.createModuleId(module.path),\n code,\n ]);\n return {\n pre: preCode,\n post: postCode,\n modules: mods.map(([id, code]) => [\n id,\n typeof code === 'number' ? code : code.src,\n ]) as ModuleMap,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"baseJSBundle.js","sourceRoot":"","sources":["../../../src/serializer/fork/baseJSBundle.ts"],"names":[],"mappings":"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"}