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,145 @@
1
+ import module from "module";
2
+ import path from "path";
3
+ import mm from "micromatch";
4
+ import tsconfigPaths from "tsconfig-paths";
5
+ import { API_ROUTE_GLOB_PATTERN, ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS } from "../router/glob-patterns.native.js";
6
+ function oneBabelPreset(api) {
7
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
8
+ var _options_projectRoot, _options_routerRoot;
9
+ var hasViteInjectedOnePlugins = typeof (api === null || api === void 0 ? void 0 : api.caller) === "function" ? api.caller(function (caller) {
10
+ return !!(caller === null || caller === void 0 ? void 0 : caller.oneViteMetroBabelConfig);
11
+ }) : false;
12
+ if (!(api === null || api === void 0 ? void 0 : api.caller) && typeof (api === null || api === void 0 ? void 0 : api.cache) === "function") {
13
+ api.cache(true);
14
+ }
15
+ var projectRoot = path.resolve((_options_projectRoot = options.projectRoot) !== null && _options_projectRoot !== void 0 ? _options_projectRoot : typeof (api === null || api === void 0 ? void 0 : api.cwd) === "function" ? api.cwd() : process.cwd());
16
+ var presets = [];
17
+ if (options.includeExpoPreset !== false) {
18
+ var require2 = module.createRequire(projectRoot + "/");
19
+ try {
20
+ var expoPresetPath = require2.resolve("babel-preset-expo");
21
+ presets.push(require2(expoPresetPath));
22
+ } catch (e) {
23
+ throw new Error(`[one/babel-preset] Could not resolve 'babel-preset-expo' from ${projectRoot}. Install it as a project dependency (it ships with the Expo SDK). If you don't want the Expo base preset, pass { includeExpoPreset: false }.`);
24
+ }
25
+ }
26
+ return {
27
+ presets,
28
+ plugins: hasViteInjectedOnePlugins ? [] : buildOneBabelPlugins({
29
+ projectRoot,
30
+ relativeRouterRoot: (_options_routerRoot = options.routerRoot) !== null && _options_routerRoot !== void 0 ? _options_routerRoot : "app",
31
+ ignoredRouteFiles: options.ignoredRouteFiles,
32
+ linking: options.linking,
33
+ setupFile: options.setupFile,
34
+ includeImportMetaEnv: options.includeImportMetaEnv
35
+ })
36
+ };
37
+ }
38
+ function buildOneBabelPlugins(param) {
39
+ var {
40
+ projectRoot,
41
+ relativeRouterRoot,
42
+ ignoredRouteFiles,
43
+ linking,
44
+ setupFile,
45
+ includeImportMetaEnv = true
46
+ } = param;
47
+ var tsconfig = tsconfigPaths.loadConfig(projectRoot);
48
+ if (tsconfig.resultType === "failed") {
49
+ throw new Error("[one/babel-preset] tsconfig.json paths could not be loaded");
50
+ }
51
+ var require2 = module.createRequire(projectRoot + "/");
52
+ var metroEntryPath = require2.resolve("one/metro-entry", {
53
+ paths: [projectRoot]
54
+ });
55
+ var setupFileRelativeToMetroEntry = function () {
56
+ if (!setupFile) return void 0;
57
+ var file = typeof setupFile === "string" ? setupFile : setupFile.native || setupFile.ios || setupFile.android;
58
+ if (!file) return void 0;
59
+ return path.relative(path.dirname(metroEntryPath), path.join(projectRoot, file));
60
+ }();
61
+ return [
62
+ // standalone Metro CLI (expo export, eas update) needs `import.meta.env.*` /
63
+ // `process.env.*` baked in. The Vite path passes `false` here and injects
64
+ // its own version with the user's `define` env via the server hook.
65
+ ...(includeImportMetaEnv ? [["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", {
66
+ env: buildStandaloneImportMetaEnv()
67
+ }]] : []), "one/babel-plugin-environment-guard", ["one/babel-plugin-remove-server-code", {
68
+ routerRoot: relativeRouterRoot
69
+ }], ["babel-plugin-module-resolver",
70
+ // "vite-tsconfig-paths" for Metro
71
+ {
72
+ alias: Object.fromEntries(Object.entries(tsconfig.paths).map(function (param2) {
73
+ var [k, v] = param2;
74
+ var key = k.endsWith("/*") ? k.replace(/\/\*$/, "") : `${k}$`;
75
+ var value = v[0].replace(/\/\*$/, "");
76
+ if (!value.startsWith("./")) value = `./${value}`;
77
+ return [key, value];
78
+ }))
79
+ }], ["one/babel-plugin-one-router-metro", {
80
+ ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY: path.relative(path.dirname(metroEntryPath), path.join(projectRoot, relativeRouterRoot)),
81
+ ONE_ROUTER_ROOT_FOLDER_NAME: relativeRouterRoot,
82
+ ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING: buildRouterRequireContextRegexString(ignoredRouteFiles),
83
+ ONE_ROUTER_LINKING_CONFIG: linking,
84
+ ONE_SETUP_FILE_NATIVE: setupFileRelativeToMetroEntry
85
+ }], "one/babel-plugin-inline-one-server-url"];
86
+ }
87
+ function buildStandaloneImportMetaEnv() {
88
+ var isProduction = process.env.NODE_ENV !== "development";
89
+ var env = {
90
+ MODE: isProduction ? "production" : "development",
91
+ BASE_URL: "/",
92
+ PROD: isProduction,
93
+ DEV: !isProduction,
94
+ SSR: false
95
+ };
96
+ var _iteratorNormalCompletion = true,
97
+ _didIteratorError = false,
98
+ _iteratorError = void 0;
99
+ try {
100
+ for (var _iterator = Object.entries(process.env)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
101
+ var [key, value] = _step.value;
102
+ if (key.startsWith("EXPO_PUBLIC_") || key.startsWith("ONE_") || key.startsWith("VITE_")) {
103
+ env[key] = value;
104
+ }
105
+ }
106
+ } catch (err) {
107
+ _didIteratorError = true;
108
+ _iteratorError = err;
109
+ } finally {
110
+ try {
111
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
112
+ _iterator.return();
113
+ }
114
+ } finally {
115
+ if (_didIteratorError) {
116
+ throw _iteratorError;
117
+ }
118
+ }
119
+ }
120
+ return env;
121
+ }
122
+ function normalizeReSource(source) {
123
+ return source.replace(/\[\\\\\/\]/g, "\\/").replace(/\[\^\\\\\/\]/g, "[^/]");
124
+ }
125
+ function buildRouterRequireContextRegexString(ignoredRouteFiles) {
126
+ var excludeRes = [...(ignoredRouteFiles || []).map(function (pattern) {
127
+ return mm.makeRe(pattern);
128
+ }), ...ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS.map(function (pattern) {
129
+ return mm.makeRe(pattern);
130
+ }), mm.makeRe(API_ROUTE_GLOB_PATTERN)];
131
+ var mustStartWith = String.raw`^(?:(?:^|\/|(?:(?:(?!(?:^|\/)\.).)*?)\/)(?!\.)(?=.)[^/]*?`;
132
+ var mustEndWith = String.raw`)$`;
133
+ var negatives = excludeRes.map(function (re, i) {
134
+ var reSource = normalizeReSource(re.source);
135
+ if (!(reSource.startsWith(mustStartWith) && reSource.endsWith(mustEndWith))) {
136
+ var pattern = ignoredRouteFiles === null || ignoredRouteFiles === void 0 ? void 0 : ignoredRouteFiles[i];
137
+ throw new Error(pattern ? `[one/metro] ignoredRouteFile pattern "${pattern}" is not supported. We cannot process the corresponding regex "${reSource}" for now.` : `Unsupported regex "${reSource}" in "ignoredRouteFiles".`);
138
+ }
139
+ var inner = reSource.slice(mustStartWith.length, reSource.length - mustEndWith.length);
140
+ return String.raw`(?:.*${inner})`;
141
+ });
142
+ return String.raw`^(?:\.\/)(?!${negatives.join("|")}$).*\.tsx?$`;
143
+ }
144
+ export { buildOneBabelPlugins, buildRouterRequireContextRegexString, oneBabelPreset as default };
145
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["module","path","mm","tsconfigPaths","API_ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","oneBabelPreset","api","options","arguments","length","_options_projectRoot","_options_routerRoot","hasViteInjectedOnePlugins","caller","oneViteMetroBabelConfig","cache","projectRoot","resolve","cwd","process","presets","includeExpoPreset","require2","createRequire","expoPresetPath","push","e","Error","plugins","buildOneBabelPlugins","relativeRouterRoot","routerRoot","ignoredRouteFiles","linking","setupFile","includeImportMetaEnv","param","tsconfig","loadConfig","resultType","metroEntryPath","paths","setupFileRelativeToMetroEntry","file","native","ios","android","relative","dirname","join","env","buildStandaloneImportMetaEnv","alias","Object","fromEntries","entries","map","param2","k","v","key","endsWith","replace","value","startsWith","ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY","ONE_ROUTER_ROOT_FOLDER_NAME","ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING","buildRouterRequireContextRegexString","ONE_ROUTER_LINKING_CONFIG","ONE_SETUP_FILE_NATIVE","isProduction","NODE_ENV","MODE","BASE_URL","PROD","DEV","SSR","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","err","return","normalizeReSource","source","excludeRes","pattern"],"sources":["../../../src/babel-preset/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,120 @@
1
+ import path from "node:path";
2
+ import { describe, expect, it } from "vitest";
3
+ import oneBabelPreset, { buildOneBabelPlugins } from "./index.mjs";
4
+ const projectRoot = path.resolve(__dirname, "../../");
5
+ const fakeApi = cwd => ({
6
+ cache: () => {},
7
+ cwd: () => cwd
8
+ });
9
+ describe("one/babel-preset", () => {
10
+ it("returns presets and plugins", () => {
11
+ const result = oneBabelPreset(fakeApi(projectRoot), {
12
+ projectRoot,
13
+ // skip the babel-preset-expo lookup so this test runs without the
14
+ // expo SDK installed in the workspace root
15
+ includeExpoPreset: false
16
+ });
17
+ expect(result).toHaveProperty("plugins");
18
+ expect(Array.isArray(result.plugins)).toBe(true);
19
+ expect(result.plugins).toHaveLength(6);
20
+ });
21
+ it("orders the plugin chain so server code is removed before router transforms", () => {
22
+ const {
23
+ plugins
24
+ } = oneBabelPreset(fakeApi(projectRoot), {
25
+ projectRoot,
26
+ includeExpoPreset: false
27
+ });
28
+ const names = (plugins ?? []).map(p => Array.isArray(p) ? p[0] : p);
29
+ expect(names).toEqual(["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", "one/babel-plugin-environment-guard", "one/babel-plugin-remove-server-code", "babel-plugin-module-resolver", "one/babel-plugin-one-router-metro", "one/babel-plugin-inline-one-server-url"]);
30
+ });
31
+ it('defaults routerRoot to "app"', () => {
32
+ const {
33
+ plugins
34
+ } = oneBabelPreset(fakeApi(projectRoot), {
35
+ projectRoot,
36
+ includeExpoPreset: false
37
+ });
38
+ const removeServer = (plugins ?? []).find(p => Array.isArray(p) && p[0] === "one/babel-plugin-remove-server-code");
39
+ expect(removeServer?.[1].routerRoot).toBe("app");
40
+ });
41
+ it("threads custom routerRoot through", () => {
42
+ const {
43
+ plugins
44
+ } = oneBabelPreset(fakeApi(projectRoot), {
45
+ projectRoot,
46
+ routerRoot: "src/routes",
47
+ includeExpoPreset: false
48
+ });
49
+ const removeServer = (plugins ?? []).find(p => Array.isArray(p) && p[0] === "one/babel-plugin-remove-server-code");
50
+ expect(removeServer?.[1].routerRoot).toBe("src/routes");
51
+ });
52
+ it("skips the One plugin chain when the Vite Metro caller already injected it", () => {
53
+ const result = oneBabelPreset({
54
+ cache: () => {},
55
+ cwd: () => projectRoot,
56
+ caller: cb => cb({
57
+ oneViteMetroBabelConfig: true
58
+ })
59
+ }, {
60
+ projectRoot,
61
+ includeExpoPreset: false
62
+ });
63
+ expect(result.plugins).toEqual([]);
64
+ });
65
+ });
66
+ describe("buildOneBabelPlugins", () => {
67
+ it("produces the canonical One plugin chain (no env plugin)", () => {
68
+ const plugins = buildOneBabelPlugins({
69
+ projectRoot,
70
+ relativeRouterRoot: "app",
71
+ ignoredRouteFiles: [],
72
+ linking: void 0,
73
+ setupFile: void 0,
74
+ // skip the import-meta-env plugin so the assertion covers the One-only chain
75
+ includeImportMetaEnv: false
76
+ });
77
+ expect(plugins).toHaveLength(5);
78
+ expect(plugins[0]).toBe("one/babel-plugin-environment-guard");
79
+ expect(plugins[1]).toEqual(["one/babel-plugin-remove-server-code", {
80
+ routerRoot: "app"
81
+ }]);
82
+ expect(plugins[2]).toMatchObject(["babel-plugin-module-resolver", {
83
+ alias: {}
84
+ }]);
85
+ const oneRouterMetro = plugins[3];
86
+ expect(oneRouterMetro[0]).toBe("one/babel-plugin-one-router-metro");
87
+ expect(oneRouterMetro[1]).toMatchObject({
88
+ ONE_ROUTER_ROOT_FOLDER_NAME: "app",
89
+ ONE_ROUTER_LINKING_CONFIG: void 0,
90
+ ONE_SETUP_FILE_NATIVE: void 0
91
+ });
92
+ expect(typeof oneRouterMetro[1].ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY).toBe("string");
93
+ expect(typeof oneRouterMetro[1].ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING).toBe("string");
94
+ expect(plugins[4]).toBe("one/babel-plugin-inline-one-server-url");
95
+ });
96
+ it("threads setupFile through as a path relative to the metro entry", () => {
97
+ const plugins = buildOneBabelPlugins({
98
+ projectRoot,
99
+ relativeRouterRoot: "app",
100
+ setupFile: "src/setup-native.ts",
101
+ includeImportMetaEnv: false
102
+ });
103
+ const oneRouterMetro = plugins[3];
104
+ expect(oneRouterMetro[1].ONE_SETUP_FILE_NATIVE).toMatch(/setup-native\.ts$/);
105
+ });
106
+ it("passes the linking config through", () => {
107
+ const linking = {
108
+ prefixes: ["myapp://"]
109
+ };
110
+ const plugins = buildOneBabelPlugins({
111
+ projectRoot,
112
+ relativeRouterRoot: "app",
113
+ linking,
114
+ includeImportMetaEnv: false
115
+ });
116
+ const oneRouterMetro = plugins[3];
117
+ expect(oneRouterMetro[1].ONE_ROUTER_LINKING_CONFIG).toBe(linking);
118
+ });
119
+ });
120
+ //# sourceMappingURL=index.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["path","describe","expect","it","oneBabelPreset","buildOneBabelPlugins","projectRoot","resolve","__dirname","fakeApi","cwd","cache","result","includeExpoPreset","toHaveProperty","Array","isArray","plugins","toBe","toHaveLength","names","map","p","toEqual","removeServer","find","routerRoot","caller","cb","oneViteMetroBabelConfig","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","toMatch","prefixes"],"sources":["../../../src/babel-preset/index.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,139 @@
1
+ import path from "path";
2
+ import { describe, expect, it } from "vitest";
3
+ import oneBabelPreset, { buildOneBabelPlugins } from "./index.native.js";
4
+ function _type_of(obj) {
5
+ "@swc/helpers - typeof";
6
+
7
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
8
+ }
9
+ var projectRoot = path.resolve(__dirname, "../../");
10
+ var fakeApi = function (cwd) {
11
+ return {
12
+ cache: function () {},
13
+ cwd: function () {
14
+ return cwd;
15
+ }
16
+ };
17
+ };
18
+ describe("one/babel-preset", function () {
19
+ it("returns presets and plugins", function () {
20
+ var result = oneBabelPreset(fakeApi(projectRoot), {
21
+ projectRoot,
22
+ // skip the babel-preset-expo lookup so this test runs without the
23
+ // expo SDK installed in the workspace root
24
+ includeExpoPreset: false
25
+ });
26
+ expect(result).toHaveProperty("plugins");
27
+ expect(Array.isArray(result.plugins)).toBe(true);
28
+ expect(result.plugins).toHaveLength(6);
29
+ });
30
+ it("orders the plugin chain so server code is removed before router transforms", function () {
31
+ var {
32
+ plugins
33
+ } = oneBabelPreset(fakeApi(projectRoot), {
34
+ projectRoot,
35
+ includeExpoPreset: false
36
+ });
37
+ var names = (plugins !== null && plugins !== void 0 ? plugins : []).map(function (p) {
38
+ return Array.isArray(p) ? p[0] : p;
39
+ });
40
+ expect(names).toEqual(["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", "one/babel-plugin-environment-guard", "one/babel-plugin-remove-server-code", "babel-plugin-module-resolver", "one/babel-plugin-one-router-metro", "one/babel-plugin-inline-one-server-url"]);
41
+ });
42
+ it('defaults routerRoot to "app"', function () {
43
+ var {
44
+ plugins
45
+ } = oneBabelPreset(fakeApi(projectRoot), {
46
+ projectRoot,
47
+ includeExpoPreset: false
48
+ });
49
+ var removeServer = (plugins !== null && plugins !== void 0 ? plugins : []).find(function (p) {
50
+ return Array.isArray(p) && p[0] === "one/babel-plugin-remove-server-code";
51
+ });
52
+ expect(removeServer === null || removeServer === void 0 ? void 0 : removeServer[1].routerRoot).toBe("app");
53
+ });
54
+ it("threads custom routerRoot through", function () {
55
+ var {
56
+ plugins
57
+ } = oneBabelPreset(fakeApi(projectRoot), {
58
+ projectRoot,
59
+ routerRoot: "src/routes",
60
+ includeExpoPreset: false
61
+ });
62
+ var removeServer = (plugins !== null && plugins !== void 0 ? plugins : []).find(function (p) {
63
+ return Array.isArray(p) && p[0] === "one/babel-plugin-remove-server-code";
64
+ });
65
+ expect(removeServer === null || removeServer === void 0 ? void 0 : removeServer[1].routerRoot).toBe("src/routes");
66
+ });
67
+ it("skips the One plugin chain when the Vite Metro caller already injected it", function () {
68
+ var result = oneBabelPreset({
69
+ cache: function () {},
70
+ cwd: function () {
71
+ return projectRoot;
72
+ },
73
+ caller: function (cb) {
74
+ return cb({
75
+ oneViteMetroBabelConfig: true
76
+ });
77
+ }
78
+ }, {
79
+ projectRoot,
80
+ includeExpoPreset: false
81
+ });
82
+ expect(result.plugins).toEqual([]);
83
+ });
84
+ });
85
+ describe("buildOneBabelPlugins", function () {
86
+ it("produces the canonical One plugin chain (no env plugin)", function () {
87
+ var plugins = buildOneBabelPlugins({
88
+ projectRoot,
89
+ relativeRouterRoot: "app",
90
+ ignoredRouteFiles: [],
91
+ linking: void 0,
92
+ setupFile: void 0,
93
+ // skip the import-meta-env plugin so the assertion covers the One-only chain
94
+ includeImportMetaEnv: false
95
+ });
96
+ expect(plugins).toHaveLength(5);
97
+ expect(plugins[0]).toBe("one/babel-plugin-environment-guard");
98
+ expect(plugins[1]).toEqual(["one/babel-plugin-remove-server-code", {
99
+ routerRoot: "app"
100
+ }]);
101
+ expect(plugins[2]).toMatchObject(["babel-plugin-module-resolver", {
102
+ alias: {}
103
+ }]);
104
+ var oneRouterMetro = plugins[3];
105
+ expect(oneRouterMetro[0]).toBe("one/babel-plugin-one-router-metro");
106
+ expect(oneRouterMetro[1]).toMatchObject({
107
+ ONE_ROUTER_ROOT_FOLDER_NAME: "app",
108
+ ONE_ROUTER_LINKING_CONFIG: void 0,
109
+ ONE_SETUP_FILE_NATIVE: void 0
110
+ });
111
+ expect(_type_of(oneRouterMetro[1].ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY)).toBe("string");
112
+ expect(_type_of(oneRouterMetro[1].ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING)).toBe("string");
113
+ expect(plugins[4]).toBe("one/babel-plugin-inline-one-server-url");
114
+ });
115
+ it("threads setupFile through as a path relative to the metro entry", function () {
116
+ var plugins = buildOneBabelPlugins({
117
+ projectRoot,
118
+ relativeRouterRoot: "app",
119
+ setupFile: "src/setup-native.ts",
120
+ includeImportMetaEnv: false
121
+ });
122
+ var oneRouterMetro = plugins[3];
123
+ expect(oneRouterMetro[1].ONE_SETUP_FILE_NATIVE).toMatch(/setup-native\.ts$/);
124
+ });
125
+ it("passes the linking config through", function () {
126
+ var linking = {
127
+ prefixes: ["myapp://"]
128
+ };
129
+ var plugins = buildOneBabelPlugins({
130
+ projectRoot,
131
+ relativeRouterRoot: "app",
132
+ linking,
133
+ includeImportMetaEnv: false
134
+ });
135
+ var oneRouterMetro = plugins[3];
136
+ expect(oneRouterMetro[1].ONE_ROUTER_LINKING_CONFIG).toBe(linking);
137
+ });
138
+ });
139
+ //# sourceMappingURL=index.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["path","describe","expect","it","oneBabelPreset","buildOneBabelPlugins","_type_of","obj","Symbol","constructor","projectRoot","resolve","__dirname","fakeApi","cwd","cache","result","includeExpoPreset","toHaveProperty","Array","isArray","plugins","toBe","toHaveLength","names","map","p","toEqual","removeServer","find","routerRoot","caller","cb","oneViteMetroBabelConfig","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,71 @@
1
+ import path from "node:path";
2
+ import { transformSync } from "@babel/core";
3
+ import { describe, expect, it } from "vitest";
4
+ import oneBabelPreset from "./index.mjs";
5
+ const projectRoot = path.resolve(__dirname, "../../");
6
+ describe("one/babel-preset integration", () => {
7
+ const presetWithOpts = [oneBabelPreset, {
8
+ projectRoot,
9
+ includeExpoPreset: false
10
+ }];
11
+ it("runs against a route file without throwing", () => {
12
+ const code = `
13
+ import { useLoader } from 'one'
14
+ export default function Page() {
15
+ return null
16
+ }
17
+ `;
18
+ const result = transformSync(code, {
19
+ filename: path.join(projectRoot, "app/index.tsx"),
20
+ cwd: projectRoot,
21
+ presets: [presetWithOpts],
22
+ parserOpts: {
23
+ sourceType: "module",
24
+ plugins: ["jsx"]
25
+ }
26
+ });
27
+ expect(result?.code).toBeTruthy();
28
+ expect(result?.code).toContain("useLoader");
29
+ });
30
+ it("substitutes ONE_ROUTER_* process.env placeholders in metro-entry", () => {
31
+ const code = `
32
+ const ctx = require.context(
33
+ process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY,
34
+ true,
35
+ process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING
36
+ )
37
+ const folder = process.env.ONE_ROUTER_ROOT_FOLDER_NAME
38
+ module.exports = { ctx, folder }
39
+ `;
40
+ const result = transformSync(code, {
41
+ filename: path.join(projectRoot, "metro-entry-ctx.js"),
42
+ cwd: projectRoot,
43
+ presets: [presetWithOpts],
44
+ parserOpts: {
45
+ sourceType: "module"
46
+ }
47
+ });
48
+ expect(result?.code).toBeTruthy();
49
+ expect(result?.code).not.toContain("process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY");
50
+ expect(result?.code).not.toContain("process.env.ONE_ROUTER_ROOT_FOLDER_NAME");
51
+ expect(result?.code).not.toContain("process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING");
52
+ expect(result?.code).toContain('"app"');
53
+ expect(result?.code).toMatch(/\/\^.*\.tsx\?\$\//);
54
+ });
55
+ it("keeps client code intact in non-route files", () => {
56
+ const code = `
57
+ const x = 1
58
+ export default x
59
+ `;
60
+ const result = transformSync(code, {
61
+ filename: path.join(projectRoot, "src/utils/x.ts"),
62
+ cwd: projectRoot,
63
+ presets: [presetWithOpts],
64
+ parserOpts: {
65
+ sourceType: "module"
66
+ }
67
+ });
68
+ expect(result?.code).toContain("const x = 1");
69
+ });
70
+ });
71
+ //# sourceMappingURL=integration.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["path","transformSync","describe","expect","it","oneBabelPreset","projectRoot","resolve","__dirname","presetWithOpts","includeExpoPreset","code","result","filename","join","cwd","presets","parserOpts","sourceType","plugins","toBeTruthy","toContain","not","toMatch"],"sources":["../../../src/babel-preset/integration.test.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,IAAA,MAAU;AACjB,SAASC,aAAA,QAAqB;AAC9B,SAASC,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,OAAOC,cAAA,MAAoB;AAE3B,MAAMC,WAAA,GAAcN,IAAA,CAAKO,OAAA,CAAQC,SAAA,EAAW,QAAQ;AAYpDN,QAAA,CAAS,gCAAgC,MAAM;EAC7C,MAAMO,cAAA,GAAiB,CACrBJ,cAAA,EACA;IAAEC,WAAA;IAAaI,iBAAA,EAAmB;EAAM,EAC1C;EAEAN,EAAA,CAAG,8CAA8C,MAAM;IACrD,MAAMO,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;IAMb,MAAMC,MAAA,GAASX,aAAA,CAAcU,IAAA,EAAM;MACjCE,QAAA,EAAUb,IAAA,CAAKc,IAAA,CAAKR,WAAA,EAAa,eAAe;MAChDS,GAAA,EAAKT,WAAA;MACLU,OAAA,EAAS,CAACP,cAAc;MACxBQ,UAAA,EAAY;QAAEC,UAAA,EAAY;QAAUC,OAAA,EAAS,CAAC,KAAK;MAAE;IACvD,CAAC;IAEDhB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAES,UAAA,CAAW;IAIhCjB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEU,SAAA,CAAU,WAAW;EAC5C,CAAC;EAEDjB,EAAA,CAAG,oEAAoE,MAAM;IAG3E,MAAMO,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IASb,MAAMC,MAAA,GAASX,aAAA,CAAcU,IAAA,EAAM;MACjCE,QAAA,EAAUb,IAAA,CAAKc,IAAA,CAAKR,WAAA,EAAa,oBAAoB;MACrDS,GAAA,EAAKT,WAAA;MACLU,OAAA,EAAS,CAACP,cAAc;MACxBQ,UAAA,EAAY;QAAEC,UAAA,EAAY;MAAS;IACrC,CAAC;IAEDf,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAES,UAAA,CAAW;IAEhCjB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEW,GAAA,CAAID,SAAA,CAAU,mDAAmD;IACtFlB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEW,GAAA,CAAID,SAAA,CAAU,yCAAyC;IAC5ElB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEW,GAAA,CAAID,SAAA,CACvB,qDACF;IAEAlB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEU,SAAA,CAAU,OAAO;IAEtClB,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEY,OAAA,CAAQ,mBAAmB;EAClD,CAAC;EAEDnB,EAAA,CAAG,+CAA+C,MAAM;IACtD,MAAMO,IAAA,GAAO;AAAA;AAAA;AAAA;IAIb,MAAMC,MAAA,GAASX,aAAA,CAAcU,IAAA,EAAM;MACjCE,QAAA,EAAUb,IAAA,CAAKc,IAAA,CAAKR,WAAA,EAAa,gBAAgB;MACjDS,GAAA,EAAKT,WAAA;MACLU,OAAA,EAAS,CAACP,cAAc;MACxBQ,UAAA,EAAY;QAAEC,UAAA,EAAY;MAAS;IACrC,CAAC;IAEDf,MAAA,CAAOS,MAAA,EAAQD,IAAI,EAAEU,SAAA,CAAU,aAAa;EAC9C,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,71 @@
1
+ import path from "path";
2
+ import { transformSync } from "@babel/core";
3
+ import { describe, expect, it } from "vitest";
4
+ import oneBabelPreset from "./index.native.js";
5
+ var projectRoot = path.resolve(__dirname, "../../");
6
+ describe("one/babel-preset integration", function () {
7
+ var presetWithOpts = [oneBabelPreset, {
8
+ projectRoot,
9
+ includeExpoPreset: false
10
+ }];
11
+ it("runs against a route file without throwing", function () {
12
+ var code = `
13
+ import { useLoader } from 'one'
14
+ export default function Page() {
15
+ return null
16
+ }
17
+ `;
18
+ var result = transformSync(code, {
19
+ filename: path.join(projectRoot, "app/index.tsx"),
20
+ cwd: projectRoot,
21
+ presets: [presetWithOpts],
22
+ parserOpts: {
23
+ sourceType: "module",
24
+ plugins: ["jsx"]
25
+ }
26
+ });
27
+ expect(result === null || result === void 0 ? void 0 : result.code).toBeTruthy();
28
+ expect(result === null || result === void 0 ? void 0 : result.code).toContain("useLoader");
29
+ });
30
+ it("substitutes ONE_ROUTER_* process.env placeholders in metro-entry", function () {
31
+ var code = `
32
+ const ctx = require.context(
33
+ process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY,
34
+ true,
35
+ process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING
36
+ )
37
+ const folder = process.env.ONE_ROUTER_ROOT_FOLDER_NAME
38
+ module.exports = { ctx, folder }
39
+ `;
40
+ var result = transformSync(code, {
41
+ filename: path.join(projectRoot, "metro-entry-ctx.js"),
42
+ cwd: projectRoot,
43
+ presets: [presetWithOpts],
44
+ parserOpts: {
45
+ sourceType: "module"
46
+ }
47
+ });
48
+ expect(result === null || result === void 0 ? void 0 : result.code).toBeTruthy();
49
+ expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY");
50
+ expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_ROOT_FOLDER_NAME");
51
+ expect(result === null || result === void 0 ? void 0 : result.code).not.toContain("process.env.ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING");
52
+ expect(result === null || result === void 0 ? void 0 : result.code).toContain('"app"');
53
+ expect(result === null || result === void 0 ? void 0 : result.code).toMatch(/\/\^.*\.tsx\?\$\//);
54
+ });
55
+ it("keeps client code intact in non-route files", function () {
56
+ var code = `
57
+ const x = 1
58
+ export default x
59
+ `;
60
+ var result = transformSync(code, {
61
+ filename: path.join(projectRoot, "src/utils/x.ts"),
62
+ cwd: projectRoot,
63
+ presets: [presetWithOpts],
64
+ parserOpts: {
65
+ sourceType: "module"
66
+ }
67
+ });
68
+ expect(result === null || result === void 0 ? void 0 : result.code).toContain("const x = 1");
69
+ });
70
+ });
71
+ //# sourceMappingURL=integration.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["path","transformSync","describe","expect","it","oneBabelPreset","projectRoot","resolve","__dirname","presetWithOpts","includeExpoPreset","code","result","filename","join","cwd","presets","parserOpts","sourceType","plugins","toBeTruthy","toContain","not","toMatch"],"sources":["../../../src/babel-preset/integration.test.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,IAAA,MAAU;AACjB,SAASC,aAAA,QAAqB;AAC9B,SAASC,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,OAAOC,cAAA,MAAoB;AAE3B,IAAAC,WAAM,GAAAN,IAAc,CAAAO,OAAK,CAAAC,SAAQ,UAAW;AAY5CN,QAAA,CAAS,gCAAgC,YAAM;EAC7C,IAAAO,cAAM,IACJJ,cAAA,EACA;IACFC,WAAA;IAEGI,iBAAA;EACD,EAAa;EAAAN,EAAA;IAAA,IAAAO,IAAA;AAAA;AAAA;AAMb;AAAmC;AACe;IAC3C,IACLC,MAAA,GAAUX,aAAc,CAAAU,IAAA;MACxBE,QAAA,EAAAb,IAAc,CAAAc,IAAA,CAAAR,WAAY,iBAAoB;MAC/CS,GAAA,EAAAT,WAAA;MAEDU,OAAO,GAIPP,cAAe,CAChB;MAEEQ,UAAA;QAGDC,UAAa;QAAAC,OAAA;MAAA;IAAA;IAAAhB,MAAA,CAAAS,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAS,UAAA;IAAAjB,MAAA,CAAAS,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAU,SAAA;EAAA;EASbjB,EAAA,mEAAmC;IAAA,IACjCO,IAAA;AAAqD;AAChD;AACmB;AACW;AAGrC;AAEA;AACA;AACA;IAAyB,IACvBC,MAAA,GAAAX,aAAA,CAAAU,IAAA;MACFE,QAAA,EAAAb,IAAA,CAAAc,IAAA,CAAAR,WAAA;MAEAS,GAAA,EAAOT,WAAQ;MAEfU,OAAO,GACRP,cAAA,CAEE;MACDQ,UAAM,EAAO;QAAAC,UAAA;MAAA;IAAA;IAIbf,MAAM,CAAAS,MAAA,KAAS,QAAAA,MAAc,KAAM,kBAAAA,MAAA,CAAAD,IAAA,EAAAS,UAAA;IAAAjB,MACjC,CAAAS,MAAU,KAAK,IAAK,IAAAA,MAAA,KAAa,cAAgB,IAAAA,MAAA,CAAAD,IAAA,EAAAW,GAAA,CAAAD,SAAA;IAAAlB,MACjD,CAAKS,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAW,GAAA,CAAAD,SAAA;IAAAlB,MACL,CAAAS,MAAU,aAAcA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAW,GAAA,CAAAD,SAAA;IAAAlB,MACxB,CAAAS,MAAA,KAAc,QAAAA,MAAY,KAAS,kBAAAA,MAAA,CAAAD,IAAA,EAAAU,SAAA;IACrClB,MAAC,CAAAS,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAD,IAAA,EAAAY,OAAA;EAED;EACFnB,EAAC;IACF,IAAAO,IAAA","ignoreList":[]}