vxrn 2.7.6 → 2.7.7
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.
- package/dist/config/getOptimizeDeps.mjs +1 -1
- package/dist/config/getOptimizeDeps.mjs.map +1 -1
- package/dist/config/getOptimizeDeps.native.js +3 -1
- package/dist/config/getOptimizeDeps.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.mjs +13 -2
- package/dist/utils/createNativeDevEngine.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.native.js +47 -5
- package/dist/utils/createNativeDevEngine.native.js.map +1 -1
- package/package.json +12 -12
- package/src/config/getOptimizeDeps.ts +3 -1
- package/src/config/ssrVendorOptimization.test.ts +115 -0
- package/src/utils/createNativeDevEngine.test.ts +80 -4
- package/src/utils/createNativeDevEngine.ts +36 -7
- package/types/config/getOptimizeDeps.d.ts.map +1 -1
- package/types/utils/createNativeDevEngine.d.ts.map +1 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cpSync,
|
|
3
|
+
mkdirSync,
|
|
4
|
+
mkdtempSync,
|
|
5
|
+
readFileSync,
|
|
6
|
+
realpathSync,
|
|
7
|
+
rmSync,
|
|
8
|
+
writeFileSync,
|
|
9
|
+
} from 'node:fs'
|
|
10
|
+
import { createRequire } from 'node:module'
|
|
11
|
+
import { tmpdir } from 'node:os'
|
|
12
|
+
import { dirname, join, resolve } from 'node:path'
|
|
13
|
+
import { createServer } from 'vite'
|
|
14
|
+
import { expect, it } from 'vitest'
|
|
15
|
+
import { builtInDepPatches } from '../patches/builtInDepPatches'
|
|
16
|
+
import { getOptimizeDeps } from './getOptimizeDeps'
|
|
17
|
+
|
|
18
|
+
const require = createRequire(import.meta.url)
|
|
19
|
+
|
|
20
|
+
it.each([false, true])(
|
|
21
|
+
'renders with shared React through patched entrypoints: %s',
|
|
22
|
+
async (patched) => {
|
|
23
|
+
const root = realpathSync(mkdtempSync(join(tmpdir(), 'vxrn-ssr-react-')))
|
|
24
|
+
const modules = join(root, 'node_modules')
|
|
25
|
+
mkdirSync(modules)
|
|
26
|
+
writeFileSync(join(root, 'package.json'), '{"private":true}')
|
|
27
|
+
for (const name of ['react', 'react-dom']) {
|
|
28
|
+
const target = join(modules, name)
|
|
29
|
+
cpSync(dirname(require.resolve(`${name}/package.json`)), target, {
|
|
30
|
+
recursive: true,
|
|
31
|
+
dereference: true,
|
|
32
|
+
})
|
|
33
|
+
if (patched) {
|
|
34
|
+
const patch = builtInDepPatches.find(({ module }) => module === name)!
|
|
35
|
+
// use the existing wrapper bytes and export conditions with real runtimes.
|
|
36
|
+
for (const [file, value] of Object.entries(patch.patchFiles)) {
|
|
37
|
+
if (file === 'version') continue
|
|
38
|
+
if (typeof value === 'string') writeFileSync(join(target, file), value)
|
|
39
|
+
}
|
|
40
|
+
const manifest = join(target, 'package.json')
|
|
41
|
+
const pkg = JSON.parse(readFileSync(manifest, 'utf8'))
|
|
42
|
+
pkg.version = '18.3.1'
|
|
43
|
+
const patchManifest = patch.patchFiles['package.json']
|
|
44
|
+
if (typeof patchManifest !== 'function')
|
|
45
|
+
throw new Error('missing React export patch')
|
|
46
|
+
writeFileSync(manifest, patchManifest(JSON.stringify(pkg)) as string)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const vendor = join(modules, '@vxrn/vendor')
|
|
50
|
+
mkdirSync(vendor, { recursive: true })
|
|
51
|
+
const source = resolve(import.meta.dirname, '../../../vendor')
|
|
52
|
+
cpSync(join(source, 'package.json'), join(vendor, 'package.json'))
|
|
53
|
+
for (const name of ['react', 'react-dom']) {
|
|
54
|
+
cpSync(join(source, name), join(vendor, name), { recursive: true })
|
|
55
|
+
}
|
|
56
|
+
writeFileSync(
|
|
57
|
+
join(root, 'entry.js'),
|
|
58
|
+
`import React, { useState } from 'react'
|
|
59
|
+
import { renderToString } from 'react-dom/server.browser'
|
|
60
|
+
function Page() {
|
|
61
|
+
const [text] = useState('ready')
|
|
62
|
+
return React.createElement('h1', null, text)
|
|
63
|
+
}
|
|
64
|
+
export const html = renderToString(React.createElement(Page))
|
|
65
|
+
`
|
|
66
|
+
)
|
|
67
|
+
const loadedVendor = new Set<string>()
|
|
68
|
+
const { optimizeDeps } = getOptimizeDeps('serve')
|
|
69
|
+
const include = optimizeDeps.include.filter((id) =>
|
|
70
|
+
/^(react(?:-dom)?(?:\/|$)|@vxrn\/vendor\/react)/.test(id)
|
|
71
|
+
)
|
|
72
|
+
const server = await createServer({
|
|
73
|
+
configFile: false,
|
|
74
|
+
root,
|
|
75
|
+
server: { middlewareMode: true },
|
|
76
|
+
optimizeDeps: { noDiscovery: true },
|
|
77
|
+
ssr: { noExternal: include },
|
|
78
|
+
environments: {
|
|
79
|
+
ssr: {
|
|
80
|
+
resolve: { conditions: ['vxrn-web'] },
|
|
81
|
+
optimizeDeps: {
|
|
82
|
+
...optimizeDeps,
|
|
83
|
+
include: [...include, 'react-dom/server.browser'],
|
|
84
|
+
noDiscovery: true,
|
|
85
|
+
rolldownOptions: {
|
|
86
|
+
...optimizeDeps.rolldownOptions,
|
|
87
|
+
plugins: [
|
|
88
|
+
{
|
|
89
|
+
name: 'record-vendored-react-loads',
|
|
90
|
+
load(id) {
|
|
91
|
+
if (id.startsWith(vendor)) loadedVendor.add(id)
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
try {
|
|
101
|
+
expect(server.environments.ssr.depsOptimizer).toBeDefined()
|
|
102
|
+
await server.environments.ssr.listen(server)
|
|
103
|
+
const result = await server.ssrLoadModule(join(root, 'entry.js'))
|
|
104
|
+
expect(result.html).toBe('<h1>ready</h1>')
|
|
105
|
+
if (patched) {
|
|
106
|
+
expect(loadedVendor.size).toBeGreaterThan(0)
|
|
107
|
+
} else {
|
|
108
|
+
expect([...loadedVendor]).toEqual([])
|
|
109
|
+
}
|
|
110
|
+
} finally {
|
|
111
|
+
await server.close()
|
|
112
|
+
rmSync(root, { recursive: true, force: true })
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { existsSync, realpathSync } from 'node:fs'
|
|
2
|
-
import { mkdir, mkdtemp, readFile, rm, symlink, writeFile } from 'node:fs/promises'
|
|
2
|
+
import { mkdir, mkdtemp, readFile, rename, rm, symlink, writeFile } from 'node:fs/promises'
|
|
3
3
|
import { tmpdir } from 'node:os'
|
|
4
4
|
import { join } from 'node:path'
|
|
5
5
|
import { createContext, runInContext, runInNewContext } from 'node:vm'
|
|
@@ -28,6 +28,14 @@ import {
|
|
|
28
28
|
type NativePluginContext,
|
|
29
29
|
} from './createNativeDevEngine'
|
|
30
30
|
|
|
31
|
+
// an edit made while the engine watches, landing the way an editor's safe save
|
|
32
|
+
// does. writeFile truncates first, and a loaded runner can deliver that empty
|
|
33
|
+
// file to the watcher as an edit of its own before the content arrives
|
|
34
|
+
const saveFile = async (path: string, data: string) => {
|
|
35
|
+
await writeFile(`${path}.tmp`, data)
|
|
36
|
+
await rename(`${path}.tmp`, path)
|
|
37
|
+
}
|
|
38
|
+
|
|
31
39
|
it.each(['edit', 'create', 'delete'] as const)(
|
|
32
40
|
'loads routes and applies %s HMR through symlinked node_modules',
|
|
33
41
|
async (change) => {
|
|
@@ -1025,7 +1033,7 @@ if (import.meta.hot) import.meta.hot.accept(() => {})
|
|
|
1025
1033
|
// and the test immediately restores the file to component-v1 upon
|
|
1026
1034
|
// seeing hmr-session-ready.
|
|
1027
1035
|
sourceMapPromise = native.getSourceMap()
|
|
1028
|
-
void
|
|
1036
|
+
void saveFile(childPath, childSource('component-v1'))
|
|
1029
1037
|
} else if (updates.length === 2) {
|
|
1030
1038
|
resolveSecondUpdate(update)
|
|
1031
1039
|
}
|
|
@@ -1056,7 +1064,7 @@ if (import.meta.hot) import.meta.hot.accept(() => {})
|
|
|
1056
1064
|
runtime = context.__rolldown_runtime__
|
|
1057
1065
|
await native.engine.registerClient(runtime.clientId)
|
|
1058
1066
|
|
|
1059
|
-
await
|
|
1067
|
+
await saveFile(childPath, childSource('hmr-session-ready'))
|
|
1060
1068
|
const secondUpdate = await secondUpdateReceived
|
|
1061
1069
|
expect(await sourceMapPromise).toBe(initial.map)
|
|
1062
1070
|
expect(updates).toHaveLength(2)
|
|
@@ -2796,6 +2804,74 @@ globalThis.__vxrnConditionalExportProbe = helper()
|
|
|
2796
2804
|
}
|
|
2797
2805
|
)
|
|
2798
2806
|
|
|
2807
|
+
it.each([false, true])(
|
|
2808
|
+
'preserves external native defaults and raw namespaces (minify=%s)',
|
|
2809
|
+
async (minify) => {
|
|
2810
|
+
const root = await mkdtemp(join(tmpdir(), 'vxrn-external-default-'))
|
|
2811
|
+
await writeFile(join(root, 'package.json'), JSON.stringify({ type: 'module' }))
|
|
2812
|
+
await writeFile(
|
|
2813
|
+
join(root, 'entry.js'),
|
|
2814
|
+
`
|
|
2815
|
+
import Component, { marker } from 'external-helper'
|
|
2816
|
+
import Scoped from '@external/helper/deep'
|
|
2817
|
+
import Plain from 'plain-helper'
|
|
2818
|
+
globalThis.externalDefaults = [Component, marker, Scoped, Plain, require('external-helper')]
|
|
2819
|
+
`
|
|
2820
|
+
)
|
|
2821
|
+
const component = () => 42
|
|
2822
|
+
const namespace = { default: component, marker: 42, __esModule: true }
|
|
2823
|
+
try {
|
|
2824
|
+
const result = await buildNativeBundle({
|
|
2825
|
+
root,
|
|
2826
|
+
platform: 'ios',
|
|
2827
|
+
entryFile: 'entry.js',
|
|
2828
|
+
minify,
|
|
2829
|
+
plugins: [
|
|
2830
|
+
{
|
|
2831
|
+
name: 'external-default-probe',
|
|
2832
|
+
resolveId(id) {
|
|
2833
|
+
if (
|
|
2834
|
+
['external-helper', '@external/helper/deep', 'plain-helper'].includes(
|
|
2835
|
+
id
|
|
2836
|
+
)
|
|
2837
|
+
) {
|
|
2838
|
+
return { id, external: true }
|
|
2839
|
+
}
|
|
2840
|
+
},
|
|
2841
|
+
outputOptions(options) {
|
|
2842
|
+
return { ...options, format: 'cjs', intro: '' }
|
|
2843
|
+
},
|
|
2844
|
+
},
|
|
2845
|
+
],
|
|
2846
|
+
})
|
|
2847
|
+
const context = {
|
|
2848
|
+
module: { exports: {} },
|
|
2849
|
+
exports: {},
|
|
2850
|
+
console,
|
|
2851
|
+
require(id: string) {
|
|
2852
|
+
if (id === 'plain-helper') return component
|
|
2853
|
+
if (id === 'external-helper' || id === '@external/helper/deep')
|
|
2854
|
+
return namespace
|
|
2855
|
+
throw new Error(`unexpected external: ${id}`)
|
|
2856
|
+
},
|
|
2857
|
+
}
|
|
2858
|
+
runInNewContext(result.code, context)
|
|
2859
|
+
expect(Reflect.get(context, 'externalDefaults')).toEqual([
|
|
2860
|
+
component,
|
|
2861
|
+
42,
|
|
2862
|
+
component,
|
|
2863
|
+
component,
|
|
2864
|
+
namespace,
|
|
2865
|
+
])
|
|
2866
|
+
const values = Reflect.get(context, 'externalDefaults')
|
|
2867
|
+
if (!Array.isArray(values)) throw new Error('external probe did not execute')
|
|
2868
|
+
expect(values[4]).toBe(namespace)
|
|
2869
|
+
} finally {
|
|
2870
|
+
await rm(root, { recursive: true, force: true })
|
|
2871
|
+
}
|
|
2872
|
+
}
|
|
2873
|
+
)
|
|
2874
|
+
|
|
2799
2875
|
it('unwraps the default export of Babel CommonJS modules in production output', async () => {
|
|
2800
2876
|
const testRoot = await mkdtemp(join(tmpdir(), 'vxrn-native-prod-cjs-default-'))
|
|
2801
2877
|
const packageRoot = join(testRoot, 'node_modules/default-export-helper')
|
|
@@ -3148,7 +3224,7 @@ describe('native zero-client edit recoverability', () => {
|
|
|
3148
3224
|
expect(fullBuildCount).toBe(1)
|
|
3149
3225
|
|
|
3150
3226
|
// no client is registered here: this is the app that never connected.
|
|
3151
|
-
await
|
|
3227
|
+
await saveFile(childPath, childSource('component-v2'))
|
|
3152
3228
|
const staleDeadline = Date.now() + 10_000
|
|
3153
3229
|
let stale = false
|
|
3154
3230
|
while (Date.now() < staleDeadline) {
|
|
@@ -351,9 +351,9 @@ function getNativeOutputOptions(
|
|
|
351
351
|
*/
|
|
352
352
|
export function normalizeNativeCommonJSInterop(code: string): string {
|
|
353
353
|
// native packages expose Babel defaults through exports.default. apply the
|
|
354
|
-
// same interop to bundled
|
|
354
|
+
// same interop to external bindings, bundled helpers and HMR export lookups.
|
|
355
355
|
return code.replace(
|
|
356
|
-
/(\b__toESM(?:\$\d+)?\(\s*(?:require[\w$]*\(\)|__rolldown_runtime__\.loadExports\("(?:\\.|[^"\\])*"\))\s*),\s*1(\s*\))/g,
|
|
356
|
+
/(\b__toESM(?:\$\d+)?\(\s*(?:require[\w$]*\(\)|[\w$]+|__rolldown_runtime__\.loadExports\("(?:\\.|[^"\\])*"\))\s*),\s*1(\s*\))/g,
|
|
357
357
|
'$1$2'
|
|
358
358
|
)
|
|
359
359
|
}
|
|
@@ -706,17 +706,38 @@ try {
|
|
|
706
706
|
// triggered by the HMR message cannot land while the watcher is stopped.
|
|
707
707
|
await engine?.ensureCurrentBuildFinish()
|
|
708
708
|
|
|
709
|
+
// adding or deleting a route changes a route map that was expanded when
|
|
710
|
+
// the entry transformed. only a full build re-expands it, and rolldown
|
|
711
|
+
// tells no client that happened, so the reload is sent from here. this
|
|
712
|
+
// comes first: a deleted route fails its own patch while the registry
|
|
713
|
+
// still imports it, and the registry update supersedes that failure.
|
|
714
|
+
if (await rebuildIfRouteGraphChanged()) return
|
|
715
|
+
|
|
709
716
|
if (result instanceof Error) {
|
|
717
|
+
// an import of a route that an earlier registry listed and the current
|
|
718
|
+
// one dropped is a deleted route the registry was already rewritten for,
|
|
719
|
+
// and that rewrite builds and reports again.
|
|
720
|
+
const { removedFiles, registryId } = virtualEntry.routes
|
|
721
|
+
const errors: Array<{ code?: string; id?: string; exporter?: string }> =
|
|
722
|
+
(result as any).errors ?? []
|
|
723
|
+
if (
|
|
724
|
+
registryId &&
|
|
725
|
+
errors.length &&
|
|
726
|
+
errors.every((e) => {
|
|
727
|
+
if (e.code !== 'UNRESOLVED_IMPORT' || e.id !== registryId || !e.exporter) {
|
|
728
|
+
return false
|
|
729
|
+
}
|
|
730
|
+
const file = normalizePath(resolve(dirname(e.id), e.exporter))
|
|
731
|
+
return removedFiles.has(file)
|
|
732
|
+
})
|
|
733
|
+
) {
|
|
734
|
+
return
|
|
735
|
+
}
|
|
710
736
|
console.error('[vxrn] HMR error:', result.message)
|
|
711
737
|
onHmrUpdate?.({ type: 'hmr:error' })
|
|
712
738
|
return
|
|
713
739
|
}
|
|
714
740
|
|
|
715
|
-
// adding or deleting a route changes a route map that was expanded when
|
|
716
|
-
// the entry transformed. only a full build re-expands it, and rolldown
|
|
717
|
-
// tells no client that happened, so the reload is sent from here.
|
|
718
|
-
if (await rebuildIfRouteGraphChanged()) return
|
|
719
|
-
|
|
720
741
|
for (const { clientId, update } of result.updates) {
|
|
721
742
|
if (update.type === 'Patch' && update.code) {
|
|
722
743
|
await engine.notifyPayloadDelivered(update.filename)
|
|
@@ -1009,6 +1030,10 @@ interface NativeRouteRegistry {
|
|
|
1009
1030
|
isRouteFile: (file: string) => boolean
|
|
1010
1031
|
scanFiles: () => Set<string>
|
|
1011
1032
|
updateFiles: (files: Set<string>) => void
|
|
1033
|
+
// the registry module's resolved id, as rolldown reports it in errors
|
|
1034
|
+
registryId?: string
|
|
1035
|
+
// routes an earlier registry listed that the current one does not
|
|
1036
|
+
removedFiles: Set<string>
|
|
1012
1037
|
}
|
|
1013
1038
|
|
|
1014
1039
|
function nativeVirtualEntryPlugin(
|
|
@@ -1139,15 +1164,19 @@ ${routeHmr}
|
|
|
1139
1164
|
const routes: NativeRouteRegistry = {
|
|
1140
1165
|
routeRoot,
|
|
1141
1166
|
files: new Set(),
|
|
1167
|
+
removedFiles: new Set(),
|
|
1142
1168
|
isRouteFile,
|
|
1143
1169
|
scanFiles,
|
|
1144
1170
|
updateFiles(files) {
|
|
1171
|
+
for (const file of routes.files) if (!files.has(file)) routes.removedFiles.add(file)
|
|
1172
|
+
for (const file of files) routes.removedFiles.delete(file)
|
|
1145
1173
|
routes.files = files
|
|
1146
1174
|
if (!useDynamicRouteRegistry) return
|
|
1147
1175
|
|
|
1148
1176
|
mkdirSync(dirname(registryPath), { recursive: true })
|
|
1149
1177
|
// rolldown resolves the registry through symlinked node_modules before its imports.
|
|
1150
1178
|
const registryDir = realpathSync(dirname(registryPath))
|
|
1179
|
+
routes.registryId = join(registryDir, basename(registryPath))
|
|
1151
1180
|
const source = `export const routes = {\n${[...files]
|
|
1152
1181
|
.sort()
|
|
1153
1182
|
.map((file) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOptimizeDeps.d.ts","sourceRoot":"","sources":["../../src/config/getOptimizeDeps.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"getOptimizeDeps.d.ts","sourceRoot":"","sources":["../../src/config/getOptimizeDeps.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;;;;;;;;;;gBA0I7C,UAAU;;;gBAaV,MAAM;oBACJ,qBAAqB;;;;;;;;;;;EAiBhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNativeDevEngine.d.ts","sourceRoot":"","sources":["../../src/utils/createNativeDevEngine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,OAAO,KAAK,EAA+B,MAAM,EAAkB,MAAM,UAAU,CAAA;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAgCtD,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAE3D;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,OAAO,CAAA;CACb;AAED,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,eAAe,KAAK,IAAI,CAAA;CAChD;AAED,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;CACZ,GAGD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAA;AAEzB;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,SAAS,CAAA;IACjB,SAAS,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;IACzC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAA;IACzE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AA8BD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM;IAsEV,GAAG;QAGD,OAAO,EAAE,SAAS;;IAEpB,MAAM;IAgCN,MAAM;QACJ,KAAK;;EAGV;AA8FD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnE;AAmCD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkD5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUhE;AA4ED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"createNativeDevEngine.d.ts","sourceRoot":"","sources":["../../src/utils/createNativeDevEngine.ts"],"names":[],"mappings":"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"}
|