@expo/metro-config 0.10.1 → 0.10.3

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.
@@ -37,7 +37,7 @@ const INTERNAL_CALLSITES_REGEX = new RegExp(['/Libraries/Renderer/implementation
37
37
  // Block native code invocations
38
38
  `\\[native code\\]`,
39
39
  // Hide react-dom (web)
40
- 'node_modules/react-dom/.+\\.js$'].join('|'));
40
+ 'node_modules/react-dom/.+\\.js$', '@expo/metro-runtime/build/.+\\.js$'].join('|'));
41
41
  exports.INTERNAL_CALLSITES_REGEX = INTERNAL_CALLSITES_REGEX;
42
42
  function isUrl(value) {
43
43
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"customizeFrame.js","names":["_url","data","require","INTERNAL_CALLSITES_REGEX","RegExp","join","exports","isUrl","value","URL","getDefaultCustomizeFrame","frame","file","lineNumber","column","collapse","Boolean","test","_frame$file","methodName","match"],"sources":["../src/customizeFrame.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { SymbolicatorConfigT } from 'metro-config';\nimport { URL } from 'url';\n\ntype CustomizeFrameFunc = SymbolicatorConfigT['customizeFrame'];\n\n// Import only the types here, the values will be imported from the project, at runtime.\nexport const INTERNAL_CALLSITES_REGEX = new RegExp(\n [\n '/Libraries/Renderer/implementations/.+\\\\.js$',\n '/Libraries/BatchedBridge/MessageQueue\\\\.js$',\n '/Libraries/YellowBox/.+\\\\.js$',\n '/Libraries/LogBox/.+\\\\.js$',\n '/Libraries/Core/Timers/.+\\\\.js$',\n 'node_modules/react-devtools-core/.+\\\\.js$',\n 'node_modules/react-refresh/.+\\\\.js$',\n 'node_modules/scheduler/.+\\\\.js$',\n // Metro replaces `require()` with a different method,\n // we want to omit this method from the stack trace.\n // This is akin to most React tooling.\n '/metro/.*/polyfills/require.js$',\n // Hide frames related to a fast refresh.\n '/metro/.*/lib/bundle-modules/.+\\\\.js$',\n 'node_modules/react-native/Libraries/Utilities/HMRClient.js$',\n 'node_modules/eventemitter3/index.js',\n 'node_modules/event-target-shim/dist/.+\\\\.js$',\n // Ignore the log forwarder used in the expo package.\n '/expo/build/logs/RemoteConsole.js$',\n // Improve errors thrown by invariant (ex: `Invariant Violation: \"main\" has not been registered`).\n 'node_modules/invariant/.+\\\\.js$',\n // Remove babel runtime additions\n 'node_modules/regenerator-runtime/.+\\\\.js$',\n // Remove react native setImmediate ponyfill\n 'node_modules/promise/setimmediate/.+\\\\.js$',\n // Babel helpers that implement language features\n 'node_modules/@babel/runtime/.+\\\\.js$',\n // Hide Hermes internal bytecode\n '/InternalBytecode/InternalBytecode\\\\.js$',\n // Block native code invocations\n `\\\\[native code\\\\]`,\n // Hide react-dom (web)\n 'node_modules/react-dom/.+\\\\.js$',\n ].join('|')\n);\n\nfunction isUrl(value: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * The default frame processor. This is used to modify the stack traces.\n * This method attempts to collapse all frames that aren't relevant to\n * the user by default.\n */\nexport function getDefaultCustomizeFrame(): CustomizeFrameFunc {\n return (frame: Parameters<CustomizeFrameFunc>[0]) => {\n if (frame.file && isUrl(frame.file)) {\n return {\n ...frame,\n // HACK: This prevents Metro from attempting to read the invalid file URL it sent us.\n lineNumber: null,\n column: null,\n // This prevents the invalid frame from being shown by default.\n collapse: true,\n };\n }\n let collapse = Boolean(frame.file && INTERNAL_CALLSITES_REGEX.test(frame.file));\n\n if (!collapse) {\n // This represents the first frame of the stacktrace.\n // Often this looks like: `__r(0);`.\n // The URL will also be unactionable in the app and therefore not very useful to the developer.\n if (\n frame.column === 3 &&\n frame.methodName === 'global code' &&\n frame.file?.match(/^https?:\\/\\//g)\n ) {\n collapse = true;\n }\n }\n\n return { ...(frame || {}), collapse };\n };\n}\n"],"mappings":";;;;;;;AAEA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAFA;;AAMA;AACO,MAAME,wBAAwB,GAAG,IAAIC,MAAM,CAChD,CACE,8CAA8C,EAC9C,6CAA6C,EAC7C,+BAA+B,EAC/B,4BAA4B,EAC5B,iCAAiC,EACjC,2CAA2C,EAC3C,qCAAqC,EACrC,iCAAiC;AACjC;AACA;AACA;AACA,iCAAiC;AACjC;AACA,uCAAuC,EACvC,6DAA6D,EAC7D,qCAAqC,EACrC,8CAA8C;AAC9C;AACA,oCAAoC;AACpC;AACA,iCAAiC;AACjC;AACA,2CAA2C;AAC3C;AACA,4CAA4C;AAC5C;AACA,sCAAsC;AACtC;AACA,0CAA0C;AAC1C;AACC,mBAAkB;AACnB;AACA,iCAAiC,CAClC,CAACC,IAAI,CAAC,GAAG,CAAC,CACZ;AAACC,OAAA,CAAAH,wBAAA,GAAAA,wBAAA;AAEF,SAASI,KAAKA,CAACC,KAAa,EAAW;EACrC,IAAI;IACF;IACA,KAAIC,UAAG,EAACD,KAAK,CAAC;IACd,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAwBA,CAAA,EAAuB;EAC7D,OAAQC,KAAwC,IAAK;IACnD,IAAIA,KAAK,CAACC,IAAI,IAAIL,KAAK,CAACI,KAAK,CAACC,IAAI,CAAC,EAAE;MACnC,OAAO;QACL,GAAGD,KAAK;QACR;QACAE,UAAU,EAAE,IAAI;QAChBC,MAAM,EAAE,IAAI;QACZ;QACAC,QAAQ,EAAE;MACZ,CAAC;IACH;IACA,IAAIA,QAAQ,GAAGC,OAAO,CAACL,KAAK,CAACC,IAAI,IAAIT,wBAAwB,CAACc,IAAI,CAACN,KAAK,CAACC,IAAI,CAAC,CAAC;IAE/E,IAAI,CAACG,QAAQ,EAAE;MAAA,IAAAG,WAAA;MACb;MACA;MACA;MACA,IACEP,KAAK,CAACG,MAAM,KAAK,CAAC,IAClBH,KAAK,CAACQ,UAAU,KAAK,aAAa,KAAAD,WAAA,GAClCP,KAAK,CAACC,IAAI,cAAAM,WAAA,eAAVA,WAAA,CAAYE,KAAK,CAAC,eAAe,CAAC,EAClC;QACAL,QAAQ,GAAG,IAAI;MACjB;IACF;IAEA,OAAO;MAAE,IAAIJ,KAAK,IAAI,CAAC,CAAC,CAAC;MAAEI;IAAS,CAAC;EACvC,CAAC;AACH"}
1
+ {"version":3,"file":"customizeFrame.js","names":["_url","data","require","INTERNAL_CALLSITES_REGEX","RegExp","join","exports","isUrl","value","URL","getDefaultCustomizeFrame","frame","file","lineNumber","column","collapse","Boolean","test","_frame$file","methodName","match"],"sources":["../src/customizeFrame.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { SymbolicatorConfigT } from 'metro-config';\nimport { URL } from 'url';\n\ntype CustomizeFrameFunc = SymbolicatorConfigT['customizeFrame'];\n\n// Import only the types here, the values will be imported from the project, at runtime.\nexport const INTERNAL_CALLSITES_REGEX = new RegExp(\n [\n '/Libraries/Renderer/implementations/.+\\\\.js$',\n '/Libraries/BatchedBridge/MessageQueue\\\\.js$',\n '/Libraries/YellowBox/.+\\\\.js$',\n '/Libraries/LogBox/.+\\\\.js$',\n '/Libraries/Core/Timers/.+\\\\.js$',\n 'node_modules/react-devtools-core/.+\\\\.js$',\n 'node_modules/react-refresh/.+\\\\.js$',\n 'node_modules/scheduler/.+\\\\.js$',\n // Metro replaces `require()` with a different method,\n // we want to omit this method from the stack trace.\n // This is akin to most React tooling.\n '/metro/.*/polyfills/require.js$',\n // Hide frames related to a fast refresh.\n '/metro/.*/lib/bundle-modules/.+\\\\.js$',\n 'node_modules/react-native/Libraries/Utilities/HMRClient.js$',\n 'node_modules/eventemitter3/index.js',\n 'node_modules/event-target-shim/dist/.+\\\\.js$',\n // Ignore the log forwarder used in the expo package.\n '/expo/build/logs/RemoteConsole.js$',\n // Improve errors thrown by invariant (ex: `Invariant Violation: \"main\" has not been registered`).\n 'node_modules/invariant/.+\\\\.js$',\n // Remove babel runtime additions\n 'node_modules/regenerator-runtime/.+\\\\.js$',\n // Remove react native setImmediate ponyfill\n 'node_modules/promise/setimmediate/.+\\\\.js$',\n // Babel helpers that implement language features\n 'node_modules/@babel/runtime/.+\\\\.js$',\n // Hide Hermes internal bytecode\n '/InternalBytecode/InternalBytecode\\\\.js$',\n // Block native code invocations\n `\\\\[native code\\\\]`,\n // Hide react-dom (web)\n 'node_modules/react-dom/.+\\\\.js$',\n '@expo/metro-runtime/build/.+\\\\.js$',\n ].join('|')\n);\n\nfunction isUrl(value: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * The default frame processor. This is used to modify the stack traces.\n * This method attempts to collapse all frames that aren't relevant to\n * the user by default.\n */\nexport function getDefaultCustomizeFrame(): CustomizeFrameFunc {\n return (frame: Parameters<CustomizeFrameFunc>[0]) => {\n if (frame.file && isUrl(frame.file)) {\n return {\n ...frame,\n // HACK: This prevents Metro from attempting to read the invalid file URL it sent us.\n lineNumber: null,\n column: null,\n // This prevents the invalid frame from being shown by default.\n collapse: true,\n };\n }\n let collapse = Boolean(frame.file && INTERNAL_CALLSITES_REGEX.test(frame.file));\n\n if (!collapse) {\n // This represents the first frame of the stacktrace.\n // Often this looks like: `__r(0);`.\n // The URL will also be unactionable in the app and therefore not very useful to the developer.\n if (\n frame.column === 3 &&\n frame.methodName === 'global code' &&\n frame.file?.match(/^https?:\\/\\//g)\n ) {\n collapse = true;\n }\n }\n\n return { ...(frame || {}), collapse };\n };\n}\n"],"mappings":";;;;;;;AAEA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAFA;;AAMA;AACO,MAAME,wBAAwB,GAAG,IAAIC,MAAM,CAChD,CACE,8CAA8C,EAC9C,6CAA6C,EAC7C,+BAA+B,EAC/B,4BAA4B,EAC5B,iCAAiC,EACjC,2CAA2C,EAC3C,qCAAqC,EACrC,iCAAiC;AACjC;AACA;AACA;AACA,iCAAiC;AACjC;AACA,uCAAuC,EACvC,6DAA6D,EAC7D,qCAAqC,EACrC,8CAA8C;AAC9C;AACA,oCAAoC;AACpC;AACA,iCAAiC;AACjC;AACA,2CAA2C;AAC3C;AACA,4CAA4C;AAC5C;AACA,sCAAsC;AACtC;AACA,0CAA0C;AAC1C;AACC,mBAAkB;AACnB;AACA,iCAAiC,EACjC,oCAAoC,CACrC,CAACC,IAAI,CAAC,GAAG,CAAC,CACZ;AAACC,OAAA,CAAAH,wBAAA,GAAAA,wBAAA;AAEF,SAASI,KAAKA,CAACC,KAAa,EAAW;EACrC,IAAI;IACF;IACA,KAAIC,UAAG,EAACD,KAAK,CAAC;IACd,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAwBA,CAAA,EAAuB;EAC7D,OAAQC,KAAwC,IAAK;IACnD,IAAIA,KAAK,CAACC,IAAI,IAAIL,KAAK,CAACI,KAAK,CAACC,IAAI,CAAC,EAAE;MACnC,OAAO;QACL,GAAGD,KAAK;QACR;QACAE,UAAU,EAAE,IAAI;QAChBC,MAAM,EAAE,IAAI;QACZ;QACAC,QAAQ,EAAE;MACZ,CAAC;IACH;IACA,IAAIA,QAAQ,GAAGC,OAAO,CAACL,KAAK,CAACC,IAAI,IAAIT,wBAAwB,CAACc,IAAI,CAACN,KAAK,CAACC,IAAI,CAAC,CAAC;IAE/E,IAAI,CAACG,QAAQ,EAAE;MAAA,IAAAG,WAAA;MACb;MACA;MACA;MACA,IACEP,KAAK,CAACG,MAAM,KAAK,CAAC,IAClBH,KAAK,CAACQ,UAAU,KAAK,aAAa,KAAAD,WAAA,GAClCP,KAAK,CAACC,IAAI,cAAAM,WAAA,eAAVA,WAAA,CAAYE,KAAK,CAAC,eAAe,CAAC,EAClC;QACAL,QAAQ,GAAG,IAAI;MACjB;IACF;IAEA,OAAO;MAAE,IAAIJ,KAAK,IAAI,CAAC,CAAC,CAAC;MAAEI;IAAS,CAAC;EACvC,CAAC;AACH"}
@@ -43,7 +43,7 @@ async function transformCssModuleWeb(props) {
43
43
  reactNativeWeb,
44
44
  variables
45
45
  } = convertLightningCssToReactNativeWebStyleSheet(cssResults.exports);
