@vxrn/vite-plugin-metro 1.1.501-1751155612296

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 (142) hide show
  1. package/dist/cjs/index.cjs +28 -0
  2. package/dist/cjs/index.js +22 -0
  3. package/dist/cjs/index.js.map +6 -0
  4. package/dist/cjs/index.native.js +28 -0
  5. package/dist/cjs/index.native.js.map +6 -0
  6. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +56 -0
  7. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.js +49 -0
  8. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.js.map +6 -0
  9. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +48 -0
  10. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +6 -0
  11. package/dist/cjs/plugins/metroPlugin.cjs +214 -0
  12. package/dist/cjs/plugins/metroPlugin.js +186 -0
  13. package/dist/cjs/plugins/metroPlugin.js.map +6 -0
  14. package/dist/cjs/plugins/metroPlugin.native.js +179 -0
  15. package/dist/cjs/plugins/metroPlugin.native.js.map +6 -0
  16. package/dist/cjs/transformer/babel-core.cjs +27 -0
  17. package/dist/cjs/transformer/babel-core.js +22 -0
  18. package/dist/cjs/transformer/babel-core.js.map +6 -0
  19. package/dist/cjs/transformer/babel-core.native.js +28 -0
  20. package/dist/cjs/transformer/babel-core.native.js.map +6 -0
  21. package/dist/cjs/transformer/babel-transformer.cjs +148 -0
  22. package/dist/cjs/transformer/babel-transformer.js +129 -0
  23. package/dist/cjs/transformer/babel-transformer.js.map +6 -0
  24. package/dist/cjs/transformer/babel-transformer.native.js +135 -0
  25. package/dist/cjs/transformer/babel-transformer.native.js.map +6 -0
  26. package/dist/cjs/transformer/loadBabelConfig.cjs +53 -0
  27. package/dist/cjs/transformer/loadBabelConfig.js +46 -0
  28. package/dist/cjs/transformer/loadBabelConfig.js.map +6 -0
  29. package/dist/cjs/transformer/loadBabelConfig.native.js +55 -0
  30. package/dist/cjs/transformer/loadBabelConfig.native.js.map +6 -0
  31. package/dist/cjs/transformer/transformSync.cjs +64 -0
  32. package/dist/cjs/transformer/transformSync.js +53 -0
  33. package/dist/cjs/transformer/transformSync.js.map +6 -0
  34. package/dist/cjs/transformer/transformSync.native.js +58 -0
  35. package/dist/cjs/transformer/transformSync.native.js.map +6 -0
  36. package/dist/cjs/utils/getTerminalReporter.cjs +59 -0
  37. package/dist/cjs/utils/getTerminalReporter.js +48 -0
  38. package/dist/cjs/utils/getTerminalReporter.js.map +6 -0
  39. package/dist/cjs/utils/getTerminalReporter.native.js +53 -0
  40. package/dist/cjs/utils/getTerminalReporter.native.js.map +6 -0
  41. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +35 -0
  42. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.js +30 -0
  43. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.js.map +6 -0
  44. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +37 -0
  45. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +6 -0
  46. package/dist/cjs/utils/projectImport.cjs +56 -0
  47. package/dist/cjs/utils/projectImport.js +43 -0
  48. package/dist/cjs/utils/projectImport.js.map +6 -0
  49. package/dist/cjs/utils/projectImport.native.js +54 -0
  50. package/dist/cjs/utils/projectImport.native.js.map +6 -0
  51. package/dist/esm/index.js +7 -0
  52. package/dist/esm/index.js.map +6 -0
  53. package/dist/esm/index.mjs +4 -0
  54. package/dist/esm/index.mjs.map +1 -0
  55. package/dist/esm/index.native.js +4 -0
  56. package/dist/esm/index.native.js.map +1 -0
  57. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.js +35 -0
  58. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.js.map +6 -0
  59. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +33 -0
  60. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -0
  61. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +34 -0
  62. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -0
  63. package/dist/esm/plugins/metroPlugin.js +168 -0
  64. package/dist/esm/plugins/metroPlugin.js.map +6 -0
  65. package/dist/esm/plugins/metroPlugin.mjs +180 -0
  66. package/dist/esm/plugins/metroPlugin.mjs.map +1 -0
  67. package/dist/esm/plugins/metroPlugin.native.js +189 -0
  68. package/dist/esm/plugins/metroPlugin.native.js.map +1 -0
  69. package/dist/esm/transformer/babel-core.js +9 -0
  70. package/dist/esm/transformer/babel-core.js.map +6 -0
  71. package/dist/esm/transformer/babel-core.mjs +3 -0
  72. package/dist/esm/transformer/babel-core.mjs.map +1 -0
  73. package/dist/esm/transformer/babel-core.native.js +3 -0
  74. package/dist/esm/transformer/babel-core.native.js.map +1 -0
  75. package/dist/esm/transformer/babel-transformer.js +110 -0
  76. package/dist/esm/transformer/babel-transformer.js.map +6 -0
  77. package/dist/esm/transformer/babel-transformer.mjs +122 -0
  78. package/dist/esm/transformer/babel-transformer.mjs.map +1 -0
  79. package/dist/esm/transformer/babel-transformer.native.js +136 -0
  80. package/dist/esm/transformer/babel-transformer.native.js.map +1 -0
  81. package/dist/esm/transformer/loadBabelConfig.js +23 -0
  82. package/dist/esm/transformer/loadBabelConfig.js.map +6 -0
  83. package/dist/esm/transformer/loadBabelConfig.mjs +19 -0
  84. package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -0
  85. package/dist/esm/transformer/loadBabelConfig.native.js +23 -0
  86. package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -0
  87. package/dist/esm/transformer/transformSync.js +29 -0
  88. package/dist/esm/transformer/transformSync.js.map +6 -0
  89. package/dist/esm/transformer/transformSync.mjs +30 -0
  90. package/dist/esm/transformer/transformSync.mjs.map +1 -0
  91. package/dist/esm/transformer/transformSync.native.js +31 -0
  92. package/dist/esm/transformer/transformSync.native.js.map +1 -0
  93. package/dist/esm/utils/getTerminalReporter.js +25 -0
  94. package/dist/esm/utils/getTerminalReporter.js.map +6 -0
  95. package/dist/esm/utils/getTerminalReporter.mjs +25 -0
  96. package/dist/esm/utils/getTerminalReporter.mjs.map +1 -0
  97. package/dist/esm/utils/getTerminalReporter.native.js +26 -0
  98. package/dist/esm/utils/getTerminalReporter.native.js.map +1 -0
  99. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.js +14 -0
  100. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.js.map +6 -0
  101. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +12 -0
  102. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +1 -0
  103. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +14 -0
  104. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +1 -0
  105. package/dist/esm/utils/projectImport.js +20 -0
  106. package/dist/esm/utils/projectImport.js.map +6 -0
  107. package/dist/esm/utils/projectImport.mjs +20 -0
  108. package/dist/esm/utils/projectImport.mjs.map +1 -0
  109. package/dist/esm/utils/projectImport.native.js +22 -0
  110. package/dist/esm/utils/projectImport.native.js.map +1 -0
  111. package/empty.js +0 -0
  112. package/package.json +68 -0
  113. package/src/index.ts +4 -0
  114. package/src/plugins/expoManifestRequestHandlerPlugin.ts +75 -0
  115. package/src/plugins/metroPlugin.ts +314 -0
  116. package/src/transformer/babel-core.ts +7 -0
  117. package/src/transformer/babel-transformer.ts +211 -0
  118. package/src/transformer/loadBabelConfig.ts +53 -0
  119. package/src/transformer/transformSync.ts +54 -0
  120. package/src/utils/getTerminalReporter.ts +42 -0
  121. package/src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts +27 -0
  122. package/src/utils/projectImport.ts +32 -0
  123. package/types/index.d.ts +5 -0
  124. package/types/index.d.ts.map +1 -0
  125. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +14 -0
  126. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +1 -0
  127. package/types/plugins/metroPlugin.d.ts +22 -0
  128. package/types/plugins/metroPlugin.d.ts.map +1 -0
  129. package/types/transformer/babel-core.d.ts +2 -0
  130. package/types/transformer/babel-core.d.ts.map +1 -0
  131. package/types/transformer/babel-transformer.d.ts +18 -0
  132. package/types/transformer/babel-transformer.d.ts.map +1 -0
  133. package/types/transformer/loadBabelConfig.d.ts +10 -0
  134. package/types/transformer/loadBabelConfig.d.ts.map +1 -0
  135. package/types/transformer/transformSync.d.ts +11 -0
  136. package/types/transformer/transformSync.d.ts.map +1 -0
  137. package/types/utils/getTerminalReporter.d.ts +3 -0
  138. package/types/utils/getTerminalReporter.d.ts.map +1 -0
  139. package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts +5 -0
  140. package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +1 -0
  141. package/types/utils/projectImport.d.ts +12 -0
  142. package/types/utils/projectImport.d.ts.map +1 -0
