vxrn 1.12.8 → 1.13.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 (208) hide show
  1. package/dist/config/getAdditionalViteConfig.mjs +1 -4
  2. package/dist/config/getAdditionalViteConfig.mjs.map +1 -1
  3. package/dist/config/getAdditionalViteConfig.native.js +1 -4
  4. package/dist/config/getAdditionalViteConfig.native.js.map +1 -1
  5. package/dist/config/getReactNativePlugins.mjs +1 -5
  6. package/dist/config/getReactNativePlugins.mjs.map +1 -1
  7. package/dist/config/getReactNativePlugins.native.js +1 -5
  8. package/dist/config/getReactNativePlugins.native.js.map +1 -1
  9. package/dist/exports/build.mjs +5 -0
  10. package/dist/exports/build.mjs.map +1 -1
  11. package/dist/exports/build.native.js +5 -0
  12. package/dist/exports/build.native.js.map +1 -1
  13. package/dist/exports/createServer.mjs +30 -25
  14. package/dist/exports/createServer.mjs.map +1 -1
  15. package/dist/exports/createServer.native.js +6 -3
  16. package/dist/exports/createServer.native.js.map +1 -1
  17. package/dist/exports/prebuild.mjs +25 -1
  18. package/dist/exports/prebuild.mjs.map +1 -1
  19. package/dist/exports/prebuild.native.js +30 -1
  20. package/dist/exports/prebuild.native.js.map +1 -1
  21. package/dist/exports/serve.mjs +2 -2
  22. package/dist/exports/serve.mjs.map +1 -1
  23. package/dist/exports/serve.native.js +2 -2
  24. package/dist/exports/serve.native.js.map +1 -1
  25. package/dist/exports/serveStaticAssets.mjs +43 -11
  26. package/dist/exports/serveStaticAssets.mjs.map +1 -1
  27. package/dist/exports/serveStaticAssets.native.js +69 -6
  28. package/dist/exports/serveStaticAssets.native.js.map +1 -1
  29. package/dist/index.js +1 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.mjs +1 -2
  32. package/dist/index.mjs.map +1 -1
  33. package/dist/index.native.js +1 -2
  34. package/dist/index.native.js.map +1 -1
  35. package/dist/patches/builtInDepPatches.mjs +14 -0
  36. package/dist/patches/builtInDepPatches.mjs.map +1 -1
  37. package/dist/patches/builtInDepPatches.native.js +14 -0
  38. package/dist/patches/builtInDepPatches.native.js.map +1 -1
  39. package/dist/plugins/clientInjectPlugin.mjs +2 -62
  40. package/dist/plugins/clientInjectPlugin.mjs.map +1 -1
  41. package/dist/plugins/clientInjectPlugin.native.js +2 -75
  42. package/dist/plugins/clientInjectPlugin.native.js.map +1 -1
  43. package/dist/plugins/reactNativeDevAssetPlugin.mjs +1 -3
  44. package/dist/plugins/reactNativeDevAssetPlugin.mjs.map +1 -1
  45. package/dist/plugins/reactNativeDevAssetPlugin.native.js +1 -3
  46. package/dist/plugins/reactNativeDevAssetPlugin.native.js.map +1 -1
  47. package/dist/plugins/reactNativeDevServer.mjs +55 -77
  48. package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
  49. package/dist/plugins/reactNativeDevServer.native.js +73 -84
  50. package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
  51. package/dist/plugins/serverExtensions.test.mjs +12 -6
  52. package/dist/plugins/serverExtensions.test.mjs.map +1 -1
  53. package/dist/plugins/serverExtensions.test.native.js +12 -6
  54. package/dist/plugins/serverExtensions.test.native.js.map +1 -1
  55. package/dist/rn-commands/bundle/buildBundle.mjs +11 -35
  56. package/dist/rn-commands/bundle/buildBundle.mjs.map +1 -1
  57. package/dist/rn-commands/bundle/buildBundle.native.js +9 -36
  58. package/dist/rn-commands/bundle/buildBundle.native.js.map +1 -1
  59. package/dist/runtime/hmr-client.mjs +125 -0
  60. package/dist/runtime/hmr-client.mjs.map +1 -0
  61. package/dist/runtime/hmr-client.native.js +197 -0
  62. package/dist/runtime/hmr-client.native.js.map +1 -0
  63. package/dist/runtime/hmr-runtime.mjs +162 -0
  64. package/dist/runtime/hmr-runtime.mjs.map +1 -0
  65. package/dist/runtime/hmr-runtime.native.js +348 -0
  66. package/dist/runtime/hmr-runtime.native.js.map +1 -0
  67. package/dist/runtime/hmr-types.mjs +2 -0
  68. package/dist/runtime/hmr-types.mjs.map +1 -0
  69. package/dist/runtime/hmr-types.native.js +2 -0
  70. package/dist/runtime/hmr-types.native.js.map +1 -0
  71. package/dist/runtime/native-prelude.mjs +97 -0
  72. package/dist/runtime/native-prelude.mjs.map +1 -0
  73. package/dist/runtime/native-prelude.native.js +97 -0
  74. package/dist/runtime/native-prelude.native.js.map +1 -0
  75. package/dist/runtime/react-refresh-utils.mjs +19 -0
  76. package/dist/runtime/react-refresh-utils.mjs.map +1 -0
  77. package/dist/runtime/react-refresh-utils.native.js +24 -0
  78. package/dist/runtime/react-refresh-utils.native.js.map +1 -0
  79. package/dist/utils/createNativeDevEngine.mjs +661 -0
  80. package/dist/utils/createNativeDevEngine.mjs.map +1 -0
  81. package/dist/utils/createNativeDevEngine.native.js +702 -0
  82. package/dist/utils/createNativeDevEngine.native.js.map +1 -0
  83. package/dist/utils/patches.mjs +6 -2
  84. package/dist/utils/patches.mjs.map +1 -1
  85. package/dist/utils/patches.native.js +6 -2
  86. package/dist/utils/patches.native.js.map +1 -1
  87. package/dist/utils/scanDepsToOptimize.mjs +4 -3
  88. package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
  89. package/dist/utils/scanDepsToOptimize.native.js +4 -3
  90. package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
  91. package/expo-plugin.cjs +122 -0
  92. package/package.json +15 -19
  93. package/src/config/getAdditionalViteConfig.ts +1 -3
  94. package/src/config/getReactNativePlugins.ts +0 -6
  95. package/src/exports/build.ts +5 -0
  96. package/src/exports/createServer.ts +7 -2
  97. package/src/exports/prebuild.ts +45 -0
  98. package/src/exports/serve.ts +2 -1
  99. package/src/exports/serveStaticAssets.ts +67 -4
  100. package/src/index.ts +0 -2
  101. package/src/patches/builtInDepPatches.ts +29 -0
  102. package/src/plugins/clientInjectPlugin.ts +2 -109
  103. package/src/plugins/reactNativeDevAssetPlugin.ts +0 -21
  104. package/src/plugins/reactNativeDevServer.ts +57 -84
  105. package/src/plugins/serverExtensions.test.ts +6 -8
  106. package/src/rn-commands/bundle/buildBundle.ts +9 -62
  107. package/src/runtime/hmr-client.ts +215 -0
  108. package/src/runtime/hmr-runtime.ts +276 -0
  109. package/src/runtime/hmr-types.ts +84 -0
  110. package/src/runtime/native-prelude.ts +110 -0
  111. package/src/runtime/react-refresh-utils.ts +36 -0
  112. package/src/types.ts +22 -4
  113. package/src/utils/createNativeDevEngine.ts +942 -0
  114. package/src/utils/patches.ts +36 -18
  115. package/src/utils/scanDepsToOptimize.ts +2 -3
  116. package/types/config/getAdditionalViteConfig.d.ts.map +1 -1
  117. package/types/config/getOptionsFilled.d.ts +2 -18
  118. package/types/config/getOptionsFilled.d.ts.map +1 -1
  119. package/types/config/getReactNativePlugins.d.ts.map +1 -1
  120. package/types/exports/build.d.ts +1 -9
  121. package/types/exports/build.d.ts.map +1 -1
  122. package/types/exports/createServer.d.ts.map +1 -1
  123. package/types/exports/prebuild.d.ts.map +1 -1
  124. package/types/exports/serve.d.ts +2 -1
  125. package/types/exports/serve.d.ts.map +1 -1
  126. package/types/exports/serveStaticAssets.d.ts +12 -1
  127. package/types/exports/serveStaticAssets.d.ts.map +1 -1
  128. package/types/index.d.ts +0 -1
  129. package/types/index.d.ts.map +1 -1
  130. package/types/patches/builtInDepPatches.d.ts.map +1 -1
  131. package/types/plugins/clientInjectPlugin.d.ts +1 -7
  132. package/types/plugins/clientInjectPlugin.d.ts.map +1 -1
  133. package/types/plugins/reactNativeDevAssetPlugin.d.ts.map +1 -1
  134. package/types/plugins/reactNativeDevServer.d.ts.map +1 -1
  135. package/types/rn-commands/bundle/buildBundle.d.ts.map +1 -1
  136. package/types/runtime/hmr-client.d.ts +40 -0
  137. package/types/runtime/hmr-client.d.ts.map +1 -0
  138. package/types/runtime/hmr-runtime.d.ts +69 -0
  139. package/types/runtime/hmr-runtime.d.ts.map +1 -0
  140. package/types/runtime/hmr-types.d.ts +76 -0
  141. package/types/runtime/hmr-types.d.ts.map +1 -0
  142. package/types/runtime/native-prelude.d.ts +11 -0
  143. package/types/runtime/native-prelude.d.ts.map +1 -0
  144. package/types/runtime/react-refresh-utils.d.ts +3 -0
  145. package/types/runtime/react-refresh-utils.d.ts.map +1 -0
  146. package/types/types.d.ts +15 -1
  147. package/types/types.d.ts.map +1 -1
  148. package/types/utils/createNativeDevEngine.d.ts +42 -0
  149. package/types/utils/createNativeDevEngine.d.ts.map +1 -0
  150. package/types/utils/patches.d.ts.map +1 -1
  151. package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
  152. package/dist/config/getReactNativeBuildConfig.mjs +0 -200
  153. package/dist/config/getReactNativeBuildConfig.mjs.map +0 -1
  154. package/dist/config/getReactNativeBuildConfig.native.js +0 -204
  155. package/dist/config/getReactNativeBuildConfig.native.js.map +0 -1
  156. package/dist/plugins/reactNativeHMRPlugin.mjs +0 -120
  157. package/dist/plugins/reactNativeHMRPlugin.mjs.map +0 -1
  158. package/dist/plugins/reactNativeHMRPlugin.native.js +0 -151
  159. package/dist/plugins/reactNativeHMRPlugin.native.js.map +0 -1
  160. package/dist/utils/filterPluginsForNative.mjs +0 -27
  161. package/dist/utils/filterPluginsForNative.mjs.map +0 -1
  162. package/dist/utils/filterPluginsForNative.native.js +0 -33
  163. package/dist/utils/filterPluginsForNative.native.js.map +0 -1
  164. package/dist/utils/getReactNativeBundle.mjs +0 -104
  165. package/dist/utils/getReactNativeBundle.mjs.map +0 -1
  166. package/dist/utils/getReactNativeBundle.native.js +0 -135
  167. package/dist/utils/getReactNativeBundle.native.js.map +0 -1
  168. package/dist/utils/hotUpdateCache.mjs +0 -3
  169. package/dist/utils/hotUpdateCache.mjs.map +0 -1
  170. package/dist/utils/hotUpdateCache.native.js +0 -3
  171. package/dist/utils/hotUpdateCache.native.js.map +0 -1
  172. package/dist/utils/isBuildingNativeBundle.mjs +0 -6
  173. package/dist/utils/isBuildingNativeBundle.mjs.map +0 -1
  174. package/dist/utils/isBuildingNativeBundle.native.js +0 -7
  175. package/dist/utils/isBuildingNativeBundle.native.js.map +0 -1
  176. package/dist/utils/swapPrebuiltReactModules.mjs +0 -168
  177. package/dist/utils/swapPrebuiltReactModules.mjs.map +0 -1
  178. package/dist/utils/swapPrebuiltReactModules.native.js +0 -181
  179. package/dist/utils/swapPrebuiltReactModules.native.js.map +0 -1
  180. package/dist/worker.mjs +0 -55
  181. package/dist/worker.mjs.map +0 -1
  182. package/dist/worker.native.js +0 -55
  183. package/dist/worker.native.js.map +0 -1
  184. package/react-native-template.js +0 -375
  185. package/src/config/getReactNativeBuildConfig.ts +0 -349
  186. package/src/plugins/reactNativeHMRPlugin.ts +0 -237
  187. package/src/utils/filterPluginsForNative.ts +0 -55
  188. package/src/utils/getReactNativeBundle.ts +0 -243
  189. package/src/utils/hotUpdateCache.ts +0 -1
  190. package/src/utils/isBuildingNativeBundle.ts +0 -7
  191. package/src/utils/swapPrebuiltReactModules.ts +0 -341
  192. package/src/worker.ts +0 -90
  193. package/types/config/getReactNativeBuildConfig.d.ts +0 -72
  194. package/types/config/getReactNativeBuildConfig.d.ts.map +0 -1
  195. package/types/plugins/reactNativeHMRPlugin.d.ts +0 -10
  196. package/types/plugins/reactNativeHMRPlugin.d.ts.map +0 -1
  197. package/types/utils/filterPluginsForNative.d.ts +0 -8
  198. package/types/utils/filterPluginsForNative.d.ts.map +0 -1
  199. package/types/utils/getReactNativeBundle.d.ts +0 -12
  200. package/types/utils/getReactNativeBundle.d.ts.map +0 -1
  201. package/types/utils/hotUpdateCache.d.ts +0 -2
  202. package/types/utils/hotUpdateCache.d.ts.map +0 -1
  203. package/types/utils/isBuildingNativeBundle.d.ts +0 -3
  204. package/types/utils/isBuildingNativeBundle.d.ts.map +0 -1
  205. package/types/utils/swapPrebuiltReactModules.d.ts +0 -9
  206. package/types/utils/swapPrebuiltReactModules.d.ts.map +0 -1
  207. package/types/worker.d.ts +0 -13
  208. package/types/worker.d.ts.map +0 -1