46
- let outputModule = `module.exports=Object.assign(${JSON.stringify(styles)},{unstable_styles:${JSON.stringify(reactNativeWeb)}}${JSON.stringify(variables)});`;
46
+ let outputModule = `module.exports=Object.assign(${JSON.stringify(styles)},{unstable_styles:${JSON.stringify(reactNativeWeb)}},${JSON.stringify(variables)});`;
47
47
  if (props.options.dev) {
48
48
  const runtimeCss = (0, _css().wrapDevelopmentCSS)({
49
49
  ...props,
@@ -1 +1 @@
1
- {"version":3,"file":"css-modules.js","names":["_css","data","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RNW_CSS_CLASS_ID","transformCssModuleWeb","props","transform","Promise","resolve","then","cssResults","filename","code","Buffer","from","src","sourceMap","options","cssModules","dashedIdents","projectRoot","minify","codeAsString","toString","styles","reactNativeWeb","variables","convertLightningCssToReactNativeWebStyleSheet","exports","outputModule","JSON","stringify","dev","runtimeCss","wrapDevelopmentCSS","output","css","map","input","entries","value","className","name","composes","length","join","startsWith","$$css","matchCssModule","filePath","test"],"sources":["../../src/transform-worker/css-modules.ts"],"sourcesContent":["import { wrapDevelopmentCSS } from './css';\n\nconst RNW_CSS_CLASS_ID = '_';\n\nexport async function transformCssModuleWeb(props: {\n filename: string;\n src: string;\n options: { projectRoot: string; minify: boolean; dev: boolean; sourceMap: boolean };\n}) {\n const { transform } = await import('lightningcss');\n\n // TODO: Add bundling to resolve imports\n // https://lightningcss.dev/bundling.html#bundling-order\n\n const cssResults = transform({\n filename: props.filename,\n code: Buffer.from(props.src),\n sourceMap: props.options.sourceMap,\n cssModules: {\n // Prevent renaming CSS variables to ensure\n // variables created in global files are available.\n dashedIdents: false,\n },\n // cssModules: true,\n projectRoot: props.options.projectRoot,\n minify: props.options.minify,\n });\n const codeAsString = cssResults.code.toString();\n\n const { styles, reactNativeWeb, variables } = convertLightningCssToReactNativeWebStyleSheet(\n cssResults.exports!\n );\n\n let outputModule = `module.exports=Object.assign(${JSON.stringify(\n styles\n )},{unstable_styles:${JSON.stringify(reactNativeWeb)}}${JSON.stringify(variables)});`;\n\n if (props.options.dev) {\n const runtimeCss = wrapDevelopmentCSS({\n ...props,\n src: codeAsString,\n });\n\n outputModule += '\\n' + runtimeCss;\n }\n\n return {\n output: outputModule,\n css: cssResults.code,\n map: cssResults.map,\n };\n}\n\nexport function convertLightningCssToReactNativeWebStyleSheet(\n input: import('lightningcss').CSSModuleExports\n) {\n const styles: Record<string, string> = {};\n const reactNativeWeb: Record<string, any> = {};\n const variables: Record<string, string> = {};\n // e.g. { container: { name: 'ahs8IW_container', composes: [], isReferenced: false }, }\n Object.entries(input).map(([key, value]) => {\n // order matters here\n let className = value.name;\n\n if (value.composes.length) {\n className += ' ' + value.composes.map((value) => value.name).join(' ');\n }\n\n // CSS Variables will be `{string: string}`\n if (key.startsWith('--')) {\n variables[key] = className;\n }\n\n styles[key] = className;\n reactNativeWeb[key] = { $$css: true, [RNW_CSS_CLASS_ID]: className };\n return {\n [key]: { $$css: true, [RNW_CSS_CLASS_ID]: className },\n };\n });\n\n return { styles, reactNativeWeb, variables };\n}\n\nexport function matchCssModule(filePath: string): boolean {\n return !!/\\.module(\\.(native|ios|android|web))?\\.(css|s[ac]ss)$/.test(filePath);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"css-modules.js","names":["_css","data","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RNW_CSS_CLASS_ID","transformCssModuleWeb","props","transform","Promise","resolve","then","cssResults","filename","code","Buffer","from","src","sourceMap","options","cssModules","dashedIdents","projectRoot","minify","codeAsString","toString","styles","reactNativeWeb","variables","convertLightningCssToReactNativeWebStyleSheet","exports","outputModule","JSON","stringify","dev","runtimeCss","wrapDevelopmentCSS","output","css","map","input","entries","value","className","name","composes","length","join","startsWith","$$css","matchCssModule","filePath","test"],"sources":["../../src/transform-worker/css-modules.ts"],"sourcesContent":["import { wrapDevelopmentCSS } from './css';\n\nconst RNW_CSS_CLASS_ID = '_';\n\nexport async function transformCssModuleWeb(props: {\n filename: string;\n src: string;\n options: { projectRoot: string; minify: boolean; dev: boolean; sourceMap: boolean };\n}) {\n const { transform } = await import('lightningcss');\n\n // TODO: Add bundling to resolve imports\n // https://lightningcss.dev/bundling.html#bundling-order\n\n const cssResults = transform({\n filename: props.filename,\n code: Buffer.from(props.src),\n sourceMap: props.options.sourceMap,\n cssModules: {\n // Prevent renaming CSS variables to ensure\n // variables created in global files are available.\n dashedIdents: false,\n },\n // cssModules: true,\n projectRoot: props.options.projectRoot,\n minify: props.options.minify,\n });\n const codeAsString = cssResults.code.toString();\n\n const { styles, reactNativeWeb, variables } = convertLightningCssToReactNativeWebStyleSheet(\n cssResults.exports!\n );\n\n let outputModule = `module.exports=Object.assign(${JSON.stringify(\n styles\n )},{unstable_styles:${JSON.stringify(reactNativeWeb)}},${JSON.stringify(variables)});`;\n\n if (props.options.dev) {\n const runtimeCss = wrapDevelopmentCSS({\n ...props,\n src: codeAsString,\n });\n\n outputModule += '\\n' + runtimeCss;\n }\n\n return {\n output: outputModule,\n css: cssResults.code,\n map: cssResults.map,\n };\n}\n\nexport function convertLightningCssToReactNativeWebStyleSheet(\n input: import('lightningcss').CSSModuleExports\n) {\n const styles: Record<string, string> = {};\n const reactNativeWeb: Record<string, any> = {};\n const variables: Record<string, string> = {};\n // e.g. { container: { name: 'ahs8IW_container', composes: [], isReferenced: false }, }\n Object.entries(input).map(([key, value]) => {\n // order matters here\n let className = value.name;\n\n if (value.composes.length) {\n className += ' ' + value.composes.map((value) => value.name).join(' ');\n }\n\n // CSS Variables will be `{string: string}`\n if (key.startsWith('--')) {\n variables[key] = className;\n }\n\n styles[key] = className;\n reactNativeWeb[key] = { $$css: true, [RNW_CSS_CLASS_ID]: className };\n return {\n [key]: { $$css: true, [RNW_CSS_CLASS_ID]: className },\n };\n });\n\n return { styles, reactNativeWeb, variables };\n}\n\nexport function matchCssModule(filePath: string): boolean {\n return !!/\\.module(\\.(native|ios|android|web))?\\.(css|s[ac]ss)$/.test(filePath);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/metro-config",
3
- "version": "0.10.1",
3
+ "version": "0.10.3",
4
4
  "description": "A Metro config for running React Native projects with the Metro bundler",
5
5
  "main": "build/ExpoMetroConfig.js",
6
6
  "scripts": {
@@ -50,5 +50,5 @@
50
50
  "publishConfig": {
51
51
  "access": "public"
52
52
  },
53
- "gitHead": "8f1b11dc4866465ba61334b9f93fa5b610c7d150"
53
+ "gitHead": "aa6bda733cef821234c77a19bbe6008b72c1c594"
54
54
  }