@@ -0,0 +1,31 @@
1
+ import * as babel from "./babel-core.native.js";
2
+ function isTypeScriptSource(fileName) {
3
+ return fileName?.endsWith(".ts");
4
+ }
5
+ function isTSXSource(fileName) {
6
+ return fileName?.endsWith(".tsx");
7
+ }
8
+ function transformSync(src, babelConfig, param) {
9
+ var {
10
+ hermesParser
11
+ } = param,
12
+ isTypeScript = isTypeScriptSource(babelConfig.filename) || isTSXSource(babelConfig.filename);
13
+ return isTypeScript ? parseWithBabel(src, babelConfig) : !isTypeScript && (
14
+ // The Hermes parser doesn't support comments or babel proposals such as export default from, meaning it has lower compatibility with larger parts
15
+ // of the ecosystem.
16
+ // However, React Native ships with flow syntax that isn't supported in Babel so we need to use Hermes for those files.
17
+ // We can try to quickly detect if the file uses flow syntax by checking for the @flow pragma which is present in every React Native file.
18
+ hermesParser || src.includes(" @flow")) ? parseWithHermes(src, babelConfig) : parseWithBabel(src, babelConfig);
19
+ }
20
+ function parseWithHermes(src, babelConfig) {
21
+ var sourceAst = require("hermes-parser").parse(src, {
22
+ babel: !0,
23
+ sourceType: babelConfig.sourceType
24
+ });
25
+ return babel.transformFromAstSync(sourceAst, src, babelConfig);
26
+ }
27
+ function parseWithBabel(src, babelConfig) {
28
+ return babel.transformSync(src, babelConfig);
29
+ }
30
+ export { transformSync };
31
+ //# sourceMappingURL=transformSync.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["babel","isTypeScriptSource","fileName","endsWith","isTSXSource","transformSync","src","babelConfig","param","hermesParser","isTypeScript","filename","parseWithBabel","includes","parseWithHermes","sourceAst","require","parse","sourceType","transformFromAstSync"],"sources":["../../../src/transformer/transformSync.ts"],"sourcesContent":[null],"mappings":"AAMA,YAAYA,KAAA,MAAW;AAGvB,SAASC,mBAAmBC,QAAA,EAA2B;EACrD,OAAOA,QAAA,EAAUC,QAAA,CAAS,KAAK;AACjC;AAEA,SAASC,YAAYF,QAAA,EAA2B;EAC9C,OAAOA,QAAA,EAAUC,QAAA,CAAS,MAAM;AAClC;AAEO,SAASE,cACdC,GAAA,EACAC,WAAA,EACAC,KAAE;EAEF;MAAMC;IAAA,IACJD,KAAA;IAAAE,YAAmB,GAAAT,kBAAqB,CAAAM,WAAK,CAAAI,QAAY,KAAYP,WAAS,CAAAG,WAAA,CAAAI,QAAA;EAEhF,OAAID,YAAA,GACKE,cAAA,CAAeN,GAAA,EAAKC,WAAW,IAItC,CAACG,YAAA;EAAA;EAAA;EAAA;EAAA;EAKAD,YAAA,IAAgBH,GAAA,CAAIO,QAAA,CAAS,QAAQ,KAE/BC,eAAA,CAAgBR,GAAA,EAAKC,WAAW,IAGlCK,cAAA,CAAeN,GAAA,EAAKC,WAAW;AACxC;AAEA,SAASO,gBAAgBR,GAAA,EAAaC,WAAA,EAAqC;EACzE,IAAAQ,SAAM,GAAAC,OAAY,gBAAQ,EAAeC,KAAE,CAAAX,GAAM;IAC/CN,KAAA,EAAO;IACPkB,UAAA,EAAYX,WAAA,CAAYW;EAC1B,CAAC;EACD,OAAOlB,KAAA,CAAMmB,oBAAA,CAAqBJ,SAAA,EAAWT,GAAA,EAAKC,WAAW;AAC/D;AAEA,SAASK,eAAeN,GAAA,EAAaC,WAAA,EAAqC;EACxE,OAAOP,KAAA,CAAMK,aAAA,CAAcC,GAAA,EAAKC,WAAW;AAC7C","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import colors from "picocolors";
2
+ import { projectImport } from "./projectImport";
3
+ async function getTerminalReporter(projectRoot) {
4
+ const { Terminal, TerminalReporter } = await projectImport(projectRoot, "metro");
5
+ let metroWelcomeMessagePrinted = !1;
6
+ const terminal = new Terminal(process.stdout);
7
+ terminal._log = terminal.log, terminal.log = (message, ...rest) => {
8
+ if (!metroWelcomeMessagePrinted) {
9
+ const match = message.match(/Welcome to Metro.+v(\d+\.\d+\.\d+)/);
10
+ if (match) {
11
+ const version = match[1];
12
+ return metroWelcomeMessagePrinted = !0, terminal._log(colors.dim(`
13
+ Using Metro Bundler v${version}`), ...rest);
14
+ }
15
+ }
16
+ return terminal._log(message, ...rest);
17
+ };
18
+ const terminalReporter = new TerminalReporter(terminal);
19
+ return terminalReporter._logInitializing = () => {
20
+ }, terminalReporter;
21
+ }
22
+ export {
23
+ getTerminalReporter
24
+ };
25
+ //# sourceMappingURL=getTerminalReporter.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/getTerminalReporter.ts"],
4
+ "mappings": "AAIA,OAAO,YAAY;AAEnB,SAAS,qBAAqB;AAE9B,eAAsB,oBAAoB,aAAqB;AAC7D,QAAM,EAAE,UAAU,iBAAiB,IAAI,MAAM,cAG1C,aAAa,OAAO;AAEvB,MAAI,6BAA6B;AAEjC,QAAM,WAAW,IAAI,SAAS,QAAQ,MAAM;AAC3C,EAAC,SAAiB,OAAO,SAAS,KACnC,SAAS,MAAM,CAAC,YAAY,SAAS;AAGnC,QAAI,CAAC,4BAA4B;AAC/B,YAAM,QAAQ,QAAQ,MAAM,oCAAoC;AAChE,UAAI,OAAO;AACT,cAAM,UAAU,MAAM,CAAC;AACvB,4CAA6B,IACrB,SAAiB,KAAK,OAAO,IAAI;AAAA,yBAA4B,OAAO,EAAE,GAAG,GAAG,IAAI;AAAA,MAC1F;AAAA,IACF;AAEA,WAAQ,SAAiB,KAAK,SAAS,GAAG,IAAI;AAAA,EAChD;AAGA,QAAM,mBAAmB,IAAI,iBAAiB,QAAQ;AAIrD,SAAC,iBAAyB,mBAAmB,MAAM;AAAA,EAAC,GAE9C;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,25 @@
1
+ import colors from "picocolors";
2
+ import { projectImport } from "./projectImport.mjs";
3
+ async function getTerminalReporter(projectRoot) {
4
+ const {
5
+ Terminal,
6
+ TerminalReporter
7
+ } = await projectImport(projectRoot, "metro");
8
+ let metroWelcomeMessagePrinted = !1;
9
+ const terminal = new Terminal(process.stdout);
10
+ terminal._log = terminal.log, terminal.log = (message, ...rest) => {
11
+ if (!metroWelcomeMessagePrinted) {
12
+ const match = message.match(/Welcome to Metro.+v(\d+\.\d+\.\d+)/);
13
+ if (match) {
14
+ const version = match[1];
15
+ return metroWelcomeMessagePrinted = !0, terminal._log(colors.dim(`
16
+ Using Metro Bundler v${version}`), ...rest);
17
+ }
18
+ }
19
+ return terminal._log(message, ...rest);
20
+ };
21
+ const terminalReporter = new TerminalReporter(terminal);
22
+ return terminalReporter._logInitializing = () => {}, terminalReporter;
23
+ }
24
+ export { getTerminalReporter };
25
+ //# sourceMappingURL=getTerminalReporter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["colors","projectImport","getTerminalReporter","projectRoot","Terminal","TerminalReporter","metroWelcomeMessagePrinted","terminal","process","stdout","_log","log","message","rest","match","version","dim","terminalReporter","_logInitializing"],"sources":["../../../src/utils/getTerminalReporter.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAOA,MAAA,MAAY;AAEnB,SAASC,aAAA,QAAqB;AAE9B,eAAsBC,oBAAoBC,WAAA,EAAqB;EAC7D,MAAM;IAAEC,QAAA;IAAUC;EAAiB,IAAI,MAAMJ,aAAA,CAG1CE,WAAA,EAAa,OAAO;EAEvB,IAAIG,0BAAA,GAA6B;EAEjC,MAAMC,QAAA,GAAW,IAAIH,QAAA,CAASI,OAAA,CAAQC,MAAM;EAC1CF,QAAA,CAAiBG,IAAA,GAAOH,QAAA,CAASI,GAAA,EACnCJ,QAAA,CAASI,GAAA,GAAM,CAACC,OAAA,KAAYC,IAAA,KAAS;IAGnC,IAAI,CAACP,0BAAA,EAA4B;MAC/B,MAAMQ,KAAA,GAAQF,OAAA,CAAQE,KAAA,CAAM,oCAAoC;MAChE,IAAIA,KAAA,EAAO;QACT,MAAMC,OAAA,GAAUD,KAAA,CAAM,CAAC;QACvB,OAAAR,0BAAA,GAA6B,IACrBC,QAAA,CAAiBG,IAAA,CAAKV,MAAA,CAAOgB,GAAA,CAAI;AAAA,yBAA4BD,OAAO,EAAE,GAAG,GAAGF,IAAI;MAC1F;IACF;IAEA,OAAQN,QAAA,CAAiBG,IAAA,CAAKE,OAAA,EAAS,GAAGC,IAAI;EAChD;EAGA,MAAMI,gBAAA,GAAmB,IAAIZ,gBAAA,CAAiBE,QAAQ;EAIrD,OAACU,gBAAA,CAAyBC,gBAAA,GAAmB,MAAM,CAAC,GAE9CD,gBAAA;AACT","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ import colors from "picocolors";
2
+ import { projectImport } from "./projectImport.native.js";
3
+ async function getTerminalReporter(projectRoot) {
4
+ var {
5
+ Terminal,
6
+ TerminalReporter
7
+ } = await projectImport(projectRoot, "metro"),
8
+ metroWelcomeMessagePrinted = !1,
9
+ terminal = new Terminal(process.stdout);
10
+ terminal._log = terminal.log, terminal.log = function (message) {
11
+ for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) rest[_key - 1] = arguments[_key];
12
+ if (!metroWelcomeMessagePrinted) {
13
+ var match = message.match(/Welcome to Metro.+v(\d+\.\d+\.\d+)/);
14
+ if (match) {
15
+ var version = match[1];
16
+ return metroWelcomeMessagePrinted = !0, terminal._log(colors.dim(`
17
+ Using Metro Bundler v${version}`), ...rest);
18
+ }
19
+ }
20
+ return terminal._log(message, ...rest);
21
+ };
22
+ var terminalReporter = new TerminalReporter(terminal);
23
+ return terminalReporter._logInitializing = function () {}, terminalReporter;
24
+ }
25
+ export { getTerminalReporter };
26
+ //# sourceMappingURL=getTerminalReporter.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["colors","projectImport","getTerminalReporter","projectRoot","Terminal","TerminalReporter","metroWelcomeMessagePrinted","terminal","process","stdout","_log","log","message","_len","arguments","length","rest","Array","_key","match","version","dim","terminalReporter","_logInitializing"],"sources":["../../../src/utils/getTerminalReporter.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAOA,MAAA,MAAY;AAEnB,SAASC,aAAA,QAAqB;AAE9B,eAAsBC,oBAAoBC,WAAA,EAAqB;EAC7D;MAAMC,QAAE;MAAAC;IAAU,IAAiB,MAAIJ,aAAM,CAAAE,WAG1C,SAAa;IAAOG,0BAAA;IAAAC,QAAA,OAAAH,QAAA,CAAAI,OAAA,CAAAC,MAAA;EAEvBF,QAAI,CAAAG,IAAA,GAAAH,QAAA,CAAAI,GAAA,EAAAJ,QAA6B,CAAAI,GAAA,aAAAC,OAAA;IAEjC,KAAM,IAAAC,IAAA,GAAWC,SAAI,CAAAC,MAAS,EAAAC,IAAQ,OAAMC,KAAA,CAAAJ,IAAA,OAAAA,IAAA,WAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,IAC1CF,IAAA,CAAiBE,IAAA,GAAO,KAAAJ,SAC1B,CAAAI,IAAA;IAGE,IAAI,CAACZ,0BAAA,EAA4B;MAC/B,IAAAa,KAAM,GAAAP,OAAQ,CAAAO,KAAQ,qCAAM;MAC5B,IAAIA,KAAA,EAAO;QACT,IAAAC,OAAM,GAAAD,KAAU,GAAM;QACtB,OAAAb,0BAAA,GAA6B,IACrBC,QAAA,CAAiBG,IAAA,CAAKV,MAAA,CAAOqB,GAAA,CAAI;AAAA,yBAA4BD,OAAO,EAAE,GAAG,GAAGJ,IAAI;MAC1F;IACF;IAEA,OAAQT,QAAA,CAAiBG,IAAA,CAAKE,OAAA,EAAS,GAAGI,IAAI;EAChD;EAGA,IAAAM,gBAAM,OAAmBjB,gBAAI,CAAAE,QAAiB;EAI7C,OAACe,gBAAA,CAAyBC,gBAAA,GAAmB,YAAM,CAAC,GAE9CD,gBAAA;AACT","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ function patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(manifestHandlerMiddleware, mainModuleName) {
2
+ const origResolveMainModuleName = manifestHandlerMiddleware.resolveMainModuleName.bind(manifestHandlerMiddleware);
3
+ manifestHandlerMiddleware.resolveMainModuleName = (props) => origResolveMainModuleName({
4
+ ...props,
5
+ pkg: {
6
+ ...props.pkg,
7
+ main: mainModuleName
8
+ }
9
+ });
10
+ }
11
+ export {
12
+ patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName
13
+ };
14
+ //# sourceMappingURL=patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts"],
4
+ "mappings": "AAGO,SAAS,6DACd,2BACA,gBACA;AASA,QAAM,4BACJ,0BAA0B,sBAAsB,KAAK,yBAAyB;AAChF,4BAA0B,wBAAwB,CAAC,UAC1C,0BAA0B;AAAA,IAC/B,GAAG;AAAA,IACH,KAAK;AAAA,MACH,GAAG,MAAM;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF,CAAC;AAEL;",
5
+ "names": []
6
+ }
@@ -0,0 +1,12 @@
1
+ function patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(manifestHandlerMiddleware, mainModuleName) {
2
+ const origResolveMainModuleName = manifestHandlerMiddleware.resolveMainModuleName.bind(manifestHandlerMiddleware);
3
+ manifestHandlerMiddleware.resolveMainModuleName = props => origResolveMainModuleName({
4
+ ...props,
5
+ pkg: {
6
+ ...props.pkg,
7
+ main: mainModuleName
8
+ }
9
+ });
10
+ }
11
+ export { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName };
12
+ //# sourceMappingURL=patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","manifestHandlerMiddleware","mainModuleName","origResolveMainModuleName","resolveMainModuleName","bind","props","pkg","main"],"sources":["../../../src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts"],"sourcesContent":[null],"mappings":"AAGO,SAASA,6DACdC,yBAAA,EACAC,cAAA,EACA;EASA,MAAMC,yBAAA,GACJF,yBAAA,CAA0BG,qBAAA,CAAsBC,IAAA,CAAKJ,yBAAyB;EAChFA,yBAAA,CAA0BG,qBAAA,GAAyBE,KAAA,IAC1CH,yBAAA,CAA0B;IAC/B,GAAGG,KAAA;IACHC,GAAA,EAAK;MACH,GAAGD,KAAA,CAAMC,GAAA;MACTC,IAAA,EAAMN;IACR;EACF,CAAC;AAEL","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ function patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(manifestHandlerMiddleware, mainModuleName) {
2
+ var origResolveMainModuleName = manifestHandlerMiddleware.resolveMainModuleName.bind(manifestHandlerMiddleware);
3
+ manifestHandlerMiddleware.resolveMainModuleName = function (props) {
4
+ return origResolveMainModuleName({
5
+ ...props,
6
+ pkg: {
7
+ ...props.pkg,
8
+ main: mainModuleName
9
+ }
10
+ });
11
+ };
12
+ }
13
+ export { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName };
14
+ //# sourceMappingURL=patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","manifestHandlerMiddleware","mainModuleName","origResolveMainModuleName","resolveMainModuleName","bind","props","pkg","main"],"sources":["../../../src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts"],"sourcesContent":[null],"mappings":"AAGO,SAASA,6DACdC,yBAAA,EACAC,cAAA,EACA;EASA,IAAAC,yBAAM,GAAAF,yBACJ,CAAAG,qBAA0B,CAAAC,IAAsB,CAAAJ,yBAAK;EACvDA,yBAAA,CAA0BG,qBAAA,GAAwB,UAACE,KAC1C;IACL,OAAGH,yBAAA;MACH,GAAKG,KAAA;MACHC,GAAG;QACH,GAAAD,KAAM,CAAAC,GAAA;QACRC,IAAA,EAAAN;MACD;IAEL","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import module from "node:module";
2
+ import { createDebugger } from "@vxrn/debug";
3
+ const { debug } = createDebugger("vite-metro:projectImport");
4
+ async function projectImport(projectRoot, path) {
5
+ try {
6
+ const importPath = projectResolve(projectRoot, path);
7
+ return debug?.(`Importing "${path}" from project root: "${projectRoot}" at "${importPath}"`), await import(importPath);
8
+ } catch (e) {
9
+ throw e instanceof Error && (e.message = `[vite-plugin-metro] Failed to import ${path} from your project (${projectRoot}): ${e.message}`), e;
10
+ }
11
+ }
12
+ function projectResolve(projectRoot, path) {
13
+ return module.createRequire(projectRoot).resolve(path, { paths: [projectRoot] });
14
+ }
15
+ export {
16
+ debug,
17
+ projectImport,
18
+ projectResolve
19
+ };
20
+ //# sourceMappingURL=projectImport.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/projectImport.ts"],
4
+ "mappings": "AAAA,OAAO,YAAY;AACnB,SAAS,sBAAsB;AAExB,MAAM,EAAE,MAAM,IAAI,eAAe,0BAA0B;AAQlE,eAAsB,cAAuB,aAAqB,MAA0B;AAC1F,MAAI;AACF,UAAM,aAAa,eAAe,aAAa,IAAI;AAEnD,mBAAQ,cAAc,IAAI,yBAAyB,WAAW,SAAS,UAAU,GAAG,GAE7E,MAAM,OAAO;AAAA,EACtB,SAAS,GAAG;AACV,UAAI,aAAa,UACf,EAAE,UAAU,wCAAwC,IAAI,uBAAuB,WAAW,MAAM,EAAE,OAAO,KAGrG;AAAA,EACR;AACF;AAEO,SAAS,eAAe,aAAqB,MAAsB;AAGxE,SAFgB,OAAO,cAAc,WAAW,EACrB,QAAQ,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;AAEnE;",
5
+ "names": []
6
+ }
@@ -0,0 +1,20 @@
1
+ import module from "node:module";
2
+ import { createDebugger } from "@vxrn/debug";
3
+ const {
4
+ debug
5
+ } = createDebugger("vite-metro:projectImport");
6
+ async function projectImport(projectRoot, path) {
7
+ try {
8
+ const importPath = projectResolve(projectRoot, path);
9
+ return debug?.(`Importing "${path}" from project root: "${projectRoot}" at "${importPath}"`), await import(importPath);
10
+ } catch (e) {
11
+ throw e instanceof Error && (e.message = `[vite-plugin-metro] Failed to import ${path} from your project (${projectRoot}): ${e.message}`), e;
12
+ }
13
+ }
14
+ function projectResolve(projectRoot, path) {
15
+ return module.createRequire(projectRoot).resolve(path, {
16
+ paths: [projectRoot]
17
+ });
18
+ }
19
+ export { debug, projectImport, projectResolve };
20
+ //# sourceMappingURL=projectImport.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["module","createDebugger","debug","projectImport","projectRoot","path","importPath","projectResolve","e","Error","message","createRequire","resolve","paths"],"sources":["../../../src/utils/projectImport.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,MAAA,MAAY;AACnB,SAASC,cAAA,QAAsB;AAExB,MAAM;EAAEC;AAAM,IAAID,cAAA,CAAe,0BAA0B;AAQlE,eAAsBE,cAAuBC,WAAA,EAAqBC,IAAA,EAA0B;EAC1F,IAAI;IACF,MAAMC,UAAA,GAAaC,cAAA,CAAeH,WAAA,EAAaC,IAAI;IAEnD,OAAAH,KAAA,GAAQ,cAAcG,IAAI,yBAAyBD,WAAW,SAASE,UAAU,GAAG,GAE7E,MAAM,OAAOA,UAAA;EACtB,SAASE,CAAA,EAAG;IACV,MAAIA,CAAA,YAAaC,KAAA,KACfD,CAAA,CAAEE,OAAA,GAAU,wCAAwCL,IAAI,uBAAuBD,WAAW,MAAMI,CAAA,CAAEE,OAAO,KAGrGF,CAAA;EACR;AACF;AAEO,SAASD,eAAeH,WAAA,EAAqBC,IAAA,EAAsB;EAGxE,OAFgBL,MAAA,CAAOW,aAAA,CAAcP,WAAW,EACrBQ,OAAA,CAAQP,IAAA,EAAM;IAAEQ,KAAA,EAAO,CAACT,WAAW;EAAE,CAAC;AAEnE","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import module from "node:module";
2
+ import { createDebugger } from "@vxrn/debug";
3
+ var {
4
+ debug
5
+ } = createDebugger("vite-metro:projectImport");
6
+ async function projectImport(projectRoot, path) {
7
+ try {
8
+ var importPath = projectResolve(projectRoot, path);
9
+ return debug?.(`Importing "${path}" from project root: "${projectRoot}" at "${importPath}"`), await import(importPath);
10
+ } catch (e) {
11
+ throw e instanceof Error && (e.message = `[vite-plugin-metro] Failed to import ${path} from your project (${projectRoot}): ${e.message}`), e;
12
+ }
13
+ }
14
+ function projectResolve(projectRoot, path) {
15
+ var require2 = module.createRequire(projectRoot),
16
+ importPath = require2.resolve(path, {
17
+ paths: [projectRoot]
18
+ });
19
+ return importPath;
20
+ }
21
+ export { debug, projectImport, projectResolve };
22
+ //# sourceMappingURL=projectImport.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["module","createDebugger","debug","projectImport","projectRoot","path","importPath","projectResolve","e","Error","message","require2","createRequire","resolve","paths"],"sources":["../../../src/utils/projectImport.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,MAAA,MAAY;AACnB,SAASC,cAAA,QAAsB;AAExB;EAAMC;AAAE,IAAMD,cAAI,2BAAe;AAQxC,eAAsBE,cAAuBC,WAAA,EAAqBC,IAAA,EAA0B;EAC1F,IAAI;IACF,IAAAC,UAAM,GAAAC,cAAa,CAAAH,WAAe,EAAAC,IAAa;IAE/C,OAAAH,KAAA,GAAQ,cAAcG,IAAI,yBAAyBD,WAAW,SAASE,UAAU,GAAG,GAE7E,MAAM,OAAOA,UAAA;EACtB,SAASE,CAAA,EAAG;IACV,MAAIA,CAAA,YAAaC,KAAA,KACfD,CAAA,CAAEE,OAAA,GAAU,wCAAwCL,IAAI,uBAAuBD,WAAW,MAAMI,CAAA,CAAEE,OAAO,KAGrGF,CAAA;EACR;AACF;AAEO,SAASD,eAAeH,WAAA,EAAqBC,IAAA,EAAsB;EAGxE,IAAAM,QAFgB,GAAOX,MAAA,CAAAY,aAAc,CAAAR,WACV;IAAQE,UAAQ,GAAAK,QAAQ,CAAAE,OAAc,CAAAR,IAAA;MAEnES,KAAA,G","ignoreList":[]}
package/empty.js ADDED
File without changes
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@vxrn/vite-plugin-metro",
3
+ "version": "1.1.501-1751155612296",
4
+ "sideEffects": false,
5
+ "type": "module",
6
+ "main": "dist/cjs",
7
+ "module": "dist/esm",
8
+ "source": "src/index.ts",
9
+ "types": "./types/index.d.ts",
10
+ "exports": {
11
+ "./package.json": "./package.json",
12
+ ".": {
13
+ "types": "./types/index.d.ts",
14
+ "require": "./dist/cjs/index.js",
15
+ "import": "./dist/esm/index.mjs"
16
+ },
17
+ "./babel-transformer": {
18
+ "types": "./types/transformer/babel-transformer.d.ts",
19
+ "import": "./dist/esm/transformer/babel-transformer.mjs",
20
+ "require": "./dist/cjs/transformer/babel-transformer.cjs"
21
+ },
22
+ "./empty": {
23
+ "import": "./empty.js",
24
+ "require": "./empty.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "src",
29
+ "types",
30
+ "empty.js",
31
+ "dist"
32
+ ],
33
+ "scripts": {
34
+ "build": "tamagui-build",
35
+ "watch": "yarn build --watch",
36
+ "check": "yarn depcheck",
37
+ "clean": "tamagui-build clean",
38
+ "clean:build": "tamagui-build clean:build"
39
+ },
40
+ "peerDependencies": {
41
+ "@expo/metro-config": "^0.19.8",
42
+ "expo": "^53.0.4",
43
+ "metro": "^0.82",
44
+ "react-native": "~0.79.2",
45
+ "vite": "^6.1.0"
46
+ },
47
+ "dependencies": {
48
+ "@babel/core": "^7.26.8",
49
+ "@vxrn/debug": "1.1.501-1751155612296",
50
+ "babel-preset-expo": "*",
51
+ "launch-editor": "^2.10.0",
52
+ "picocolors": "^1.0.0"
53
+ },
54
+ "devDependencies": {
55
+ "@biomejs/biome": "1.9.4",
56
+ "@expo/metro-config": "^0.19.8",
57
+ "@react-native/dev-middleware": "~0.79.2",
58
+ "@tamagui/build": "^1.129.3",
59
+ "@types/node": "^22.1.0",
60
+ "depcheck": "^1.4.7",
61
+ "expo": "^53.0.4",
62
+ "metro": "^0.82",
63
+ "vite": "^6.1.0"
64
+ },
65
+ "publishConfig": {
66
+ "access": "public"
67
+ }
68
+ }
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { metroPlugin } from './plugins/metroPlugin'
2
+ export type { MetroPluginOptions } from './plugins/metroPlugin'
3
+ export { expoManifestRequestHandlerPlugin } from './plugins/expoManifestRequestHandlerPlugin'
4
+ export type { ExpoManifestRequestHandlerPluginPluginOptions } from './plugins/expoManifestRequestHandlerPlugin'
@@ -0,0 +1,75 @@
1
+ import { TLSSocket } from 'node:tls'
2
+ import type { PluginOption } from 'vite'
3
+
4
+ import { projectImport } from '../utils/projectImport'
5
+ import { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName } from '../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName'
6
+
7
+ export type ExpoManifestRequestHandlerPluginPluginOptions = {
8
+ /**
9
+ * Overrides the main module name which is normally defined as the `main` field in `package.json`.
10
+ *
11
+ * This will affect the `launchAsset.url` field in the Expo manifest response.
12
+ *
13
+ * It can be used to change the entry point of the React Native app without the need of using
14
+ * the `main` field in `package.json`.
15
+ */
16
+ mainModuleName?: string
17
+ }
18
+
19
+ export function expoManifestRequestHandlerPlugin(
20
+ options: ExpoManifestRequestHandlerPluginPluginOptions
21
+ ): PluginOption {
22
+ // let projectRoot = ''
23
+
24
+ return {
25
+ name: 'expo-manifest-request-handler',
26
+ // configResolved(config) {
27
+ // projectRoot = config.root
28
+ // },
29
+ async configureServer(server) {
30
+ const { root: projectRoot } = server.config
31
+
32
+ const ExpoGoManifestHandlerMiddleware = (
33
+ await projectImport(
34
+ projectRoot,
35
+ '@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js'
36
+ )
37
+ ).default.ExpoGoManifestHandlerMiddleware
38
+
39
+ server.middlewares.use(async (req, res, next) => {
40
+ if (!req.headers['expo-platform']) {
41
+ // Not an Expo manifest request, skip this middleware and proceed.
42
+ return next()
43
+ }
44
+
45
+ const protocol = req.socket instanceof TLSSocket && req.socket.encrypted ? 'https' : 'http'
46
+
47
+ const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {
48
+ constructUrl: ({ scheme, hostname }) => {
49
+ // Make the dev server work well behind a reverse proxy by deriving the host from request headers.
50
+ const host = req.headers['x-forwarded-host'] || req.headers.host || hostname
51
+
52
+ if (!scheme) {
53
+ // Some manifest fields (e.g., extra.expoClient.hostUri) must omit the scheme
54
+ // (e.g., use `127.0.0.1:8081` instead of `http://127.0.0.1:8081`).
55
+ // Including a scheme here can cause issues like images not loading in dev mode.
56
+ return host
57
+ }
58
+
59
+ return `${protocol || scheme}://${host}`
60
+ },
61
+ })
62
+
63
+ if (options.mainModuleName) {
64
+ patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(
65
+ manifestHandlerMiddleware,
66
+ options.mainModuleName
67
+ )
68
+ }
69
+
70
+ // Handle the Expo manifest request.
71
+ manifestHandlerMiddleware.handleRequestAsync(req, res, next)
72
+ })
73
+ },
74
+ }
75
+ }