peachsim 0.1.664 → 0.1.666
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/cli/app-fonts.ts +6 -3
- package/cli/commands/control.ts +18 -2
- package/cli/commands/inspect/core.ts +19 -6
- package/cli/commands/inspect/settling.ts +1 -5
- package/detox/index.ts +1 -1
- package/detox/navigation.ts +1 -0
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +2 -2
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +2191 -335
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +7 -7
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +7 -7
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +7 -7
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +13 -9
- package/dist-lib/sdk.mjs +13 -9
- package/dist-lib/skills.cjs +2777 -948
- package/dist-lib/swift-compile.cjs +1 -1
- package/dist-lib/swift-compile.mjs +1 -1
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +1 -1
- package/dist-lib/vite.cjs +7 -7
- package/kotlin/ComposeSources/PeachComposeHost.kt +6 -3
- package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +56 -0
- package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +63 -0
- package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +43 -0
- package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +47 -0
- package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +13 -2
- package/package.json +2 -2
- package/skills/peach-setup/SKILL.md +1 -1
- package/src/assetCatalogContract.ts +23 -0
- package/src/expo-swift-host.ts +248 -0
- package/src/host/bridge-host.ts +19 -0
- package/src/skills/builtin/a11y-review.ts +3 -1
- package/src/skills/builtin/perf-profile.ts +5 -3
- package/src/vite-plugin.ts +3 -3
package/cli/app-fonts.ts
CHANGED
|
@@ -261,9 +261,9 @@ export function discoverNativeLinkedAppFonts(opts: {
|
|
|
261
261
|
return metroFontSpecsFromPaths(fontPaths, metroOrigin)
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
// resolve a metro dev server's project root.
|
|
265
|
-
//
|
|
266
|
-
//
|
|
264
|
+
// resolve a metro dev server's project root. Expo's middleware advertises it
|
|
265
|
+
// in X-React-Native-Project-Root, encoded with encodeURI. Older servers name it
|
|
266
|
+
// in extra.expoClient._internal.projectRoot. The local peach open path runs from the
|
|
267
267
|
// CLI's cwd, which almost never owns the bundle being opened (e.g.
|
|
268
268
|
// `peach open 8081` run from ~/contrast against a 3pc metro), so scanning cwd for
|
|
269
269
|
// font declarations finds nothing.
|
|
@@ -281,6 +281,9 @@ export async function resolveMetroProjectRoot(
|
|
|
281
281
|
const timer = setTimeout(() => controller.abort(), opts?.timeoutMs ?? 1500)
|
|
282
282
|
let servedManifest = false
|
|
283
283
|
try {
|
|
284
|
+
const status = await fetch(`${origin}/status`, { signal: controller.signal })
|
|
285
|
+
const advertisedRoot = status.headers.get('X-React-Native-Project-Root')
|
|
286
|
+
if (status.ok && advertisedRoot) return decodeURI(advertisedRoot)
|
|
284
287
|
const res = await fetch(`${origin}/`, {
|
|
285
288
|
headers: { 'expo-platform': 'ios', Accept: 'application/json' },
|
|
286
289
|
signal: controller.signal,
|
package/cli/commands/control.ts
CHANGED
|
@@ -917,6 +917,7 @@ export async function buildShellUrl(
|
|
|
917
917
|
// fallback typeface, which then reads as a conformance diff.
|
|
918
918
|
const project =
|
|
919
919
|
opts.project ?? (await resolveAppProjectForBundleUrl(bundleUrlOf(resolved)))
|
|
920
|
+
const expoRoot = project?.appDir ?? null
|
|
920
921
|
const stamped = stampNativeFirebaseConfig(
|
|
921
922
|
stampAppCatalog(
|
|
922
923
|
await stampAppSplash(await stampAppFonts(resolved, project), project),
|
|
@@ -924,6 +925,20 @@ export async function buildShellUrl(
|
|
|
924
925
|
),
|
|
925
926
|
project,
|
|
926
927
|
)
|
|
928
|
+
const expoStamped = new URL(stamped)
|
|
929
|
+
if (expoRoot) {
|
|
930
|
+
const world = resolveBridgeWorld()
|
|
931
|
+
const port = resolveBridgePortForPin({
|
|
932
|
+
baseUrl,
|
|
933
|
+
wsPort: world.bridgePort,
|
|
934
|
+
explicitPort: false,
|
|
935
|
+
})
|
|
936
|
+
if (port.error) throw new Error(port.error)
|
|
937
|
+
expoStamped.searchParams.set(
|
|
938
|
+
'expoSwift',
|
|
939
|
+
`http://localhost:${port.port}/__peach/expo-swift?root=${encodeURIComponent(expoRoot)}`,
|
|
940
|
+
)
|
|
941
|
+
}
|
|
927
942
|
if (
|
|
928
943
|
!opts.device &&
|
|
929
944
|
!opts.proof &&
|
|
@@ -933,8 +948,8 @@ export async function buildShellUrl(
|
|
|
933
948
|
!opts.env?.length &&
|
|
934
949
|
!opts.dotEnv
|
|
935
950
|
)
|
|
936
|
-
return
|
|
937
|
-
const url =
|
|
951
|
+
return expoStamped.toString()
|
|
952
|
+
const url = expoStamped
|
|
938
953
|
if (opts.dotEnv) url.searchParams.set('dotEnv', JSON.stringify(opts.dotEnv))
|
|
939
954
|
if (opts.device) url.searchParams.set('device', opts.device)
|
|
940
955
|
if (opts.posture) url.searchParams.set('posture', opts.posture)
|
|
@@ -970,6 +985,7 @@ function deriveCurrentSimBaseUrl(
|
|
|
970
985
|
url.searchParams.delete('appSplash')
|
|
971
986
|
url.searchParams.delete('appCatalog')
|
|
972
987
|
url.searchParams.delete('nativeFirebase')
|
|
988
|
+
url.searchParams.delete('expoSwift')
|
|
973
989
|
return url.toString()
|
|
974
990
|
} catch {
|
|
975
991
|
return fallback
|
|
@@ -1252,17 +1252,30 @@ export async function inspectWaitReady(
|
|
|
1252
1252
|
return status
|
|
1253
1253
|
}
|
|
1254
1254
|
|
|
1255
|
+
// how long one snapshot request may take to cross the bridge and read once
|
|
1256
|
+
const READY_SNAPSHOT_SEND_TIMEOUT_MS = 2_000
|
|
1257
|
+
|
|
1255
1258
|
// one readiness probe, judged on its own: no stability window, since the
|
|
1256
|
-
// caller has already let the app settle. any runtime answers it
|
|
1257
|
-
//
|
|
1258
|
-
//
|
|
1259
|
+
// caller has already let the app settle. any runtime answers it: a wait that
|
|
1260
|
+
// times out still returns its last probe. only a wait that read exactly once
|
|
1261
|
+
// proves anything. none says nothing (an older runtime whose deadline passed
|
|
1262
|
+
// before its first read), and a second read could report a tree that mounted
|
|
1263
|
+
// after the settle, so either asks again until budgetMs runs out; the first
|
|
1264
|
+
// request goes out even with no budget left.
|
|
1259
1265
|
export async function inspectReadySnapshot(
|
|
1260
1266
|
bridge: InspectBridge,
|
|
1261
|
-
|
|
1267
|
+
budgetMs: number,
|
|
1262
1268
|
simId?: string,
|
|
1263
1269
|
): Promise<WaitReadyStatus> {
|
|
1264
|
-
const
|
|
1265
|
-
|
|
1270
|
+
const deadline = Date.now() + budgetMs
|
|
1271
|
+
let result: SemanticWaitResult
|
|
1272
|
+
do {
|
|
1273
|
+
result = await sendReadyWait(bridge, 1, READY_SNAPSHOT_SEND_TIMEOUT_MS, simId)
|
|
1274
|
+
} while (result.polls !== 1 && !result.error && Date.now() < deadline)
|
|
1275
|
+
return waitReadyStatus(
|
|
1276
|
+
result,
|
|
1277
|
+
result.polls === 1 && result.probe ? readyProbeIsReady(result.probe) : false,
|
|
1278
|
+
)
|
|
1266
1279
|
}
|
|
1267
1280
|
|
|
1268
1281
|
async function sendReadyWait(
|
|
@@ -257,11 +257,7 @@ export async function waitReadyAndSettle(
|
|
|
257
257
|
stablePolls: 2,
|
|
258
258
|
})
|
|
259
259
|
if (!idle.settled) return result(ready, idle)
|
|
260
|
-
const settled = await inspectReadySnapshot(
|
|
261
|
-
bridge,
|
|
262
|
-
Math.max(1_000, remaining()),
|
|
263
|
-
options.simId,
|
|
264
|
-
)
|
|
260
|
+
const settled = await inspectReadySnapshot(bridge, remaining(), options.simId)
|
|
265
261
|
if (settled.ready || remaining() === 0) return result(settled, idle)
|
|
266
262
|
}
|
|
267
263
|
}
|
package/detox/index.ts
CHANGED
|
@@ -124,7 +124,7 @@ function getPage(): Page {
|
|
|
124
124
|
|
|
125
125
|
async function waitForSootsimTree(page: Page, timeout = 30000): Promise<void> {
|
|
126
126
|
try {
|
|
127
|
-
await page.waitForFunction(() => !!window.__sootsimTest?.waitForTree, {
|
|
127
|
+
await page.waitForFunction(() => !!window.__sootsimTest?.waitForTree, undefined, {
|
|
128
128
|
timeout,
|
|
129
129
|
})
|
|
130
130
|
await page.evaluate(async (timeoutMs) => {
|
package/detox/navigation.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -2098,7 +2098,7 @@ function getPage() {
|
|
|
2098
2098
|
}
|
|
2099
2099
|
async function waitForSootsimTree(page, timeout = 3e4) {
|
|
2100
2100
|
try {
|
|
2101
|
-
await page.waitForFunction(() => !!window.__sootsimTest?.waitForTree, {
|
|
2101
|
+
await page.waitForFunction(() => !!window.__sootsimTest?.waitForTree, void 0, {
|
|
2102
2102
|
timeout
|
|
2103
2103
|
});
|
|
2104
2104
|
await page.evaluate(async (timeoutMs) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|