one 1.16.12 → 1.17.0

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 (157) hide show
  1. package/dist/cjs/babel-preset/index.cjs +154 -0
  2. package/dist/cjs/babel-preset/index.native.js +186 -0
  3. package/dist/cjs/babel-preset/index.native.js.map +1 -0
  4. package/dist/cjs/babel-preset/index.test.cjs +143 -0
  5. package/dist/cjs/babel-preset/index.test.native.js +165 -0
  6. package/dist/cjs/babel-preset/index.test.native.js.map +1 -0
  7. package/dist/cjs/babel-preset/integration.test.cjs +94 -0
  8. package/dist/cjs/babel-preset/integration.test.native.js +97 -0
  9. package/dist/cjs/babel-preset/integration.test.native.js.map +1 -0
  10. package/dist/cjs/cli/generateBundlerConfig.cjs +247 -0
  11. package/dist/cjs/cli/generateBundlerConfig.native.js +316 -0
  12. package/dist/cjs/cli/generateBundlerConfig.native.js.map +1 -0
  13. package/dist/cjs/cli/generateBundlerConfig.test.cjs +350 -0
  14. package/dist/cjs/cli/generateBundlerConfig.test.native.js +380 -0
  15. package/dist/cjs/cli/generateBundlerConfig.test.native.js.map +1 -0
  16. package/dist/cjs/cli/patch.cjs +19 -2
  17. package/dist/cjs/cli/patch.native.js +26 -2
  18. package/dist/cjs/cli/patch.native.js.map +1 -1
  19. package/dist/cjs/cli/patch.test.cjs +56 -0
  20. package/dist/cjs/cli/patch.test.native.js +65 -0
  21. package/dist/cjs/cli/patch.test.native.js.map +1 -0
  22. package/dist/cjs/cli.cjs +39 -2
  23. package/dist/cjs/cli.native.js +40 -2
  24. package/dist/cjs/cli.native.js.map +1 -1
  25. package/dist/cjs/metro-config/buildOneMetroResolverOverrides.cjs +102 -0
  26. package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js +109 -0
  27. package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -0
  28. package/dist/cjs/metro-config/getViteMetroPluginOptions.cjs +17 -150
  29. package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.cjs +84 -0
  30. package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.native.js +90 -0
  31. package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.native.js.map +1 -0
  32. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +17 -158
  33. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
  34. package/dist/cjs/metro-config/withOne.cjs +82 -0
  35. package/dist/cjs/metro-config/withOne.native.js +88 -0
  36. package/dist/cjs/metro-config/withOne.native.js.map +1 -0
  37. package/dist/cjs/metro-config/withOne.test.cjs +129 -0
  38. package/dist/cjs/metro-config/withOne.test.native.js +156 -0
  39. package/dist/cjs/metro-config/withOne.test.native.js.map +1 -0
  40. package/dist/cjs/vite/loadConfig.cjs +20 -1
  41. package/dist/cjs/vite/loadConfig.native.js +20 -1
  42. package/dist/cjs/vite/loadConfig.native.js.map +1 -1
  43. package/dist/cjs/vite/plugins/warmRoutesPlugin.cjs +13 -7
  44. package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js +13 -7
  45. package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
  46. package/dist/esm/babel-preset/index.mjs +116 -0
  47. package/dist/esm/babel-preset/index.mjs.map +1 -0
  48. package/dist/esm/babel-preset/index.native.js +145 -0
  49. package/dist/esm/babel-preset/index.native.js.map +1 -0
  50. package/dist/esm/babel-preset/index.test.mjs +120 -0
  51. package/dist/esm/babel-preset/index.test.mjs.map +1 -0
  52. package/dist/esm/babel-preset/index.test.native.js +139 -0
  53. package/dist/esm/babel-preset/index.test.native.js.map +1 -0
  54. package/dist/esm/babel-preset/integration.test.mjs +71 -0
  55. package/dist/esm/babel-preset/integration.test.mjs.map +1 -0
  56. package/dist/esm/babel-preset/integration.test.native.js +71 -0
  57. package/dist/esm/babel-preset/integration.test.native.js.map +1 -0
  58. package/dist/esm/cli/generateBundlerConfig.mjs +207 -0
  59. package/dist/esm/cli/generateBundlerConfig.mjs.map +1 -0
  60. package/dist/esm/cli/generateBundlerConfig.native.js +273 -0
  61. package/dist/esm/cli/generateBundlerConfig.native.js.map +1 -0
  62. package/dist/esm/cli/generateBundlerConfig.test.mjs +327 -0
  63. package/dist/esm/cli/generateBundlerConfig.test.mjs.map +1 -0
  64. package/dist/esm/cli/generateBundlerConfig.test.native.js +354 -0
  65. package/dist/esm/cli/generateBundlerConfig.test.native.js.map +1 -0
  66. package/dist/esm/cli/patch.mjs +19 -2
  67. package/dist/esm/cli/patch.mjs.map +1 -1
  68. package/dist/esm/cli/patch.native.js +26 -2
  69. package/dist/esm/cli/patch.native.js.map +1 -1
  70. package/dist/esm/cli/patch.test.mjs +57 -0
  71. package/dist/esm/cli/patch.test.mjs.map +1 -0
  72. package/dist/esm/cli/patch.test.native.js +63 -0
  73. package/dist/esm/cli/patch.test.native.js.map +1 -0
  74. package/dist/esm/cli.mjs +39 -2
  75. package/dist/esm/cli.mjs.map +1 -1
  76. package/dist/esm/cli.native.js +40 -2
  77. package/dist/esm/cli.native.js.map +1 -1
  78. package/dist/esm/metro-config/buildOneMetroResolverOverrides.mjs +66 -0
  79. package/dist/esm/metro-config/buildOneMetroResolverOverrides.mjs.map +1 -0
  80. package/dist/esm/metro-config/buildOneMetroResolverOverrides.native.js +70 -0
  81. package/dist/esm/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -0
  82. package/dist/esm/metro-config/getViteMetroPluginOptions.integration.test.mjs +61 -0
  83. package/dist/esm/metro-config/getViteMetroPluginOptions.integration.test.mjs.map +1 -0
  84. package/dist/esm/metro-config/getViteMetroPluginOptions.integration.test.native.js +64 -0
  85. package/dist/esm/metro-config/getViteMetroPluginOptions.integration.test.native.js.map +1 -0
  86. package/dist/esm/metro-config/getViteMetroPluginOptions.mjs +17 -138
  87. package/dist/esm/metro-config/getViteMetroPluginOptions.mjs.map +1 -1
  88. package/dist/esm/metro-config/getViteMetroPluginOptions.native.js +17 -146
  89. package/dist/esm/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
  90. package/dist/esm/metro-config/withOne.mjs +45 -0
  91. package/dist/esm/metro-config/withOne.mjs.map +1 -0
  92. package/dist/esm/metro-config/withOne.native.js +48 -0
  93. package/dist/esm/metro-config/withOne.native.js.map +1 -0
  94. package/dist/esm/metro-config/withOne.test.mjs +106 -0
  95. package/dist/esm/metro-config/withOne.test.mjs.map +1 -0
  96. package/dist/esm/metro-config/withOne.test.native.js +130 -0
  97. package/dist/esm/metro-config/withOne.test.native.js.map +1 -0
  98. package/dist/esm/vite/loadConfig.mjs +20 -1
  99. package/dist/esm/vite/loadConfig.mjs.map +1 -1
  100. package/dist/esm/vite/loadConfig.native.js +20 -1
  101. package/dist/esm/vite/loadConfig.native.js.map +1 -1
  102. package/dist/esm/vite/plugins/warmRoutesPlugin.mjs +13 -7
  103. package/dist/esm/vite/plugins/warmRoutesPlugin.mjs.map +1 -1
  104. package/dist/esm/vite/plugins/warmRoutesPlugin.native.js +13 -7
  105. package/dist/esm/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
  106. package/package.json +20 -9
  107. package/src/babel-preset/index.test.ts +148 -0
  108. package/src/babel-preset/index.ts +250 -0
  109. package/src/babel-preset/integration.test.ts +91 -0
  110. package/src/cli/generateBundlerConfig.test.ts +343 -0
  111. package/src/cli/generateBundlerConfig.ts +339 -0
  112. package/src/cli/patch.test.ts +65 -0
  113. package/src/cli/patch.ts +30 -2
  114. package/src/cli.ts +31 -0
  115. package/src/metro-config/buildOneMetroResolverOverrides.ts +104 -0
  116. package/src/metro-config/getViteMetroPluginOptions.integration.test.ts +75 -0
  117. package/src/metro-config/getViteMetroPluginOptions.ts +15 -230
  118. package/src/metro-config/withOne.test.ts +120 -0
  119. package/src/metro-config/withOne.ts +112 -0
  120. package/src/vite/loadConfig.ts +22 -0
  121. package/src/vite/plugins/warmRoutesPlugin.ts +22 -6
  122. package/types/babel-preset/index.d.ts +68 -0
  123. package/types/babel-preset/index.d.ts.map +1 -0
  124. package/types/babel-preset/index.test.d.ts +2 -0
  125. package/types/babel-preset/index.test.d.ts.map +1 -0
  126. package/types/babel-preset/integration.test.d.ts +2 -0
  127. package/types/babel-preset/integration.test.d.ts.map +1 -0
  128. package/types/cli/generateBundlerConfig.d.ts +61 -0
  129. package/types/cli/generateBundlerConfig.d.ts.map +1 -0
  130. package/types/cli/generateBundlerConfig.test.d.ts +2 -0
  131. package/types/cli/generateBundlerConfig.test.d.ts.map +1 -0
  132. package/types/cli/patch.d.ts.map +1 -1
  133. package/types/cli/patch.test.d.ts +2 -0
  134. package/types/cli/patch.test.d.ts.map +1 -0
  135. package/types/metro-config/buildOneMetroResolverOverrides.d.ts +20 -0
  136. package/types/metro-config/buildOneMetroResolverOverrides.d.ts.map +1 -0
  137. package/types/metro-config/getViteMetroPluginOptions.d.ts +0 -5
  138. package/types/metro-config/getViteMetroPluginOptions.d.ts.map +1 -1
  139. package/types/metro-config/getViteMetroPluginOptions.integration.test.d.ts +2 -0
  140. package/types/metro-config/getViteMetroPluginOptions.integration.test.d.ts.map +1 -0
  141. package/types/metro-config/withOne.d.ts +44 -0
  142. package/types/metro-config/withOne.d.ts.map +1 -0
  143. package/types/metro-config/withOne.test.d.ts +2 -0
  144. package/types/metro-config/withOne.test.d.ts.map +1 -0
  145. package/types/vite/loadConfig.d.ts +1 -0
  146. package/types/vite/loadConfig.d.ts.map +1 -1
  147. package/types/vite/plugins/warmRoutesPlugin.d.ts.map +1 -1
  148. package/dist/cjs/metro-config/getViteMetroPluginOptions.test.cjs +0 -23
  149. package/dist/cjs/metro-config/getViteMetroPluginOptions.test.native.js +0 -26
  150. package/dist/cjs/metro-config/getViteMetroPluginOptions.test.native.js.map +0 -1
  151. package/dist/esm/metro-config/getViteMetroPluginOptions.test.mjs +0 -24
  152. package/dist/esm/metro-config/getViteMetroPluginOptions.test.mjs.map +0 -1
  153. package/dist/esm/metro-config/getViteMetroPluginOptions.test.native.js +0 -24
  154. package/dist/esm/metro-config/getViteMetroPluginOptions.test.native.js.map +0 -1
  155. package/src/metro-config/getViteMetroPluginOptions.test.ts +0 -34
  156. package/types/metro-config/getViteMetroPluginOptions.test.d.ts +0 -2
  157. package/types/metro-config/getViteMetroPluginOptions.test.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["import_path","__toESM","require","import_vitest","import_index","_type_of","obj","Symbol","constructor","projectRoot","default","resolve","__dirname","fakeApi","cwd","cache","describe","it","result","includeExpoPreset","expect","toHaveProperty","Array","isArray","plugins","toBe","toHaveLength","names","map","p","toEqual","removeServer","find","routerRoot","caller","cb","oneViteMetroBabelConfig","buildOneBabelPlugins","relativeRouterRoot","ignoredRouteFiles","linking","setupFile","includeImportMetaEnv","toMatchObject","alias","oneRouterMetro","ONE_ROUTER_ROOT_FOLDER_NAME","ONE_ROUTER_LINKING_CONFIG","ONE_SETUP_FILE_NATIVE","ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY","ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING"],"sources":["../../../src/babel-preset/index.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
10
+ get: () => from[key],
11
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
12
+ });
13
+ }
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
22
+ value: mod,
23
+ enumerable: true
24
+ }) : target, mod));
25
+ var import_node_path = __toESM(require("node:path"), 1);
26
+ var import_core = require("@babel/core");
27
+ var import_vitest = require("vitest");
28
+ var import_index = __toESM(require("./index.cjs"), 1);
29
+ const projectRoot = import_node_path.default.resolve(__dirname, "../../");
30
+ (0, import_vitest.describe)("one/babel-preset integration", () => {
31
+ const presetWithOpts = [import_index.default, {
32
+ projectRoot,
33
+ includeExpoPreset: false
34
+ }];
35
+ (0, import_vitest.it)("runs against a route file without throwing", () => {
36
+ const code = `
37
+ import { useLoader } from 'one'
38
+ export default function Page() {
39
+ return null
40
+ }
41
+ `;
42
+ const result = (0, import_core.transformSync)(code, {
43
+ filename: import_node_path.default.join(projectRoot, "app/index.tsx"),
44
+ cwd: projectRoot,
45
+ presets: [presetWithOpts],
46
+ parserOpts: {
47
+ sourceType: "module",
48
+ plugins: ["jsx"]
49
+ }
50
+ });
51
+ (0, import_vitest.expect)(result?.code).toBeTruthy();
52
+ (0, import_vitest.expect)(result?.code).toContain("useLoader");
53
+ });
54
+ (0, import_vitest.it)("substitutes ONE_ROUTER_* process.env placeholders in metro-entry", () => {
55
+ const code = `
56
+ const ctx = require.context(
57
+ process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY,
58
+ true,
59
+ process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING
60
+ )
61
+ const folder = process.env.ONE_ROUTER_ROOT_FOLDER_NAME
62
+ module.exports = { ctx, folder }
63
+ `;
64
+ const result = (0, import_core.transformSync)(code, {
65
+ filename: import_node_path.default.join(projectRoot, "metro-entry-ctx.js"),
66
+ cwd: projectRoot,
67
+ presets: [presetWithOpts],
68
+ parserOpts: {
69
+ sourceType: "module"
70
+ }
71
+ });
72
+ (0, import_vitest.expect)(result?.code).toBeTruthy();
73
+ (0, import_vitest.expect)(result?.code).not.toContain("process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY");
74
+ (0, import_vitest.expect)(result?.code).not.toContain("process.env.ONE_ROUTER_ROOT_FOLDER_NAME");
75
+ (0, import_vitest.expect)(result?.code).not.toContain("process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING");
76
+ (0, import_vitest.expect)(result?.code).toContain('"app"');
77
+ (0, import_vitest.expect)(result?.code).toMatch(/\/\^.*\.tsx\?\$\//);
78
+ });
79
+ (0, import_vitest.it)("keeps client code intact in non-route files", () => {
80
+ const code = `
81
+ const x = 1
82
+ export default x
83
+ `;
84
+ const result = (0, import_core.transformSync)(code, {
85
+ filename: import_node_path.default.join(projectRoot, "src/utils/x.ts"),
86
+ cwd: projectRoot,
87
+ presets: [presetWithOpts],
88
+ parserOpts: {
89
+ sourceType: "module"
90
+ }
91
+ });
92
+ (0, import_vitest.expect)(result?.code).toContain("const x = 1");
93
+ });
94
+ });
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: () => from[key],
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
24
+ value: mod,
25
+ enumerable: true
26
+ }) : target, mod));
27
+ var import_path = __toESM(require("path"), 1);
28
+ var import_core = require("@babel/core");
29
+ var import_vitest = require("vitest");
30
+ var import_index = __toESM(require("./index.native.js"), 1);
31
+ var projectRoot = import_path.default.resolve(__dirname, "../../");
32
+ (0, import_vitest.describe)("one/babel-preset integration", function () {
33
+ var presetWithOpts = [import_index.default, {
34
+ projectRoot,
35
+ includeExpoPreset: false
36
+ }];
37
+ (0, import_vitest.it)("runs against a route file without throwing", function () {
38
+ var code = `
39
+ import { useLoader } from 'one'
40
+ export default function Page() {
41
+ return null
42
+ }
43
+ `;
44
+ var result = (0, import_core.transformSync)(code, {
45
+ filename: import_path.default.join(projectRoot, "app/index.tsx"),
46
+ cwd: projectRoot,
47
+ presets: [presetWithOpts],
48
+ parserOpts: {
49
+ sourceType: "module",
50
+ plugins: ["jsx"]
51
+ }
52
+ });
53
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).toBeTruthy();
54
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).toContain("useLoader");
55
+ });
56
+ (0, import_vitest.it)("substitutes ONE_ROUTER_* process.env placeholders in metro-entry", function () {
57
+ var code = `
58
+ const ctx = require.context(
59
+ process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY,
60
+ true,
61
+ process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING
62
+ )
63
+ const folder = process.env.ONE_ROUTER_ROOT_FOLDER_NAME
64
+ module.exports = { ctx, folder }
65
+ `;
66
+ var result = (0, import_core.transformSync)(code, {
67
+ filename: import_path.default.join(projectRoot, "metro-entry-ctx.js"),
68
+ cwd: projectRoot,
69
+ presets: [presetWithOpts],
70
+ parserOpts: {
71
+ sourceType: "module"
72
+ }
73
+ });
74
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).toBeTruthy();
75
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY");
76
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_ROOT_FOLDER_NAME");
77
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING");
78
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).toContain('"app"');
79
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).toMatch(/\/\^.*\.tsx\?\$\//);
80
+ });
81
+ (0, import_vitest.it)("keeps client code intact in non-route files", function () {
82
+ var code = `
83
+ const x = 1
84
+ export default x
85
+ `;
86
+ var result = (0, import_core.transformSync)(code, {
87
+ filename: import_path.default.join(projectRoot, "src/utils/x.ts"),
88
+ cwd: projectRoot,
89
+ presets: [presetWithOpts],
90
+ parserOpts: {
91
+ sourceType: "module"
92
+ }
93
+ });
94
+ (0, import_vitest.expect)(result === null || result === void 0 ? void 0 : result.code).toContain("const x = 1");
95
+ });
96
+ });
97
+ //# sourceMappingURL=integration.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["import_path","__toESM","require","import_core","import_vitest","import_index","projectRoot","default","resolve","__dirname","describe","presetWithOpts","includeExpoPreset","it","code","result","transformSync","filename","join","cwd","presets","parserOpts","sourceType","plugins","expect","toBeTruthy","toContain","not","toMatch"],"sources":["../../../src/babel-preset/integration.test.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;gBAAA;AACA,IAAAA,WAAA,GAA8BC,OAAA,CAAAC,OAAA;AAC9B,IAAAC,WAAA,GAAAD,OAAqC;AACrC,IAAAE,aAAA,GAA2BF,OAAA;AAE3B,IAAAG,YAAM,GAAAJ,OAAc,CAAAC,OAAA,qBAAK;AAA2B,IAYpDI,WAAA,GAAAN,WAAS,CAAAO,OAAA,CAAAC,OAAA,CAAAC,SAAA,UAAgC,CAAM;AAC7C,IAAAL,aAAM,CAAAM,QAAiB;EAAA,IACrBC,cAAA,IACAN,YAAE,CAAAE,OAAa,EACjB;IAEAD,WAAA;IACEM,iBAAa;EAAA;EAAA,IAAAR,aAAA,CAAAS,EAAA;IAAA,IAAAC,IAAA;AAAA;AAMb;AAAmC;AACe;AAC3C;IACmB,IACxBC,MAAA,IAAY,GAAEZ,WAAY,CAAAa,aAAU,EAAAF,IAAU;MAC/CG,QAAA,EAAAjB,WAAA,CAAAO,OAAA,CAAAW,IAAA,CAAAZ,WAAA;MAEDa,GAAA,EAAAb,WAAA;MAIAc,OAAA,GACDT,cAAA,CAED;MAGEU,UAAM,EAAO;QAAAC,UAAA;QAAAC,OAAA;MAAA;IAAA;IAAA,IAAAnB,aAAA,CAAAoB,MAAA,EAAAT,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAW,UAAA;IAAA,IAAArB,aAAA,CAAAoB,MAAA,EAAAT,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAY,SAAA;EASb;EAAmC,IACjCtB,aAAU,CAAAS,EAAA,oEAA2C;IAAA,IACrDC,IAAK;AAAA;AACmB;AACW;AAGrC;AAEA;AACA;AACA;AAAyB;IAEzB,IAAAC,MAAA,OAAAZ,WAAA,CAAAa,aAAA,EAAAF,IAAA;MAEAG,QAAA,EAAAjB,WAAA,CAAAO,OAAO,CAAAW,IAAQ,CAAAZ,WAAM,EAAU,oBAAO;MAEtCa,GAAA,EAAAb,WAAA;MACDc,OAAA,GAEDT,cAAA,CACE;MAAaU,UAAA;QAAAC,UAAA;MAAA;IAIb;IAAmC,EACjC,EAAAlB,aAAU,CAAAoB,MAAA,EAAAT,MAAA,KAAK,QAAKA,MAAA,KAAa,eAAgB,GAAAA,MAAA,CAAAD,IAAA,EAAAW,UAAA;IAAA,EACjD,EAAArB,aAAK,CAAAoB,MAAA,EAAAT,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAa,GAAA,CAAAD,SAAA;IAAA,EACL,EAAAtB,aAAU,CAAAoB,MAAA,EAAcT,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAa,GAAA,CAAAD,SAAA;IAAA,EACxB,EAAAtB,aAAc,CAAAoB,MAAA,EAAAT,MAAY,KAAS,QAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAa,GAAA,CAAAD,SAAA;IACrC,CAAC,GAAAtB,aAAA,CAAAoB,MAAA,EAAAT,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAY,SAAA;IAED,IAAAtB,aAAA,CAAAoB,MAAA,EAAOT,MAAA,KAAQ,IAAM,IAAAA,MAAU,cAAa,SAAAA,MAAA,CAAAD,IAAA,EAAAc,OAAA;EAC9C,CAAC;EACF,IAAAxB,aAAA,CAAAS,EAAA","ignoreList":[]}
@@ -0,0 +1,247 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: true
30
+ }) : target, mod));
31
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: true
33
+ }), mod);
34
+ var generateBundlerConfig_exports = {};
35
+ __export(generateBundlerConfig_exports, {
36
+ ONE_GENERATED_MARKER: () => ONE_GENERATED_MARKER,
37
+ generateBundlerConfig: () => generateBundlerConfig,
38
+ getBundlerConfigOptionsFromOneOptions: () => getBundlerConfigOptionsFromOneOptions,
39
+ isCiEnvironment: () => isCiEnvironment,
40
+ maybeGenerateBundlerConfigOnInstall: () => maybeGenerateBundlerConfigOnInstall
41
+ });
42
+ module.exports = __toCommonJS(generateBundlerConfig_exports);
43
+ var import_node_fs = require("node:fs");
44
+ var import_node_module = __toESM(require("node:module"), 1);
45
+ var import_node_path = __toESM(require("node:path"), 1);
46
+ var import_picocolors = __toESM(require("picocolors"), 1);
47
+ var import_getRouterRootFromOneOptions = require("../utils/getRouterRootFromOneOptions.cjs");
48
+ const ONE_GENERATED_MARKER = "@one/generated bundler-config";
49
+ function buildBabelConfigContent({
50
+ eject,
51
+ options
52
+ }) {
53
+ const header = eject ? `// you own this file. edit freely \u2014 \`one\` will not regenerate it.
54
+ // delegates to one/babel-preset which holds the canonical plugin chain.
55
+ ` : `// ${ONE_GENERATED_MARKER}
56
+ //
57
+ // auto-generated by \`one patch\` on ci/eas workers when expo-updates is
58
+ // in deps. delegates to one/babel-preset so expo export / eas update
59
+ // use the same router/setup options as \`one dev\` and \`one build\`.
60
+ //
61
+ // to customize, delete this header and edit freely \u2014 re-runs will then
62
+ // leave this file alone.
63
+ `;
64
+ return `${header}
65
+ const oneBabelPreset = require('one/babel-preset')
66
+ const preset = oneBabelPreset.default || oneBabelPreset
67
+ const oneBundlerOptions = ${serializeBundlerConfigOptions(options)}
68
+
69
+ module.exports = function (api) {
70
+ return preset(api, oneBundlerOptions)
71
+ }
72
+ `;
73
+ }
74
+ function buildMetroConfigContent({
75
+ eject,
76
+ options
77
+ }) {
78
+ const header = eject ? `// you own this file. edit freely \u2014 \`one\` will not regenerate it.
79
+ // withOne() invokes the same Metro pipeline One uses for production bundles.
80
+ ` : `// ${ONE_GENERATED_MARKER}
81
+ //
82
+ // auto-generated by \`one patch\` on ci/eas workers when expo-updates is
83
+ // in deps. delegates to one/metro-config which invokes the exact same
84
+ // metro pipeline one uses for production native bundles with your
85
+ // router/setup options \u2014 no separate expo/metro-config setup needed.
86
+ //
87
+ // to customize, delete this header and edit freely \u2014 re-runs will then
88
+ // leave this file alone.
89
+ `;
90
+ return `${header}
91
+ const { withOne } = require('one/metro-config')
92
+ const oneBundlerOptions = ${serializeBundlerConfigOptions(options)}
93
+
94
+ module.exports = withOne(__dirname, oneBundlerOptions)
95
+ `;
96
+ }
97
+ const FILES = [{
98
+ name: "babel.config.cjs",
99
+ getContent: buildBabelConfigContent,
100
+ conflicting: ["babel.config.js", "babel.config.mjs", ".babelrc", ".babelrc.js"]
101
+ }, {
102
+ name: "metro.config.cjs",
103
+ getContent: buildMetroConfigContent,
104
+ conflicting: ["metro.config.js", "metro.config.mjs"]
105
+ }];
106
+ function stripUndefined(value) {
107
+ if (Array.isArray(value)) {
108
+ return value.map(stripUndefined);
109
+ }
110
+ if (value && typeof value === "object") {
111
+ return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== void 0).map(([key, entry]) => [key, stripUndefined(entry)]));
112
+ }
113
+ return value;
114
+ }
115
+ function assertSerializable(value, keyPath = "one bundler options") {
116
+ if (typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
117
+ throw new Error(`[one] ${keyPath} must be JSON-serializable to generate Babel/Metro config files. Move function-valued native linking/customization into an ejected config.`);
118
+ }
119
+ if (Array.isArray(value)) {
120
+ value.forEach((entry, index) => assertSerializable(entry, `${keyPath}[${index}]`));
121
+ return;
122
+ }
123
+ if (value && typeof value === "object") {
124
+ for (const [key, entry] of Object.entries(value)) {
125
+ assertSerializable(entry, `${keyPath}.${key}`);
126
+ }
127
+ }
128
+ }
129
+ function serializeBundlerConfigOptions(options) {
130
+ const clean = stripUndefined(options);
131
+ assertSerializable(clean);
132
+ return JSON.stringify(clean, null, 2);
133
+ }
134
+ function getBundlerConfigOptionsFromOneOptions(oneOptions = {}) {
135
+ return stripUndefined({
136
+ routerRoot: (0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(oneOptions),
137
+ ignoredRouteFiles: oneOptions.router?.ignoredRouteFiles,
138
+ linking: oneOptions.router?.linking,
139
+ setupFile: oneOptions.setupFile
140
+ });
141
+ }
142
+ function generateBundlerConfig(args = {}) {
143
+ const cwd = import_node_path.default.resolve(args.cwd ?? process.cwd());
144
+ const force = !!args.force;
145
+ const check = !!args.check;
146
+ const quiet = !!args.quiet;
147
+ const log = msg => {
148
+ if (!quiet) console.info(msg);
149
+ };
150
+ const warn = msg => {
151
+ if (!quiet) console.warn(msg);
152
+ };
153
+ const results = [];
154
+ const eject = !!args.eject;
155
+ const bundlerOptions = getBundlerConfigOptionsFromOneOptions(args.oneOptions);
156
+ for (const file of FILES) {
157
+ const filePath = import_node_path.default.join(cwd, file.name);
158
+ const targetContent = file.getContent({
159
+ eject,
160
+ options: bundlerOptions
161
+ });
162
+ const conflict = file.conflicting.find(alt => (0, import_node_fs.existsSync)(import_node_path.default.join(cwd, alt)));
163
+ if (conflict && !(0, import_node_fs.existsSync)(filePath)) {
164
+ results.push({
165
+ filePath: import_node_path.default.join(cwd, conflict),
166
+ action: "skipped-other-format",
167
+ reason: `Found ${conflict}; not creating ${file.name}. To switch, delete ${conflict} and re-run with --force.`
168
+ });
169
+ warn(import_picocolors.default.yellow(`[one] found ${conflict} \u2014 leaving it alone. Delete it and re-run with --force to switch to ${file.name}.`));
170
+ continue;
171
+ }
172
+ if (!(0, import_node_fs.existsSync)(filePath)) {
173
+ if (check) {
174
+ results.push({
175
+ filePath,
176
+ action: "would-write"
177
+ });
178
+ log(import_picocolors.default.yellow(`[one] missing: ${file.name}`));
179
+ continue;
180
+ }
181
+ (0, import_node_fs.writeFileSync)(filePath, targetContent);
182
+ results.push({
183
+ filePath,
184
+ action: "wrote"
185
+ });
186
+ log(import_picocolors.default.green(`[one] wrote ${file.name}`));
187
+ continue;
188
+ }
189
+ const existing = (0, import_node_fs.readFileSync)(filePath, "utf8");
190
+ if (existing === targetContent) {
191
+ results.push({
192
+ filePath,
193
+ action: "kept"
194
+ });
195
+ log(import_picocolors.default.dim(`[one] up to date: ${file.name}`));
196
+ continue;
197
+ }
198
+ const hasMarker = existing.includes(ONE_GENERATED_MARKER);
199
+ if (!hasMarker && !force) {
200
+ results.push({
201
+ filePath,
202
+ action: "skipped-customized",
203
+ reason: `${file.name} has been customized (no @one marker). Re-add the marker comment or pass --force to overwrite.`
204
+ });
205
+ warn(import_picocolors.default.yellow(`[one] ${file.name} appears customized \u2014 skipping. Pass --force to overwrite.`));
206
+ continue;
207
+ }
208
+ if (check) {
209
+ results.push({
210
+ filePath,
211
+ action: "would-overwrite"
212
+ });
213
+ log(import_picocolors.default.yellow(`[one] out of date: ${file.name}`));
214
+ continue;
215
+ }
216
+ (0, import_node_fs.writeFileSync)(filePath, targetContent);
217
+ results.push({
218
+ filePath,
219
+ action: "wrote"
220
+ });
221
+ log(import_picocolors.default.green(`[one] updated ${file.name}`));
222
+ }
223
+ const acceptableAlways = /* @__PURE__ */new Set(["wrote", "kept", "skipped-other-format", "skipped-customized"]);
224
+ const acceptableInCheck = /* @__PURE__ */new Set(["kept", "skipped-other-format", "skipped-customized"]);
225
+ const ok = (check ? acceptableInCheck : acceptableAlways).size ? results.every(r => (check ? acceptableInCheck : acceptableAlways).has(r.action)) : false;
226
+ return {
227
+ results,
228
+ ok
229
+ };
230
+ }
231
+ function isCiEnvironment() {
232
+ const truthy = v => !!v && v !== "false" && v !== "0";
233
+ return truthy(process.env.EAS_BUILD) || truthy(process.env.CI);
234
+ }
235
+ function maybeGenerateBundlerConfigOnInstall(cwd = process.cwd(), oneOptions) {
236
+ if (!isCiEnvironment()) return;
237
+ try {
238
+ import_node_module.default.createRequire(cwd + "/").resolve("expo-updates/package.json");
239
+ } catch {
240
+ return;
241
+ }
242
+ generateBundlerConfig({
243
+ cwd,
244
+ quiet: false,
245
+ oneOptions
246
+ });
247
+ }