@@ -103,6 +103,8 @@ export async function applyDependencyPatches(
103
103
 
104
104
  // track results per module
105
105
  const results = new Map<string, PatchResult>()
106
+ // track modules that already warned about transform failures (to avoid spam)
107
+ const transformWarnedModules = new Set<string>()
106
108
 
107
109
  await Promise.all(
108
110
  nodeModulesDirs.map(async (nodeModulesDir) => {
@@ -202,26 +204,42 @@ export async function applyDependencyPatches(
202
204
  if (typeof patchDef === 'string') {
203
205
  patchedContent = patchDef
204
206
  } else if (Array.isArray(patchDef)) {
205
- let contents = sourceContent
206
- for (const strategy of patchDef) {
207
- if (strategy === 'flow') {
208
- contents = await transformFlowBabel(contents)
207
+ // strategy-array patches (flow/jsx/swc transforms) are non-critical
208
+ // if they fail (e.g. babel + lru-cache incompatibility on Node 24+),
209
+ // warn and skip rather than crashing the whole patch process
210
+ try {
211
+ let contents = sourceContent
212
+ for (const strategy of patchDef) {
213
+ if (strategy === 'flow') {
214
+ contents = await transformFlowBabel(contents)
215
+ }
216
+ if (strategy === 'swc' || strategy === 'jsx') {
217
+ contents =
218
+ (
219
+ await transformSWC(fullPath, contents, {
220
+ mode: 'build',
221
+ environment: 'ios',
222
+ forceJSX: strategy === 'jsx',
223
+ noHMR: true,
224
+ fixNonTypeSpecificImports: true,
225
+ })
226
+ )?.code || contents
227
+ }
209
228
  }
210
- if (strategy === 'swc' || strategy === 'jsx') {
211
- contents =
212
- (
213
- await transformSWC(fullPath, contents, {
214
- mode: 'build',
215
- environment: 'ios',
216
- forceJSX: strategy === 'jsx',
217
- noHMR: true,
218
- fixNonTypeSpecificImports: true,
219
- })
220
- )?.code || contents
229
+ if (contents !== sourceContent) {
230
+ patchedContent = contents
221
231
  }
222
- }
223
- if (contents !== sourceContent) {
224
- patchedContent = contents
232
+ } catch (transformErr) {
233
+ if (!transformWarnedModules.has(patch.module)) {
234
+ transformWarnedModules.add(patch.module)
235
+ console.warn(
236
+ ` ⚠ Patch transform failed for ${patch.module} (likely Node version compat), skipping non-critical patch`
237
+ )
238
+ if (process.env.DEBUG) {
239
+ console.warn(transformErr)
240
+ }
241
+ }
242
+ return
225
243
  }
226
244
  } else {
227
245
  const out = await patchDef(sourceContent)
@@ -2,7 +2,7 @@ import { createDebugger } from '@vxrn/debug'
2
2
  import FSExtra from 'fs-extra'
3
3
  import path, { dirname, extname, join, sep } from 'node:path'
4
4
 
5
- const { debug } = createDebugger(`vxrn:scanDepsToOptimize`)
5
+ const { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`)
6
6
 
7
7
  export type ScanDepsResult = {
8
8
  prebundleDeps: string[]
@@ -52,7 +52,6 @@ export const EXCLUDE_LIST = [
52
52
 
53
53
  // Native only, we don't expect SSR to use these packages.
54
54
  // Also, some of these packages might attempt to import from react-native internals, which will break in SSR while react-native is aliased to react-native-web.
55
- '@vxrn/react-native-prebuilt',
56
55
  '@vxrn/vite-native-hmr',
57
56
  '@vxrn/compiler',
58
57
  '@vxrn/vite-native-client',
@@ -294,7 +293,7 @@ export async function scanDepsToOptimize(
294
293
 
295
294
  const result = [...depsToPreBundle, ...subDeps.prebundleDeps]
296
295
 
297
- debug?.(`final result ${JSON.stringify(result, null, 2)}`)
296
+ debugDetails?.(`final result ${JSON.stringify(result, null, 2)}`)
298
297
 
299
298
  proceededDeps.set(dep, result)
300
299
  return result
@@ -1 +1 @@
1
- {"version":3,"file":"getAdditionalViteConfig.d.ts","sourceRoot":"","sources":["../../src/config/getAdditionalViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,MAAM,CAAA;AAMpD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CA0CvE"}
1
+ {"version":3,"file":"getAdditionalViteConfig.d.ts","sourceRoot":"","sources":["../../src/config/getAdditionalViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,MAAM,CAAA;AAMpD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAwCvE"}
@@ -38,15 +38,7 @@ export declare function fillOptions(options: VXRNOptions, { mode }?: {
38
38
  readonly mode: "development" | "production";
39
39
  readonly clean: false | "vite";
40
40
  readonly root: string;
41
- readonly server: Required<{
42
- host?: string;
43
- port?: number;
44
- compress?: boolean;
45
- loadEnv?: boolean;
46
- }> & {
47
- url: string;
48
- protocol: string;
49
- };
41
+ readonly server: import("..").VXRNServeOptionsFilled;
50
42
  readonly entries: {
51
43
  native: string;
52
44
  readonly web?: string;
@@ -78,15 +70,7 @@ export declare function getOptionsFilled(): {
78
70
  readonly mode: "development" | "production";
79
71
  readonly clean: false | "vite";
80
72
  readonly root: string;
81
- readonly server: Required<{
82
- host?: string;
83
- port?: number;
84
- compress?: boolean;
85
- loadEnv?: boolean;
86
- }> & {
87
- url: string;
88
- protocol: string;
89
- };
73
+ readonly server: import("..").VXRNServeOptionsFilled;
90
74
  readonly entries: {
91
75
  native: string;
92
76
  readonly web?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"getOptionsFilled.d.ts","sourceRoot":"","sources":["../../src/config/getOptionsFilled.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAOjD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;AAIvE,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,EAAE,IAAY,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,IAAI,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAJP,CAAC;eAMF,CAAA;;;;GAiE/B;AAED,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAzEC,CAAC;eAMF,CAAA;;;;SAqE/B"}
1
+ {"version":3,"file":"getOptionsFilled.d.ts","sourceRoot":"","sources":["../../src/config/getOptionsFilled.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAOjD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;AAIvE,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,EAAE,IAAY,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,IAAI,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;cAJP,CAAC;eAMF,CAAA;;;;GAiE/B;AAED,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;cAzEC,CAAC;eAMF,CAAA;;;;SAqE/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"getReactNativePlugins.d.ts","sourceRoot":"","sources":["../../src/config/getReactNativePlugins.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6CAA6C,EAG7C,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAS3D,wBAAgB,qBAAqB,CACnC,MAAM,CAAC,EAAE,OAAO,CACd,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAAC,CACrF,EACD,EACE,KAAK,GACN,GAAE;IACD,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,kBAAkB,GAAG,6CAA6C,CAAC,GAAG,IAAI,CAAA;CAC/E,iCA8BP"}
1
+ {"version":3,"file":"getReactNativePlugins.d.ts","sourceRoot":"","sources":["../../src/config/getReactNativePlugins.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6CAA6C,EAG7C,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAQ3D,wBAAgB,qBAAqB,CACnC,MAAM,CAAC,EAAE,OAAO,CACd,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAAC,CACrF,EACD,EACE,KAAK,GACN,GAAE;IACD,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,kBAAkB,GAAG,6CAA6C,CAAC,GAAG,IAAI,CAAA;CAC/E,iCAyBP"}
@@ -13,15 +13,7 @@ export declare const build: (optionsIn: VXRNOptions, buildArgs?: BuildArgs) => P
13
13
  readonly mode: "development" | "production";
14
14
  readonly clean: false | "vite";
15
15
  readonly root: string;
16
- readonly server: Required<{
17
- host?: string;
18
- port?: number;
19
- compress?: boolean;
20
- loadEnv?: boolean;
21
- }> & {
22
- url: string;
23
- protocol: string;
24
- };
16
+ readonly server: import("..").VXRNServeOptionsFilled;
25
17
  readonly entries: {
26
18
  native: string;
27
19
  readonly web?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/exports/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAA;AAaxE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAuBtD,eAAO,MAAM,KAAK,GAAU,WAAW,WAAW,EAAE,YAAW,SAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+BpC,CAAC;mBAGhC,CAAC;;;;;;;;;;;;EAySV,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/exports/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAA;AAaxE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAuBtD,eAAO,MAAM,KAAK,GAAU,WAAW,WAAW,EAAE,YAAW,SAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+BpC,CAAC;mBAGhC,CAAC;;;;;;;;;;;;EA8SV,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createServer.d.ts","sourceRoot":"","sources":["../../src/exports/createServer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAMhC,eAAO,MAAM,gBAAgB,GAAI,KAAK,IAAI,EAAE,SAAS,gBAAgB,SAIpE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,KAAK,IAAI,EACT,SAAS,gBAAgB,EACzB,+BAGG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,wFAyCvD,CAAA"}
1
+ {"version":3,"file":"createServer.d.ts","sourceRoot":"","sources":["../../src/exports/createServer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAMhC,eAAO,MAAM,gBAAgB,GAAI,KAAK,IAAI,EAAE,SAAS,gBAAgB,SAIpE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,KAAK,IAAI,EACT,SAAS,gBAAgB,EACzB,+BAGG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,wFA8CvD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"prebuild.d.ts","sourceRoot":"","sources":["../../src/exports/prebuild.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,QAAQ,GAAU,oDAK5B;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;IACrC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,EAAE,OAAO,CAAA;CACd,kBA2LA,CAAA;AAoBD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,iBAOpB"}
1
+ {"version":3,"file":"prebuild.d.ts","sourceRoot":"","sources":["../../src/exports/prebuild.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,QAAQ,GAAU,oDAK5B;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;IACrC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,EAAE,OAAO,CAAA;CACd,kBAiMA,CAAA;AA2DD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,iBAOpB"}
@@ -3,6 +3,7 @@ import type { VXRNServeOptions } from '../types';
3
3
  export { loadEnv } from '../exports/loadEnv';
4
4
  export * from '../utils/getServerEntry';
5
5
  export { createProdServer, applyCompression } from './createServer';
6
- export { serveStaticAssets } from './serveStaticAssets';
6
+ export { serveStaticAssets, compileCacheRules } from './serveStaticAssets';
7
+ export type { CompiledCacheRules } from './serveStaticAssets';
7
8
  export declare const serve: ({ afterRegisterRoutes, beforeRegisterRoutes, app, outDir, ...optionsIn }: VXRNServeOptions) => Promise<void>;
8
9
  //# sourceMappingURL=serve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/exports/serve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,eAAO,MAAM,KAAK,GAAU,0EAMzB,gBAAgB,kBAuBlB,CAAA"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/exports/serve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,eAAO,MAAM,KAAK,GAAU,0EAMzB,gBAAgB,kBAuBlB,CAAA"}
@@ -1,7 +1,18 @@
1
1
  import type { Context } from 'hono';
2
- export declare function serveStaticAssets({ context, next, outDir, }: {
2
+ export type CompiledCacheRules = {
3
+ re: RegExp;
4
+ values: string[];
5
+ };
6
+ /**
7
+ * compile a cacheControl config (glob → header) into a single regex.
8
+ * each unique header value gets a capturing group — one regex.test()
9
+ * per request, then the matched group index maps to the header value.
10
+ */
11
+ export declare function compileCacheRules(cacheControl: Record<string, string>): CompiledCacheRules;
12
+ export declare function serveStaticAssets({ context, next, outDir, cacheRules, }: {
3
13
  context: Context;
4
14
  next?: () => Promise<void>;
5
15
  outDir?: string;
16
+ cacheRules?: CompiledCacheRules;
6
17
  }): Promise<Response | undefined>;
7
18
  //# sourceMappingURL=serveStaticAssets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serveStaticAssets.d.ts","sourceRoot":"","sources":["../../src/exports/serveStaticAssets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAKnC,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,IAAI,EACJ,MAAe,GAChB,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,iCAsBA"}
1
+ {"version":3,"file":"serveStaticAssets.d.ts","sourceRoot":"","sources":["../../src/exports/serveStaticAssets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAMnC,MAAM,MAAM,kBAAkB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAEjE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,kBAAkB,CAyBpB;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,IAAI,EACJ,MAAe,EACf,UAAU,GACX,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAChC,iCA8CA"}
package/types/index.d.ts CHANGED
@@ -18,5 +18,4 @@ export * from './utils/getServerEntry';
18
18
  export * from './plugins/rollupRemoveUnusedImports';
19
19
  export * from './plugins/autoDepOptimizePlugin';
20
20
  export * from './types';
21
- export { prebuildReactNativeModules } from './utils/swapPrebuiltReactModules';
22
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,EACL,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,WAAW,GACZ,MAAM,2BAA2B,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AAEtC,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAE/C,cAAc,SAAS,CAAA;AAEvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,EACL,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,WAAW,GACZ,MAAM,2BAA2B,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AAEtC,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAE/C,cAAc,SAAS,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"builtInDepPatches.d.ts","sourceRoot":"","sources":["../../src/patches/builtInDepPatches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAiC,MAAM,kBAAkB,CAAA;AAE/E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAylBvC,CAAA"}
1
+ {"version":3,"file":"builtInDepPatches.d.ts","sourceRoot":"","sources":["../../src/patches/builtInDepPatches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAiC,MAAM,kBAAkB,CAAA;AAE/E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAsnBvC,CAAA"}
@@ -1,11 +1,5 @@
1
- import type { Plugin, ResolvedConfig } from 'vite';
2
1
  export declare function getServerConfigPlugin(): {
3
2
  name: string;
4
- configResolved(this: import("vite").MinimalPluginContextWithoutEnvironment, conf: ResolvedConfig): void;
3
+ configResolved(this: import("vite").MinimalPluginContextWithoutEnvironment, conf: import("vite").ResolvedConfig): void;
5
4
  };
6
- /**
7
- * some values used by the client needs to be dynamically injected by the server
8
- * @server-only
9
- */
10
- export declare function nativeClientInjectPlugin(): Plugin;
11
5
  //# sourceMappingURL=clientInjectPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientInjectPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/clientInjectPlugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,MAAM,EAAE,cAAc,EAAc,MAAM,MAAM,CAAA;AAQ1E,wBAAgB,qBAAqB;;;EAapC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAgFjD"}
1
+ {"version":3,"file":"clientInjectPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/clientInjectPlugin.ts"],"names":[],"mappings":"AAGA,wBAAgB,qBAAqB;;;EAapC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reactNativeDevAssetPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/reactNativeDevAssetPlugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAA;AAsBlD,KAAK,+BAA+B,GAAG;IACrC,kGAAkG;IAClG,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACrB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,+BAA+B,GACvC,MAAM,CA0IR"}
1
+ {"version":3,"file":"reactNativeDevAssetPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/reactNativeDevAssetPlugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAA;AAQlD,KAAK,+BAA+B,GAAG;IACrC,kGAAkG;IAClG,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACrB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,+BAA+B,GACvC,MAAM,CA0IR"}
@@ -1 +1 @@
1
- {"version":3,"file":"reactNativeDevServer.d.ts","sourceRoot":"","sources":["../../src/plugins/reactNativeDevServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,MAAM,EAAiB,MAAM,MAAM,CAAA;AAM1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAiBnE,wBAAgB,gCAAgC,CAC9C,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAAC,CACrF,GACA,MAAM,CAiOR"}
1
+ {"version":3,"file":"reactNativeDevServer.d.ts","sourceRoot":"","sources":["../../src/plugins/reactNativeDevServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,MAAM,EAAiB,MAAM,MAAM,CAAA;AAM1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAWnE,wBAAgB,gCAAgC,CAC9C,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAAC,CACrF,GACA,MAAM,CA4MR"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildBundle.d.ts","sourceRoot":"","sources":["../../../src/rn-commands/bundle/buildBundle.ts"],"names":[],"mappings":"AA4BA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,OAAO,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,EAAE,OAAO,CAAA;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,wBAAwB,EAAE,MAAM,CAAA;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAC/B,CAAA;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,iBAAiB,EACvB,UAAU,GAAE,GAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAiGf"}
1
+ {"version":3,"file":"buildBundle.d.ts","sourceRoot":"","sources":["../../../src/rn-commands/bundle/buildBundle.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,OAAO,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,EAAE,OAAO,CAAA;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,wBAAwB,EAAE,MAAM,CAAA;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAC/B,CAAA;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,iBAAiB,EACvB,UAAU,GAAE,GAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAkEf"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * HMR client for React Native.
3
+ * Ported from rollipop (https://github.com/leegeunhyeok/rollipop)
4
+ *
5
+ * connects to dev server WebSocket, handles HMR messages,
6
+ * and integrates with React Native's DevLoadingView and LogBox.
7
+ */
8
+ import type { HMRClientLogLevel } from './hmr-types';
9
+ interface HMRClientNativeInterface {
10
+ enable(): void;
11
+ disable(): void;
12
+ registerBundle(requestUrl: string): void;
13
+ log(level: string, data: any[]): void;
14
+ setup(platform: string, bundleEntry: string, host: string, port: number | string, isEnabled: boolean, scheme?: string): void;
15
+ }
16
+ declare class HMRClient implements HMRClientNativeInterface {
17
+ static readonly STARTUP_ERROR = "Expected HMRClient.setup() call at startup";
18
+ static readonly MAX_PENDING_LOGS = 100;
19
+ private enabled;
20
+ private _socketHolder;
21
+ private unavailableMessage;
22
+ private compileErrorMessage;
23
+ private pendingUpdatesCount;
24
+ private readonly pendingLogs;
25
+ enable(): void;
26
+ disable(): void;
27
+ registerBundle(_requestUrl: string): void;
28
+ log(level: HMRClientLogLevel, data: any[]): void;
29
+ setup(platform: string, bundleEntry: string, host: string, port: number | string, isEnabled?: boolean, protocol?: string): void;
30
+ private send;
31
+ private flushEarlyLogs;
32
+ private showCompileErrorIfNeeded;
33
+ private handleConnection;
34
+ private handleConnectionError;
35
+ private handleMessage;
36
+ private handleClose;
37
+ }
38
+ declare const _default: HMRClient;
39
+ export default _default;
40
+ //# sourceMappingURL=hmr-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr-client.d.ts","sourceRoot":"","sources":["../../src/runtime/hmr-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAsC,MAAM,aAAa,CAAA;AAIxF,UAAU,wBAAwB;IAChC,MAAM,IAAI,IAAI,CAAA;IACd,OAAO,IAAI,IAAI,CAAA;IACf,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IACrC,KAAK,CACH,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAAA;CACR;AAOD,cAAM,SAAU,YAAW,wBAAwB;IACjD,MAAM,CAAC,QAAQ,CAAC,aAAa,gDAA+C;IAC5E,MAAM,CAAC,QAAQ,CAAC,gBAAgB,OAAM;IAEtC,OAAO,CAAC,OAAO,CAAO;IACtB,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D,MAAM;IAON,OAAO;IAIP,cAAc,CAAC,WAAW,EAAE,MAAM;IAIlC,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE;IAiBzC,KAAK,CACH,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,SAAS,UAAO,EAChB,QAAQ,SAAS;IAiDnB,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,WAAW;CASpB;;AAID,wBAEE"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * HMR runtime for rolldown's devMode.
3
+ * Ported from rollipop (https://github.com/leegeunhyeok/rollipop)
4
+ *
5
+ * this file is compiled to a string and passed to rolldown's
6
+ * `devMode.implement` option. rolldown injects it at the top of the bundle
7
+ * and references `__rolldown_runtime__` for module registration and HMR.
8
+ */
9
+ import type { DevRuntime as DefaultDevRuntime, HMRContext, HMRCustomMessage } from './hmr-types';
10
+ import { enqueueUpdate, isReactRefreshBoundary } from './react-refresh-utils';
11
+ declare global {
12
+ var __rolldown_runtime__: ReactNativeDevRuntime;
13
+ var __turboModuleProxy: (moduleName: string) => any;
14
+ var globalEvalWithSourceUrl: (code: string, sourceURL?: string) => void;
15
+ var nativeModuleProxy: Record<string, any>;
16
+ var __ReactRefresh: any;
17
+ var __VXRN_CUSTOM_HMR_HANDLER__: ((socket: WebSocket, message: HMRCustomMessage) => void) | undefined;
18
+ }
19
+ declare const DevRuntime: typeof DefaultDevRuntime;
20
+ declare var BaseDevRuntime: typeof DefaultDevRuntime;
21
+ declare class ModuleHotContext implements HMRContext {
22
+ private moduleId;
23
+ private socketHolder;
24
+ private readonly removeListeners;
25
+ acceptCallbacks: {
26
+ deps: string[];
27
+ fn: (moduleExports: Record<string, any>[]) => void;
28
+ }[];
29
+ constructor(moduleId: string, socketHolder: SocketHolder);
30
+ get refresh(): any;
31
+ get refreshUtils(): {
32
+ isReactRefreshBoundary: typeof isReactRefreshBoundary;
33
+ enqueueUpdate: typeof enqueueUpdate;
34
+ };
35
+ accept(...args: any[]): void;
36
+ invalidate(): void;
37
+ on(event: string, listener: (...args: any[]) => void): void;
38
+ off(event: string, listener: (...args: any[]) => void): void;
39
+ send(type: string, payload?: unknown): void;
40
+ cleanup(): void;
41
+ }
42
+ declare class SocketHolder {
43
+ private readonly queuedMessages;
44
+ private readonly emitter;
45
+ private _socket;
46
+ private _origin;
47
+ get socket(): WebSocket | null;
48
+ get origin(): string | null;
49
+ setup(socket: WebSocket, origin: string): void;
50
+ on(event: string, listener: (payload?: unknown) => void): void;
51
+ off(event: string, listener: (payload?: unknown) => void): void;
52
+ emit(event: string, payload?: unknown): void;
53
+ send(message: string): void;
54
+ flushQueuedMessages(): void;
55
+ close(): void;
56
+ }
57
+ declare class ReactNativeDevRuntime extends BaseDevRuntime {
58
+ socketHolder: SocketHolder;
59
+ moduleHotContexts: Map<string, ModuleHotContext>;
60
+ moduleHotContextsToBeUpdated: Map<string, ModuleHotContext>;
61
+ constructor();
62
+ createModuleHotContext(moduleId: string): ModuleHotContext;
63
+ applyUpdates(boundaries: [string, string][]): void;
64
+ setup(socket: WebSocket, origin: string): void;
65
+ private evaluate;
66
+ private reload;
67
+ }
68
+ export type { DevRuntime };
69
+ //# sourceMappingURL=hmr-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/hmr-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ export interface HMRContext {
2
+ accept(...args: any[]): void;
3
+ invalidate(): void;
4
+ on(event: string, listener: (...args: any[]) => void): void;
5
+ off(event: string, listener: (...args: any[]) => void): void;
6
+ send(type: string, payload?: unknown): void;
7
+ }
8
+ export type HMRClientLogLevel = 'trace' | 'info' | 'warn' | 'error' | 'log' | 'group' | 'groupCollapsed' | 'groupEnd' | 'debug';
9
+ export type HMRClientMessage = {
10
+ type: 'hmr:connected';
11
+ bundleEntry: string;
12
+ platform: string;
13
+ } | {
14
+ type: 'hmr:module-registered';
15
+ modules: string[];
16
+ } | {
17
+ type: 'hmr:log';
18
+ level: HMRClientLogLevel;
19
+ data: any[];
20
+ } | {
21
+ type: 'hmr:invalidate';
22
+ moduleId: string;
23
+ };
24
+ export type HMRServerMessage = {
25
+ type: 'hmr:update-start';
26
+ } | {
27
+ type: 'hmr:update-done';
28
+ } | {
29
+ type: 'hmr:update';
30
+ code: string;
31
+ } | {
32
+ type: 'hmr:reload';
33
+ } | {
34
+ type: 'hmr:error';
35
+ payload: HMRServerError;
36
+ };
37
+ export type HMRCustomMessage = {
38
+ type: string;
39
+ payload: unknown;
40
+ };
41
+ export type HMRCustomHandler = (socket: WebSocket, message: HMRCustomMessage) => void;
42
+ export interface HMRServerError {
43
+ type: string;
44
+ message: string;
45
+ errors: {
46
+ description: string;
47
+ }[];
48
+ }
49
+ export interface DevRuntimeModule {
50
+ exportsHolder: {
51
+ exports: any;
52
+ };
53
+ id: string;
54
+ exports: any;
55
+ }
56
+ export interface DevRuntimeInterface {
57
+ modules: Record<string, DevRuntimeModule>;
58
+ createModuleHotContext(moduleId: string): void;
59
+ applyUpdates(boundaries: [string, string][]): void;
60
+ registerModule(id: string, exportsHolder: DevRuntimeModule['exportsHolder']): void;
61
+ loadExports(id: string): void;
62
+ }
63
+ declare class DevRuntime implements DevRuntimeInterface {
64
+ clientId: string;
65
+ constructor(messenger: DevRuntimeMessenger, clientId: string);
66
+ modules: Record<string, DevRuntimeModule>;
67
+ createModuleHotContext(moduleId: string): void;
68
+ applyUpdates(boundaries: [string, string][]): void;
69
+ registerModule(id: string, exportsHolder: DevRuntimeModule['exportsHolder']): void;
70
+ loadExports(id: string): void;
71
+ }
72
+ export type { DevRuntime };
73
+ export interface DevRuntimeMessenger {
74
+ send(message: HMRClientMessage): void;
75
+ }
76
+ //# sourceMappingURL=hmr-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr-types.d.ts","sourceRoot":"","sources":["../../src/runtime/hmr-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * native bundle prelude - minimal globals for React Native.
3
+ * injected via rolldown's `intro` output option.
4
+ * rolldown's devMode handles the module system.
5
+ */
6
+ export declare function getNativePrelude(options: {
7
+ dev: boolean;
8
+ platform: string;
9
+ serverUrl?: string;
10
+ }): string;
11
+ //# sourceMappingURL=native-prelude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-prelude.d.ts","sourceRoot":"","sources":["../../src/runtime/native-prelude.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,GAAG,EAAE,OAAO,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,MAAM,CAkGT"}
@@ -0,0 +1,3 @@
1
+ export declare function isReactRefreshBoundary(moduleExports: Record<string, unknown>): boolean;
2
+ export declare function enqueueUpdate(): void;
3
+ //# sourceMappingURL=react-refresh-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-refresh-utils.d.ts","sourceRoot":"","sources":["../../src/runtime/react-refresh-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAyB5E;AAID,wBAAgB,aAAa,SAM5B"}
package/types/types.d.ts CHANGED
@@ -93,6 +93,20 @@ export type VXRNOptions = {
93
93
  * @default false
94
94
  */
95
95
  loadEnv?: boolean;
96
+ /**
97
+ * Custom cache-control rules for static assets.
98
+ * Map of glob patterns to Cache-Control header values.
99
+ * Hashed assets (e.g. app-CB4EB78V.js) are always immutable.
100
+ * Unmatched assets default to must-revalidate.
101
+ *
102
+ * @example
103
+ * cacheControl: {
104
+ * '*.worker.js': 'public, max-age=86400, stale-while-revalidate=604800',
105
+ * '*.wasm': 'public, max-age=86400',
106
+ * '/deps-*\/**': 'public, max-age=86400',
107
+ * }
108
+ */
109
+ cacheControl?: Record<string, string>;
96
110
  };
97
111
  /**
98
112
  * Whether to clean cache directories on startup
@@ -113,7 +127,7 @@ export type HMRListener = (update: {
113
127
  contents: string;
114
128
  }) => void;
115
129
  type VXRNServeOptionsBase = VXRNOptions['server'];
116
- export type VXRNServeOptionsFilled = Required<VXRNServeOptionsBase> & {
130
+ export type VXRNServeOptionsFilled = Required<Omit<NonNullable<VXRNServeOptionsBase>, 'cacheControl'>> & Pick<NonNullable<VXRNServeOptionsBase>, 'cacheControl'> & {
117
131
  url: string;
118
132
  protocol: string;
119
133
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEnE,KAAK,gBAAgB,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;AAEvE,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,CAAA;AAEjC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,WAAW,CAAA;IACpB,YAAY,EAAE,gBAAgB,CAAA;IAC9B,YAAY,EAAE,gBAAgB,CAAA;IAC9B,cAAc,EAAE,UAAU,CAAA;IAC1B,iBAAiB,EAAE,UAAU,CAAA;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,cAAc,EAAE;QAEd,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;KACnC,CAAA;CACF,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,kBAAkB,CAAA;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IAE5B,SAAS,CAAC,EAAE,sBAAsB,CAAA;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAA;IAEnC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;IAED;;OAEG;IACH,KAAK,CAAC,EAAE;QACN;;;WAGG;QACH,MAAM,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAA;QAEnC;;;WAGG;QACH,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;IAED,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,OAAO,CAAA;QAElB;;;WAGG;QACH,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;IAED;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AAE9E,KAAK,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;AAEjD,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG;IACpE,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG;IACpD,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oBAAoB,CAAC,EAAE,CACrB,OAAO,EAAE,sBAAsB,EAC/B,GAAG,EAAE,IAAI,KACN,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,mBAAmB,CAAC,EAAE,CACpB,OAAO,EAAE,sBAAsB,EAC/B,GAAG,EAAE,IAAI,KACN,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Creates a rolldown DevEngine for native React Native bundle serving.
3
+ * Uses rolldown's experimental dev() API with ESM output.
4
+ *
5
+ * Inspired by rollipop's architecture:
6
+ * https://github.com/leegeunhyeok/rollipop
7
+ */
8
+ import type { Plugin } from 'rolldown';
9
+ interface NativeDevEngineOptions {
10
+ root: string;
11
+ port: number;
12
+ host?: string;
13
+ platform: 'ios' | 'android';
14
+ serverUrl?: string;
15
+ plugins?: Plugin[];
16
+ onHmrUpdate?: (update: {
17
+ type: string;
18
+ code?: string;
19
+ }) => void;
20
+ }
21
+ interface NativeDevEngineResult {
22
+ engine: any;
23
+ getBundle: () => Promise<{
24
+ code: string;
25
+ map?: string;
26
+ }>;
27
+ close: () => Promise<void>;
28
+ }
29
+ export declare function createNativeDevEngine(options: NativeDevEngineOptions): Promise<NativeDevEngineResult>;
30
+ interface NativeBuildOptions {
31
+ root: string;
32
+ platform: 'ios' | 'android';
33
+ dev?: boolean;
34
+ serverUrl?: string;
35
+ plugins?: Plugin[];
36
+ }
37
+ export declare function buildNativeBundle(options: NativeBuildOptions): Promise<{
38
+ code: string;
39
+ map?: string;
40
+ }>;
41
+ export {};
42
+ //# sourceMappingURL=createNativeDevEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createNativeDevEngine.d.ts","sourceRoot":"","sources":["../../src/utils/createNativeDevEngine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAA+B,MAAM,EAAkB,MAAM,UAAU,CAAA;AAOnF,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CAChE;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,GAAG,CAAA;IACX,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAwJD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAmMhC;AAID,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsCzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"patches.d.ts","sourceRoot":"","sources":["../../src/utils/patches.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAInE,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAA;AAExC,MAAM,MAAM,eAAe,GACvB,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,GAC/D,MAAM,GACN,UAAU,EAAE,CAAA;AAEhB,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;KAC/B,CAAA;CACF,CAAA;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAInD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAI5D;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;AAEzE,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,EACxC,YAAY,CAAC,EAAE,oBAAoB,iBA2BpC;AAyBD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,QAAQ,EAAE,EACnB,EAAE,IAAoB,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,iBA6MjD"}
1
+ {"version":3,"file":"patches.d.ts","sourceRoot":"","sources":["../../src/utils/patches.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAInE,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAA;AAExC,MAAM,MAAM,eAAe,GACvB,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,GAC/D,MAAM,GACN,UAAU,EAAE,CAAA;AAEhB,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;KAC/B,CAAA;CACF,CAAA;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAInD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAI5D;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;AAEzE,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,EACxC,YAAY,CAAC,EAAE,oBAAoB,iBA2BpC;AAyBD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,QAAQ,EAAE,EACnB,EAAE,IAAoB,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,iBA+NjD"}