peachsim 0.1.1635 → 0.1.1641
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/README.md +10 -1
- package/cli/app-config.ts +14 -5
- package/cli/app-stubs.ts +96 -22
- package/cli/bridge-flow-runner.ts +2 -2
- package/cli/cloud-client.ts +60 -40
- package/cli/cloud-session.ts +16 -0
- package/cli/commands/assert.ts +17 -4
- package/cli/commands/box.ts +33 -19
- package/cli/commands/doctor.ts +37 -20
- package/cli/commands/flow.ts +1 -1
- package/cli/commands/inspect/actions.ts +3 -2
- package/cli/commands/inspect/core.ts +0 -8
- package/cli/commands/inspect/shared.ts +9 -4
- package/cli/commands/inspect.ts +65 -61
- package/cli/commands/platform.ts +2 -1
- package/cli/commands/preview.ts +1 -1
- package/cli/commands/record.ts +154 -68
- package/cli/commands/swift.ts +18 -4
- package/cli/commands/three-mode.ts +4 -38
- package/cli/commands/upload.ts +55 -49
- package/cli/drivers/playwright-sim-host.ts +65 -42
- package/cli/flow-live-status.ts +0 -2
- package/cli/main.ts +2 -2
- package/cli/outbound-endpoints.ts +7 -5
- package/cli/pause-aware-timeout.ts +4 -0
- package/cli/ws-bridge.ts +19 -16
- package/detox/attempt-events.cjs +99 -6
- package/detox/attempt-events.d.cts +7 -0
- package/detox/expectations.ts +7 -3
- package/detox/index.ts +259 -139
- package/detox/jest-environment.cjs +5 -1
- package/detox/motion-change.cjs +170 -21
- package/detox/motion-change.d.cts +32 -0
- package/detox/navigation-lifecycle.ts +35 -3
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.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 +17 -7
- 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/bundle-channel.cjs +5014 -2268
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +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/config.mjs +1 -1
- package/dist-lib/detox/index.cjs +1036 -166
- package/dist-lib/detox/jest-environment.cjs +5 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +4613 -1963
- package/dist-lib/expo-swift-metadata.cjs +9 -7
- package/dist-lib/expo-swift-metadata.mjs +9 -7
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +58072 -16400
- 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 +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +2790 -143
- 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 +2579 -95
- package/dist-lib/native-app-identity-project.cjs +243 -53
- package/dist-lib/native-app-identity-project.mjs +243 -53
- package/dist-lib/native-app-identity.cjs +29 -30
- package/dist-lib/native-app-identity.mjs +29 -30
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.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 +2 -2
- package/dist-lib/react-native-host-modules.mjs +2 -2
- package/dist-lib/scripts/dev-server-scanner.cjs +8 -6
- package/dist-lib/sdk.cjs +4 -3
- package/dist-lib/sdk.mjs +4 -3
- package/dist-lib/skills.cjs +66475 -23097
- package/dist-lib/swift-compile.cjs +452 -260
- package/dist-lib/swift-compile.mjs +451 -252
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +14 -7
- package/dist-lib/swift-submit.mjs +14 -7
- package/dist-lib/swift-toolchain.cjs +316 -41
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +8188 -5636
- package/dist-lib/vite.cjs +2857 -12
- package/dist-lib/worklet-executable.cjs +14 -2
- package/dist-lib/worklet-executable.mjs +14 -2
- package/package.json +1 -1
- package/src/backend-origin.ts +21 -6
- package/src/expo-swift-host.ts +5 -2
- package/src/expoKotlinContract.ts +4 -7
- package/src/expoSwiftContract.ts +4 -6
- package/src/host/staged-host-files.ts +9 -0
- package/src/native-app-identity-project.ts +1 -4
- package/src/native-app-identity.ts +1 -4
- package/src/nativeAppIconContract.ts +1 -4
- package/src/output-lock-stdio.ts +36 -0
- package/src/react-native-bridge-modules.ts +106 -78
- package/src/react-native-host-modules.ts +4 -1
- package/src/settings-bundle.ts +1 -4
- package/src/swift-compile.ts +224 -139
- package/src/swift-distribution.lock.json +23 -12
- package/src/swift-distribution.ts +103 -4
- package/src/swift-host.ts +95 -30
- package/src/swift-icu.ts +16 -10
- package/src/swift-objc-compile.ts +547 -0
- package/src/swift-objc-metadata.ts +204 -0
- package/src/swift-objc-sdk.ts +883 -19
- package/src/swift-objc-standin.ts +126 -14
- package/src/swift-package-manifest.ts +42 -1
- package/src/swift-packages.ts +35 -21
- package/src/swift-root-lock.ts +153 -0
- package/src/swift-standin-emit.ts +40 -7
- package/src/swift-standins.ts +404 -138
- package/src/swift-submit.ts +18 -7
- package/src/swift-toolchain.ts +378 -46
- package/src/swiftContract.ts +12 -0
- package/src/worker-system-chunks.ts +11 -12
- package/src/worklet-executable.ts +19 -1
- package/src/xcode-project.ts +280 -33
package/dist-lib/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1641 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -4763,6 +4763,38 @@ var init_version = __esm({
|
|
|
4763
4763
|
}
|
|
4764
4764
|
});
|
|
4765
4765
|
|
|
4766
|
+
// ../peach-engine/src/platform/adapter.ts
|
|
4767
|
+
function isRuntimePlatform(value) {
|
|
4768
|
+
return value === "ios" || value === "android";
|
|
4769
|
+
}
|
|
4770
|
+
function getRuntimePlatformAdapter(platform) {
|
|
4771
|
+
return RUNTIME_PLATFORM_ADAPTERS[platform];
|
|
4772
|
+
}
|
|
4773
|
+
var IOS_ADAPTER, ANDROID_ADAPTER, RUNTIME_PLATFORM_ADAPTERS;
|
|
4774
|
+
var init_adapter = __esm({
|
|
4775
|
+
"../peach-engine/src/platform/adapter.ts"() {
|
|
4776
|
+
"use strict";
|
|
4777
|
+
IOS_ADAPTER = Object.freeze({
|
|
4778
|
+
id: "ios",
|
|
4779
|
+
displayName: "iOS",
|
|
4780
|
+
isIOS: true,
|
|
4781
|
+
isAndroid: false,
|
|
4782
|
+
select: (registry) => registry.ios
|
|
4783
|
+
});
|
|
4784
|
+
ANDROID_ADAPTER = Object.freeze({
|
|
4785
|
+
id: "android",
|
|
4786
|
+
displayName: "Android",
|
|
4787
|
+
isIOS: false,
|
|
4788
|
+
isAndroid: true,
|
|
4789
|
+
select: (registry) => registry.android
|
|
4790
|
+
});
|
|
4791
|
+
RUNTIME_PLATFORM_ADAPTERS = Object.freeze({
|
|
4792
|
+
ios: IOS_ADAPTER,
|
|
4793
|
+
android: ANDROID_ADAPTER
|
|
4794
|
+
});
|
|
4795
|
+
}
|
|
4796
|
+
});
|
|
4797
|
+
|
|
4766
4798
|
// cli/app-project.ts
|
|
4767
4799
|
function firstNamedFile(dir, names) {
|
|
4768
4800
|
for (const name2 of names) {
|
|
@@ -5498,19 +5530,48 @@ function packageNativeRequests(dir) {
|
|
|
5498
5530
|
(a, b) => a.kind.localeCompare(b.kind) || a.name.localeCompare(b.name)
|
|
5499
5531
|
);
|
|
5500
5532
|
}
|
|
5501
|
-
function
|
|
5533
|
+
function dependencyNativeOwners(appDir, manifest) {
|
|
5502
5534
|
const owners = /* @__PURE__ */ new Map();
|
|
5503
|
-
const
|
|
5504
|
-
for (const name2 of Object.keys({
|
|
5535
|
+
const pending = Object.keys({
|
|
5505
5536
|
...manifest?.devDependencies,
|
|
5506
5537
|
...manifest?.dependencies
|
|
5507
|
-
})) {
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5538
|
+
}).map((name2) => ({ from: appDir, name: name2 }));
|
|
5539
|
+
const visited = /* @__PURE__ */ new Set();
|
|
5540
|
+
for (let index = 0; index < pending.length; index++) {
|
|
5541
|
+
const { from, name: name2 } = pending[index];
|
|
5542
|
+
const dir = installedPackageDir(from, name2);
|
|
5543
|
+
if (!dir || visited.has(dir)) continue;
|
|
5544
|
+
visited.add(dir);
|
|
5545
|
+
const dependency = readProjectManifest(dir);
|
|
5546
|
+
const optional = readPackageJson(dir)?.optionalDependencies;
|
|
5547
|
+
if (dir.split("/").includes("node_modules") && (from === appDir || hasNativeCode(dir, "ios"))) {
|
|
5548
|
+
for (const request of packageNativeRequests(dir))
|
|
5549
|
+
if (!owners.has(`${request.kind}:${request.name}`))
|
|
5550
|
+
owners.set(`${request.kind}:${request.name}`, dependency?.name ?? name2);
|
|
5551
|
+
}
|
|
5552
|
+
for (const child of Object.keys({
|
|
5553
|
+
...dependency?.dependencies,
|
|
5554
|
+
...isRecord(optional) ? optional : {}
|
|
5555
|
+
}))
|
|
5556
|
+
pending.push({ from: dir, name: child });
|
|
5513
5557
|
}
|
|
5558
|
+
return owners;
|
|
5559
|
+
}
|
|
5560
|
+
function configModule(configPath, packages) {
|
|
5561
|
+
const body = [" packages: {", ...packages, " },"];
|
|
5562
|
+
if (configPath && (configPath.endsWith(".cjs") || configPath.endsWith(".js") && /\bmodule\.exports\b/.test(readSmallFile(configPath) ?? "")))
|
|
5563
|
+
return ["module.exports = {", ...body, "}"].join("\n");
|
|
5564
|
+
return [
|
|
5565
|
+
`import { defineConfig } from '${rnxPublicBrand.packageName}/config'`,
|
|
5566
|
+
"",
|
|
5567
|
+
"export default defineConfig({",
|
|
5568
|
+
...body,
|
|
5569
|
+
"})"
|
|
5570
|
+
].join("\n");
|
|
5571
|
+
}
|
|
5572
|
+
function wireSlotMigration(appDir, configPath, wire, kept = []) {
|
|
5573
|
+
const manifest = readProjectManifest(appDir);
|
|
5574
|
+
const owners = dependencyNativeOwners(appDir, manifest);
|
|
5514
5575
|
if (manifest) {
|
|
5515
5576
|
for (const request of scanLocalNative(
|
|
5516
5577
|
appDir,
|
|
@@ -5518,7 +5579,8 @@ function wireSlotMigration(appDir, wire) {
|
|
|
5518
5579
|
{ module: /* @__PURE__ */ new Set(), view: /* @__PURE__ */ new Set() },
|
|
5519
5580
|
void 0,
|
|
5520
5581
|
/* @__PURE__ */ new Set(),
|
|
5521
|
-
true
|
|
5582
|
+
true,
|
|
5583
|
+
owners
|
|
5522
5584
|
))
|
|
5523
5585
|
if (!owners.has(`${request.kind}:${request.name}`))
|
|
5524
5586
|
owners.set(`${request.kind}:${request.name}`, request.package);
|
|
@@ -5558,9 +5620,17 @@ function wireSlotMigration(appDir, wire) {
|
|
|
5558
5620
|
].filter(Boolean);
|
|
5559
5621
|
return ` [${JSON.stringify(owner)}]: { ${parts.join(", ")} },`;
|
|
5560
5622
|
});
|
|
5623
|
+
if (lines.length && kept.length)
|
|
5624
|
+
return [
|
|
5625
|
+
...manual.map((line) => `// ${line}`),
|
|
5626
|
+
`// keep ${kept.join(", ")}; merge these into packages`,
|
|
5627
|
+
" packages: {",
|
|
5628
|
+
...lines,
|
|
5629
|
+
" },"
|
|
5630
|
+
].join("\n");
|
|
5561
5631
|
return [
|
|
5562
|
-
...
|
|
5563
|
-
...
|
|
5632
|
+
...manual.map((line) => `// ${line}`),
|
|
5633
|
+
...lines.length ? [configModule(configPath, lines)] : []
|
|
5564
5634
|
].join("\n");
|
|
5565
5635
|
}
|
|
5566
5636
|
function listDir(dir) {
|
|
@@ -5588,7 +5658,7 @@ function hasNativeCode(dir, platform) {
|
|
|
5588
5658
|
const manifest = readSmallFile((0, import_node_path16.join)(dir, "package.json"));
|
|
5589
5659
|
return manifest !== null && manifest.includes('"codegenConfig"');
|
|
5590
5660
|
}
|
|
5591
|
-
function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__PURE__ */ new Set(), includeLegacy = false) {
|
|
5661
|
+
function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__PURE__ */ new Set(), includeLegacy = false, providers) {
|
|
5592
5662
|
const expoModuleDirs = [];
|
|
5593
5663
|
const excludedModuleDirs = [];
|
|
5594
5664
|
const sourceFiles = [];
|
|
@@ -5615,7 +5685,9 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
|
|
|
5615
5685
|
expoModuleDirs.map((dir) => [
|
|
5616
5686
|
dir,
|
|
5617
5687
|
scanRepository(dir).directories.flatMap(
|
|
5618
|
-
(sub) => listDir(sub).filter(
|
|
5688
|
+
(sub) => listDir(sub).filter(
|
|
5689
|
+
(name2) => NATIVE_SOURCE_FILE.test(name2) && (!platform || (platform === "ios" ? name2.endsWith(".swift") : name2.endsWith(".kt")))
|
|
5690
|
+
).map((name2) => (0, import_node_path16.join)(sub, name2))
|
|
5619
5691
|
)
|
|
5620
5692
|
])
|
|
5621
5693
|
);
|
|
@@ -5631,10 +5703,11 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
|
|
|
5631
5703
|
};
|
|
5632
5704
|
const found = /* @__PURE__ */ new Map();
|
|
5633
5705
|
const add = (kind, name2, file, line) => {
|
|
5634
|
-
const packageName = owner((0, import_node_path16.dirname)(file));
|
|
5635
|
-
if (knownPackages.has(packageName)) return;
|
|
5636
5706
|
const key = `${kind}:${name2}`;
|
|
5637
5707
|
if (found.has(key)) return;
|
|
5708
|
+
providers ??= dependencyNativeOwners(appDir, pkg);
|
|
5709
|
+
const packageName = providers.get(key) ?? owner((0, import_node_path16.dirname)(file));
|
|
5710
|
+
if (knownPackages.has(packageName)) return;
|
|
5638
5711
|
const moduleDir = expoModuleDirs.find((dir) => file.startsWith(`${dir}/`)) ?? null;
|
|
5639
5712
|
found.set(key, {
|
|
5640
5713
|
kind,
|
|
@@ -5643,7 +5716,9 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
|
|
|
5643
5716
|
path: `${(0, import_node_path16.relative)(appDir, file)}:${line}`,
|
|
5644
5717
|
expoModule: moduleDir ? (0, import_node_path16.relative)(appDir, moduleDir) || "." : null,
|
|
5645
5718
|
swift: moduleDir ? (nativeFilesByModule.get(moduleDir) ?? []).some(
|
|
5646
|
-
(path20) => path20.endsWith(".swift")
|
|
5719
|
+
(path20) => path20.endsWith(".swift") && [...(readSmallFile(path20) ?? "").matchAll(/\bName\(\s*"(\w+)"\s*\)/g)].some(
|
|
5720
|
+
(match) => match[1] === name2
|
|
5721
|
+
)
|
|
5647
5722
|
) : false,
|
|
5648
5723
|
answered: answered[kind].has(name2)
|
|
5649
5724
|
});
|
|
@@ -5704,6 +5779,7 @@ var init_app_stubs = __esm({
|
|
|
5704
5779
|
import_sucrase = require("sucrase");
|
|
5705
5780
|
init_config();
|
|
5706
5781
|
init_is_record();
|
|
5782
|
+
init_public_brand();
|
|
5707
5783
|
init_visit_parsed_program();
|
|
5708
5784
|
init_detect();
|
|
5709
5785
|
SOURCE_FILE = /\.[cm]?[jt]sx?$/;
|
|
@@ -5778,12 +5854,19 @@ async function loadConfigFile(project) {
|
|
|
5778
5854
|
}
|
|
5779
5855
|
const wire = WIRE_SLOTS.filter((slot) => loaded2[slot] !== void 0);
|
|
5780
5856
|
if (wire.length > 0) {
|
|
5781
|
-
const
|
|
5782
|
-
|
|
5783
|
-
|
|
5784
|
-
|
|
5857
|
+
const slots = WIRE_SLOTS;
|
|
5858
|
+
const kept = Object.entries(loaded2).filter(([key, value]) => !slots.includes(key) && value !== void 0).map(([key]) => key);
|
|
5859
|
+
const migration = wireSlotMigration(
|
|
5860
|
+
project.appDir,
|
|
5861
|
+
project.configPath,
|
|
5862
|
+
{
|
|
5863
|
+
modules: { ...loaded2.turboModules, ...loaded2.nativeModules },
|
|
5864
|
+
views: { ...loaded2.nativeViews }
|
|
5865
|
+
},
|
|
5866
|
+
kept
|
|
5867
|
+
);
|
|
5785
5868
|
throw new Error(
|
|
5786
|
-
`${wire.join(", ")} moved under packages, keyed by the package whose native side they answer.
|
|
5869
|
+
`${wire.join(", ")} moved under packages, keyed by the package whose native side they answer. ${kept.length ? "remove them and add" : "replace the config with"}:
|
|
5787
5870
|
${migration}`
|
|
5788
5871
|
);
|
|
5789
5872
|
}
|
|
@@ -5995,6 +6078,9 @@ module.exports = __toCommonJS(src_exports);
|
|
|
5995
6078
|
// cli/cloud-client.ts
|
|
5996
6079
|
var import_node_crypto = require("node:crypto");
|
|
5997
6080
|
|
|
6081
|
+
// ../peach-engine/src/preview/bundle-layout.ts
|
|
6082
|
+
var import_metro_production_bundle = require("peachsim/metro-production-bundle");
|
|
6083
|
+
|
|
5998
6084
|
// src/androidAutolinkingContract.ts
|
|
5999
6085
|
init_bundleGlobalFooter();
|
|
6000
6086
|
var FOOTER = "__peachAndroidAutolinkedPackages";
|
|
@@ -6029,7 +6115,7 @@ function insertPackageVersionsFooter(source, versions) {
|
|
|
6029
6115
|
}
|
|
6030
6116
|
|
|
6031
6117
|
// ../peach-engine/src/tenant-bundle-mode.ts
|
|
6032
|
-
var
|
|
6118
|
+
var import_metro_production_bundle2 = require("peachsim/metro-production-bundle");
|
|
6033
6119
|
|
|
6034
6120
|
// ../peach-engine/src/tenant-runtime-environment.ts
|
|
6035
6121
|
function readBrowserLocation() {
|
|
@@ -6508,8 +6594,403 @@ var PEACH_UPSTREAM_MODULES = {
|
|
|
6508
6594
|
...PEACH_REACT_NATIVE_UPSTREAM_MODULES
|
|
6509
6595
|
};
|
|
6510
6596
|
|
|
6597
|
+
// ../peach-compat/src/stub-manifest.ts
|
|
6598
|
+
var COMPAT_STUBS = {
|
|
6599
|
+
reactNativeScreens: {
|
|
6600
|
+
specifier: "react-native-screens",
|
|
6601
|
+
stubFile: "react-native-screens.ts",
|
|
6602
|
+
runtimeTier: "lazy",
|
|
6603
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6604
|
+
},
|
|
6605
|
+
reactNativeMaskedView: {
|
|
6606
|
+
specifier: "@react-native-masked-view/masked-view",
|
|
6607
|
+
stubFile: "masked-view.ts",
|
|
6608
|
+
runtimeTier: "none",
|
|
6609
|
+
buildResolvers: ["vite"]
|
|
6610
|
+
},
|
|
6611
|
+
reactNativeCommunityMaskedView: {
|
|
6612
|
+
specifier: "@react-native-community/masked-view",
|
|
6613
|
+
stubFile: "masked-view.ts",
|
|
6614
|
+
runtimeTier: "none",
|
|
6615
|
+
buildResolvers: ["vite"]
|
|
6616
|
+
},
|
|
6617
|
+
reactNativeTeleport: {
|
|
6618
|
+
specifier: "react-native-teleport",
|
|
6619
|
+
stubFile: "react-native-teleport.tsx",
|
|
6620
|
+
runtimeTier: "lazy",
|
|
6621
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6622
|
+
},
|
|
6623
|
+
reactNativeIosContextMenu: {
|
|
6624
|
+
specifier: "react-native-ios-context-menu",
|
|
6625
|
+
stubFile: "react-native-ios-context-menu.ts",
|
|
6626
|
+
runtimeTier: "core",
|
|
6627
|
+
buildResolvers: ["vite"]
|
|
6628
|
+
},
|
|
6629
|
+
reactNativeIosUtilities: {
|
|
6630
|
+
specifier: "react-native-ios-utilities",
|
|
6631
|
+
stubFile: "react-native-ios-utilities.ts",
|
|
6632
|
+
runtimeTier: "core",
|
|
6633
|
+
buildResolvers: ["vite"]
|
|
6634
|
+
},
|
|
6635
|
+
expoSplashScreen: {
|
|
6636
|
+
specifier: "expo-splash-screen",
|
|
6637
|
+
stubFile: "expo-splash-screen.ts",
|
|
6638
|
+
runtimeTier: "none",
|
|
6639
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6640
|
+
},
|
|
6641
|
+
reactNativeLaunchArguments: {
|
|
6642
|
+
specifier: "react-native-launch-arguments",
|
|
6643
|
+
stubFile: "react-native-launch-arguments.ts",
|
|
6644
|
+
runtimeTier: "core",
|
|
6645
|
+
buildResolvers: ["vite"]
|
|
6646
|
+
},
|
|
6647
|
+
expoWinterFormData: {
|
|
6648
|
+
specifier: "expo/build/winter/FormData",
|
|
6649
|
+
stubFile: "expo-winter-formdata.ts",
|
|
6650
|
+
runtimeTier: "none",
|
|
6651
|
+
buildResolvers: ["vite"]
|
|
6652
|
+
},
|
|
6653
|
+
expoWinterFetch: {
|
|
6654
|
+
specifier: "expo/build/winter/fetch/index",
|
|
6655
|
+
stubFile: "expo-winter-fetch.ts",
|
|
6656
|
+
runtimeTier: "none",
|
|
6657
|
+
buildResolvers: ["vite"]
|
|
6658
|
+
},
|
|
6659
|
+
expoConstants: {
|
|
6660
|
+
specifier: "expo-constants",
|
|
6661
|
+
stubFile: "expo-constants.ts",
|
|
6662
|
+
runtimeTier: "none",
|
|
6663
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6664
|
+
},
|
|
6665
|
+
expoLinearGradient: {
|
|
6666
|
+
specifier: "expo-linear-gradient",
|
|
6667
|
+
stubFile: "expo-linear-gradient.ts",
|
|
6668
|
+
runtimeTier: "none",
|
|
6669
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6670
|
+
},
|
|
6671
|
+
expoBlur: {
|
|
6672
|
+
specifier: "expo-blur",
|
|
6673
|
+
stubFile: "expo-blur.ts",
|
|
6674
|
+
runtimeTier: "none",
|
|
6675
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6676
|
+
},
|
|
6677
|
+
expoLiquidGlassView: {
|
|
6678
|
+
specifier: "expo-liquid-glass-view",
|
|
6679
|
+
stubFile: "expo-liquid-glass-view.ts",
|
|
6680
|
+
runtimeTier: "core",
|
|
6681
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6682
|
+
},
|
|
6683
|
+
expoGlassEffect: {
|
|
6684
|
+
specifier: "expo-glass-effect",
|
|
6685
|
+
stubFile: "expo-glass-effect.ts",
|
|
6686
|
+
runtimeTier: "lazy",
|
|
6687
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6688
|
+
},
|
|
6689
|
+
expoSymbols: {
|
|
6690
|
+
specifier: "expo-symbols",
|
|
6691
|
+
stubFile: "expo-symbols.ts",
|
|
6692
|
+
runtimeTier: "none",
|
|
6693
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6694
|
+
},
|
|
6695
|
+
expoMeshGradient: {
|
|
6696
|
+
specifier: "expo-mesh-gradient",
|
|
6697
|
+
stubFile: "expo-mesh-gradient.ts",
|
|
6698
|
+
runtimeTier: "lazy",
|
|
6699
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6700
|
+
},
|
|
6701
|
+
reactNativeBottomTabs: {
|
|
6702
|
+
specifier: "react-native-bottom-tabs",
|
|
6703
|
+
stubFile: "react-native-bottom-tabs.ts",
|
|
6704
|
+
runtimeTier: "lazy",
|
|
6705
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6706
|
+
},
|
|
6707
|
+
callstackReactNativeBottomTabs: {
|
|
6708
|
+
specifier: "@callstack/react-native-bottom-tabs",
|
|
6709
|
+
stubFile: "react-native-bottom-tabs.ts",
|
|
6710
|
+
runtimeTier: "lazy",
|
|
6711
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6712
|
+
},
|
|
6713
|
+
expoUiSwiftUi: {
|
|
6714
|
+
specifier: "@expo/ui/swift-ui",
|
|
6715
|
+
stubFile: "expo-ui.ts",
|
|
6716
|
+
runtimeTier: "lazy",
|
|
6717
|
+
buildResolvers: ["vite"]
|
|
6718
|
+
},
|
|
6719
|
+
expoUiCommunityMenu: {
|
|
6720
|
+
specifier: "@expo/ui/community/menu",
|
|
6721
|
+
stubFile: "expo-ui-menu.ts",
|
|
6722
|
+
runtimeTier: "lazy",
|
|
6723
|
+
buildResolvers: ["vite"]
|
|
6724
|
+
},
|
|
6725
|
+
expoModulesCore: {
|
|
6726
|
+
specifier: "expo-modules-core",
|
|
6727
|
+
stubFile: "expo-modules-core-package.ts",
|
|
6728
|
+
runtimeTier: "lazy",
|
|
6729
|
+
buildResolvers: ["vite"]
|
|
6730
|
+
},
|
|
6731
|
+
reactNativeWorklets: {
|
|
6732
|
+
specifier: "react-native-worklets",
|
|
6733
|
+
stubFile: "react-native-worklets-pkg/index.ts",
|
|
6734
|
+
runtimeTier: "none",
|
|
6735
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6736
|
+
},
|
|
6737
|
+
reactNativeWorkletsNative: {
|
|
6738
|
+
specifier: "react-native-worklets/specs/NativeWorkletsModule",
|
|
6739
|
+
stubFile: "react-native-worklets-native.ts",
|
|
6740
|
+
runtimeTier: "lazy",
|
|
6741
|
+
buildResolvers: ["vite"]
|
|
6742
|
+
},
|
|
6743
|
+
reactNativeWorkletsPackageJson: {
|
|
6744
|
+
specifier: "react-native-worklets/package.json",
|
|
6745
|
+
stubFile: "react-native-worklets-pkg/package.json",
|
|
6746
|
+
runtimeTier: "none",
|
|
6747
|
+
buildResolvers: ["vite"]
|
|
6748
|
+
},
|
|
6749
|
+
reactNativePdf: {
|
|
6750
|
+
specifier: "react-native-pdf",
|
|
6751
|
+
stubFile: "react-native-pdf.ts",
|
|
6752
|
+
runtimeTier: "lazy",
|
|
6753
|
+
buildResolvers: ["vite"]
|
|
6754
|
+
},
|
|
6755
|
+
expoBackgroundFetch: {
|
|
6756
|
+
specifier: "expo-background-fetch",
|
|
6757
|
+
stubFile: "expo-background-fetch.ts",
|
|
6758
|
+
runtimeTier: "none",
|
|
6759
|
+
buildResolvers: ["vite"]
|
|
6760
|
+
},
|
|
6761
|
+
expoBackgroundTask: {
|
|
6762
|
+
specifier: "expo-background-task",
|
|
6763
|
+
stubFile: "expo-background-task.ts",
|
|
6764
|
+
runtimeTier: "none",
|
|
6765
|
+
buildResolvers: ["vite"]
|
|
6766
|
+
},
|
|
6767
|
+
expoSensors: {
|
|
6768
|
+
specifier: "expo-sensors",
|
|
6769
|
+
stubFile: "expo-sensors.ts",
|
|
6770
|
+
runtimeTier: "none",
|
|
6771
|
+
buildResolvers: ["vite"]
|
|
6772
|
+
},
|
|
6773
|
+
expoVideoThumbnails: {
|
|
6774
|
+
specifier: "expo-video-thumbnails",
|
|
6775
|
+
stubFile: "expo-video-thumbnails.ts",
|
|
6776
|
+
runtimeTier: "none",
|
|
6777
|
+
buildResolvers: ["vite"]
|
|
6778
|
+
},
|
|
6779
|
+
googleSignin: {
|
|
6780
|
+
specifier: "@react-native-google-signin/google-signin",
|
|
6781
|
+
stubFile: "react-native-google-signin.ts",
|
|
6782
|
+
runtimeTier: "none",
|
|
6783
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6784
|
+
},
|
|
6785
|
+
reactNativeHapticFeedback: {
|
|
6786
|
+
specifier: "react-native-haptic-feedback",
|
|
6787
|
+
stubFile: "react-native-haptic-feedback.ts",
|
|
6788
|
+
runtimeTier: "none",
|
|
6789
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6790
|
+
},
|
|
6791
|
+
reactNativeSegmentedControl: {
|
|
6792
|
+
specifier: "@react-native-segmented-control/segmented-control",
|
|
6793
|
+
stubFile: "react-native-segmented-control.ts",
|
|
6794
|
+
runtimeTier: "lazy",
|
|
6795
|
+
buildResolvers: ["vite"]
|
|
6796
|
+
},
|
|
6797
|
+
reactNativeUitextview: {
|
|
6798
|
+
specifier: "react-native-uitextview",
|
|
6799
|
+
stubFile: "react-native-uitextview.ts",
|
|
6800
|
+
runtimeTier: "lazy",
|
|
6801
|
+
buildResolvers: ["vite"]
|
|
6802
|
+
},
|
|
6803
|
+
expoBattery: {
|
|
6804
|
+
specifier: "expo-battery",
|
|
6805
|
+
stubFile: "expo-battery.ts",
|
|
6806
|
+
runtimeTier: "none",
|
|
6807
|
+
buildResolvers: ["vite"]
|
|
6808
|
+
},
|
|
6809
|
+
expoBrightness: {
|
|
6810
|
+
specifier: "expo-brightness",
|
|
6811
|
+
stubFile: "expo-brightness.ts",
|
|
6812
|
+
runtimeTier: "none",
|
|
6813
|
+
buildResolvers: ["vite"]
|
|
6814
|
+
},
|
|
6815
|
+
// sdk 57 moved the async calendar surface behind `expo-calendar/legacy`.
|
|
6816
|
+
// the bare-specifier alias is a PREFIX match, so without this longer entry
|
|
6817
|
+
// it rewrites the subpath to `<stubs>/expo-calendar.ts/legacy`. it needs its
|
|
6818
|
+
// own stub too: upstream's root re-exports `legacyWarnings`, where every
|
|
6819
|
+
// async method throws "imported from expo-calendar is deprecated", so
|
|
6820
|
+
// sharing the root stub makes the whole legacy surface throw at call time.
|
|
6821
|
+
expoCalendarLegacy: {
|
|
6822
|
+
specifier: "expo-calendar/legacy",
|
|
6823
|
+
stubFile: "expo-calendar-legacy.ts",
|
|
6824
|
+
runtimeTier: "none",
|
|
6825
|
+
buildResolvers: ["vite"]
|
|
6826
|
+
},
|
|
6827
|
+
expoCalendar: {
|
|
6828
|
+
specifier: "expo-calendar",
|
|
6829
|
+
stubFile: "expo-calendar.ts",
|
|
6830
|
+
runtimeTier: "none",
|
|
6831
|
+
buildResolvers: ["vite"]
|
|
6832
|
+
},
|
|
6833
|
+
expoCellular: {
|
|
6834
|
+
specifier: "expo-cellular",
|
|
6835
|
+
stubFile: "expo-cellular.ts",
|
|
6836
|
+
runtimeTier: "none",
|
|
6837
|
+
buildResolvers: ["vite"]
|
|
6838
|
+
},
|
|
6839
|
+
// same `/legacy` prefix-alias and deprecated-root case as expo-calendar.
|
|
6840
|
+
expoContactsLegacy: {
|
|
6841
|
+
specifier: "expo-contacts/legacy",
|
|
6842
|
+
stubFile: "expo-contacts-legacy.ts",
|
|
6843
|
+
runtimeTier: "none",
|
|
6844
|
+
buildResolvers: ["vite"]
|
|
6845
|
+
},
|
|
6846
|
+
expoContacts: {
|
|
6847
|
+
specifier: "expo-contacts",
|
|
6848
|
+
stubFile: "expo-contacts.ts",
|
|
6849
|
+
runtimeTier: "none",
|
|
6850
|
+
buildResolvers: ["vite"]
|
|
6851
|
+
},
|
|
6852
|
+
expoMailComposer: {
|
|
6853
|
+
specifier: "expo-mail-composer",
|
|
6854
|
+
stubFile: "expo-mail-composer.ts",
|
|
6855
|
+
runtimeTier: "none",
|
|
6856
|
+
buildResolvers: ["vite"]
|
|
6857
|
+
},
|
|
6858
|
+
expoPrint: {
|
|
6859
|
+
specifier: "expo-print",
|
|
6860
|
+
stubFile: "expo-print.ts",
|
|
6861
|
+
runtimeTier: "none",
|
|
6862
|
+
buildResolvers: ["vite"]
|
|
6863
|
+
},
|
|
6864
|
+
expoSecureStore: {
|
|
6865
|
+
specifier: "expo-secure-store",
|
|
6866
|
+
stubFile: "expo-secure-store.ts",
|
|
6867
|
+
runtimeTier: "none",
|
|
6868
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6869
|
+
},
|
|
6870
|
+
expoInsights: {
|
|
6871
|
+
specifier: "expo-insights",
|
|
6872
|
+
stubFile: "expo-insights.ts",
|
|
6873
|
+
runtimeTier: "none",
|
|
6874
|
+
buildResolvers: ["vite"]
|
|
6875
|
+
},
|
|
6876
|
+
expoIntentLauncher: {
|
|
6877
|
+
specifier: "expo-intent-launcher",
|
|
6878
|
+
stubFile: "expo-intent-launcher.ts",
|
|
6879
|
+
runtimeTier: "none",
|
|
6880
|
+
buildResolvers: ["vite"]
|
|
6881
|
+
},
|
|
6882
|
+
expoTaskManager: {
|
|
6883
|
+
specifier: "expo-task-manager",
|
|
6884
|
+
stubFile: "expo-task-manager.ts",
|
|
6885
|
+
runtimeTier: "none",
|
|
6886
|
+
buildResolvers: ["vite"]
|
|
6887
|
+
},
|
|
6888
|
+
expoApplication: {
|
|
6889
|
+
specifier: "expo-application",
|
|
6890
|
+
stubFile: "expo-application.ts",
|
|
6891
|
+
runtimeTier: "none",
|
|
6892
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6893
|
+
},
|
|
6894
|
+
expoNetwork: {
|
|
6895
|
+
specifier: "expo-network",
|
|
6896
|
+
stubFile: "expo-network.ts",
|
|
6897
|
+
runtimeTier: "none",
|
|
6898
|
+
buildResolvers: ["vite"]
|
|
6899
|
+
},
|
|
6900
|
+
expoScreenCapture: {
|
|
6901
|
+
specifier: "expo-screen-capture",
|
|
6902
|
+
stubFile: "expo-screen-capture.ts",
|
|
6903
|
+
runtimeTier: "none",
|
|
6904
|
+
buildResolvers: ["vite"]
|
|
6905
|
+
},
|
|
6906
|
+
expoScreenOrientation: {
|
|
6907
|
+
specifier: "expo-screen-orientation",
|
|
6908
|
+
stubFile: "expo-screen-orientation.ts",
|
|
6909
|
+
runtimeTier: "none",
|
|
6910
|
+
buildResolvers: ["vite"]
|
|
6911
|
+
},
|
|
6912
|
+
expoQuickActions: {
|
|
6913
|
+
specifier: "expo-quick-actions",
|
|
6914
|
+
stubFile: "expo-quick-actions.ts",
|
|
6915
|
+
runtimeTier: "none",
|
|
6916
|
+
buildResolvers: ["vite"]
|
|
6917
|
+
},
|
|
6918
|
+
expoSharing: {
|
|
6919
|
+
specifier: "expo-sharing",
|
|
6920
|
+
stubFile: "expo-sharing.ts",
|
|
6921
|
+
runtimeTier: "none",
|
|
6922
|
+
buildResolvers: ["vite"]
|
|
6923
|
+
},
|
|
6924
|
+
expoSms: {
|
|
6925
|
+
specifier: "expo-sms",
|
|
6926
|
+
stubFile: "expo-sms.ts",
|
|
6927
|
+
runtimeTier: "none",
|
|
6928
|
+
buildResolvers: ["vite"]
|
|
6929
|
+
},
|
|
6930
|
+
expoSqlite: {
|
|
6931
|
+
specifier: "expo-sqlite",
|
|
6932
|
+
stubFile: "expo-sqlite.ts",
|
|
6933
|
+
runtimeTier: "none",
|
|
6934
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
6935
|
+
},
|
|
6936
|
+
expoSpeech: {
|
|
6937
|
+
specifier: "expo-speech",
|
|
6938
|
+
stubFile: "expo-speech.ts",
|
|
6939
|
+
runtimeTier: "none",
|
|
6940
|
+
buildResolvers: ["vite"]
|
|
6941
|
+
},
|
|
6942
|
+
expoStoreReview: {
|
|
6943
|
+
specifier: "expo-store-review",
|
|
6944
|
+
stubFile: "expo-store-review.ts",
|
|
6945
|
+
runtimeTier: "none",
|
|
6946
|
+
buildResolvers: ["vite"]
|
|
6947
|
+
},
|
|
6948
|
+
expoTrackingTransparency: {
|
|
6949
|
+
specifier: "expo-tracking-transparency",
|
|
6950
|
+
stubFile: "expo-tracking-transparency.ts",
|
|
6951
|
+
runtimeTier: "none",
|
|
6952
|
+
buildResolvers: ["vite"]
|
|
6953
|
+
},
|
|
6954
|
+
expoShareExtension: {
|
|
6955
|
+
specifier: "expo-share-extension",
|
|
6956
|
+
stubFile: "noop-sdks-extra/expo-share-extension.ts",
|
|
6957
|
+
runtimeTier: "none",
|
|
6958
|
+
buildResolvers: ["vite"]
|
|
6959
|
+
},
|
|
6960
|
+
expoHealthConnect: {
|
|
6961
|
+
specifier: "expo-health-connect",
|
|
6962
|
+
stubFile: "noop-sdks-extra/expo-health-connect.ts",
|
|
6963
|
+
runtimeTier: "none",
|
|
6964
|
+
buildResolvers: ["vite"]
|
|
6965
|
+
},
|
|
6966
|
+
expoInAppUpdates: {
|
|
6967
|
+
specifier: "expo-in-app-updates",
|
|
6968
|
+
stubFile: "noop-sdks-extra/expo-in-app-updates.ts",
|
|
6969
|
+
runtimeTier: "none",
|
|
6970
|
+
buildResolvers: ["vite"]
|
|
6971
|
+
},
|
|
6972
|
+
expoSuperwall: {
|
|
6973
|
+
specifier: "expo-superwall",
|
|
6974
|
+
stubFile: "noop-sdks-extra/expo-superwall.ts",
|
|
6975
|
+
runtimeTier: "none",
|
|
6976
|
+
buildResolvers: ["vite"]
|
|
6977
|
+
},
|
|
6978
|
+
communityCheckbox: {
|
|
6979
|
+
specifier: "@react-native-community/checkbox",
|
|
6980
|
+
stubFile: "react-native-community-checkbox.ts",
|
|
6981
|
+
runtimeTier: "lazy",
|
|
6982
|
+
buildResolvers: ["vite"]
|
|
6983
|
+
},
|
|
6984
|
+
reactNavigationNative: {
|
|
6985
|
+
specifier: "@react-navigation/native",
|
|
6986
|
+
stubFile: "react-navigation-native.tsx",
|
|
6987
|
+
runtimeTier: "none",
|
|
6988
|
+
buildResolvers: ["vite"]
|
|
6989
|
+
}
|
|
6990
|
+
};
|
|
6991
|
+
|
|
6511
6992
|
// ../peach-engine/src/metro-fingerprint.ts
|
|
6512
|
-
var
|
|
6993
|
+
var import_metro_production_bundle3 = require("peachsim/metro-production-bundle");
|
|
6513
6994
|
var import_react_native_host_modules = require("peachsim/react-native-host-modules");
|
|
6514
6995
|
|
|
6515
6996
|
// ../peach-engine/src/stub-pattern-matcher.ts
|
|
@@ -6521,12 +7002,16 @@ function extractPackageFromPath(modulePath) {
|
|
|
6521
7002
|
nodeModulesIndex = 0;
|
|
6522
7003
|
prefixLength = "node_modules/".length;
|
|
6523
7004
|
}
|
|
6524
|
-
|
|
6525
|
-
|
|
6526
|
-
|
|
6527
|
-
|
|
7005
|
+
return packageNameAt(modulePath, nodeModulesIndex + prefixLength) || null;
|
|
7006
|
+
}
|
|
7007
|
+
function packageNameAt(modulePath, start) {
|
|
7008
|
+
const firstSlash = modulePath.indexOf("/", start);
|
|
7009
|
+
if (modulePath.startsWith("@", start)) {
|
|
7010
|
+
if (firstSlash === -1) return null;
|
|
7011
|
+
const secondSlash = modulePath.indexOf("/", firstSlash + 1);
|
|
7012
|
+
return modulePath.slice(start, secondSlash === -1 ? void 0 : secondSlash);
|
|
6528
7013
|
}
|
|
6529
|
-
return
|
|
7014
|
+
return modulePath.slice(start, firstSlash === -1 ? void 0 : firstSlash);
|
|
6530
7015
|
}
|
|
6531
7016
|
|
|
6532
7017
|
// cli/cloud-client.ts
|
|
@@ -6801,6 +7286,8 @@ function createCloudSession(input) {
|
|
|
6801
7286
|
return session;
|
|
6802
7287
|
}
|
|
6803
7288
|
function createCloudBoxSession(input) {
|
|
7289
|
+
if (input.appFontsWireSha256 !== void 0 && !/^[a-f0-9]{64}$/.test(input.appFontsWireSha256))
|
|
7290
|
+
throw new Error("cloud box session has an invalid app-font wire digest");
|
|
6804
7291
|
const session = {
|
|
6805
7292
|
version: CLOUD_SESSION_VERSION,
|
|
6806
7293
|
service: "box",
|
|
@@ -6809,7 +7296,8 @@ function createCloudBoxSession(input) {
|
|
|
6809
7296
|
apiOrigin: normalizeCloudOrigin(input.apiOrigin.trim()),
|
|
6810
7297
|
...input.platform ? { platform: input.platform } : {},
|
|
6811
7298
|
...input.device?.trim() ? { device: input.device.trim() } : {},
|
|
6812
|
-
...input.artifact ? { artifact: input.artifact } : {}
|
|
7299
|
+
...input.artifact ? { artifact: input.artifact } : {},
|
|
7300
|
+
...input.appFontsWireSha256 !== void 0 ? { appFontsWireSha256: input.appFontsWireSha256 } : {}
|
|
6813
7301
|
};
|
|
6814
7302
|
if (!session.boxId || !session.boxToken) {
|
|
6815
7303
|
throw new Error("cloud box session requires a box, an origin, and a box token");
|
|
@@ -6850,13 +7338,16 @@ function parseCloudSession(encoded) {
|
|
|
6850
7338
|
try {
|
|
6851
7339
|
if (parsed.service === "box") {
|
|
6852
7340
|
if (!boxId || !boxToken) throw new Error("unreadable cloud box session");
|
|
7341
|
+
if (parsed.appFontsWireSha256 !== void 0 && typeof parsed.appFontsWireSha256 !== "string")
|
|
7342
|
+
throw new Error("unreadable app-font wire digest");
|
|
6853
7343
|
return createCloudBoxSession({
|
|
6854
7344
|
boxId,
|
|
6855
7345
|
boxToken,
|
|
6856
7346
|
apiOrigin,
|
|
6857
7347
|
platform,
|
|
6858
7348
|
device,
|
|
6859
|
-
artifact
|
|
7349
|
+
artifact,
|
|
7350
|
+
appFontsWireSha256: parsed.appFontsWireSha256
|
|
6860
7351
|
});
|
|
6861
7352
|
}
|
|
6862
7353
|
const simId = parsed.simId;
|
|
@@ -6952,11 +7443,13 @@ function cloudCommand(command) {
|
|
|
6952
7443
|
return clean;
|
|
6953
7444
|
}
|
|
6954
7445
|
var CloudBridge = class {
|
|
6955
|
-
constructor(session) {
|
|
7446
|
+
constructor(session, explicitTimeoutMs) {
|
|
6956
7447
|
this.session = session;
|
|
7448
|
+
this.explicitTimeoutMs = explicitTimeoutMs;
|
|
6957
7449
|
}
|
|
6958
7450
|
plane = "cloud";
|
|
6959
7451
|
async send(command, options) {
|
|
7452
|
+
const timeoutMs = options?.timeoutMs ?? this.explicitTimeoutMs ?? options?.defaultTimeoutMs;
|
|
6960
7453
|
const body = {
|
|
6961
7454
|
id: (0, import_node_crypto.randomUUID)(),
|
|
6962
7455
|
claimId: this.session.claimId,
|
|
@@ -6973,7 +7466,7 @@ var CloudBridge = class {
|
|
|
6973
7466
|
"content-type": "application/json"
|
|
6974
7467
|
},
|
|
6975
7468
|
body: JSON.stringify(body),
|
|
6976
|
-
...
|
|
7469
|
+
...timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}
|
|
6977
7470
|
}
|
|
6978
7471
|
);
|
|
6979
7472
|
} catch (error) {
|
|
@@ -7023,11 +7516,13 @@ var CloudBridge = class {
|
|
|
7023
7516
|
}
|
|
7024
7517
|
};
|
|
7025
7518
|
var CloudBoxBridge = class {
|
|
7026
|
-
constructor(session) {
|
|
7519
|
+
constructor(session, explicitTimeoutMs) {
|
|
7027
7520
|
this.session = session;
|
|
7521
|
+
this.explicitTimeoutMs = explicitTimeoutMs;
|
|
7028
7522
|
}
|
|
7029
7523
|
plane = "cloud";
|
|
7030
7524
|
async send(command, options) {
|
|
7525
|
+
const timeoutMs = options?.timeoutMs ?? this.explicitTimeoutMs ?? options?.defaultTimeoutMs;
|
|
7031
7526
|
const id = (0, import_node_crypto.randomUUID)();
|
|
7032
7527
|
const payload = {};
|
|
7033
7528
|
for (const [key, value] of Object.entries(command)) {
|
|
@@ -7044,7 +7539,7 @@ var CloudBoxBridge = class {
|
|
|
7044
7539
|
"content-type": "application/json"
|
|
7045
7540
|
},
|
|
7046
7541
|
body: JSON.stringify({ id, command: payload }),
|
|
7047
|
-
...
|
|
7542
|
+
...timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}
|
|
7048
7543
|
}
|
|
7049
7544
|
);
|
|
7050
7545
|
} catch (error) {
|
|
@@ -7092,7 +7587,8 @@ var CloudBoxBridge = class {
|
|
|
7092
7587
|
function createCloudBridgeForParsed(parsed) {
|
|
7093
7588
|
const session = resolveCloudSessionForParsed(parsed);
|
|
7094
7589
|
if (!session) return null;
|
|
7095
|
-
|
|
7590
|
+
const timeoutMs = parsed.explicitTimeout ? parsed.commandTimeoutMs : void 0;
|
|
7591
|
+
return session.service === "box" ? new CloudBoxBridge(session, timeoutMs) : new CloudBridge(session, timeoutMs);
|
|
7096
7592
|
}
|
|
7097
7593
|
|
|
7098
7594
|
// cli/current-sim.ts
|
|
@@ -7589,6 +8085,10 @@ function setPauseAwareTimeout(fn, budgetMs, hostPid) {
|
|
|
7589
8085
|
}
|
|
7590
8086
|
return () => {
|
|
7591
8087
|
timers.delete(timer);
|
|
8088
|
+
if (timers.size === 0 && poll) {
|
|
8089
|
+
clearInterval(poll);
|
|
8090
|
+
poll = void 0;
|
|
8091
|
+
}
|
|
7592
8092
|
};
|
|
7593
8093
|
}
|
|
7594
8094
|
|
|
@@ -7738,7 +8238,10 @@ var BRIDGE_VALUE_FLAGS_TABLE = [
|
|
|
7738
8238
|
{
|
|
7739
8239
|
names: ["--timeout"],
|
|
7740
8240
|
apply: (state, value) => {
|
|
7741
|
-
if (value !== void 0)
|
|
8241
|
+
if (value !== void 0) {
|
|
8242
|
+
state.commandTimeoutMs = Number(value);
|
|
8243
|
+
state.explicitTimeout = true;
|
|
8244
|
+
}
|
|
7742
8245
|
}
|
|
7743
8246
|
},
|
|
7744
8247
|
{
|
|
@@ -7878,7 +8381,7 @@ function createBridge(wsPort, opts = {}) {
|
|
|
7878
8381
|
return {
|
|
7879
8382
|
plane: "local",
|
|
7880
8383
|
async send(cmd, callOpts) {
|
|
7881
|
-
const effectiveTimeoutMs = callOpts?.timeoutMs ?? commandTimeoutMs;
|
|
8384
|
+
const effectiveTimeoutMs = callOpts?.timeoutMs ?? (opts.explicitTimeout ? commandTimeoutMs : callOpts?.defaultTimeoutMs) ?? commandTimeoutMs;
|
|
7882
8385
|
const sendOnce = async (defaultSimId, cmdOverride) => {
|
|
7883
8386
|
await ready;
|
|
7884
8387
|
if (terminalError) throw terminalError;
|
|
@@ -7891,11 +8394,7 @@ function createBridge(wsPort, opts = {}) {
|
|
|
7891
8394
|
const clearTimeoutFn = setPauseAwareTimeout(
|
|
7892
8395
|
() => {
|
|
7893
8396
|
pending.delete(id);
|
|
7894
|
-
reject(
|
|
7895
|
-
new Error(
|
|
7896
|
-
`command timed out after ${Math.round(effectiveTimeoutMs / 1e3)}s`
|
|
7897
|
-
)
|
|
7898
|
-
);
|
|
8397
|
+
reject(new Error(`command timed out after ${effectiveTimeoutMs / 1e3}s`));
|
|
7899
8398
|
},
|
|
7900
8399
|
effectiveTimeoutMs,
|
|
7901
8400
|
lineageBySimId.get(payload.simId)?.hostPid
|
|
@@ -8024,6 +8523,7 @@ function createBridgeFromParsed(parsed) {
|
|
|
8024
8523
|
if (cloudBridge) return cloudBridge;
|
|
8025
8524
|
const options = {
|
|
8026
8525
|
commandTimeoutMs: parsed.commandTimeoutMs,
|
|
8526
|
+
explicitTimeout: parsed.explicitTimeout,
|
|
8027
8527
|
simId: parsed.simId,
|
|
8028
8528
|
simIdSource: parsed.simIdSource
|
|
8029
8529
|
};
|
|
@@ -9904,9 +10404,10 @@ async function tapByText(bridge, query, options = {}, opts = {}) {
|
|
|
9904
10404
|
});
|
|
9905
10405
|
}
|
|
9906
10406
|
async function resolveTextTapTarget(bridge, query, options = {}) {
|
|
10407
|
+
const needle = options.exact ? query : query.trim().toLowerCase();
|
|
10408
|
+
if (!needle) return { matched: 0, total: 0 };
|
|
9907
10409
|
const { tree } = await inspectTree(bridge, 50);
|
|
9908
10410
|
if (!Array.isArray(tree)) return { matched: 0, total: 0 };
|
|
9909
|
-
const needle = options.exact ? query : query.toLowerCase();
|
|
9910
10411
|
let candidates = collectTextCandidates(tree).filter(
|
|
9911
10412
|
({ node: node2, ancestorTestIDs, role }) => {
|
|
9912
10413
|
const text2 = nodeText(node2);
|
|
@@ -9930,7 +10431,7 @@ async function resolveTextTapTarget(bridge, query, options = {}) {
|
|
|
9930
10431
|
if (actionable.length > 0) candidates = actionable;
|
|
9931
10432
|
if (!options.exact) {
|
|
9932
10433
|
const whole = candidates.filter(
|
|
9933
|
-
({ node: node2 }) => nodeText(node2).trim().toLowerCase() === needle
|
|
10434
|
+
({ node: node2 }) => nodeText(node2).trim().toLowerCase() === needle
|
|
9934
10435
|
);
|
|
9935
10436
|
if (whole.length > 0) candidates = whole;
|
|
9936
10437
|
}
|
|
@@ -11009,9 +11510,1993 @@ init_replacement_module_handler();
|
|
|
11009
11510
|
// src/installed-package-versions.ts
|
|
11010
11511
|
var import_fs3 = __toESM(require("fs"), 1);
|
|
11011
11512
|
var import_path2 = __toESM(require("path"), 1);
|
|
11012
|
-
|
|
11013
|
-
|
|
11014
|
-
var
|
|
11513
|
+
|
|
11514
|
+
// ../peach-compat/src/lazy-stub-patterns.ts
|
|
11515
|
+
var LAZY_STUB_PATTERNS = [
|
|
11516
|
+
"@10play/tentap-editor",
|
|
11517
|
+
"@adobe/react-native-aepcore",
|
|
11518
|
+
"@aws-amplify/react-native",
|
|
11519
|
+
"@azesmway/react-native-unity",
|
|
11520
|
+
"@azzapp/react-native-skia-video",
|
|
11521
|
+
"@batch.com/react-native-plugin",
|
|
11522
|
+
"@bravemobile/react-native-code-push",
|
|
11523
|
+
"@bugsnag/react-native",
|
|
11524
|
+
"@bugsnag/react-native-performance",
|
|
11525
|
+
"@callstack/react-native-bottom-tabs",
|
|
11526
|
+
"@callstack/react-native-visionos",
|
|
11527
|
+
"@clerk/expo",
|
|
11528
|
+
"@cometchat/chat-uikit-react-native",
|
|
11529
|
+
"@didomi/react-native",
|
|
11530
|
+
"@dr.pogodin/react-native-static-server",
|
|
11531
|
+
"@eabdullazyanov/react-native-sms-user-consent",
|
|
11532
|
+
"@expensify/react-native-live-markdown",
|
|
11533
|
+
"@expensify/react-native-wallet",
|
|
11534
|
+
"@expo/ui/community/menu",
|
|
11535
|
+
"@expo/ui/swift-ui",
|
|
11536
|
+
"@giphy/react-native-sdk",
|
|
11537
|
+
"@google/react-native-make-payment",
|
|
11538
|
+
"@googlemaps/react-native-navigation-sdk",
|
|
11539
|
+
"@invertase/react-native-apple-authentication",
|
|
11540
|
+
"@iterable/expo-plugin",
|
|
11541
|
+
"@kingstinct/react-native-healthkit",
|
|
11542
|
+
"@livekit/react-native",
|
|
11543
|
+
"@lodev09/react-native-exify",
|
|
11544
|
+
"@luciq/react-native",
|
|
11545
|
+
"@mattermost/react-native-paste-input",
|
|
11546
|
+
"@mgcrea/vision-camera-barcode-scanner",
|
|
11547
|
+
"@mozzius/expo-dynamic-app-icon",
|
|
11548
|
+
"@okta/okta-react-native",
|
|
11549
|
+
"@playerdata/react-native-mcu-manager",
|
|
11550
|
+
"@react-native-community/audio-toolkit",
|
|
11551
|
+
"@react-native-community/checkbox",
|
|
11552
|
+
"@react-native-community/progress-bar-android",
|
|
11553
|
+
"@react-native-community/toolbar-android",
|
|
11554
|
+
"@react-native-documents/picker",
|
|
11555
|
+
"@react-native-firebase/app-distribution",
|
|
11556
|
+
"@react-native-firebase/database",
|
|
11557
|
+
"@react-native-firebase/in-app-messaging",
|
|
11558
|
+
"@react-native-ml-kit/face-detection",
|
|
11559
|
+
"@react-native-ml-kit/text-recognition",
|
|
11560
|
+
"@react-native-segmented-control/segmented-control",
|
|
11561
|
+
"@react-native-seoul/naver-login",
|
|
11562
|
+
"@renegades/react-native-tickle",
|
|
11563
|
+
"@rnw-community/react-native-payments",
|
|
11564
|
+
"@rudderstack/rudder-integration-firebase-react-native",
|
|
11565
|
+
"@rudderstack/rudder-sdk-react-native",
|
|
11566
|
+
"@sbaiahmed1/react-native-biometrics",
|
|
11567
|
+
"@sbaiahmed1/react-native-biometrics/types",
|
|
11568
|
+
"@sbaiahmed1/react-native-blur",
|
|
11569
|
+
"@shopify/checkout-sheet-kit",
|
|
11570
|
+
"@shopify/react-native-skia",
|
|
11571
|
+
"@stream-io/video-react-native-sdk",
|
|
11572
|
+
"@stripe/stripe-identity-react-native",
|
|
11573
|
+
"@stripe/stripe-react-native",
|
|
11574
|
+
"@stripe/stripe-react-native/lib/typescript/src/types",
|
|
11575
|
+
"@stripe/stripe-terminal-react-native",
|
|
11576
|
+
"@supersami/rn-foreground-service",
|
|
11577
|
+
"@survicate/react-native-survicate",
|
|
11578
|
+
"@twilio/voice-react-native-sdk",
|
|
11579
|
+
"@walletconnect/react-native-compat",
|
|
11580
|
+
"@xmartlabs/react-native-line",
|
|
11581
|
+
"@zoontek/react-native-navigation-bar",
|
|
11582
|
+
"clevertap-react-native",
|
|
11583
|
+
"expo-dynamic-app-icon",
|
|
11584
|
+
"expo-glass-effect",
|
|
11585
|
+
"expo-health-connect",
|
|
11586
|
+
"expo-in-app-updates",
|
|
11587
|
+
"expo-mesh-gradient",
|
|
11588
|
+
"expo-modules-core",
|
|
11589
|
+
"expo-share-extension",
|
|
11590
|
+
"expo-superwall",
|
|
11591
|
+
"freerasp-react-native",
|
|
11592
|
+
"klaviyo-react-native-sdk",
|
|
11593
|
+
"llama.rn",
|
|
11594
|
+
"mixpanel-react-native",
|
|
11595
|
+
"newrelic-react-native-agent",
|
|
11596
|
+
"realm",
|
|
11597
|
+
"react-native-a11y",
|
|
11598
|
+
"react-native-adapty",
|
|
11599
|
+
"react-native-add-calendar-event",
|
|
11600
|
+
"react-native-adjust",
|
|
11601
|
+
"react-native-advanced-input-mask",
|
|
11602
|
+
"react-native-agora",
|
|
11603
|
+
"react-native-amplitude-analytics",
|
|
11604
|
+
"react-native-android-location-enabler",
|
|
11605
|
+
"react-native-android-widget",
|
|
11606
|
+
"react-native-animateable-text",
|
|
11607
|
+
"react-native-app-clip",
|
|
11608
|
+
"react-native-appsflyer",
|
|
11609
|
+
"react-native-avoid-softinput",
|
|
11610
|
+
"react-native-azure-auth",
|
|
11611
|
+
"react-native-background-actions",
|
|
11612
|
+
"react-native-bare-kit",
|
|
11613
|
+
"react-native-ble-manager",
|
|
11614
|
+
"react-native-bluetooth-classic",
|
|
11615
|
+
"react-native-bluetooth-state-manager",
|
|
11616
|
+
"react-native-bottom-tabs",
|
|
11617
|
+
"react-native-branch",
|
|
11618
|
+
"react-native-camera-kit",
|
|
11619
|
+
"react-native-change-icon",
|
|
11620
|
+
"react-native-charts-wrapper",
|
|
11621
|
+
"react-native-dialogs",
|
|
11622
|
+
"react-native-document-scanner-plugin",
|
|
11623
|
+
"react-native-drop-shadow",
|
|
11624
|
+
"react-native-dynamic-app-icon",
|
|
11625
|
+
"react-native-expo-braintree",
|
|
11626
|
+
"react-native-extra-dimensions-android",
|
|
11627
|
+
"react-native-fast-opencv",
|
|
11628
|
+
"react-native-fast-shadow",
|
|
11629
|
+
"react-native-fast-squircle",
|
|
11630
|
+
"react-native-fast-tflite",
|
|
11631
|
+
"react-native-filament",
|
|
11632
|
+
"react-native-file-viewer-turbo",
|
|
11633
|
+
"react-native-floating-label-input",
|
|
11634
|
+
"react-native-google-cast",
|
|
11635
|
+
"react-native-google-fit",
|
|
11636
|
+
"react-native-google-places-sdk",
|
|
11637
|
+
"react-native-health",
|
|
11638
|
+
"react-native-health-connect",
|
|
11639
|
+
"react-native-hole-view",
|
|
11640
|
+
"react-native-html-to-pdf",
|
|
11641
|
+
"react-native-image-marker",
|
|
11642
|
+
"react-native-incall-manager",
|
|
11643
|
+
"react-native-ios-modal",
|
|
11644
|
+
"react-native-keyboard-controller/bindings",
|
|
11645
|
+
"react-native-keyboard-controller/findNodeHandle",
|
|
11646
|
+
"react-native-keyboard-manager",
|
|
11647
|
+
"react-native-keys",
|
|
11648
|
+
"react-native-loader-kit",
|
|
11649
|
+
"react-native-localization",
|
|
11650
|
+
"react-native-localization-settings",
|
|
11651
|
+
"react-native-mixpanel",
|
|
11652
|
+
"react-native-moengage",
|
|
11653
|
+
"react-native-navigation-mode",
|
|
11654
|
+
"react-native-network-info",
|
|
11655
|
+
"react-native-nitro-haptics",
|
|
11656
|
+
"react-native-otp-verify",
|
|
11657
|
+
"react-native-passkey",
|
|
11658
|
+
"react-native-payments",
|
|
11659
|
+
"react-native-pdf",
|
|
11660
|
+
"react-native-pdf-renderer",
|
|
11661
|
+
"react-native-pinchable",
|
|
11662
|
+
"react-native-play-age-range-declaration",
|
|
11663
|
+
"react-native-prompt-android",
|
|
11664
|
+
"react-native-radial-gradient",
|
|
11665
|
+
"react-native-razorpay",
|
|
11666
|
+
"react-native-reanimated/platformFunctions/dispatchCommand",
|
|
11667
|
+
"react-native-reanimated/platformFunctions/measure",
|
|
11668
|
+
"react-native-reanimated/platformFunctions/scrollTo",
|
|
11669
|
+
"react-native-reanimated/platformFunctions/setGestureState",
|
|
11670
|
+
"react-native-reanimated/platformFunctions/setNativeProps",
|
|
11671
|
+
"react-native-reanimated/specs/NativeReanimatedModule",
|
|
11672
|
+
"react-native-reanimated/specs/NativeWorkletsModule",
|
|
11673
|
+
"react-native-restart-newarch",
|
|
11674
|
+
"react-native-screenguard",
|
|
11675
|
+
"react-native-screens",
|
|
11676
|
+
"react-native-screenshot-prevent",
|
|
11677
|
+
"react-native-select-contact",
|
|
11678
|
+
"react-native-send-intent",
|
|
11679
|
+
"react-native-share-menu",
|
|
11680
|
+
"react-native-shared-element",
|
|
11681
|
+
"react-native-simple-toast",
|
|
11682
|
+
"react-native-spinkit",
|
|
11683
|
+
"react-native-ssl-public-key-pinning",
|
|
11684
|
+
"react-native-star-io10",
|
|
11685
|
+
"react-native-system-navigation-bar",
|
|
11686
|
+
"react-native-tcp",
|
|
11687
|
+
"react-native-teleport",
|
|
11688
|
+
"react-native-theme-switch-animation",
|
|
11689
|
+
"react-native-theoplayer",
|
|
11690
|
+
"react-native-tiktok-business-sdk",
|
|
11691
|
+
"react-native-twilio-video-webrtc",
|
|
11692
|
+
"react-native-udp",
|
|
11693
|
+
"react-native-ui-lib",
|
|
11694
|
+
"react-native-uitextview",
|
|
11695
|
+
"react-native-video-trim",
|
|
11696
|
+
"react-native-voip-push-notification",
|
|
11697
|
+
"react-native-volume-manager",
|
|
11698
|
+
"react-native-wallet-manager",
|
|
11699
|
+
"react-native-watch-connectivity",
|
|
11700
|
+
"react-native-webp-format",
|
|
11701
|
+
"react-native-wheel-pick",
|
|
11702
|
+
"react-native-wheel-picker-android",
|
|
11703
|
+
"react-native-wifi-reborn",
|
|
11704
|
+
"react-native-windows",
|
|
11705
|
+
"react-native-worklets/package.json",
|
|
11706
|
+
"react-native-worklets/specs/NativeWorkletsModule",
|
|
11707
|
+
"react-native-xaml",
|
|
11708
|
+
"react-native-zeroconf",
|
|
11709
|
+
"rn-qr-generator",
|
|
11710
|
+
"rn-secure-storage",
|
|
11711
|
+
"scandit-react-native-datacapture-barcode",
|
|
11712
|
+
"scandit-react-native-datacapture-core",
|
|
11713
|
+
"sp-react-native-in-app-updates",
|
|
11714
|
+
"stream-chat-expo",
|
|
11715
|
+
"stream-chat-react-native",
|
|
11716
|
+
"voltra"
|
|
11717
|
+
];
|
|
11718
|
+
|
|
11719
|
+
// ../peach-compat/src/generated/light-native-package-names.ts
|
|
11720
|
+
var LIGHT_NATIVE_PACKAGE_NAMES = [
|
|
11721
|
+
"@100mslive/react-native-hms",
|
|
11722
|
+
"@account-kit/react-native-signer",
|
|
11723
|
+
"@adobe/react-native-aepassurance",
|
|
11724
|
+
"@adobe/react-native-aepcampaignclassic",
|
|
11725
|
+
"@adobe/react-native-aepedge",
|
|
11726
|
+
"@adobe/react-native-aepedgebridge",
|
|
11727
|
+
"@adobe/react-native-aepedgeconsent",
|
|
11728
|
+
"@adobe/react-native-aepedgeidentity",
|
|
11729
|
+
"@adobe/react-native-aepmessaging",
|
|
11730
|
+
"@adobe/react-native-aepoptimize",
|
|
11731
|
+
"@adobe/react-native-aepplaces",
|
|
11732
|
+
"@adobe/react-native-aeptarget",
|
|
11733
|
+
"@adobe/react-native-aepuserprofile",
|
|
11734
|
+
"@adrekic/expo-meta-wearables-dat",
|
|
11735
|
+
"@adrianso/react-native-device-brightness",
|
|
11736
|
+
"@alexzunik/react-native-money-input",
|
|
11737
|
+
"@algocare/react-native-code-push",
|
|
11738
|
+
"@allboatsrise/expo-marketingcloudsdk",
|
|
11739
|
+
"@ammarahmed/react-native-eventsource",
|
|
11740
|
+
"@ammarahmed/react-native-share-extension",
|
|
11741
|
+
"@ammarahmed/react-native-sodium",
|
|
11742
|
+
"@ammarahmed/react-native-upload",
|
|
11743
|
+
"@amplitude/analytics-react-native",
|
|
11744
|
+
"@amplitude/experiment-react-native-client",
|
|
11745
|
+
"@amplitude/plugin-engagement-react-native",
|
|
11746
|
+
"@amplitude/plugin-session-replay-react-native",
|
|
11747
|
+
"@amplitude/react-native",
|
|
11748
|
+
"@amplitude/session-replay-react-native",
|
|
11749
|
+
"@animo-id/expo-secure-environment",
|
|
11750
|
+
"@ansight/react-native",
|
|
11751
|
+
"@anythingai/launcher",
|
|
11752
|
+
"@appcues/react-native",
|
|
11753
|
+
"@appdynamics/react-native-agent",
|
|
11754
|
+
"@appier/react-native-sdk",
|
|
11755
|
+
"@appmetrica/react-native-analytics",
|
|
11756
|
+
"@ascendtis/react-native-voice-to-text",
|
|
11757
|
+
"@bam.tech/react-native-app-security",
|
|
11758
|
+
"@bam.tech/react-native-config",
|
|
11759
|
+
"@bennyblader/ddk-rn",
|
|
11760
|
+
"@bishaldahal/react-native-khalti-checkout",
|
|
11761
|
+
"@blazejkustra/react-native-alert",
|
|
11762
|
+
"@boterop/react-native-background-timer",
|
|
11763
|
+
"@bounceapp/react-native-paypal",
|
|
11764
|
+
"@brandingbrand/react-native-app-restart",
|
|
11765
|
+
"@breeztech/breez-sdk-spark-react-native",
|
|
11766
|
+
"@brigad/react-native-adservices",
|
|
11767
|
+
"@bsky.app/expo-dynamic-app-icon",
|
|
11768
|
+
"@bsky.app/expo-translate-text",
|
|
11769
|
+
"@bufgix/react-native-secure-window",
|
|
11770
|
+
"@burnt-labs/expo-satya-attest",
|
|
11771
|
+
"@callstack/repack",
|
|
11772
|
+
"@castleio/react-native-castle",
|
|
11773
|
+
"@chargebee/react-native-chargebee",
|
|
11774
|
+
"@checkout.com/checkout-react-native-components",
|
|
11775
|
+
"@clear.sale/behavior-analytics-react-native-sdk",
|
|
11776
|
+
"@cloudflare/react-native-webrtc",
|
|
11777
|
+
"@cloudflare/realtimekit-react-native",
|
|
11778
|
+
"@cloudflare/realtimekit-react-native-ui",
|
|
11779
|
+
"@code-push-next/react-native-code-push",
|
|
11780
|
+
"@coinbase/mobile-wallet-protocol-host",
|
|
11781
|
+
"@coinbase/wallet-mobile-sdk",
|
|
11782
|
+
"@companycam/vibe-check",
|
|
11783
|
+
"@compdfkit_pdf_sdk/react_native",
|
|
11784
|
+
"@consento/sync-randombytes",
|
|
11785
|
+
"@contentsquare/react-native-bridge",
|
|
11786
|
+
"@coralogix/react-native-plugin",
|
|
11787
|
+
"@cordialinc/react-native-sdk",
|
|
11788
|
+
"@curity/identityserver-haapi-react-native-sdk",
|
|
11789
|
+
"@d11/dota",
|
|
11790
|
+
"@d11/marco",
|
|
11791
|
+
"@daily-co/react-native-webrtc",
|
|
11792
|
+
"@dariyd/react-native-text-recognition",
|
|
11793
|
+
"@dashdoc/react-native-system-sounds",
|
|
11794
|
+
"@datadog/mobile-react-native-session-replay",
|
|
11795
|
+
"@datadome/datadome-axios",
|
|
11796
|
+
"@datadome/react-native-datadome",
|
|
11797
|
+
"@datalyr/react-native",
|
|
11798
|
+
"@descope/react-native-sdk",
|
|
11799
|
+
"@deuna/react-native-sdk",
|
|
11800
|
+
"@dev-amirzubair/react-native-voice",
|
|
11801
|
+
"@devikai/react-native",
|
|
11802
|
+
"@devrev/sdk-react-native",
|
|
11803
|
+
"@didit-protocol/sdk-react-native",
|
|
11804
|
+
"@digia-engage/core",
|
|
11805
|
+
"@dub/react-native",
|
|
11806
|
+
"@dynatrace/react-native-plugin",
|
|
11807
|
+
"@edkimmel/expo-audio-stream",
|
|
11808
|
+
"@embrace-io/react-native",
|
|
11809
|
+
"@embrace-io/react-native-tracer-provider",
|
|
11810
|
+
"@empower-nokta/react-native-mobile-ads",
|
|
11811
|
+
"@entria/rn-face-detector",
|
|
11812
|
+
"@entrust.corporation/idvsdk-reactnative",
|
|
11813
|
+
"@evervault/evervault-react-native",
|
|
11814
|
+
"@evrotrust/et-react-native-wl-sdk",
|
|
11815
|
+
"@exodus/react-native-async-storage",
|
|
11816
|
+
"@exodus/react-native-biometrics",
|
|
11817
|
+
"@exodus/react-native-bundle-loader",
|
|
11818
|
+
"@exodus/react-native-fs",
|
|
11819
|
+
"@exodus/react-native-keychain",
|
|
11820
|
+
"@exodus/react-native-nft-viewer",
|
|
11821
|
+
"@exodus/react-native-notifications",
|
|
11822
|
+
"@exodus/react-native-payments",
|
|
11823
|
+
"@exodus/react-native-prompt-android",
|
|
11824
|
+
"@exodus/react-native-reanimated",
|
|
11825
|
+
"@exodus/react-native-screenshot-detector",
|
|
11826
|
+
"@exodus/react-native-wallet",
|
|
11827
|
+
"@exodus/rive-react-native",
|
|
11828
|
+
"@extole/react-native-sdk",
|
|
11829
|
+
"@fedimint/react-native",
|
|
11830
|
+
"@freddixx/react-native-ad-manager",
|
|
11831
|
+
"@freshpaint/freshpaint-react-native",
|
|
11832
|
+
"@frontegg/react-native",
|
|
11833
|
+
"@gainsight-px/react-native-gainsight-px",
|
|
11834
|
+
"@getalby/expo-shared-preferences",
|
|
11835
|
+
"@getcello/cello-react-native",
|
|
11836
|
+
"@getstoryteller/react-native-storyteller-sdk",
|
|
11837
|
+
"@getvouch/react-native-sdk",
|
|
11838
|
+
"@glance-networks/reactnative-bridge",
|
|
11839
|
+
"@google-cloud/recaptcha-enterprise-react-native",
|
|
11840
|
+
"@grafana/faro-react-native",
|
|
11841
|
+
"@granite-js/image",
|
|
11842
|
+
"@granite-js/video",
|
|
11843
|
+
"@hackler/react-native-sdk",
|
|
11844
|
+
"@haroldtran/react-native-thermal-printer",
|
|
11845
|
+
"@heap/react-native-heap",
|
|
11846
|
+
"@heartbot/expo-google-authentication",
|
|
11847
|
+
"@heasy/react-native-sunmi-printer",
|
|
11848
|
+
"@hero-design/react-native-month-year-picker",
|
|
11849
|
+
"@hexigames/react-native-apple-ads-attribution",
|
|
11850
|
+
"@hmscore/react-native-hms-ads",
|
|
11851
|
+
"@hmscore/react-native-hms-availability",
|
|
11852
|
+
"@hmscore/react-native-hms-location",
|
|
11853
|
+
"@hmscore/react-native-hms-map",
|
|
11854
|
+
"@hmscore/react-native-hms-push",
|
|
11855
|
+
"@honeycombio/opentelemetry-react-native",
|
|
11856
|
+
"@hotta/react-native-imagepicker",
|
|
11857
|
+
"@howincodes/expo-dynamic-app-icon",
|
|
11858
|
+
"@ht-sdks/sovran-react-native",
|
|
11859
|
+
"@humansecurity/expo-mobile-sdk",
|
|
11860
|
+
"@humansecurity/react-native-sdk",
|
|
11861
|
+
"@ihealth/ihealthlibrary-react-native",
|
|
11862
|
+
"@imgly/editor-react-native",
|
|
11863
|
+
"@infinitered/react-native-mlkit-face-detection",
|
|
11864
|
+
"@infinitered/react-native-mlkit-object-detection",
|
|
11865
|
+
"@infinitered/react-native-mlkit-text-recognition",
|
|
11866
|
+
"@instana/react-native-agent",
|
|
11867
|
+
"@inthepocket/react-native-service-discovery",
|
|
11868
|
+
"@ionic/portals-react-native",
|
|
11869
|
+
"@ivandigitalsolutions/react-native-camerax",
|
|
11870
|
+
"@jitsi/react-native-sdk",
|
|
11871
|
+
"@join-stories/react-native-widgets",
|
|
11872
|
+
"@json-eval-rs/react-native",
|
|
11873
|
+
"@ketch-com/ketch-react-native",
|
|
11874
|
+
"@klarna/platform-colors",
|
|
11875
|
+
"@launchhq/react-native-keyboard-composer",
|
|
11876
|
+
"@layers/expo-tiktok-business",
|
|
11877
|
+
"@leonsilicon/react-native-list",
|
|
11878
|
+
"@livekit/react-native-krisp-noise-filter",
|
|
11879
|
+
"@lobehub/expo-better-auth-passkey",
|
|
11880
|
+
"@logbrew/react-native",
|
|
11881
|
+
"@mauron85/react-native-background-geolocation",
|
|
11882
|
+
"@mccsoft/react-native-matomo",
|
|
11883
|
+
"@mentra/bluetooth-sdk",
|
|
11884
|
+
"@metamask/react-native-acm",
|
|
11885
|
+
"@metamask/react-native-payments",
|
|
11886
|
+
"@microblink/blinkcard-react-native",
|
|
11887
|
+
"@microsoft/react-native-clarity",
|
|
11888
|
+
"@mitsuharu/react-native-sunmi-printer-library",
|
|
11889
|
+
"@mixpanel/react-native-session-replay",
|
|
11890
|
+
"@moneykit/connect-react-native",
|
|
11891
|
+
"@more-tech/react-native-libsodium",
|
|
11892
|
+
"@mux/mux-react-native-player",
|
|
11893
|
+
"@mykin-ai/expo-audio-stream",
|
|
11894
|
+
"@networkinternational/ni-card-management-sdk",
|
|
11895
|
+
"@nevis-security/nevis-mobile-authentication-sdk-react",
|
|
11896
|
+
"@nexigen/react-native-pre-text",
|
|
11897
|
+
"@nitro-perf-devtools/core",
|
|
11898
|
+
"@norcy/react-native-toolkit",
|
|
11899
|
+
"@npm_fluentco/adflow-react-native-sdk",
|
|
11900
|
+
"@nsure-ai/react-native-client-sdk",
|
|
11901
|
+
"@nuggetslife/vc-rn",
|
|
11902
|
+
"@obsidian_north/react-native-mediastore",
|
|
11903
|
+
"@offline-protocol/mesh-sdk",
|
|
11904
|
+
"@oguzhnatly/react-native-image-manipulator",
|
|
11905
|
+
"@olo/pay-react-native",
|
|
11906
|
+
"@onekeyfe/react-native-aes-crypto",
|
|
11907
|
+
"@onekeyfe/react-native-app-update",
|
|
11908
|
+
"@onekeyfe/react-native-async-storage",
|
|
11909
|
+
"@onekeyfe/react-native-background-thread",
|
|
11910
|
+
"@onekeyfe/react-native-ble-utils",
|
|
11911
|
+
"@onekeyfe/react-native-bundle-crypto",
|
|
11912
|
+
"@onekeyfe/react-native-bundle-update",
|
|
11913
|
+
"@onekeyfe/react-native-check-biometric-auth-changed",
|
|
11914
|
+
"@onekeyfe/react-native-cloud-fs",
|
|
11915
|
+
"@onekeyfe/react-native-cloud-kit-module",
|
|
11916
|
+
"@onekeyfe/react-native-device-utils",
|
|
11917
|
+
"@onekeyfe/react-native-dns-lookup",
|
|
11918
|
+
"@onekeyfe/react-native-get-random-values",
|
|
11919
|
+
"@onekeyfe/react-native-keychain-module",
|
|
11920
|
+
"@onekeyfe/react-native-lite-card",
|
|
11921
|
+
"@onekeyfe/react-native-native-logger",
|
|
11922
|
+
"@onekeyfe/react-native-network-info",
|
|
11923
|
+
"@onekeyfe/react-native-network-throttle",
|
|
11924
|
+
"@onekeyfe/react-native-pbkdf2",
|
|
11925
|
+
"@onekeyfe/react-native-perf-memory",
|
|
11926
|
+
"@onekeyfe/react-native-perf-stats",
|
|
11927
|
+
"@onekeyfe/react-native-ping",
|
|
11928
|
+
"@onekeyfe/react-native-range-downloader",
|
|
11929
|
+
"@onekeyfe/react-native-sni-connect",
|
|
11930
|
+
"@onekeyfe/react-native-splash-screen",
|
|
11931
|
+
"@onekeyfe/react-native-split-bundle-loader",
|
|
11932
|
+
"@onekeyfe/react-native-tab-view",
|
|
11933
|
+
"@onekeyfe/react-native-tcp-socket",
|
|
11934
|
+
"@onekeyfe/react-native-webview-cleaner",
|
|
11935
|
+
"@onekeyfe/react-native-zip-archive",
|
|
11936
|
+
"@onfido/react-native-sdk",
|
|
11937
|
+
"@onramp-sdk/react-native",
|
|
11938
|
+
"@opacity-labs/react-native-opacity",
|
|
11939
|
+
"@openobserve/mobile-react-native",
|
|
11940
|
+
"@openobserve/mobile-react-native-session-replay",
|
|
11941
|
+
"@openobserve/mobile-react-native-webview",
|
|
11942
|
+
"@openreplay/react-native",
|
|
11943
|
+
"@optimove-inc/react-native",
|
|
11944
|
+
"@oracle/react-native-pushiomanager",
|
|
11945
|
+
"@oscilar/react-native-oscilar-module",
|
|
11946
|
+
"@oxyhq/services",
|
|
11947
|
+
"@pagopa/io-react-native-cie",
|
|
11948
|
+
"@pagopa/io-react-native-cieid",
|
|
11949
|
+
"@pagopa/io-react-native-crypto",
|
|
11950
|
+
"@pagopa/io-react-native-http-client",
|
|
11951
|
+
"@pagopa/io-react-native-integrity",
|
|
11952
|
+
"@pagopa/io-react-native-iso18013",
|
|
11953
|
+
"@pagopa/io-react-native-jwt",
|
|
11954
|
+
"@pagopa/io-react-native-login-utils",
|
|
11955
|
+
"@pagopa/io-react-native-secure-storage",
|
|
11956
|
+
"@pagopa/io-react-native-zendesk",
|
|
11957
|
+
"@pagopa/react-native-cie",
|
|
11958
|
+
"@paul_sizon/expo-pdf-text-extract",
|
|
11959
|
+
"@payrails/react-native-sdk",
|
|
11960
|
+
"@paytabs/react-native-paytabs",
|
|
11961
|
+
"@pchmn/expo-material3-theme",
|
|
11962
|
+
"@pdftron/react-native-pdf",
|
|
11963
|
+
"@peacechen/react-native-otp-autocomplete",
|
|
11964
|
+
"@phantom/react-native-juicebox-sdk",
|
|
11965
|
+
"@picovoice/porcupine-react-native",
|
|
11966
|
+
"@picovoice/react-native-voice-processor",
|
|
11967
|
+
"@piwikpro/react-native-piwik-pro-sdk",
|
|
11968
|
+
"@pocketpalai/llama.rn",
|
|
11969
|
+
"@prelude.so/react-native-sdk",
|
|
11970
|
+
"@premieroctet/react-native-wallet",
|
|
11971
|
+
"@primer-io/react-native",
|
|
11972
|
+
"@privy-io/expo-native-extensions",
|
|
11973
|
+
"@psync/anti-jailbreak",
|
|
11974
|
+
"@qonversion/react-native-sdk",
|
|
11975
|
+
"@quidone/react-native-wheel-picker-feedback",
|
|
11976
|
+
"@radiusnetworks/react-native-flybuy-core",
|
|
11977
|
+
"@radiusnetworks/react-native-flybuy-pickup",
|
|
11978
|
+
"@react-native-agconnect/applinking",
|
|
11979
|
+
"@react-native-community/clipboard",
|
|
11980
|
+
"@react-native-community/cookies",
|
|
11981
|
+
"@react-native-community/voice",
|
|
11982
|
+
"@react-native-kakao/core",
|
|
11983
|
+
"@react-native-kakao/share",
|
|
11984
|
+
"@react-native-kakao/social",
|
|
11985
|
+
"@react-native-kakao/user",
|
|
11986
|
+
"@react-native-karte/core",
|
|
11987
|
+
"@react-native-karte/in-app-messaging",
|
|
11988
|
+
"@react-native-karte/notification",
|
|
11989
|
+
"@react-native-seoul/kakao-login",
|
|
11990
|
+
"@react-native-zohosalesiq/mobilisten",
|
|
11991
|
+
"@react-native-zohosalesiq/mobilisten-core",
|
|
11992
|
+
"@reclaimprotocol/inapp-rn-sdk",
|
|
11993
|
+
"@reeq/react-native-device-brightness",
|
|
11994
|
+
"@reeq/react-native-passkit",
|
|
11995
|
+
"@regulaforensics/document-reader",
|
|
11996
|
+
"@regulaforensics/face-sdk",
|
|
11997
|
+
"@regulaforensics/idv",
|
|
11998
|
+
"@regulaforensics/react-native-document-reader-api",
|
|
11999
|
+
"@revopush/react-native-code-push",
|
|
12000
|
+
"@riskified/react-native-riskified-sdk",
|
|
12001
|
+
"@rownd/react-native",
|
|
12002
|
+
"@ryftpay/react-native",
|
|
12003
|
+
"@sap_oss/gigya-react-native-plugin-for-sap-customer-data-cloud",
|
|
12004
|
+
"@sayem314/react-native-keep-awake",
|
|
12005
|
+
"@secondts/bark-react-native",
|
|
12006
|
+
"@segment/analytics-react-native-plugin-idfa",
|
|
12007
|
+
"@selligent-marketing-cloud/selligent-react-native",
|
|
12008
|
+
"@semisquircle/expo-dynamic-app-icon",
|
|
12009
|
+
"@seontechnologies/seon-react-native-mobile-wrapper",
|
|
12010
|
+
"@serserm/react-native-turbo-serialport",
|
|
12011
|
+
"@shadahmad7/react-native-calendar",
|
|
12012
|
+
"@shadahmad7/react-native-store-review",
|
|
12013
|
+
"@shenai/react-native-sdk",
|
|
12014
|
+
"@sherlo/react-native-storybook",
|
|
12015
|
+
"@simula/ads-react-native",
|
|
12016
|
+
"@siteed/sherpa-onnx.rn",
|
|
12017
|
+
"@six33/react-native-bg-removal",
|
|
12018
|
+
"@socure-inc/docv-react-native",
|
|
12019
|
+
"@socure-inc/react-native-device-risk",
|
|
12020
|
+
"@solidx/react-native-true-sheet",
|
|
12021
|
+
"@somesoap/react-native-image-palette",
|
|
12022
|
+
"@sourcepoint/react-native-cmp",
|
|
12023
|
+
"@sourcetoad/react-native-sketch-canvas",
|
|
12024
|
+
"@speechmatics/expo-two-way-audio",
|
|
12025
|
+
"@splitsoftware/splitio-react-native",
|
|
12026
|
+
"@splunk/otel-react-native",
|
|
12027
|
+
"@stream-io/noise-cancellation-react-native",
|
|
12028
|
+
"@stream-io/react-native-callingx",
|
|
12029
|
+
"@stream-io/react-native-webrtc",
|
|
12030
|
+
"@stream-io/video-filters-react-native",
|
|
12031
|
+
"@sumsub/react-native-mobilesdk-module",
|
|
12032
|
+
"@superfan-app/apple-music-auth",
|
|
12033
|
+
"@superwall/react-native-superwall",
|
|
12034
|
+
"@tap-payments/apple-pay-rn",
|
|
12035
|
+
"@tap-payments/google-pay-rn",
|
|
12036
|
+
"@taprails/tap-to-pay",
|
|
12037
|
+
"@telnyx/react-voice-commons-sdk",
|
|
12038
|
+
"@tencentcloud/react-native-push",
|
|
12039
|
+
"@terrylinla/react-native-sketch-canvas",
|
|
12040
|
+
"@thegrizzlylabs/react-native-genius-scan",
|
|
12041
|
+
"@theoplayer/react-native-analytics-adobe",
|
|
12042
|
+
"@theoplayer/react-native-analytics-adobe-edge",
|
|
12043
|
+
"@theoplayer/react-native-analytics-bitmovin",
|
|
12044
|
+
"@theoplayer/react-native-analytics-conviva",
|
|
12045
|
+
"@theoplayer/react-native-analytics-gemius",
|
|
12046
|
+
"@theoplayer/react-native-analytics-mux",
|
|
12047
|
+
"@theoplayer/react-native-analytics-nielsen",
|
|
12048
|
+
"@theoplayer/react-native-analytics-youbora",
|
|
12049
|
+
"@theoplayer/react-native-engage",
|
|
12050
|
+
"@tillpos/rn-receipt-printer-utils",
|
|
12051
|
+
"@timwangdev/react-native-geocoder",
|
|
12052
|
+
"@trycourier/courier-react-native",
|
|
12053
|
+
"@tryvital/vital-core-react-native",
|
|
12054
|
+
"@tryvital/vital-health-react-native",
|
|
12055
|
+
"@ttwrpz/react-native-brightness-setting",
|
|
12056
|
+
"@tursodatabase/sync-react-native",
|
|
12057
|
+
"@twilio/video-react-native-sdk",
|
|
12058
|
+
"@unifyapps/analytics-react-native",
|
|
12059
|
+
"@unomed/react-native-matrix-sdk",
|
|
12060
|
+
"@userpilot/react-native",
|
|
12061
|
+
"@veriff/react-native-sdk",
|
|
12062
|
+
"@verisoul_ai/react-native-verisoul",
|
|
12063
|
+
"@videosdk.live/react-native-webrtc",
|
|
12064
|
+
"@vonage/client-sdk-video-react-native",
|
|
12065
|
+
"@voximplant/react-native-foreground-service",
|
|
12066
|
+
"@wokcito/ffmpeg-kit-react-native",
|
|
12067
|
+
"@wootric/react-native-wootric",
|
|
12068
|
+
"@wscsports/blaze-rtn-sdk",
|
|
12069
|
+
"@wwimmo/react-native-sketch-canvas",
|
|
12070
|
+
"@zoom/meetingsdk-react-native",
|
|
12071
|
+
"@zoom/react-native-videosdk",
|
|
12072
|
+
"agora-react-native-rtm",
|
|
12073
|
+
"aliyun-react-native-push",
|
|
12074
|
+
"amazon-cognito-identity-js",
|
|
12075
|
+
"apple-pay-react-native-expo",
|
|
12076
|
+
"apptentive-react-native",
|
|
12077
|
+
"arlon-test-library",
|
|
12078
|
+
"bcrypt-react-native",
|
|
12079
|
+
"bitlabs",
|
|
12080
|
+
"brick-module",
|
|
12081
|
+
"bridgefy-react-native",
|
|
12082
|
+
"chartbeat-react-native-bridge-sdk",
|
|
12083
|
+
"cleverpush-react-native",
|
|
12084
|
+
"cloudx-react-native",
|
|
12085
|
+
"cm-sdk-react-native-v3-new-arch",
|
|
12086
|
+
"cobrowse-sdk-react-native",
|
|
12087
|
+
"cojson-core-rn",
|
|
12088
|
+
"contour-ai-sdk",
|
|
12089
|
+
"create-react-native-library",
|
|
12090
|
+
"crisp-sdk-react-native",
|
|
12091
|
+
"cui-llama.rn",
|
|
12092
|
+
"dynamsoft-capture-vision-react-native",
|
|
12093
|
+
"expo-activity-motion",
|
|
12094
|
+
"expo-ai-kit",
|
|
12095
|
+
"expo-app-blocker",
|
|
12096
|
+
"expo-audio-stream-pcm",
|
|
12097
|
+
"expo-barcode-scanner",
|
|
12098
|
+
"expo-brownfield",
|
|
12099
|
+
"expo-check-installed-apps",
|
|
12100
|
+
"expo-esim",
|
|
12101
|
+
"expo-face-check",
|
|
12102
|
+
"expo-face-detector",
|
|
12103
|
+
"expo-font-fallback",
|
|
12104
|
+
"expo-google-places",
|
|
12105
|
+
"expo-google-places-autocomplete",
|
|
12106
|
+
"expo-guided-access",
|
|
12107
|
+
"expo-http-server",
|
|
12108
|
+
"expo-image-and-video-compressor",
|
|
12109
|
+
"expo-in-app-purchases",
|
|
12110
|
+
"expo-kiosk-control",
|
|
12111
|
+
"expo-media-viewer",
|
|
12112
|
+
"expo-mlkit-ocr",
|
|
12113
|
+
"expo-native-launch-arguments",
|
|
12114
|
+
"expo-ocr-kit",
|
|
12115
|
+
"expo-onesignal-live-activities",
|
|
12116
|
+
"expo-otp-autofill",
|
|
12117
|
+
"expo-pdf-text-extract",
|
|
12118
|
+
"expo-react-native-adapter",
|
|
12119
|
+
"expo-realtime-audio",
|
|
12120
|
+
"expo-realtime-ivs-broadcast",
|
|
12121
|
+
"expo-reteno-sdk",
|
|
12122
|
+
"expo-samsung-pay",
|
|
12123
|
+
"expo-speech-transcriber",
|
|
12124
|
+
"expo-store-checker",
|
|
12125
|
+
"expo-text-extractor",
|
|
12126
|
+
"expo-tiktok-ads-events",
|
|
12127
|
+
"expo-tnk",
|
|
12128
|
+
"expo-torch",
|
|
12129
|
+
"expo-trim-video",
|
|
12130
|
+
"expo-ttp-edu",
|
|
12131
|
+
"expo-vpn-checker",
|
|
12132
|
+
"expo-widget",
|
|
12133
|
+
"expo-yandex-mapkit",
|
|
12134
|
+
"facepass-react-native-module",
|
|
12135
|
+
"fast-mlkit-translate-text",
|
|
12136
|
+
"framepayments-react-native",
|
|
12137
|
+
"getsocial-react-native-sdk",
|
|
12138
|
+
"helpshift-plugin-sdkx-react-native",
|
|
12139
|
+
"hyper-sdk-react",
|
|
12140
|
+
"hypertrack-sdk-react-native",
|
|
12141
|
+
"hypertrack-sdk-react-native-plugin-android-activity-service-google",
|
|
12142
|
+
"hypertrack-sdk-react-native-plugin-android-location-services-google",
|
|
12143
|
+
"hypertrack-sdk-react-native-plugin-android-push-service-firebase",
|
|
12144
|
+
"idwise-react-native-sdk",
|
|
12145
|
+
"infobip-mobile-messaging-react-native-plugin",
|
|
12146
|
+
"jcore-react-native",
|
|
12147
|
+
"jpush-react-native",
|
|
12148
|
+
"judokit-react-native",
|
|
12149
|
+
"localytics-react-native",
|
|
12150
|
+
"mappls-map-react-native",
|
|
12151
|
+
"mindbox-sdk",
|
|
12152
|
+
"mobile-payments-sdk-react-native",
|
|
12153
|
+
"mychips-react-sdk",
|
|
12154
|
+
"myfatoorah-reactnative",
|
|
12155
|
+
"neuroid-reactnative-sdk",
|
|
12156
|
+
"nodejs-mobile-react-native",
|
|
12157
|
+
"notifly-sdk",
|
|
12158
|
+
"onnxruntime-react-native",
|
|
12159
|
+
"opentok-react-native",
|
|
12160
|
+
"otpless-headless-rn-lite",
|
|
12161
|
+
"payme-mini-app",
|
|
12162
|
+
"payu-non-seam-less-react",
|
|
12163
|
+
"ping-openmls-sdk-react-native-macos",
|
|
12164
|
+
"plotline-engage",
|
|
12165
|
+
"pulse-updates",
|
|
12166
|
+
"ratex-react-native",
|
|
12167
|
+
"raygun4reactnative",
|
|
12168
|
+
"react-airplay",
|
|
12169
|
+
"react-native-accessibility-wrapper",
|
|
12170
|
+
"react-native-acoustic-connect-beta",
|
|
12171
|
+
"react-native-address-autocomplete",
|
|
12172
|
+
"react-native-adjust-oaid",
|
|
12173
|
+
"react-native-advertising-id",
|
|
12174
|
+
"react-native-agora-chat",
|
|
12175
|
+
"react-native-airplay-btn",
|
|
12176
|
+
"react-native-alarm-scheduler",
|
|
12177
|
+
"react-native-android-installed-apps-unblocking",
|
|
12178
|
+
"react-native-android-location-services-dialog-box",
|
|
12179
|
+
"react-native-android-log",
|
|
12180
|
+
"react-native-android-navbar-height",
|
|
12181
|
+
"react-native-android-notification-listener",
|
|
12182
|
+
"react-native-android-open-settings",
|
|
12183
|
+
"react-native-apay",
|
|
12184
|
+
"react-native-app-icon-changer",
|
|
12185
|
+
"react-native-appearance",
|
|
12186
|
+
"react-native-apple-payment",
|
|
12187
|
+
"react-native-appodeal",
|
|
12188
|
+
"react-native-appstore-version-checker",
|
|
12189
|
+
"react-native-apxor-rtm-plugin",
|
|
12190
|
+
"react-native-apxor-sdk",
|
|
12191
|
+
"react-native-argon2",
|
|
12192
|
+
"react-native-attribution-token",
|
|
12193
|
+
"react-native-audio",
|
|
12194
|
+
"react-native-audio-record",
|
|
12195
|
+
"react-native-background-color",
|
|
12196
|
+
"react-native-background-guardian",
|
|
12197
|
+
"react-native-background-remover",
|
|
12198
|
+
"react-native-battery-optimization-check",
|
|
12199
|
+
"react-native-beacon-radar",
|
|
12200
|
+
"react-native-bg-thread",
|
|
12201
|
+
"react-native-bildit-flybuy-core",
|
|
12202
|
+
"react-native-bildit-flybuy-pickup",
|
|
12203
|
+
"react-native-ble-advertiser",
|
|
12204
|
+
"react-native-blob-jsi-helper",
|
|
12205
|
+
"react-native-bluetooth-escpos-printer",
|
|
12206
|
+
"react-native-bottomsheet",
|
|
12207
|
+
"react-native-braintree-dropin-ui",
|
|
12208
|
+
"react-native-bspatch",
|
|
12209
|
+
"react-native-build-config",
|
|
12210
|
+
"react-native-bureauid-fraud-sdk",
|
|
12211
|
+
"react-native-caffe2",
|
|
12212
|
+
"react-native-call-detection",
|
|
12213
|
+
"react-native-call-log",
|
|
12214
|
+
"react-native-capture",
|
|
12215
|
+
"react-native-carrier-info",
|
|
12216
|
+
"react-native-channel-plugin",
|
|
12217
|
+
"react-native-check-biometric-auth-changed",
|
|
12218
|
+
"react-native-chottulink-sdk",
|
|
12219
|
+
"react-native-clarity",
|
|
12220
|
+
"react-native-clusterer",
|
|
12221
|
+
"react-native-code-push-diff",
|
|
12222
|
+
"react-native-connectivity-status",
|
|
12223
|
+
"react-native-convert-ph-asset",
|
|
12224
|
+
"react-native-converted-in-sdk",
|
|
12225
|
+
"react-native-cookies",
|
|
12226
|
+
"react-native-copy",
|
|
12227
|
+
"react-native-crash-tester",
|
|
12228
|
+
"react-native-crisp-chat-sdk",
|
|
12229
|
+
"react-native-cumquat",
|
|
12230
|
+
"react-native-customui",
|
|
12231
|
+
"react-native-daro-m",
|
|
12232
|
+
"react-native-datawedge-intents",
|
|
12233
|
+
"react-native-detect-frida",
|
|
12234
|
+
"react-native-device-activity",
|
|
12235
|
+
"react-native-device-crypto",
|
|
12236
|
+
"react-native-device-time-format",
|
|
12237
|
+
"react-native-device-uptime",
|
|
12238
|
+
"react-native-digitcamera",
|
|
12239
|
+
"react-native-doc-viewer",
|
|
12240
|
+
"react-native-easy-apple-pay",
|
|
12241
|
+
"react-native-encrypted-storage",
|
|
12242
|
+
"react-native-esc-pos-printer",
|
|
12243
|
+
"react-native-exif",
|
|
12244
|
+
"react-native-expo-metamap-sdk",
|
|
12245
|
+
"react-native-exponea-sdk",
|
|
12246
|
+
"react-native-fast-base64",
|
|
12247
|
+
"react-native-fast-crypto",
|
|
12248
|
+
"react-native-fast-encoder",
|
|
12249
|
+
"react-native-fast-openpgp",
|
|
12250
|
+
"react-native-fast-pbkdf2",
|
|
12251
|
+
"react-native-fast-rsa",
|
|
12252
|
+
"react-native-fatos-sdk",
|
|
12253
|
+
"react-native-fbsdk",
|
|
12254
|
+
"react-native-fetch-blob",
|
|
12255
|
+
"react-native-filament-buildcores",
|
|
12256
|
+
"react-native-firebaseui-auth",
|
|
12257
|
+
"react-native-firework-sdk",
|
|
12258
|
+
"react-native-flipper",
|
|
12259
|
+
"react-native-genuin-qa",
|
|
12260
|
+
"react-native-geocoder",
|
|
12261
|
+
"react-native-geocoder-reborn",
|
|
12262
|
+
"react-native-get-sms-android",
|
|
12263
|
+
"react-native-get-values",
|
|
12264
|
+
"react-native-gif",
|
|
12265
|
+
"react-native-gleapsdk",
|
|
12266
|
+
"react-native-global-exception-handler",
|
|
12267
|
+
"react-native-google-analytics-bridge",
|
|
12268
|
+
"react-native-google-pay",
|
|
12269
|
+
"react-native-google-play-integrity",
|
|
12270
|
+
"react-native-haptic",
|
|
12271
|
+
"react-native-haptic-patterns",
|
|
12272
|
+
"react-native-hash",
|
|
12273
|
+
"react-native-hce",
|
|
12274
|
+
"react-native-heic-converter",
|
|
12275
|
+
"react-native-helpscout-beacon",
|
|
12276
|
+
"react-native-hmac",
|
|
12277
|
+
"react-native-html-to-pdf-lite",
|
|
12278
|
+
"react-native-hud-hybrid",
|
|
12279
|
+
"react-native-hw-keyboard-event",
|
|
12280
|
+
"react-native-hyperkyc-sdk",
|
|
12281
|
+
"react-native-hyperpay-sdk",
|
|
12282
|
+
"react-native-hyperswitch-dev-sdk",
|
|
12283
|
+
"react-native-icloud-file-picker",
|
|
12284
|
+
"react-native-idfa",
|
|
12285
|
+
"react-native-idfa-aaid",
|
|
12286
|
+
"react-native-image-base64",
|
|
12287
|
+
"react-native-image-code-scanner",
|
|
12288
|
+
"react-native-image-filter-kit",
|
|
12289
|
+
"react-native-image-rotate",
|
|
12290
|
+
"react-native-image-to-pdf",
|
|
12291
|
+
"react-native-images-to-pdf",
|
|
12292
|
+
"react-native-immersive",
|
|
12293
|
+
"react-native-immersive-mode",
|
|
12294
|
+
"react-native-in-app-message",
|
|
12295
|
+
"react-native-incognia",
|
|
12296
|
+
"react-native-infy-camera",
|
|
12297
|
+
"react-native-insider",
|
|
12298
|
+
"react-native-install-referrer",
|
|
12299
|
+
"react-native-installed-app-checker",
|
|
12300
|
+
"react-native-is-detox",
|
|
12301
|
+
"react-native-is-keyboard-connected",
|
|
12302
|
+
"react-native-keyboard-input",
|
|
12303
|
+
"react-native-khipu",
|
|
12304
|
+
"react-native-klarna-inapp-sdk",
|
|
12305
|
+
"react-native-kochava-measurement",
|
|
12306
|
+
"react-native-kochava-measurement-apple-tracking",
|
|
12307
|
+
"react-native-kochava-measurement-google",
|
|
12308
|
+
"react-native-kochava-measurement-google-tracking",
|
|
12309
|
+
"react-native-kochava-tracker",
|
|
12310
|
+
"react-native-launch-navigator",
|
|
12311
|
+
"react-native-layout-guides",
|
|
12312
|
+
"react-native-local-resource",
|
|
12313
|
+
"react-native-marigold",
|
|
12314
|
+
"react-native-marketingcloudsdk",
|
|
12315
|
+
"react-native-mdm",
|
|
12316
|
+
"react-native-mediapipe",
|
|
12317
|
+
"react-native-mediapipe-posedetection",
|
|
12318
|
+
"react-native-metamap-sdk",
|
|
12319
|
+
"react-native-microphone-stream",
|
|
12320
|
+
"react-native-mlkit-ocr",
|
|
12321
|
+
"react-native-modpow",
|
|
12322
|
+
"react-native-moengage-cards",
|
|
12323
|
+
"react-native-moengage-geofence",
|
|
12324
|
+
"react-native-moengage-inbox",
|
|
12325
|
+
"react-native-mov-to-mp4",
|
|
12326
|
+
"react-native-mqtt-file-transfer",
|
|
12327
|
+
"react-native-msal",
|
|
12328
|
+
"react-native-music-control",
|
|
12329
|
+
"react-native-music-control-enhanced",
|
|
12330
|
+
"react-native-nami-sdk",
|
|
12331
|
+
"react-native-native-log",
|
|
12332
|
+
"react-native-netlog-fab",
|
|
12333
|
+
"react-native-netwatch",
|
|
12334
|
+
"react-native-nitro-bg-timer",
|
|
12335
|
+
"react-native-nitro-simple-toast",
|
|
12336
|
+
"react-native-nitro-thermal",
|
|
12337
|
+
"react-native-nitro-version-check",
|
|
12338
|
+
"react-native-notch-info",
|
|
12339
|
+
"react-native-notificare",
|
|
12340
|
+
"react-native-notificare-geo",
|
|
12341
|
+
"react-native-notificare-push",
|
|
12342
|
+
"react-native-notificare-push-ui",
|
|
12343
|
+
"react-native-notifications-utils",
|
|
12344
|
+
"react-native-onetrust-cmp",
|
|
12345
|
+
"react-native-open-notification",
|
|
12346
|
+
"react-native-otp-auto-verify",
|
|
12347
|
+
"react-native-passkeys",
|
|
12348
|
+
"react-native-passkit-wallet",
|
|
12349
|
+
"react-native-passport-reader",
|
|
12350
|
+
"react-native-paypal-web-payments",
|
|
12351
|
+
"react-native-pdf-lib",
|
|
12352
|
+
"react-native-pdf-page-image",
|
|
12353
|
+
"react-native-pdf-thumbnail",
|
|
12354
|
+
"react-native-pdf-to-image",
|
|
12355
|
+
"react-native-pencil-kit",
|
|
12356
|
+
"react-native-performance-stats",
|
|
12357
|
+
"react-native-performance-toolkit",
|
|
12358
|
+
"react-native-persona",
|
|
12359
|
+
"react-native-phonepe-pg",
|
|
12360
|
+
"react-native-play-install-referrer",
|
|
12361
|
+
"react-native-powerauth-mobile-sdk",
|
|
12362
|
+
"react-native-prevent-recent-screenshots",
|
|
12363
|
+
"react-native-qualtrics",
|
|
12364
|
+
"react-native-quantum-metric-library",
|
|
12365
|
+
"react-native-queue-it",
|
|
12366
|
+
"react-native-random-uuid",
|
|
12367
|
+
"react-native-random-values-jsi-helper",
|
|
12368
|
+
"react-native-release-profiler",
|
|
12369
|
+
"react-native-repro",
|
|
12370
|
+
"react-native-restart-android",
|
|
12371
|
+
"react-native-ringer-mode",
|
|
12372
|
+
"react-native-rook-sdk",
|
|
12373
|
+
"react-native-root-jail-detect",
|
|
12374
|
+
"react-native-safe-area",
|
|
12375
|
+
"react-native-scanbot-barcode-scanner-sdk",
|
|
12376
|
+
"react-native-schedule-exact-alarm-permission",
|
|
12377
|
+
"react-native-scoped-storage",
|
|
12378
|
+
"react-native-screenshot-detect",
|
|
12379
|
+
"react-native-session-timeout",
|
|
12380
|
+
"react-native-set-soft-input-mode",
|
|
12381
|
+
"react-native-sfh-library",
|
|
12382
|
+
"react-native-sha1",
|
|
12383
|
+
"react-native-sha256",
|
|
12384
|
+
"react-native-shared-preferences",
|
|
12385
|
+
"react-native-sherpa-onnx",
|
|
12386
|
+
"react-native-shield-fraud-plugin",
|
|
12387
|
+
"react-native-sim-cards-manager",
|
|
12388
|
+
"react-native-simple-crypto",
|
|
12389
|
+
"react-native-simple-heic2jpg",
|
|
12390
|
+
"react-native-skadnetwork",
|
|
12391
|
+
"react-native-smallcase-gateway",
|
|
12392
|
+
"react-native-smartlook-analytics",
|
|
12393
|
+
"react-native-smile-rn-lib",
|
|
12394
|
+
"react-native-smooth-clip-view",
|
|
12395
|
+
"react-native-sms",
|
|
12396
|
+
"react-native-sms-retriever",
|
|
12397
|
+
"react-native-sound-level",
|
|
12398
|
+
"react-native-sound-level-monitor",
|
|
12399
|
+
"react-native-sound-recorder",
|
|
12400
|
+
"react-native-spike-sdk",
|
|
12401
|
+
"react-native-square-in-app-payments",
|
|
12402
|
+
"react-native-ssl-pinning",
|
|
12403
|
+
"react-native-star-prnt-bitmap-fix",
|
|
12404
|
+
"react-native-startup-time",
|
|
12405
|
+
"react-native-static-safe-area-insets",
|
|
12406
|
+
"react-native-static-server",
|
|
12407
|
+
"react-native-store-front",
|
|
12408
|
+
"react-native-swrve-plugin",
|
|
12409
|
+
"react-native-syan-image-picker",
|
|
12410
|
+
"react-native-tappay",
|
|
12411
|
+
"react-native-tapresearch",
|
|
12412
|
+
"react-native-test-flight",
|
|
12413
|
+
"react-native-text-input-reset",
|
|
12414
|
+
"react-native-text-recognition",
|
|
12415
|
+
"react-native-themis",
|
|
12416
|
+
"react-native-thermal-printer",
|
|
12417
|
+
"react-native-thermal-receipt-printer-image-qr",
|
|
12418
|
+
"react-native-tiktok-business",
|
|
12419
|
+
"react-native-tooltips",
|
|
12420
|
+
"react-native-torch",
|
|
12421
|
+
"react-native-transfer-library",
|
|
12422
|
+
"react-native-ts-accountprotection",
|
|
12423
|
+
"react-native-ts-identity-orchestration",
|
|
12424
|
+
"react-native-ts-idv",
|
|
12425
|
+
"react-native-turbo-image-picker",
|
|
12426
|
+
"react-native-uaepass",
|
|
12427
|
+
"react-native-ultimate-config",
|
|
12428
|
+
"react-native-unit-components",
|
|
12429
|
+
"react-native-usb-serialport-for-android",
|
|
12430
|
+
"react-native-user-agent",
|
|
12431
|
+
"react-native-user-identity",
|
|
12432
|
+
"react-native-userleap",
|
|
12433
|
+
"react-native-video-cache-control",
|
|
12434
|
+
"react-native-video-helper",
|
|
12435
|
+
"react-native-virgil-crypto",
|
|
12436
|
+
"react-native-vision-camera-ocr-plus",
|
|
12437
|
+
"react-native-vizbee-homesso-sender-sdk",
|
|
12438
|
+
"react-native-vizbee-receiver-sdk",
|
|
12439
|
+
"react-native-vizbee-sender-sdk",
|
|
12440
|
+
"react-native-vpn-detector",
|
|
12441
|
+
"react-native-vpn-status",
|
|
12442
|
+
"react-native-walkme-sdk",
|
|
12443
|
+
"react-native-wallet",
|
|
12444
|
+
"react-native-wallet-passes",
|
|
12445
|
+
"react-native-webengage",
|
|
12446
|
+
"react-native-webrtc-kaleidoscope",
|
|
12447
|
+
"react-native-websocket-self-signed",
|
|
12448
|
+
"react-native-webview-ios-cache-clear",
|
|
12449
|
+
"react-native-wonderpush",
|
|
12450
|
+
"react-native-wonderpush-fcm",
|
|
12451
|
+
"react-native-wxwork",
|
|
12452
|
+
"react-native-yamap-plus",
|
|
12453
|
+
"react-native-zendesk-messaging",
|
|
12454
|
+
"react-native-zolozkit-tool",
|
|
12455
|
+
"readid-react-native",
|
|
12456
|
+
"rn-android-keyboard-adjust",
|
|
12457
|
+
"rn-audio-toolkit",
|
|
12458
|
+
"rn-encryption",
|
|
12459
|
+
"rn-linkrunner",
|
|
12460
|
+
"rn-mesh-gradient",
|
|
12461
|
+
"rn-pendo-sdk",
|
|
12462
|
+
"rn-star-prnt",
|
|
12463
|
+
"rn-url-resolver",
|
|
12464
|
+
"rxdx_player",
|
|
12465
|
+
"sahha-react-native",
|
|
12466
|
+
"securehybridapptesting",
|
|
12467
|
+
"shuftipro-onsite-mobilesdk",
|
|
12468
|
+
"smartech-push-react-native",
|
|
12469
|
+
"smartech-reactnative-nudges",
|
|
12470
|
+
"srs-heritage-chatbot",
|
|
12471
|
+
"storyly-placement-react-native",
|
|
12472
|
+
"surveysparrow-react-native-sdk",
|
|
12473
|
+
"tapjoy-react-native-sdk",
|
|
12474
|
+
"tealium-react-firebase",
|
|
12475
|
+
"tealium-react-native",
|
|
12476
|
+
"tealium-react-native-attribution",
|
|
12477
|
+
"terra-react",
|
|
12478
|
+
"theta-ble-client-react-native",
|
|
12479
|
+
"theta-client-react-native",
|
|
12480
|
+
"tiktok-opensdk-react-native",
|
|
12481
|
+
"tipsi-stripe",
|
|
12482
|
+
"tp-react-native-bluetooth-printer",
|
|
12483
|
+
"unified-ble-manager",
|
|
12484
|
+
"unity-levelplay-mediation",
|
|
12485
|
+
"usabilla-react-native",
|
|
12486
|
+
"vexo-analytics",
|
|
12487
|
+
"veyra-sdk-react-native",
|
|
12488
|
+
"vitest-mobile",
|
|
12489
|
+
"wix-react-native-text-size",
|
|
12490
|
+
"yandex-mobile-ads",
|
|
12491
|
+
"ymchat-react-native",
|
|
12492
|
+
"zego-express-engine-reactnative",
|
|
12493
|
+
"zego-zim-react-native",
|
|
12494
|
+
"zetakit_reactnative"
|
|
12495
|
+
];
|
|
12496
|
+
|
|
12497
|
+
// ../peach-compat/src/generated/native-package-names.ts
|
|
12498
|
+
var NATIVE_STUB_PACKAGE_NAMES = [
|
|
12499
|
+
"@10play/tentap-editor",
|
|
12500
|
+
"@adobe/react-native-aepcore",
|
|
12501
|
+
"@alevy97/react-native-userdefaults",
|
|
12502
|
+
"@ankipro/react-native-file-open",
|
|
12503
|
+
"@appzung/react-native-code-push",
|
|
12504
|
+
"@aptabase/react-native",
|
|
12505
|
+
"@assembless/react-native-material-you",
|
|
12506
|
+
"@atomicfi/transact-react-native",
|
|
12507
|
+
"@atproto/oauth-client-expo",
|
|
12508
|
+
"@attarchi/react-native-lottie-splash-screen",
|
|
12509
|
+
"@avasapp/react-native-otp-autofill",
|
|
12510
|
+
"@aws-amplify/react-native",
|
|
12511
|
+
"@azesmway/react-native-unity",
|
|
12512
|
+
"@azzapp/react-native-skia-video",
|
|
12513
|
+
"@babylonjs/react-native",
|
|
12514
|
+
"@bacons/apple-targets",
|
|
12515
|
+
"@bam.tech/react-native-image-resizer",
|
|
12516
|
+
"@baronha/react-native-multiple-image-picker",
|
|
12517
|
+
"@baronha/react-native-photo-editor",
|
|
12518
|
+
"@baronha/ting",
|
|
12519
|
+
"@batch.com/react-native-plugin",
|
|
12520
|
+
"@bear-block/vision-camera-ocr",
|
|
12521
|
+
"@bhojaniasgar/react-native-otp-input",
|
|
12522
|
+
"@bitdrift/react-native",
|
|
12523
|
+
"@bittingz/expo-widgets",
|
|
12524
|
+
"@blackbox-vision/react-native-mercadopago-px",
|
|
12525
|
+
"@borndotcom/react-native-godot",
|
|
12526
|
+
"@bravemobile/react-native-code-push",
|
|
12527
|
+
"@braze/react-native-sdk",
|
|
12528
|
+
"@bsky.app/expo-guess-language",
|
|
12529
|
+
"@bsky.app/expo-image-crop-tool",
|
|
12530
|
+
"@bsky.app/expo-scroll-edge-effect",
|
|
12531
|
+
"@bsky.app/react-native-mmkv",
|
|
12532
|
+
"@bugfender/rn-bugfender",
|
|
12533
|
+
"@bugsnag/react-native",
|
|
12534
|
+
"@bugsnag/react-native-performance",
|
|
12535
|
+
"@callstack/liquid-glass",
|
|
12536
|
+
"@callstack/react-native-bottom-tabs",
|
|
12537
|
+
"@callstack/react-native-brownfield",
|
|
12538
|
+
"@callstack/react-native-local-notifications",
|
|
12539
|
+
"@callstack/react-native-sandbox",
|
|
12540
|
+
"@callstack/react-native-visionos",
|
|
12541
|
+
"@callstack/timezone-hermes-fix",
|
|
12542
|
+
"@candlefinance/faster-image",
|
|
12543
|
+
"@candlefinance/haptics",
|
|
12544
|
+
"@clerk/expo",
|
|
12545
|
+
"@clerk/expo-passkeys",
|
|
12546
|
+
"@cometchat/chat-uikit-react-native",
|
|
12547
|
+
"@computools/react-native-dynamic-app-icon",
|
|
12548
|
+
"@coolsoftwaretyler/cool-pdf",
|
|
12549
|
+
"@criipto/verify-expo",
|
|
12550
|
+
"@d11/react-native-fast-image",
|
|
12551
|
+
"@d11/react-native-mqtt",
|
|
12552
|
+
"@danielsaraldi/react-native-blur-view",
|
|
12553
|
+
"@dariyd/react-native-document-scanner",
|
|
12554
|
+
"@datadog/mobile-react-native",
|
|
12555
|
+
"@dbkable/react-native-speech-to-text",
|
|
12556
|
+
"@didomi/react-native",
|
|
12557
|
+
"@dimaportenko/react-native-shadow-view",
|
|
12558
|
+
"@domir/react-native-measure-text",
|
|
12559
|
+
"@dr.pogodin/react-native-audio",
|
|
12560
|
+
"@dr.pogodin/react-native-fs",
|
|
12561
|
+
"@dr.pogodin/react-native-static-server",
|
|
12562
|
+
"@dylankenneally/react-native-ssh-sftp",
|
|
12563
|
+
"@eabdullazyanov/react-native-sms-user-consent",
|
|
12564
|
+
"@expensify/react-native-background-task",
|
|
12565
|
+
"@expensify/react-native-hybrid-app",
|
|
12566
|
+
"@expensify/react-native-live-markdown",
|
|
12567
|
+
"@expensify/react-native-wallet",
|
|
12568
|
+
"@expo/app-integrity",
|
|
12569
|
+
"@expo/dom-webview",
|
|
12570
|
+
"@expo/ui",
|
|
12571
|
+
"@expo/ui/community/menu",
|
|
12572
|
+
"@extrieve_technologies/quickcapture_react_native",
|
|
12573
|
+
"@fingerprintjs/fingerprintjs-pro-react-native",
|
|
12574
|
+
"@fishjam-cloud/react-native-client",
|
|
12575
|
+
"@fishjam-cloud/react-native-webrtc",
|
|
12576
|
+
"@flitzinteractive/react-native-nitro-html-pdf",
|
|
12577
|
+
"@flyskywhy/react-native-gcanvas",
|
|
12578
|
+
"@fugood/react-native-audio-pcm-stream",
|
|
12579
|
+
"@fullstory/react-native",
|
|
12580
|
+
"@gabriel-sisjr/react-native-background-location",
|
|
12581
|
+
"@generac/react-native-local-network-permission",
|
|
12582
|
+
"@giphy/react-native-sdk",
|
|
12583
|
+
"@gmisoftware/react-native-pay",
|
|
12584
|
+
"@goliapkg/sentori-react-native",
|
|
12585
|
+
"@google/react-native-make-payment",
|
|
12586
|
+
"@googlemaps/react-native-navigation-sdk",
|
|
12587
|
+
"@haroldtran/react-native-pax",
|
|
12588
|
+
"@hot-updater/react-native",
|
|
12589
|
+
"@huymobile/react-native-sms-retriever-nitro-module",
|
|
12590
|
+
"@hyoper/rn-location",
|
|
12591
|
+
"@intercom/intercom-react-native",
|
|
12592
|
+
"@invertase/react-native-apple-authentication",
|
|
12593
|
+
"@iterable/expo-plugin",
|
|
12594
|
+
"@iterable/react-native-sdk",
|
|
12595
|
+
"@iternio/react-native-auto-play",
|
|
12596
|
+
"@joplin/react-native-alarm-notification",
|
|
12597
|
+
"@journeyapps/react-native-quick-sqlite",
|
|
12598
|
+
"@jwplayer/jwplayer-react-native",
|
|
12599
|
+
"@kesha-antonov/react-native-background-downloader",
|
|
12600
|
+
"@kilohealth/rn-fitness-tracker",
|
|
12601
|
+
"@kingstinct/react-native-healthkit",
|
|
12602
|
+
"@kishannareshpal/expo-pdf",
|
|
12603
|
+
"@livekit/react-native",
|
|
12604
|
+
"@livekit/react-native-webrtc",
|
|
12605
|
+
"@lodev09/react-native-exify",
|
|
12606
|
+
"@lodev09/react-native-true-sheet",
|
|
12607
|
+
"@logicwind/react-native-exit-app",
|
|
12608
|
+
"@logicwind/react-native-matomo-tracker",
|
|
12609
|
+
"@logicwind/react-native-status-bar-height",
|
|
12610
|
+
"@logicwind/react-native-tvos-keyboard",
|
|
12611
|
+
"@lomray/react-native-apple-music",
|
|
12612
|
+
"@loqalabs/loqa-expo-dsp",
|
|
12613
|
+
"@lottiefiles/dotlottie-react-native",
|
|
12614
|
+
"@luciq/react-native",
|
|
12615
|
+
"@lugg/maps",
|
|
12616
|
+
"@magrinj/expo-quick-look",
|
|
12617
|
+
"@mapbox/react-native-mapbox-gl",
|
|
12618
|
+
"@maplibre/maplibre-react-native",
|
|
12619
|
+
"@mattermost/react-native-emm",
|
|
12620
|
+
"@mattermost/react-native-network-client",
|
|
12621
|
+
"@mattermost/react-native-paste-input",
|
|
12622
|
+
"@mattermost/react-native-turbo-log",
|
|
12623
|
+
"@mattermost/rnutils",
|
|
12624
|
+
"@meedwire/react-native-image-rotate",
|
|
12625
|
+
"@metamask/native-utils",
|
|
12626
|
+
"@metamask/react-native-search-api",
|
|
12627
|
+
"@metamask/react-native-webview",
|
|
12628
|
+
"@mgcrea/react-native-jetpack-compose",
|
|
12629
|
+
"@mgcrea/vision-camera-barcode-scanner",
|
|
12630
|
+
"@mhpdev/react-native-haptics",
|
|
12631
|
+
"@mhpdev/react-native-speech",
|
|
12632
|
+
"@mj-studio/react-native-naver-map",
|
|
12633
|
+
"@mozzius/expo-dynamic-app-icon",
|
|
12634
|
+
"@nandorojo/galeria",
|
|
12635
|
+
"@notifee/react-native",
|
|
12636
|
+
"@novastera-oss/rn-google-signin",
|
|
12637
|
+
"@nozbe/watermelondb",
|
|
12638
|
+
"@okta/okta-react-native",
|
|
12639
|
+
"@oleg_svetlichnyi/expo-icloud-storage",
|
|
12640
|
+
"@op-engineering/op-sqlite",
|
|
12641
|
+
"@orbital-systems/react-native-esp-idf-provisioning",
|
|
12642
|
+
"@playerdata/react-native-mcu-manager",
|
|
12643
|
+
"@pnthach95/react-native-root-view-background",
|
|
12644
|
+
"@pocketpalai/react-native-speech",
|
|
12645
|
+
"@posthog/react-native-plugin",
|
|
12646
|
+
"@powersync/react-native",
|
|
12647
|
+
"@preeternal/react-native-cookie-manager",
|
|
12648
|
+
"@prisma/react-native",
|
|
12649
|
+
"@purchasely/react-native-purchasely-android-player",
|
|
12650
|
+
"@purchasely/react-native-purchasely-google",
|
|
12651
|
+
"@purchasely/react-native-purchasely-huawei",
|
|
12652
|
+
"@pusher/pusher-websocket-react-native",
|
|
12653
|
+
"@pushpendersingh/react-native-otp-verify",
|
|
12654
|
+
"@pushpendersingh/react-native-scanner",
|
|
12655
|
+
"@react-native-ai/apple",
|
|
12656
|
+
"@react-native-ai/mlc",
|
|
12657
|
+
"@react-native-async-storage/async-storage",
|
|
12658
|
+
"@react-native-camera-roll/camera-roll",
|
|
12659
|
+
"@react-native-clipboard/clipboard",
|
|
12660
|
+
"@react-native-community/audio-toolkit",
|
|
12661
|
+
"@react-native-community/blur",
|
|
12662
|
+
"@react-native-community/checkbox",
|
|
12663
|
+
"@react-native-community/datetimepicker",
|
|
12664
|
+
"@react-native-community/geolocation",
|
|
12665
|
+
"@react-native-community/image-editor",
|
|
12666
|
+
"@react-native-community/masked-view",
|
|
12667
|
+
"@react-native-community/netinfo",
|
|
12668
|
+
"@react-native-community/progress-bar-android",
|
|
12669
|
+
"@react-native-community/progress-view",
|
|
12670
|
+
"@react-native-community/push-notification-ios",
|
|
12671
|
+
"@react-native-community/slider",
|
|
12672
|
+
"@react-native-community/toolbar-android",
|
|
12673
|
+
"@react-native-cookies/cookies",
|
|
12674
|
+
"@react-native-documents/picker",
|
|
12675
|
+
"@react-native-documents/viewer",
|
|
12676
|
+
"@react-native-drivekit/core",
|
|
12677
|
+
"@react-native-drivekit/driver-data",
|
|
12678
|
+
"@react-native-firebase/analytics",
|
|
12679
|
+
"@react-native-firebase/app",
|
|
12680
|
+
"@react-native-firebase/app-check",
|
|
12681
|
+
"@react-native-firebase/app-distribution",
|
|
12682
|
+
"@react-native-firebase/auth",
|
|
12683
|
+
"@react-native-firebase/crashlytics",
|
|
12684
|
+
"@react-native-firebase/database",
|
|
12685
|
+
"@react-native-firebase/firestore",
|
|
12686
|
+
"@react-native-firebase/functions",
|
|
12687
|
+
"@react-native-firebase/in-app-messaging",
|
|
12688
|
+
"@react-native-firebase/installations",
|
|
12689
|
+
"@react-native-firebase/messaging",
|
|
12690
|
+
"@react-native-firebase/ml",
|
|
12691
|
+
"@react-native-firebase/perf",
|
|
12692
|
+
"@react-native-firebase/remote-config",
|
|
12693
|
+
"@react-native-firebase/storage",
|
|
12694
|
+
"@react-native-google-signin/google-signin",
|
|
12695
|
+
"@react-native-masked-view/masked-view",
|
|
12696
|
+
"@react-native-menu/menu",
|
|
12697
|
+
"@react-native-ml-kit/barcode-scanning",
|
|
12698
|
+
"@react-native-ml-kit/face-detection",
|
|
12699
|
+
"@react-native-ml-kit/identify-languages",
|
|
12700
|
+
"@react-native-ml-kit/image-labeling",
|
|
12701
|
+
"@react-native-ml-kit/text-recognition",
|
|
12702
|
+
"@react-native-ml-kit/translate-text",
|
|
12703
|
+
"@react-native-picker/picker",
|
|
12704
|
+
"@react-native-runtimes/core",
|
|
12705
|
+
"@react-native-runtimes/state",
|
|
12706
|
+
"@react-native-segmented-control/segmented-control",
|
|
12707
|
+
"@react-native-seoul/naver-login",
|
|
12708
|
+
"@reactvision/react-viro",
|
|
12709
|
+
"@remobile/react-native-toast",
|
|
12710
|
+
"@renegades/react-native-tickle",
|
|
12711
|
+
"@rive-app/react-native",
|
|
12712
|
+
"@rn-org/react-native-geofencing",
|
|
12713
|
+
"@rn-org/react-native-shortcuts",
|
|
12714
|
+
"@rnmapbox/maps",
|
|
12715
|
+
"@rnw-community/react-native-payments",
|
|
12716
|
+
"@rocket.chat/mobile-crypto",
|
|
12717
|
+
"@roman.sytnyk/blur-app-in-recents",
|
|
12718
|
+
"@rudderstack/rudder-integration-amplitude-react-native",
|
|
12719
|
+
"@rudderstack/rudder-integration-appcenter-react-native",
|
|
12720
|
+
"@rudderstack/rudder-integration-appsflyer-react-native",
|
|
12721
|
+
"@rudderstack/rudder-integration-braze-react-native",
|
|
12722
|
+
"@rudderstack/rudder-integration-clevertap-react-native",
|
|
12723
|
+
"@rudderstack/rudder-integration-facebook-react-native",
|
|
12724
|
+
"@rudderstack/rudder-integration-firebase-react-native",
|
|
12725
|
+
"@rudderstack/rudder-integration-singular-react-native",
|
|
12726
|
+
"@rudderstack/rudder-plugin-db-encryption-react-native",
|
|
12727
|
+
"@rudderstack/rudder-sdk-react-native",
|
|
12728
|
+
"@s77rt/react-native-date-picker",
|
|
12729
|
+
"@sbaiahmed1/react-native-biometrics",
|
|
12730
|
+
"@sbaiahmed1/react-native-blur",
|
|
12731
|
+
"@sdcx/nested-scroll",
|
|
12732
|
+
"@sdcx/pull-to-refresh",
|
|
12733
|
+
"@segment/analytics-react-native",
|
|
12734
|
+
"@segment/sovran-react-native",
|
|
12735
|
+
"@sendbird/calls-react-native",
|
|
12736
|
+
"@sentry/react-native",
|
|
12737
|
+
"@shakebugs/react-native-shake",
|
|
12738
|
+
"@shayrn/react-native-android-phone-number-hint",
|
|
12739
|
+
"@shopify/checkout-sheet-kit",
|
|
12740
|
+
"@shopify/react-native-performance",
|
|
12741
|
+
"@shopify/react-native-skia",
|
|
12742
|
+
"@simform_solutions/react-native-audio-waveform",
|
|
12743
|
+
"@siteed/audio-studio",
|
|
12744
|
+
"@situm/react-native",
|
|
12745
|
+
"@sparkfabrik/react-native-idfa-aaid",
|
|
12746
|
+
"@splicer97/react-native-android-keyboard-adjust",
|
|
12747
|
+
"@splicer97/react-native-mytracker",
|
|
12748
|
+
"@stefanmartin/expo-video-compress",
|
|
12749
|
+
"@stefanmartin/expo-video-watermark",
|
|
12750
|
+
"@stream-io/video-react-native-sdk",
|
|
12751
|
+
"@stripe/stripe-identity-react-native",
|
|
12752
|
+
"@stripe/stripe-react-native",
|
|
12753
|
+
"@stripe/stripe-terminal-react-native",
|
|
12754
|
+
"@superfan-app/spotify-auth",
|
|
12755
|
+
"@supersami/rn-foreground-service",
|
|
12756
|
+
"@survicate/react-native-survicate",
|
|
12757
|
+
"@swan-io/react-native-browser",
|
|
12758
|
+
"@swmansion/react-native-bottom-sheet",
|
|
12759
|
+
"@thehale/react-native-keep-awake",
|
|
12760
|
+
"@turbopush/react-native-code-push",
|
|
12761
|
+
"@twilio/voice-react-native-sdk",
|
|
12762
|
+
"@ua/react-native-airship",
|
|
12763
|
+
"@uiw/react-native-alipay",
|
|
12764
|
+
"@universe/hashcash-native",
|
|
12765
|
+
"@use-voltra/android-client",
|
|
12766
|
+
"@use-voltra/ios-client",
|
|
12767
|
+
"@vokhuyet/react-native-concurrent-sound",
|
|
12768
|
+
"@vonovak/react-native-theme-control",
|
|
12769
|
+
"@walletconnect/react-native-compat",
|
|
12770
|
+
"@wwdrew/expo-android-shared-preferences",
|
|
12771
|
+
"@wwdrew/expo-spotify-sdk",
|
|
12772
|
+
"@xmartlabs/react-native-line",
|
|
12773
|
+
"@xmtp/react-native-sdk",
|
|
12774
|
+
"@zoontek/react-native-navigation-bar",
|
|
12775
|
+
"amazon-ivs-react-native-player",
|
|
12776
|
+
"anyline-ocr-react-native-module",
|
|
12777
|
+
"appcenter",
|
|
12778
|
+
"appcenter-analytics",
|
|
12779
|
+
"appcenter-crashes",
|
|
12780
|
+
"apple-health",
|
|
12781
|
+
"bitmovin-player-react-native",
|
|
12782
|
+
"burnt",
|
|
12783
|
+
"clevertap-react-native",
|
|
12784
|
+
"customerio-reactnative",
|
|
12785
|
+
"expo",
|
|
12786
|
+
"expo-age-range",
|
|
12787
|
+
"expo-alikit",
|
|
12788
|
+
"expo-aliyun-push",
|
|
12789
|
+
"expo-alternate-app-icons",
|
|
12790
|
+
"expo-android-pedometer",
|
|
12791
|
+
"expo-android-shared-preferences",
|
|
12792
|
+
"expo-app-integrity",
|
|
12793
|
+
"expo-app-intents",
|
|
12794
|
+
"expo-app-metrics",
|
|
12795
|
+
"expo-apple-authentication",
|
|
12796
|
+
"expo-application",
|
|
12797
|
+
"expo-asset",
|
|
12798
|
+
"expo-assistant-functions",
|
|
12799
|
+
"expo-audio",
|
|
12800
|
+
"expo-av",
|
|
12801
|
+
"expo-background-fetch",
|
|
12802
|
+
"expo-background-task",
|
|
12803
|
+
"expo-barcode",
|
|
12804
|
+
"expo-barcode-scanner",
|
|
12805
|
+
"expo-battery",
|
|
12806
|
+
"expo-beacon",
|
|
12807
|
+
"expo-better-auth-passkey",
|
|
12808
|
+
"expo-blob",
|
|
12809
|
+
"expo-blur",
|
|
12810
|
+
"expo-brightness",
|
|
12811
|
+
"expo-calendar",
|
|
12812
|
+
"expo-callkit-telecom",
|
|
12813
|
+
"expo-camera",
|
|
12814
|
+
"expo-cellular",
|
|
12815
|
+
"expo-click-outside",
|
|
12816
|
+
"expo-clipboard",
|
|
12817
|
+
"expo-constants",
|
|
12818
|
+
"expo-contacts",
|
|
12819
|
+
"expo-core-spotlight",
|
|
12820
|
+
"expo-crypto",
|
|
12821
|
+
"expo-dev-client",
|
|
12822
|
+
"expo-device",
|
|
12823
|
+
"expo-document-picker",
|
|
12824
|
+
"expo-document-scanner",
|
|
12825
|
+
"expo-drag-drop-content-view",
|
|
12826
|
+
"expo-dynamic-app-icon",
|
|
12827
|
+
"expo-eas-client",
|
|
12828
|
+
"expo-emoji-picker",
|
|
12829
|
+
"expo-esim-utils",
|
|
12830
|
+
"expo-file-system",
|
|
12831
|
+
"expo-finance-kit",
|
|
12832
|
+
"expo-font",
|
|
12833
|
+
"expo-foreground-actions",
|
|
12834
|
+
"expo-gaode-map",
|
|
12835
|
+
"expo-gaode-map-search",
|
|
12836
|
+
"expo-gl",
|
|
12837
|
+
"expo-glass-effect",
|
|
12838
|
+
"expo-haptics",
|
|
12839
|
+
"expo-hardware-buttons",
|
|
12840
|
+
"expo-health-connect",
|
|
12841
|
+
"expo-helium",
|
|
12842
|
+
"expo-hinge",
|
|
12843
|
+
"expo-iap",
|
|
12844
|
+
"expo-ignore-battery-optimizations",
|
|
12845
|
+
"expo-image",
|
|
12846
|
+
"expo-image-manipulator",
|
|
12847
|
+
"expo-image-picker",
|
|
12848
|
+
"expo-in-app-updates",
|
|
12849
|
+
"expo-insights",
|
|
12850
|
+
"expo-intent-launcher",
|
|
12851
|
+
"expo-ios-visual-blur",
|
|
12852
|
+
"expo-keep-awake",
|
|
12853
|
+
"expo-key-event",
|
|
12854
|
+
"expo-libvlc-player",
|
|
12855
|
+
"expo-linear-gradient",
|
|
12856
|
+
"expo-linking",
|
|
12857
|
+
"expo-liquid-glass-native",
|
|
12858
|
+
"expo-liquid-glass-view",
|
|
12859
|
+
"expo-live-activity",
|
|
12860
|
+
"expo-live-photo",
|
|
12861
|
+
"expo-local-authentication",
|
|
12862
|
+
"expo-localization",
|
|
12863
|
+
"expo-location",
|
|
12864
|
+
"expo-mail-composer",
|
|
12865
|
+
"expo-maps",
|
|
12866
|
+
"expo-media-control",
|
|
12867
|
+
"expo-media-library",
|
|
12868
|
+
"expo-mesh-gradient",
|
|
12869
|
+
"expo-modules-core",
|
|
12870
|
+
"expo-music-picker",
|
|
12871
|
+
"expo-native-alipay",
|
|
12872
|
+
"expo-native-emojis-popup",
|
|
12873
|
+
"expo-native-sheet-emojis",
|
|
12874
|
+
"expo-native-wechat",
|
|
12875
|
+
"expo-navigation-bar",
|
|
12876
|
+
"expo-network",
|
|
12877
|
+
"expo-network-addons",
|
|
12878
|
+
"expo-notifications",
|
|
12879
|
+
"expo-observe",
|
|
12880
|
+
"expo-paperkit",
|
|
12881
|
+
"expo-passkey",
|
|
12882
|
+
"expo-paste-input",
|
|
12883
|
+
"expo-pencilkit-ui",
|
|
12884
|
+
"expo-phone-number-hint",
|
|
12885
|
+
"expo-pip",
|
|
12886
|
+
"expo-pretext",
|
|
12887
|
+
"expo-print",
|
|
12888
|
+
"expo-privacy-sensitive",
|
|
12889
|
+
"expo-quick-actions",
|
|
12890
|
+
"expo-rich-input",
|
|
12891
|
+
"expo-roomplan",
|
|
12892
|
+
"expo-screen-capture",
|
|
12893
|
+
"expo-screen-corner-radius",
|
|
12894
|
+
"expo-screen-orientation",
|
|
12895
|
+
"expo-secure-store",
|
|
12896
|
+
"expo-selectable-text",
|
|
12897
|
+
"expo-sensors",
|
|
12898
|
+
"expo-share-extension",
|
|
12899
|
+
"expo-share-intent",
|
|
12900
|
+
"expo-sharing",
|
|
12901
|
+
"expo-shazamkit",
|
|
12902
|
+
"expo-sms",
|
|
12903
|
+
"expo-speech",
|
|
12904
|
+
"expo-speech-recognition",
|
|
12905
|
+
"expo-splash-screen",
|
|
12906
|
+
"expo-sqlite",
|
|
12907
|
+
"expo-squircle-view",
|
|
12908
|
+
"expo-store-review",
|
|
12909
|
+
"expo-stream-audio",
|
|
12910
|
+
"expo-superwall",
|
|
12911
|
+
"expo-symbols",
|
|
12912
|
+
"expo-system-ui",
|
|
12913
|
+
"expo-targets",
|
|
12914
|
+
"expo-task-manager",
|
|
12915
|
+
"expo-testflight",
|
|
12916
|
+
"expo-tracking-transparency",
|
|
12917
|
+
"expo-translate-text",
|
|
12918
|
+
"expo-truecaller",
|
|
12919
|
+
"expo-tvos-search",
|
|
12920
|
+
"expo-updates",
|
|
12921
|
+
"expo-vector-search",
|
|
12922
|
+
"expo-video",
|
|
12923
|
+
"expo-video-metadata",
|
|
12924
|
+
"expo-video-thumbnails",
|
|
12925
|
+
"expo-web-browser",
|
|
12926
|
+
"expo-wechat",
|
|
12927
|
+
"expo-widgets",
|
|
12928
|
+
"expo-winter-fetch",
|
|
12929
|
+
"expo-winter-formdata",
|
|
12930
|
+
"freerasp-react-native",
|
|
12931
|
+
"group-ib-fp",
|
|
12932
|
+
"gt-react-native",
|
|
12933
|
+
"jail-monkey",
|
|
12934
|
+
"klaviyo-react-native-sdk",
|
|
12935
|
+
"llama.rn",
|
|
12936
|
+
"loro-react-native",
|
|
12937
|
+
"lottie-react-native",
|
|
12938
|
+
"mixpanel-react-native",
|
|
12939
|
+
"munim-bluetooth",
|
|
12940
|
+
"navigation-react-native",
|
|
12941
|
+
"newrelic-react-native-agent",
|
|
12942
|
+
"one",
|
|
12943
|
+
"ping-react-native",
|
|
12944
|
+
"posthog-react-native-session-replay",
|
|
12945
|
+
"pushy-react-native",
|
|
12946
|
+
"react-native",
|
|
12947
|
+
"react-native-a11y",
|
|
12948
|
+
"react-native-a11y-container",
|
|
12949
|
+
"react-native-a11y-order",
|
|
12950
|
+
"react-native-actions-shortcuts",
|
|
12951
|
+
"react-native-adapty",
|
|
12952
|
+
"react-native-add-calendar-event",
|
|
12953
|
+
"react-native-adjust",
|
|
12954
|
+
"react-native-admob-native-ads",
|
|
12955
|
+
"react-native-advanced-input-mask",
|
|
12956
|
+
"react-native-aes-crypto",
|
|
12957
|
+
"react-native-aes-gcm-crypto",
|
|
12958
|
+
"react-native-age-signals",
|
|
12959
|
+
"react-native-agora",
|
|
12960
|
+
"react-native-amap3d",
|
|
12961
|
+
"react-native-amplitude-analytics",
|
|
12962
|
+
"react-native-android-location-enabler",
|
|
12963
|
+
"react-native-android-widget",
|
|
12964
|
+
"react-native-animateable-text",
|
|
12965
|
+
"react-native-animated-observer",
|
|
12966
|
+
"react-native-app-attest",
|
|
12967
|
+
"react-native-app-auth",
|
|
12968
|
+
"react-native-app-clip",
|
|
12969
|
+
"react-native-app-logs",
|
|
12970
|
+
"react-native-app-review",
|
|
12971
|
+
"react-native-appearance-control",
|
|
12972
|
+
"react-native-apple-ads-attribution",
|
|
12973
|
+
"react-native-apple-llm",
|
|
12974
|
+
"react-native-appsflyer",
|
|
12975
|
+
"react-native-appstack-sdk",
|
|
12976
|
+
"react-native-ar-preview",
|
|
12977
|
+
"react-native-audio-api",
|
|
12978
|
+
"react-native-auth0",
|
|
12979
|
+
"react-native-authsignal",
|
|
12980
|
+
"react-native-auto-skeleton",
|
|
12981
|
+
"react-native-avoid-softinput",
|
|
12982
|
+
"react-native-awesome-card-io",
|
|
12983
|
+
"react-native-azure-auth",
|
|
12984
|
+
"react-native-background-actions",
|
|
12985
|
+
"react-native-background-fetch",
|
|
12986
|
+
"react-native-background-geolocation",
|
|
12987
|
+
"react-native-background-job",
|
|
12988
|
+
"react-native-background-task",
|
|
12989
|
+
"react-native-background-timer",
|
|
12990
|
+
"react-native-background-upload",
|
|
12991
|
+
"react-native-barcode-creator",
|
|
12992
|
+
"react-native-bare-kit",
|
|
12993
|
+
"react-native-beacon-kit",
|
|
12994
|
+
"react-native-better-clustering",
|
|
12995
|
+
"react-native-better-maps",
|
|
12996
|
+
"react-native-biometrics",
|
|
12997
|
+
"react-native-blasted-image",
|
|
12998
|
+
"react-native-ble-manager",
|
|
12999
|
+
"react-native-ble-nitro",
|
|
13000
|
+
"react-native-ble-plx",
|
|
13001
|
+
"react-native-blob-courier",
|
|
13002
|
+
"react-native-blob-util",
|
|
13003
|
+
"react-native-bluetooth-classic",
|
|
13004
|
+
"react-native-bluetooth-state-manager",
|
|
13005
|
+
"react-native-bluetooth-status",
|
|
13006
|
+
"react-native-blur-view",
|
|
13007
|
+
"react-native-blurhash",
|
|
13008
|
+
"react-native-bootsplash",
|
|
13009
|
+
"react-native-bottom-action-sheet",
|
|
13010
|
+
"react-native-bottom-sheet-behavior",
|
|
13011
|
+
"react-native-bottom-tabs",
|
|
13012
|
+
"react-native-branch",
|
|
13013
|
+
"react-native-calendar-events",
|
|
13014
|
+
"react-native-callkeep",
|
|
13015
|
+
"react-native-camera-kit",
|
|
13016
|
+
"react-native-capture-protection",
|
|
13017
|
+
"react-native-cardscan",
|
|
13018
|
+
"react-native-carplay",
|
|
13019
|
+
"react-native-cashfree-pg-sdk",
|
|
13020
|
+
"react-native-cesium",
|
|
13021
|
+
"react-native-change-icon",
|
|
13022
|
+
"react-native-charts-wrapper",
|
|
13023
|
+
"react-native-cloud-storage",
|
|
13024
|
+
"react-native-cloud-store",
|
|
13025
|
+
"react-native-code-push",
|
|
13026
|
+
"react-native-color-picker-ios",
|
|
13027
|
+
"react-native-compass-heading",
|
|
13028
|
+
"react-native-compressor",
|
|
13029
|
+
"react-native-config",
|
|
13030
|
+
"react-native-config-reader",
|
|
13031
|
+
"react-native-contacts",
|
|
13032
|
+
"react-native-context-menu-view",
|
|
13033
|
+
"react-native-cos-sdk",
|
|
13034
|
+
"react-native-create-thumbnail",
|
|
13035
|
+
"react-native-credentials-manager",
|
|
13036
|
+
"react-native-custom-splash",
|
|
13037
|
+
"react-native-customized-image-picker",
|
|
13038
|
+
"react-native-dark-mode",
|
|
13039
|
+
"react-native-date-picker",
|
|
13040
|
+
"react-native-deepgram",
|
|
13041
|
+
"react-native-default-preference",
|
|
13042
|
+
"react-native-detector",
|
|
13043
|
+
"react-native-device-attest",
|
|
13044
|
+
"react-native-device-country",
|
|
13045
|
+
"react-native-device-info",
|
|
13046
|
+
"react-native-dialogs",
|
|
13047
|
+
"react-native-document-picker",
|
|
13048
|
+
"react-native-document-picker-macos",
|
|
13049
|
+
"react-native-document-scanner",
|
|
13050
|
+
"react-native-document-scanner-plugin",
|
|
13051
|
+
"react-native-drop-shadow",
|
|
13052
|
+
"react-native-drum-picker",
|
|
13053
|
+
"react-native-dynamic-app-icon",
|
|
13054
|
+
"react-native-earl-thermal-printer",
|
|
13055
|
+
"react-native-ease",
|
|
13056
|
+
"react-native-edge-fade",
|
|
13057
|
+
"react-native-edge-to-edge",
|
|
13058
|
+
"react-native-emoji-popup",
|
|
13059
|
+
"react-native-enriched",
|
|
13060
|
+
"react-native-enriched-html",
|
|
13061
|
+
"react-native-enriched-markdown",
|
|
13062
|
+
"react-native-events",
|
|
13063
|
+
"react-native-exception-handler",
|
|
13064
|
+
"react-native-executorch",
|
|
13065
|
+
"react-native-exit-app",
|
|
13066
|
+
"react-native-expo-braintree",
|
|
13067
|
+
"react-native-external-display",
|
|
13068
|
+
"react-native-external-keyboard",
|
|
13069
|
+
"react-native-extra-dimensions-android",
|
|
13070
|
+
"react-native-fabric",
|
|
13071
|
+
"react-native-fast-image",
|
|
13072
|
+
"react-native-fast-io",
|
|
13073
|
+
"react-native-fast-opencv",
|
|
13074
|
+
"react-native-fast-secure-storage",
|
|
13075
|
+
"react-native-fast-shadow",
|
|
13076
|
+
"react-native-fast-squircle",
|
|
13077
|
+
"react-native-fast-tflite",
|
|
13078
|
+
"react-native-fast-trie",
|
|
13079
|
+
"react-native-fbads",
|
|
13080
|
+
"react-native-fbsdk-next",
|
|
13081
|
+
"react-native-fcm",
|
|
13082
|
+
"react-native-filament",
|
|
13083
|
+
"react-native-file-access",
|
|
13084
|
+
"react-native-file-logger",
|
|
13085
|
+
"react-native-file-selector",
|
|
13086
|
+
"react-native-file-viewer",
|
|
13087
|
+
"react-native-file-viewer-turbo",
|
|
13088
|
+
"react-native-fileupload",
|
|
13089
|
+
"react-native-find-local-devices",
|
|
13090
|
+
"react-native-fingerprint-scanner",
|
|
13091
|
+
"react-native-floating-label-input",
|
|
13092
|
+
"react-native-fs",
|
|
13093
|
+
"react-native-fs-turbo",
|
|
13094
|
+
"react-native-geo-fencing",
|
|
13095
|
+
"react-native-geolocation-service",
|
|
13096
|
+
"react-native-gesture-handler",
|
|
13097
|
+
"react-native-get-device-locale",
|
|
13098
|
+
"react-native-get-location",
|
|
13099
|
+
"react-native-get-random-values",
|
|
13100
|
+
"react-native-google-auth",
|
|
13101
|
+
"react-native-google-cast",
|
|
13102
|
+
"react-native-google-fit",
|
|
13103
|
+
"react-native-google-maps-plus",
|
|
13104
|
+
"react-native-google-mobile-ads",
|
|
13105
|
+
"react-native-google-places",
|
|
13106
|
+
"react-native-google-places-sdk",
|
|
13107
|
+
"react-native-google-play-install-referrer",
|
|
13108
|
+
"react-native-gzip",
|
|
13109
|
+
"react-native-haptic-feedback",
|
|
13110
|
+
"react-native-hapticlabs",
|
|
13111
|
+
"react-native-headphone-detection",
|
|
13112
|
+
"react-native-health",
|
|
13113
|
+
"react-native-health-connect",
|
|
13114
|
+
"react-native-here-explore",
|
|
13115
|
+
"react-native-hole-view",
|
|
13116
|
+
"react-native-home-indicator",
|
|
13117
|
+
"react-native-hotkeys",
|
|
13118
|
+
"react-native-html-to-pdf",
|
|
13119
|
+
"react-native-http-bridge-refurbished",
|
|
13120
|
+
"react-native-hyper-markdown",
|
|
13121
|
+
"react-native-i18n",
|
|
13122
|
+
"react-native-iap",
|
|
13123
|
+
"react-native-iaphub",
|
|
13124
|
+
"react-native-icloud-kit",
|
|
13125
|
+
"react-native-idle-timer",
|
|
13126
|
+
"react-native-image-colors",
|
|
13127
|
+
"react-native-image-compression-kit",
|
|
13128
|
+
"react-native-image-crop-picker",
|
|
13129
|
+
"react-native-image-marker",
|
|
13130
|
+
"react-native-image-picker",
|
|
13131
|
+
"react-native-image-size",
|
|
13132
|
+
"react-native-image-stitcher",
|
|
13133
|
+
"react-native-in-app-review",
|
|
13134
|
+
"react-native-in-app-utils",
|
|
13135
|
+
"react-native-inappbrowser-nitro",
|
|
13136
|
+
"react-native-inappbrowser-reborn",
|
|
13137
|
+
"react-native-incall-manager",
|
|
13138
|
+
"react-native-interception-webview",
|
|
13139
|
+
"react-native-intercom",
|
|
13140
|
+
"react-native-ios-context-menu",
|
|
13141
|
+
"react-native-ios-modal",
|
|
13142
|
+
"react-native-ios-translate-sheet",
|
|
13143
|
+
"react-native-ios-translate-tasks",
|
|
13144
|
+
"react-native-ios-utilities",
|
|
13145
|
+
"react-native-job-queue",
|
|
13146
|
+
"react-native-jw-media-player",
|
|
13147
|
+
"react-native-keep-awake",
|
|
13148
|
+
"react-native-key-command",
|
|
13149
|
+
"react-native-key-pair",
|
|
13150
|
+
"react-native-keyboard-controller",
|
|
13151
|
+
"react-native-keyboard-manager",
|
|
13152
|
+
"react-native-keychain",
|
|
13153
|
+
"react-native-keyevent",
|
|
13154
|
+
"react-native-keys",
|
|
13155
|
+
"react-native-launch-arguments",
|
|
13156
|
+
"react-native-leaflet-view",
|
|
13157
|
+
"react-native-legal",
|
|
13158
|
+
"react-native-libsodium",
|
|
13159
|
+
"react-native-linear-gradient",
|
|
13160
|
+
"react-native-linkedin-login",
|
|
13161
|
+
"react-native-liquid-glassmorphism",
|
|
13162
|
+
"react-native-litert-lm",
|
|
13163
|
+
"react-native-llm-mediapipe",
|
|
13164
|
+
"react-native-loader-kit",
|
|
13165
|
+
"react-native-localization",
|
|
13166
|
+
"react-native-localization-settings",
|
|
13167
|
+
"react-native-localize",
|
|
13168
|
+
"react-native-location",
|
|
13169
|
+
"react-native-location-enabler",
|
|
13170
|
+
"react-native-mail",
|
|
13171
|
+
"react-native-maps",
|
|
13172
|
+
"react-native-material-palette",
|
|
13173
|
+
"react-native-mdm-config",
|
|
13174
|
+
"react-native-measure-text",
|
|
13175
|
+
"react-native-mixpanel",
|
|
13176
|
+
"react-native-mmkv",
|
|
13177
|
+
"react-native-mmkv-storage",
|
|
13178
|
+
"react-native-moengage",
|
|
13179
|
+
"react-native-month-year-picker",
|
|
13180
|
+
"react-native-moyasar-apple-pay",
|
|
13181
|
+
"react-native-moyasar-sdk",
|
|
13182
|
+
"react-native-multiple-modals",
|
|
13183
|
+
"react-native-nano-icons",
|
|
13184
|
+
"react-native-navigation",
|
|
13185
|
+
"react-native-navigation-bar-color",
|
|
13186
|
+
"react-native-navigation-mode",
|
|
13187
|
+
"react-native-network-info",
|
|
13188
|
+
"react-native-nfc-manager",
|
|
13189
|
+
"react-native-nitro-ark",
|
|
13190
|
+
"react-native-nitro-audio-manager",
|
|
13191
|
+
"react-native-nitro-buffer",
|
|
13192
|
+
"react-native-nitro-cloud-uploader",
|
|
13193
|
+
"react-native-nitro-cookies",
|
|
13194
|
+
"react-native-nitro-crypto",
|
|
13195
|
+
"react-native-nitro-device-info",
|
|
13196
|
+
"react-native-nitro-dns",
|
|
13197
|
+
"react-native-nitro-fetch",
|
|
13198
|
+
"react-native-nitro-file-system",
|
|
13199
|
+
"react-native-nitro-fs",
|
|
13200
|
+
"react-native-nitro-geocoder",
|
|
13201
|
+
"react-native-nitro-geolocation",
|
|
13202
|
+
"react-native-nitro-google-signin",
|
|
13203
|
+
"react-native-nitro-haptics",
|
|
13204
|
+
"react-native-nitro-http-server",
|
|
13205
|
+
"react-native-nitro-image",
|
|
13206
|
+
"react-native-nitro-markdown",
|
|
13207
|
+
"react-native-nitro-modules",
|
|
13208
|
+
"react-native-nitro-net",
|
|
13209
|
+
"react-native-nitro-network-info",
|
|
13210
|
+
"react-native-nitro-ota",
|
|
13211
|
+
"react-native-nitro-player",
|
|
13212
|
+
"react-native-nitro-pose-exercises",
|
|
13213
|
+
"react-native-nitro-rtmp-publisher",
|
|
13214
|
+
"react-native-nitro-screen-recorder",
|
|
13215
|
+
"react-native-nitro-sensors-kit",
|
|
13216
|
+
"react-native-nitro-sfsymbols",
|
|
13217
|
+
"react-native-nitro-sound",
|
|
13218
|
+
"react-native-nitro-speech",
|
|
13219
|
+
"react-native-nitro-sqlite",
|
|
13220
|
+
"react-native-nitro-sse",
|
|
13221
|
+
"react-native-nitro-text-decoder",
|
|
13222
|
+
"react-native-nitro-toast",
|
|
13223
|
+
"react-native-nitro-tor",
|
|
13224
|
+
"react-native-nitro-totp",
|
|
13225
|
+
"react-native-nitro-vision-kit",
|
|
13226
|
+
"react-native-nitro-web-image",
|
|
13227
|
+
"react-native-nitro-websockets",
|
|
13228
|
+
"react-native-node-api",
|
|
13229
|
+
"react-native-notification-badge",
|
|
13230
|
+
"react-native-notification-sounds",
|
|
13231
|
+
"react-native-notifications",
|
|
13232
|
+
"react-native-notify-kit",
|
|
13233
|
+
"react-native-oauth",
|
|
13234
|
+
"react-native-ometria",
|
|
13235
|
+
"react-native-omni",
|
|
13236
|
+
"react-native-onesignal",
|
|
13237
|
+
"react-native-openai",
|
|
13238
|
+
"react-native-orientation-director",
|
|
13239
|
+
"react-native-orientation-locker",
|
|
13240
|
+
"react-native-orientation-manager",
|
|
13241
|
+
"react-native-orientation-turbo",
|
|
13242
|
+
"react-native-os",
|
|
13243
|
+
"react-native-ota-hot-update",
|
|
13244
|
+
"react-native-otp-verify",
|
|
13245
|
+
"react-native-package-checker",
|
|
13246
|
+
"react-native-pager-view",
|
|
13247
|
+
"react-native-palette-full",
|
|
13248
|
+
"react-native-passkey",
|
|
13249
|
+
"react-native-payments",
|
|
13250
|
+
"react-native-paypal",
|
|
13251
|
+
"react-native-pdf",
|
|
13252
|
+
"react-native-pdf-from-image",
|
|
13253
|
+
"react-native-pdf-jsi",
|
|
13254
|
+
"react-native-pdf-light",
|
|
13255
|
+
"react-native-pdf-renderer",
|
|
13256
|
+
"react-native-pdf-view",
|
|
13257
|
+
"react-native-performance",
|
|
13258
|
+
"react-native-performance-limiter",
|
|
13259
|
+
"react-native-permissions",
|
|
13260
|
+
"react-native-perspective-image-cropper",
|
|
13261
|
+
"react-native-photo-editor",
|
|
13262
|
+
"react-native-photo-manipulator",
|
|
13263
|
+
"react-native-photo-view",
|
|
13264
|
+
"react-native-photo-view-ex",
|
|
13265
|
+
"react-native-photoeditorsdk",
|
|
13266
|
+
"react-native-pinchable",
|
|
13267
|
+
"react-native-ping",
|
|
13268
|
+
"react-native-pkce-challenge",
|
|
13269
|
+
"react-native-plaid-link-sdk",
|
|
13270
|
+
"react-native-platform-components",
|
|
13271
|
+
"react-native-play-age-range-declaration",
|
|
13272
|
+
"react-native-pretty-toast",
|
|
13273
|
+
"react-native-print",
|
|
13274
|
+
"react-native-private-screen",
|
|
13275
|
+
"react-native-prompt-android",
|
|
13276
|
+
"react-native-pulsar",
|
|
13277
|
+
"react-native-purchasely",
|
|
13278
|
+
"react-native-purchases",
|
|
13279
|
+
"react-native-purchases-ui",
|
|
13280
|
+
"react-native-pure-jwt",
|
|
13281
|
+
"react-native-push-notification",
|
|
13282
|
+
"react-native-qr-decode-image-camera",
|
|
13283
|
+
"react-native-qr-kit",
|
|
13284
|
+
"react-native-quick-actions",
|
|
13285
|
+
"react-native-quick-base64",
|
|
13286
|
+
"react-native-quick-crypto",
|
|
13287
|
+
"react-native-quick-sqlite",
|
|
13288
|
+
"react-native-radial-gradient",
|
|
13289
|
+
"react-native-randombytes",
|
|
13290
|
+
"react-native-rate",
|
|
13291
|
+
"react-native-rate-app",
|
|
13292
|
+
"react-native-razorpay",
|
|
13293
|
+
"react-native-reanimated",
|
|
13294
|
+
"react-native-receive-sharing-intent",
|
|
13295
|
+
"react-native-record-screen",
|
|
13296
|
+
"react-native-restart",
|
|
13297
|
+
"react-native-restart-newarch",
|
|
13298
|
+
"react-native-rn-in-app-update",
|
|
13299
|
+
"react-native-rsa-native",
|
|
13300
|
+
"react-native-rsa-signer",
|
|
13301
|
+
"react-native-safari-view",
|
|
13302
|
+
"react-native-safe-area-context",
|
|
13303
|
+
"react-native-screen-choreography",
|
|
13304
|
+
"react-native-screen-corner-radius",
|
|
13305
|
+
"react-native-screenguard",
|
|
13306
|
+
"react-native-screens",
|
|
13307
|
+
"react-native-screenshot-aware",
|
|
13308
|
+
"react-native-screenshot-prevent",
|
|
13309
|
+
"react-native-search-bar",
|
|
13310
|
+
"react-native-secure-key-store",
|
|
13311
|
+
"react-native-securerandom",
|
|
13312
|
+
"react-native-select-contact",
|
|
13313
|
+
"react-native-send-intent",
|
|
13314
|
+
"react-native-sensitive-info",
|
|
13315
|
+
"react-native-sensors",
|
|
13316
|
+
"react-native-settings",
|
|
13317
|
+
"react-native-sfsymbols",
|
|
13318
|
+
"react-native-shake",
|
|
13319
|
+
"react-native-share",
|
|
13320
|
+
"react-native-share-menu",
|
|
13321
|
+
"react-native-shared-element",
|
|
13322
|
+
"react-native-shared-group-preferences",
|
|
13323
|
+
"react-native-shareplay",
|
|
13324
|
+
"react-native-shiki-engine",
|
|
13325
|
+
"react-native-showtime",
|
|
13326
|
+
"react-native-signature-capture",
|
|
13327
|
+
"react-native-simple-biometrics",
|
|
13328
|
+
"react-native-simple-toast",
|
|
13329
|
+
"react-native-siri-shortcut",
|
|
13330
|
+
"react-native-smart-splash-screen",
|
|
13331
|
+
"react-native-snackbar",
|
|
13332
|
+
"react-native-social-share",
|
|
13333
|
+
"react-native-sound",
|
|
13334
|
+
"react-native-sound-player",
|
|
13335
|
+
"react-native-speech-recognition-kit",
|
|
13336
|
+
"react-native-spinkit",
|
|
13337
|
+
"react-native-splash-screen",
|
|
13338
|
+
"react-native-splash-screen-newarch",
|
|
13339
|
+
"react-native-splash-view",
|
|
13340
|
+
"react-native-spotify-remote",
|
|
13341
|
+
"react-native-spotlight-search",
|
|
13342
|
+
"react-native-sqlite-2",
|
|
13343
|
+
"react-native-sqlite-storage",
|
|
13344
|
+
"react-native-ssl-manager",
|
|
13345
|
+
"react-native-ssl-public-key-pinning",
|
|
13346
|
+
"react-native-stallion",
|
|
13347
|
+
"react-native-star-io10",
|
|
13348
|
+
"react-native-store-age-signals-native-modules",
|
|
13349
|
+
"react-native-store-review",
|
|
13350
|
+
"react-native-svg",
|
|
13351
|
+
"react-native-system-bars",
|
|
13352
|
+
"react-native-system-navigation-bar",
|
|
13353
|
+
"react-native-system-setting",
|
|
13354
|
+
"react-native-tableview",
|
|
13355
|
+
"react-native-tcp",
|
|
13356
|
+
"react-native-tcp-socket",
|
|
13357
|
+
"react-native-teleport",
|
|
13358
|
+
"react-native-tenjin",
|
|
13359
|
+
"react-native-testfairy",
|
|
13360
|
+
"react-native-text-input-mask",
|
|
13361
|
+
"react-native-text-size",
|
|
13362
|
+
"react-native-theme-switch-animation",
|
|
13363
|
+
"react-native-theoplayer",
|
|
13364
|
+
"react-native-thermal-receipt-printer",
|
|
13365
|
+
"react-native-tiktok",
|
|
13366
|
+
"react-native-tiktok-business-sdk",
|
|
13367
|
+
"react-native-timezone",
|
|
13368
|
+
"react-native-tooltip",
|
|
13369
|
+
"react-native-tor",
|
|
13370
|
+
"react-native-touch-id",
|
|
13371
|
+
"react-native-track-player",
|
|
13372
|
+
"react-native-tracking-transparency",
|
|
13373
|
+
"react-native-transformer-text-input",
|
|
13374
|
+
"react-native-ttlock",
|
|
13375
|
+
"react-native-tts",
|
|
13376
|
+
"react-native-tuner-engine",
|
|
13377
|
+
"react-native-turbo-haptics",
|
|
13378
|
+
"react-native-turbo-image",
|
|
13379
|
+
"react-native-turbo-lnd",
|
|
13380
|
+
"react-native-turbo-mock-location-detector",
|
|
13381
|
+
"react-native-turbo-preferences",
|
|
13382
|
+
"react-native-twilio-video-webrtc",
|
|
13383
|
+
"react-native-udp",
|
|
13384
|
+
"react-native-ui-lib",
|
|
13385
|
+
"react-native-uitextview",
|
|
13386
|
+
"react-native-ulid-jsi",
|
|
13387
|
+
"react-native-unistyles",
|
|
13388
|
+
"react-native-update",
|
|
13389
|
+
"react-native-urovo",
|
|
13390
|
+
"react-native-ux-cam",
|
|
13391
|
+
"react-native-variable-blur",
|
|
13392
|
+
"react-native-vector-icons",
|
|
13393
|
+
"react-native-version-check",
|
|
13394
|
+
"react-native-version-info",
|
|
13395
|
+
"react-native-version-number",
|
|
13396
|
+
"react-native-video",
|
|
13397
|
+
"react-native-video-cache",
|
|
13398
|
+
"react-native-video-duration",
|
|
13399
|
+
"react-native-video-processing",
|
|
13400
|
+
"react-native-video-provider",
|
|
13401
|
+
"react-native-video-trim",
|
|
13402
|
+
"react-native-videoeditorsdk",
|
|
13403
|
+
"react-native-view-pdf",
|
|
13404
|
+
"react-native-view-recorder",
|
|
13405
|
+
"react-native-view-shot",
|
|
13406
|
+
"react-native-vision-camera",
|
|
13407
|
+
"react-native-vision-camera-barcode-scanner",
|
|
13408
|
+
"react-native-vision-camera-face-detector",
|
|
13409
|
+
"react-native-vision-camera-image-labeler",
|
|
13410
|
+
"react-native-vision-camera-location",
|
|
13411
|
+
"react-native-vision-camera-resizer",
|
|
13412
|
+
"react-native-vision-camera-text-recognition",
|
|
13413
|
+
"react-native-vision-camera-worklets",
|
|
13414
|
+
"react-native-vlc-media-player",
|
|
13415
|
+
"react-native-voip-push-notification",
|
|
13416
|
+
"react-native-volume-manager",
|
|
13417
|
+
"react-native-vosk",
|
|
13418
|
+
"react-native-wallet-manager",
|
|
13419
|
+
"react-native-wallet-pass",
|
|
13420
|
+
"react-native-watch-connectivity",
|
|
13421
|
+
"react-native-wear-connectivity",
|
|
13422
|
+
"react-native-web-serial-api",
|
|
13423
|
+
"react-native-webgpu",
|
|
13424
|
+
"react-native-webp-converter",
|
|
13425
|
+
"react-native-webp-format",
|
|
13426
|
+
"react-native-webrtc",
|
|
13427
|
+
"react-native-webview",
|
|
13428
|
+
"react-native-wechat-lib",
|
|
13429
|
+
"react-native-wheel-pick",
|
|
13430
|
+
"react-native-wheel-picker-android",
|
|
13431
|
+
"react-native-whip-whep",
|
|
13432
|
+
"react-native-widget-picker",
|
|
13433
|
+
"react-native-widgetkit",
|
|
13434
|
+
"react-native-wifi-p2p",
|
|
13435
|
+
"react-native-wifi-reborn",
|
|
13436
|
+
"react-native-window-view",
|
|
13437
|
+
"react-native-windows",
|
|
13438
|
+
"react-native-windows-hello",
|
|
13439
|
+
"react-native-wordpress-editor",
|
|
13440
|
+
"react-native-worklets",
|
|
13441
|
+
"react-native-worklets-core",
|
|
13442
|
+
"react-native-xaml",
|
|
13443
|
+
"react-native-xxhash",
|
|
13444
|
+
"react-native-youtube",
|
|
13445
|
+
"react-native-zeroconf",
|
|
13446
|
+
"react-native-zip-archive",
|
|
13447
|
+
"realm",
|
|
13448
|
+
"rive-react-native",
|
|
13449
|
+
"rn-apple-healthkit",
|
|
13450
|
+
"rn-card-scanner",
|
|
13451
|
+
"rn-date-format",
|
|
13452
|
+
"rn-fade-wrapper",
|
|
13453
|
+
"rn-fetch-blob",
|
|
13454
|
+
"rn-mlkit-ocr",
|
|
13455
|
+
"rn-qr-generator",
|
|
13456
|
+
"rn-secure-storage",
|
|
13457
|
+
"rn-watch-connect",
|
|
13458
|
+
"rn-zendesk",
|
|
13459
|
+
"rollbar-react-native",
|
|
13460
|
+
"scandit-react-native-datacapture-barcode",
|
|
13461
|
+
"scandit-react-native-datacapture-core",
|
|
13462
|
+
"scandit-react-native-datacapture-id",
|
|
13463
|
+
"scandit-react-native-datacapture-label",
|
|
13464
|
+
"scandit-react-native-datacapture-label-text",
|
|
13465
|
+
"scandit-react-native-datacapture-parser",
|
|
13466
|
+
"sift-react-native",
|
|
13467
|
+
"sp-react-native-in-app-updates",
|
|
13468
|
+
"stream-chat-expo",
|
|
13469
|
+
"stream-chat-react-native",
|
|
13470
|
+
"swiftui-react-native",
|
|
13471
|
+
"uws-react-native",
|
|
13472
|
+
"vision-camera-cropper",
|
|
13473
|
+
"vision-camera-dynamsoft-document-normalizer",
|
|
13474
|
+
"vision-camera-ocr-plugin",
|
|
13475
|
+
"vision-camera-zxing",
|
|
13476
|
+
"whisper.rn"
|
|
13477
|
+
];
|
|
13478
|
+
var NATIVE_RUNTIME_PACKAGE_NAMES = [
|
|
13479
|
+
...NATIVE_STUB_PACKAGE_NAMES,
|
|
13480
|
+
...LIGHT_NATIVE_PACKAGE_NAMES,
|
|
13481
|
+
"@ammarahmed/react-native-background-fetch",
|
|
13482
|
+
"@bsky.app/react-native-uitextview",
|
|
13483
|
+
"@bsky.app/video",
|
|
13484
|
+
"@datadog/mobile-react-native-webview",
|
|
13485
|
+
"@haileyok/bluesky-video",
|
|
13486
|
+
"@react-native-vector-icons/get-image",
|
|
13487
|
+
"@react-navigation/native",
|
|
13488
|
+
"@tamagui/native-registry",
|
|
13489
|
+
"@uniswap/ethers-rs-mobile",
|
|
13490
|
+
"@valora/react-native-keychain",
|
|
13491
|
+
"expo-router",
|
|
13492
|
+
"react-native-app-control",
|
|
13493
|
+
"react-native-blue-crypto",
|
|
13494
|
+
"react-native-nitro-base64",
|
|
13495
|
+
"react-native-nitro-gzip",
|
|
13496
|
+
"react-native-sectioned-slider"
|
|
13497
|
+
];
|
|
13498
|
+
|
|
13499
|
+
// src/installed-package-versions.ts
|
|
11015
13500
|
function readInstalledPackage(projectRoot, name2) {
|
|
11016
13501
|
let dir = projectRoot;
|
|
11017
13502
|
for (; ; ) {
|
|
@@ -11051,9 +13536,9 @@ function readInstalledNativePackageVersions(projectRoot) {
|
|
|
11051
13536
|
const nativeNames = /* @__PURE__ */ new Set();
|
|
11052
13537
|
for (const specifier of [
|
|
11053
13538
|
"react-native",
|
|
11054
|
-
...
|
|
11055
|
-
...
|
|
11056
|
-
...Object.values(
|
|
13539
|
+
...NATIVE_RUNTIME_PACKAGE_NAMES,
|
|
13540
|
+
...LAZY_STUB_PATTERNS,
|
|
13541
|
+
...Object.values(COMPAT_STUBS).map((entry) => entry.specifier)
|
|
11057
13542
|
]) {
|
|
11058
13543
|
const name2 = extractPackageFromPath(`node_modules/${specifier}`);
|
|
11059
13544
|
if (name2) nativeNames.add(name2);
|
|
@@ -11170,6 +13655,7 @@ function readPackageFile(root, file, maxBytes) {
|
|
|
11170
13655
|
}
|
|
11171
13656
|
|
|
11172
13657
|
// src/swift-submit.ts
|
|
13658
|
+
init_is_record();
|
|
11173
13659
|
var SWIFT_PACKAGE_PATH = "/__peach/swift-package/";
|
|
11174
13660
|
var SWIFT_HMR_PATH = "/__peach/swift-hmr";
|
|
11175
13661
|
var DEFAULT_SWIFT_COMPILE_BUILD_MS = 10 * 6e4;
|
|
@@ -11915,36 +14401,9 @@ function peachPlugin(options = {}) {
|
|
|
11915
14401
|
// src/metro-plugin.ts
|
|
11916
14402
|
var import_fs6 = __toESM(require("fs"), 1);
|
|
11917
14403
|
var import_module2 = require("module");
|
|
11918
|
-
var
|
|
14404
|
+
var import_node_crypto7 = require("node:crypto");
|
|
11919
14405
|
var import_path5 = __toESM(require("path"), 1);
|
|
11920
|
-
|
|
11921
|
-
// ../peach-engine/src/platform/adapter.ts
|
|
11922
|
-
var IOS_ADAPTER = Object.freeze({
|
|
11923
|
-
id: "ios",
|
|
11924
|
-
displayName: "iOS",
|
|
11925
|
-
isIOS: true,
|
|
11926
|
-
isAndroid: false,
|
|
11927
|
-
select: (registry) => registry.ios
|
|
11928
|
-
});
|
|
11929
|
-
var ANDROID_ADAPTER = Object.freeze({
|
|
11930
|
-
id: "android",
|
|
11931
|
-
displayName: "Android",
|
|
11932
|
-
isIOS: false,
|
|
11933
|
-
isAndroid: true,
|
|
11934
|
-
select: (registry) => registry.android
|
|
11935
|
-
});
|
|
11936
|
-
var RUNTIME_PLATFORM_ADAPTERS = Object.freeze({
|
|
11937
|
-
ios: IOS_ADAPTER,
|
|
11938
|
-
android: ANDROID_ADAPTER
|
|
11939
|
-
});
|
|
11940
|
-
function isRuntimePlatform(value) {
|
|
11941
|
-
return value === "ios" || value === "android";
|
|
11942
|
-
}
|
|
11943
|
-
function getRuntimePlatformAdapter(platform) {
|
|
11944
|
-
return RUNTIME_PLATFORM_ADAPTERS[platform];
|
|
11945
|
-
}
|
|
11946
|
-
|
|
11947
|
-
// src/metro-plugin.ts
|
|
14406
|
+
init_adapter();
|
|
11948
14407
|
init_app_project();
|
|
11949
14408
|
|
|
11950
14409
|
// src/android-autolinking.ts
|
|
@@ -12194,21 +14653,20 @@ function androidMergedResourceValuesDirectory(manifestFile) {
|
|
|
12194
14653
|
|
|
12195
14654
|
// src/native-app-identity.ts
|
|
12196
14655
|
init_bundleGlobalFooter();
|
|
14656
|
+
init_is_record();
|
|
12197
14657
|
|
|
12198
14658
|
// src/nativeAppIconContract.ts
|
|
12199
|
-
|
|
12200
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
12201
|
-
}
|
|
14659
|
+
init_is_record();
|
|
12202
14660
|
function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, primaryName, alternateNames, resolveReference) {
|
|
12203
14661
|
const members = new Set(resources);
|
|
12204
|
-
const dictionary =
|
|
14662
|
+
const dictionary = isRecord(icons) ? icons : {};
|
|
12205
14663
|
const alternates = Object.fromEntries(
|
|
12206
14664
|
Object.entries(
|
|
12207
|
-
|
|
14665
|
+
isRecord(dictionary.CFBundleAlternateIcons) ? dictionary.CFBundleAlternateIcons : {}
|
|
12208
14666
|
).map(([name2, declaration]) => [resolveReference(name2), declaration])
|
|
12209
14667
|
);
|
|
12210
14668
|
const resolve4 = (declaration, defaultName) => {
|
|
12211
|
-
const entry =
|
|
14669
|
+
const entry = isRecord(declaration) ? declaration : {};
|
|
12212
14670
|
const name2 = typeof entry.CFBundleIconName === "string" ? resolveReference(entry.CFBundleIconName) : resolveReference(defaultName);
|
|
12213
14671
|
const catalogs = resources.filter(
|
|
12214
14672
|
(file) => file.endsWith(`/${name2}.appiconset/Contents.json`)
|
|
@@ -12218,9 +14676,9 @@ function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, pr
|
|
|
12218
14676
|
const catalogCandidates = [];
|
|
12219
14677
|
const text2 = readText(catalog);
|
|
12220
14678
|
const contents = text2 === null ? null : JSON.parse(text2);
|
|
12221
|
-
if (
|
|
14679
|
+
if (isRecord(contents) && Array.isArray(contents.images)) {
|
|
12222
14680
|
for (const image of contents.images) {
|
|
12223
|
-
if (!
|
|
14681
|
+
if (!isRecord(image) || typeof image.filename !== "string" || /[/\\]/.test(image.filename) || !/\.(png|jpe?g|webp)$/i.test(image.filename) || image.appearances !== void 0 || !["iphone", "universal", "ios-marketing"].includes(String(image.idiom)))
|
|
12224
14682
|
continue;
|
|
12225
14683
|
const file = catalog.slice(0, -"Contents.json".length) + image.filename;
|
|
12226
14684
|
const scale = image.scale === "2x" ? 2 : image.scale === "3x" ? 3 : 1;
|
|
@@ -12454,9 +14912,6 @@ function visitXcodeTargetMembers(objects, targetId, resolvePath, filesUnder, joi
|
|
|
12454
14912
|
// src/native-app-identity.ts
|
|
12455
14913
|
var NATIVE_APP_IDENTITY_PREFIX = "globalThis.__sootsimNativeAppIdentity=";
|
|
12456
14914
|
var METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
|
|
12457
|
-
function isRecord3(value) {
|
|
12458
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
12459
|
-
}
|
|
12460
14915
|
function nonEmptyString(value) {
|
|
12461
14916
|
return typeof value === "string" && value.length > 0 ? value : null;
|
|
12462
14917
|
}
|
|
@@ -12482,12 +14937,12 @@ function insertNativeAppIdentityFooter(source, identity) {
|
|
|
12482
14937
|
function readGoogleSignInConfiguration(plist3, resources) {
|
|
12483
14938
|
const clientIds = {};
|
|
12484
14939
|
for (const [file, value] of Object.entries(resources)) {
|
|
12485
|
-
if (
|
|
14940
|
+
if (isRecord(value) && typeof value.CLIENT_ID === "string")
|
|
12486
14941
|
clientIds[file.split("/").pop()?.replace(/\.plist$/, "") ?? file] = value.CLIENT_ID;
|
|
12487
14942
|
}
|
|
12488
14943
|
const urlSchemes = [];
|
|
12489
14944
|
for (const entry of Array.isArray(plist3.CFBundleURLTypes) ? plist3.CFBundleURLTypes : []) {
|
|
12490
|
-
if (!
|
|
14945
|
+
if (!isRecord(entry) || !Array.isArray(entry.CFBundleURLSchemes)) continue;
|
|
12491
14946
|
for (const scheme of entry.CFBundleURLSchemes)
|
|
12492
14947
|
if (typeof scheme === "string") urlSchemes.push(scheme);
|
|
12493
14948
|
}
|
|
@@ -12595,14 +15050,14 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
|
|
|
12595
15050
|
let objects = {};
|
|
12596
15051
|
try {
|
|
12597
15052
|
const parsed = parseOpenStepPlist(pbxproj);
|
|
12598
|
-
if (
|
|
12599
|
-
objects =
|
|
15053
|
+
if (isRecord(parsed)) {
|
|
15054
|
+
objects = isRecord(parsed.objects) ? parsed.objects : parsed;
|
|
12600
15055
|
}
|
|
12601
15056
|
} catch {
|
|
12602
15057
|
}
|
|
12603
15058
|
const targets = [];
|
|
12604
15059
|
for (const [id, obj] of Object.entries(objects)) {
|
|
12605
|
-
if (
|
|
15060
|
+
if (isRecord(obj) && obj.isa === "PBXNativeTarget" && typeof obj.name === "string") {
|
|
12606
15061
|
targets.push({
|
|
12607
15062
|
id,
|
|
12608
15063
|
name: obj.name,
|
|
@@ -12648,13 +15103,13 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
|
|
|
12648
15103
|
PRODUCT_NAME: targetName
|
|
12649
15104
|
};
|
|
12650
15105
|
for (const obj of Object.values(objects)) {
|
|
12651
|
-
if (
|
|
15106
|
+
if (isRecord(obj) && obj.isa === "PBXProject" && typeof obj.buildConfigurationList === "string") {
|
|
12652
15107
|
const listObj = objects[obj.buildConfigurationList];
|
|
12653
|
-
if (
|
|
15108
|
+
if (isRecord(listObj) && Array.isArray(listObj.buildConfigurations)) {
|
|
12654
15109
|
for (const configId of listObj.buildConfigurations) {
|
|
12655
15110
|
if (typeof configId === "string") {
|
|
12656
15111
|
const configObj = objects[configId];
|
|
12657
|
-
if (
|
|
15112
|
+
if (isRecord(configObj) && configObj.name === "Release" && isRecord(configObj.buildSettings)) {
|
|
12658
15113
|
for (const [k, v] of Object.entries(configObj.buildSettings)) {
|
|
12659
15114
|
if (typeof v === "string") settings[k] = v;
|
|
12660
15115
|
}
|
|
@@ -12666,11 +15121,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
|
|
|
12666
15121
|
}
|
|
12667
15122
|
if (selectedTarget?.buildConfigurationList) {
|
|
12668
15123
|
const listObj = objects[selectedTarget.buildConfigurationList];
|
|
12669
|
-
if (
|
|
15124
|
+
if (isRecord(listObj) && Array.isArray(listObj.buildConfigurations)) {
|
|
12670
15125
|
for (const configId of listObj.buildConfigurations) {
|
|
12671
15126
|
if (typeof configId === "string") {
|
|
12672
15127
|
const configObj = objects[configId];
|
|
12673
|
-
if (
|
|
15128
|
+
if (isRecord(configObj) && configObj.name === "Release" && isRecord(configObj.buildSettings)) {
|
|
12674
15129
|
for (const [k, v] of Object.entries(configObj.buildSettings)) {
|
|
12675
15130
|
if (typeof v === "string") settings[k] = v;
|
|
12676
15131
|
}
|
|
@@ -12721,7 +15176,7 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
|
|
|
12721
15176
|
if (!bundleName) return null;
|
|
12722
15177
|
const applicationName = identityFieldFrom(settings, plistString(plist3, "CFBundleDisplayName"), void 0) ?? bundleName;
|
|
12723
15178
|
const dictionary = parseInfoPlist(plist3);
|
|
12724
|
-
if (!
|
|
15179
|
+
if (!isRecord(dictionary)) throw new Error("native app Info.plist is not a dictionary");
|
|
12725
15180
|
const declaredDisplayName = dictionary.CFBundleDisplayName;
|
|
12726
15181
|
const applicationDisplayName = typeof declaredDisplayName === "string" ? resolveBuildSetting(declaredDisplayName, settings) : void 0;
|
|
12727
15182
|
if (applicationDisplayName === null)
|
|
@@ -12734,9 +15189,9 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
|
|
|
12734
15189
|
if (dtPlatformVersion === null)
|
|
12735
15190
|
throw new Error("native app Info.plist DTPlatformVersion is unresolved");
|
|
12736
15191
|
const icons = dictionary.CFBundleIcons;
|
|
12737
|
-
const alternates =
|
|
15192
|
+
const alternates = isRecord(icons) ? icons.CFBundleAlternateIcons : void 0;
|
|
12738
15193
|
const alternateIconNames = /* @__PURE__ */ new Set();
|
|
12739
|
-
for (const name2 of
|
|
15194
|
+
for (const name2 of isRecord(alternates) ? Object.keys(alternates) : []) {
|
|
12740
15195
|
const resolved = resolveBuildSetting(name2, settings);
|
|
12741
15196
|
if (resolved === null) throw new Error("native alternate icon name is unresolved");
|
|
12742
15197
|
alternateIconNames.add(resolved);
|
|
@@ -12840,11 +15295,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
|
|
|
12840
15295
|
return `${base.startsWith("/") ? "/" : ""}${segments.join("/")}`;
|
|
12841
15296
|
};
|
|
12842
15297
|
const project = Object.values(objects).find(
|
|
12843
|
-
(object) =>
|
|
15298
|
+
(object) => isRecord(object) && object.isa === "PBXProject"
|
|
12844
15299
|
);
|
|
12845
15300
|
const projectDir = join5(
|
|
12846
15301
|
pbxprojPath.replace(/(?:^|\/)[^/]+\.xcodeproj\/project\.pbxproj$/, ""),
|
|
12847
|
-
|
|
15302
|
+
isRecord(project) && typeof project.projectDirPath === "string" ? project.projectDirPath : ""
|
|
12848
15303
|
);
|
|
12849
15304
|
const paths = Object.keys(files);
|
|
12850
15305
|
visitXcodeTargetMembers(
|
|
@@ -12954,6 +15409,7 @@ function extractNativeAppIdentityFromFiles(files, platform, parseInfoPlist, iosT
|
|
|
12954
15409
|
var import_node_fs14 = __toESM(require("node:fs"), 1);
|
|
12955
15410
|
var import_node_module3 = require("node:module");
|
|
12956
15411
|
var import_node_path14 = __toESM(require("node:path"), 1);
|
|
15412
|
+
init_is_record();
|
|
12957
15413
|
|
|
12958
15414
|
// src/plist.ts
|
|
12959
15415
|
var import_plist = __toESM(require_plist(), 1);
|
|
@@ -12962,6 +15418,8 @@ function parsePlistSource(source) {
|
|
|
12962
15418
|
}
|
|
12963
15419
|
|
|
12964
15420
|
// src/xcode-project.ts
|
|
15421
|
+
var import_node_child_process5 = require("node:child_process");
|
|
15422
|
+
var import_node_crypto6 = require("node:crypto");
|
|
12965
15423
|
var import_node_fs13 = __toESM(require("node:fs"), 1);
|
|
12966
15424
|
var import_node_path13 = __toESM(require("node:path"), 1);
|
|
12967
15425
|
var import_plist2 = __toESM(require_plist(), 1);
|
|
@@ -13474,11 +15932,14 @@ function targetSettings(ref, configuration, builtins, options = {}) {
|
|
|
13474
15932
|
if (!config) return [];
|
|
13475
15933
|
const name2 = str(config.name) ?? configuration;
|
|
13476
15934
|
const base = str(config.baseConfigurationReference);
|
|
15935
|
+
const anchor = str(config.baseConfigurationReferenceAnchor);
|
|
15936
|
+
const relative3 = str(config.baseConfigurationReferenceRelativePath);
|
|
13477
15937
|
const own = isDict(config.buildSettings) ? config.buildSettings : {};
|
|
13478
|
-
const
|
|
13479
|
-
|
|
15938
|
+
const directory = anchor ? project.resolvePath(anchor) : null;
|
|
15939
|
+
const baseFile = base ? project.resolvePath(base) : directory && relative3 ? import_node_path13.default.resolve(directory, relative3) : null;
|
|
15940
|
+
if (options.requireSources !== false && (base || anchor || relative3) && (!baseFile || !import_node_fs13.default.existsSync(baseFile)))
|
|
13480
15941
|
throw new Error(
|
|
13481
|
-
`Unable to open base configuration reference file '${baseFile ?? base}'`
|
|
15942
|
+
`Unable to open base configuration reference file '${baseFile ?? base ?? relative3 ?? anchor}'`
|
|
13482
15943
|
);
|
|
13483
15944
|
const read = [];
|
|
13484
15945
|
const fromFile = baseFile ? readXcconfig(baseFile, read) : {};
|
|
@@ -13569,33 +16030,131 @@ function expand(value, lookup) {
|
|
|
13569
16030
|
}
|
|
13570
16031
|
);
|
|
13571
16032
|
}
|
|
13572
|
-
|
|
16033
|
+
var preparedSourcePhases = /* @__PURE__ */ new Map();
|
|
16034
|
+
function targetMembers(ref, settings, options, settingKeys, projectInputs) {
|
|
13573
16035
|
const { project, target, id: targetId } = ref;
|
|
13574
16036
|
const targetName = str(target.name) ?? targetId;
|
|
13575
16037
|
const sources = /* @__PURE__ */ new Set();
|
|
13576
16038
|
const allSources = /* @__PURE__ */ new Set();
|
|
13577
16039
|
const resources = /* @__PURE__ */ new Set();
|
|
13578
16040
|
const scriptForOutput = /* @__PURE__ */ new Map();
|
|
13579
|
-
const noteScriptOutput = (raw, script) => {
|
|
13580
|
-
const expanded = expand(raw, settings);
|
|
13581
|
-
if (!expanded.endsWith(".swift")) return;
|
|
13582
|
-
const absolute = import_node_path13.default.isAbsolute(expanded) ? import_node_path13.default.normalize(expanded) : import_node_path13.default.resolve(project.projectDir, expanded);
|
|
13583
|
-
if (!scriptForOutput.has(absolute)) scriptForOutput.set(absolute, script);
|
|
13584
|
-
};
|
|
13585
16041
|
for (const phaseId of list(target.buildPhases)) {
|
|
13586
16042
|
const phase = project.object(phaseId);
|
|
13587
16043
|
if (phase?.isa !== "PBXShellScriptBuildPhase") continue;
|
|
13588
16044
|
const script = str(phase.name) ?? phaseId;
|
|
13589
|
-
|
|
13590
|
-
|
|
13591
|
-
|
|
13592
|
-
|
|
13593
|
-
|
|
13594
|
-
|
|
13595
|
-
|
|
13596
|
-
|
|
13597
|
-
|
|
16045
|
+
const absolute = (raw) => import_node_path13.default.resolve(project.projectDir, expand(raw, settings));
|
|
16046
|
+
const inputs = list(phase.inputPaths).map(absolute);
|
|
16047
|
+
const outputs = list(phase.outputPaths).map(absolute);
|
|
16048
|
+
const fileLists = /* @__PURE__ */ new Map();
|
|
16049
|
+
for (const kind of ["INPUT", "OUTPUT"]) {
|
|
16050
|
+
const lists = list(
|
|
16051
|
+
kind === "INPUT" ? phase.inputFileListPaths : phase.outputFileListPaths
|
|
16052
|
+
).map((raw) => {
|
|
16053
|
+
const file = absolute(raw);
|
|
16054
|
+
if (!import_node_fs13.default.existsSync(file)) {
|
|
16055
|
+
return { file, entries: [] };
|
|
16056
|
+
}
|
|
16057
|
+
const entries = import_node_fs13.default.readFileSync(file, "utf8").split(/\r?\n/).map((line) => line.trim()).filter((line) => line !== "" && !line.startsWith("#")).map(absolute);
|
|
16058
|
+
return { file, entries };
|
|
16059
|
+
});
|
|
16060
|
+
fileLists.set(kind, lists);
|
|
16061
|
+
}
|
|
16062
|
+
const allOutputs = [
|
|
16063
|
+
...outputs,
|
|
16064
|
+
...fileLists.get("OUTPUT").flatMap((item) => item.entries)
|
|
16065
|
+
];
|
|
16066
|
+
for (const output of allOutputs)
|
|
16067
|
+
if (output.endsWith(".swift") && !scriptForOutput.has(output))
|
|
16068
|
+
scriptForOutput.set(output, script);
|
|
16069
|
+
const inputFiles = [
|
|
16070
|
+
...inputs,
|
|
16071
|
+
...fileLists.get("INPUT").flatMap((item) => [item.file, ...item.entries]),
|
|
16072
|
+
...fileLists.get("OUTPUT").map((item) => item.file)
|
|
16073
|
+
];
|
|
16074
|
+
if (allOutputs.some((file) => file.endsWith(".swift"))) {
|
|
16075
|
+
for (const file of inputFiles) if (import_node_fs13.default.existsSync(file)) projectInputs.add(file);
|
|
16076
|
+
}
|
|
16077
|
+
if (options.prepareGeneratedSources && options.requireSources !== false && allOutputs.some((file) => file.endsWith(".swift"))) {
|
|
16078
|
+
const phaseDir = import_node_path13.default.join(settings("TARGET_TEMP_DIR"), `Script-${phaseId}`);
|
|
16079
|
+
for (const lists of fileLists.values())
|
|
16080
|
+
for (const { file } of lists)
|
|
16081
|
+
if (!import_node_fs13.default.existsSync(file))
|
|
16082
|
+
throw new Error(
|
|
16083
|
+
`${targetName}: Run Script "${script}" missing file list ${file}`
|
|
16084
|
+
);
|
|
16085
|
+
const env = {
|
|
16086
|
+
...process.env,
|
|
16087
|
+
...Object.fromEntries(
|
|
16088
|
+
[...settingKeys].filter((key2) => /^[A-Za-z_][A-Za-z0-9_]*$/.test(key2)).map((key2) => [key2, settings(key2)])
|
|
16089
|
+
)
|
|
16090
|
+
};
|
|
16091
|
+
const declared = { INPUT: inputs, OUTPUT: outputs };
|
|
16092
|
+
for (const kind of ["INPUT", "OUTPUT"]) {
|
|
16093
|
+
env[`SCRIPT_${kind}_FILE_COUNT`] = String(declared[kind].length);
|
|
16094
|
+
declared[kind].forEach((file, index) => {
|
|
16095
|
+
env[`SCRIPT_${kind}_FILE_${index}`] = file;
|
|
16096
|
+
});
|
|
16097
|
+
const lists = fileLists.get(kind);
|
|
16098
|
+
env[`SCRIPT_${kind}_FILE_LIST_COUNT`] = String(lists.length);
|
|
16099
|
+
lists.forEach((_item, index) => {
|
|
16100
|
+
env[`SCRIPT_${kind}_FILE_LIST_${index}`] = import_node_path13.default.join(
|
|
16101
|
+
phaseDir,
|
|
16102
|
+
`${kind}-${index}.xcfilelist`
|
|
16103
|
+
);
|
|
16104
|
+
});
|
|
16105
|
+
}
|
|
16106
|
+
const signature = (0, import_node_crypto6.createHash)("sha256").update(
|
|
16107
|
+
JSON.stringify([phase, [...settingKeys].map((key2) => [key2, settings(key2)])])
|
|
16108
|
+
);
|
|
16109
|
+
for (const file of inputFiles) {
|
|
16110
|
+
signature.update(file);
|
|
16111
|
+
if (import_node_fs13.default.existsSync(file)) {
|
|
16112
|
+
const stat = import_node_fs13.default.statSync(file);
|
|
16113
|
+
signature.update(`${stat.mtimeMs}:${stat.ctimeMs}:${stat.size}`);
|
|
16114
|
+
} else signature.update("missing");
|
|
16115
|
+
}
|
|
16116
|
+
const stamp = signature.digest("hex");
|
|
16117
|
+
const key = `${project.projectFile}:${targetId}:${phaseId}:${settings("CONFIGURATION")}`;
|
|
16118
|
+
if (preparedSourcePhases.get(key) === stamp && allOutputs.every((file) => import_node_fs13.default.existsSync(file)))
|
|
16119
|
+
continue;
|
|
16120
|
+
import_node_fs13.default.mkdirSync(phaseDir, { recursive: true });
|
|
16121
|
+
import_node_fs13.default.mkdirSync(settings("BUILT_PRODUCTS_DIR"), { recursive: true });
|
|
16122
|
+
import_node_fs13.default.mkdirSync(settings("DERIVED_FILE_DIR"), { recursive: true });
|
|
16123
|
+
for (const [kind, lists] of fileLists)
|
|
16124
|
+
lists.forEach((item, index) => {
|
|
16125
|
+
import_node_fs13.default.writeFileSync(
|
|
16126
|
+
env[`SCRIPT_${kind}_FILE_LIST_${index}`],
|
|
16127
|
+
`${item.entries.join("\n")}
|
|
16128
|
+
`
|
|
16129
|
+
);
|
|
16130
|
+
});
|
|
16131
|
+
try {
|
|
16132
|
+
(0, import_node_child_process5.execFileSync)(
|
|
16133
|
+
str(phase.shellPath) ?? "/bin/sh",
|
|
16134
|
+
["-c", str(phase.shellScript) ?? ""],
|
|
16135
|
+
{
|
|
16136
|
+
cwd: project.projectDir,
|
|
16137
|
+
env,
|
|
16138
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
16139
|
+
timeout: 12e4
|
|
16140
|
+
}
|
|
16141
|
+
);
|
|
16142
|
+
} catch (error) {
|
|
16143
|
+
const output = error instanceof Error ? `${error.message}
|
|
16144
|
+
${"stdout" in error ? String(error.stdout) : ""}${"stderr" in error ? String(error.stderr) : ""}` : String(error);
|
|
16145
|
+
throw new Error(
|
|
16146
|
+
`${targetName}: Run Script "${script}" failed preparing generated Swift sources:
|
|
16147
|
+
${output}`
|
|
16148
|
+
);
|
|
13598
16149
|
}
|
|
16150
|
+
const missing = allOutputs.filter(
|
|
16151
|
+
(file) => file.endsWith(".swift") && !import_node_fs13.default.existsSync(file)
|
|
16152
|
+
);
|
|
16153
|
+
if (missing.length > 0)
|
|
16154
|
+
throw new Error(
|
|
16155
|
+
`${targetName}: Run Script "${script}" did not produce ${missing.join(", ")}`
|
|
16156
|
+
);
|
|
16157
|
+
preparedSourcePhases.set(key, stamp);
|
|
13599
16158
|
}
|
|
13600
16159
|
}
|
|
13601
16160
|
visitXcodeTargetMembers(
|
|
@@ -13785,22 +16344,95 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
|
|
|
13785
16344
|
SRCROOT: ref.project.projectDir,
|
|
13786
16345
|
SOURCE_ROOT: ref.project.projectDir,
|
|
13787
16346
|
PROJECT_DIR: ref.project.projectDir,
|
|
16347
|
+
SYMROOT: import_node_path13.default.join(ref.project.projectDir, ".build/peach-xcode/Build/Products"),
|
|
16348
|
+
BUILD_DIR: "$(SYMROOT)",
|
|
16349
|
+
OBJROOT: import_node_path13.default.join(
|
|
16350
|
+
ref.project.projectDir,
|
|
16351
|
+
".build/peach-xcode/Build/Intermediates.noindex"
|
|
16352
|
+
),
|
|
16353
|
+
CONFIGURATION_BUILD_DIR: "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)",
|
|
16354
|
+
BUILT_PRODUCTS_DIR: "$(CONFIGURATION_BUILD_DIR)",
|
|
16355
|
+
TARGET_BUILD_DIR: "$(CONFIGURATION_BUILD_DIR)",
|
|
16356
|
+
PROJECT_TEMP_DIR: "$(OBJROOT)/$(PROJECT_NAME).build",
|
|
16357
|
+
CONFIGURATION_TEMP_DIR: "$(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)",
|
|
16358
|
+
TARGET_TEMP_DIR: "$(CONFIGURATION_TEMP_DIR)/$(TARGET_NAME).build",
|
|
16359
|
+
DERIVED_FILE_DIR: "$(TARGET_TEMP_DIR)/DerivedSources",
|
|
16360
|
+
DERIVED_FILES_DIR: "$(DERIVED_FILE_DIR)",
|
|
16361
|
+
PLATFORM_NAME: "iphonesimulator",
|
|
16362
|
+
EFFECTIVE_PLATFORM_NAME: "-iphonesimulator",
|
|
16363
|
+
CURRENT_ARCH: "arm64",
|
|
16364
|
+
ARCHS: "arm64",
|
|
16365
|
+
ACTION: "build",
|
|
13788
16366
|
DEVELOPMENT_LANGUAGE: str(ref.project.project.developmentRegion) ?? "en"
|
|
13789
16367
|
},
|
|
13790
16368
|
options
|
|
13791
16369
|
);
|
|
13792
16370
|
for (const file of read) xcconfigs.add(file);
|
|
13793
16371
|
const swiftVersion = Number.parseFloat(settings2("SWIFT_VERSION") || "5");
|
|
16372
|
+
const members = targetMembers(ref, settings2, options, keys, xcconfigs);
|
|
16373
|
+
const implementations = members.allSources.filter(
|
|
16374
|
+
(file) => /\.(c|cc|cpp|cxx|m|mm)$/.test(file)
|
|
16375
|
+
);
|
|
16376
|
+
const absolute = (file) => import_node_path13.default.resolve(ref.project.projectDir, file);
|
|
16377
|
+
const fileFlags = {};
|
|
16378
|
+
for (const phaseId of list(ref.target.buildPhases)) {
|
|
16379
|
+
const phase = ref.project.object(phaseId);
|
|
16380
|
+
if (phase?.isa !== "PBXSourcesBuildPhase") continue;
|
|
16381
|
+
for (const id of list(phase.files)) {
|
|
16382
|
+
const file = ref.project.object(id);
|
|
16383
|
+
const resolved = ref.project.resolvePath(str(file?.fileRef) ?? "");
|
|
16384
|
+
if (resolved && implementations.includes(resolved))
|
|
16385
|
+
fileFlags[resolved] = settingList(
|
|
16386
|
+
expand(
|
|
16387
|
+
str(isDict(file?.settings) ? file.settings.COMPILER_FLAGS : void 0) ?? "",
|
|
16388
|
+
settings2
|
|
16389
|
+
)
|
|
16390
|
+
);
|
|
16391
|
+
}
|
|
16392
|
+
}
|
|
13794
16393
|
return {
|
|
13795
16394
|
settings: settings2,
|
|
13796
16395
|
keys,
|
|
13797
16396
|
module: {
|
|
13798
16397
|
name: name2,
|
|
13799
16398
|
moduleName: applyOperator(settings2("PRODUCT_MODULE_NAME"), "c99extidentifier"),
|
|
13800
|
-
...
|
|
16399
|
+
...members,
|
|
13801
16400
|
languageMode: swiftVersion >= 6 ? 6 : 5,
|
|
13802
16401
|
mainActorIsolation: settings2("SWIFT_DEFAULT_ACTOR_ISOLATION") === "MainActor",
|
|
13803
|
-
defines: compilationConditions(settings2)
|
|
16402
|
+
defines: compilationConditions(settings2),
|
|
16403
|
+
iosDeploymentTarget: settings2("IPHONEOS_DEPLOYMENT_TARGET") || null,
|
|
16404
|
+
...implementations.some((file) => /\.mm?$/.test(file)) ? {
|
|
16405
|
+
objc: {
|
|
16406
|
+
headers: Object.keys(ref.project.objects).flatMap((id) => {
|
|
16407
|
+
const file = ref.project.resolvePath(id);
|
|
16408
|
+
return file && /\.(h|hh|hpp|hxx|pch)$/.test(file) && import_node_fs13.default.existsSync(file) ? [file] : [];
|
|
16409
|
+
}),
|
|
16410
|
+
prefixHeader: settings2("GCC_PREFIX_HEADER") ? absolute(settings2("GCC_PREFIX_HEADER")) : null,
|
|
16411
|
+
bridgingHeader: settings2("SWIFT_OBJC_BRIDGING_HEADER") ? absolute(settings2("SWIFT_OBJC_BRIDGING_HEADER")) : null,
|
|
16412
|
+
headerSearchPaths: [
|
|
16413
|
+
...settingList(settings2("HEADER_SEARCH_PATHS")),
|
|
16414
|
+
...settingList(settings2("USER_HEADER_SEARCH_PATHS"))
|
|
16415
|
+
].map(absolute),
|
|
16416
|
+
frameworkSearchPaths: settingList(settings2("FRAMEWORK_SEARCH_PATHS")).map(
|
|
16417
|
+
absolute
|
|
16418
|
+
),
|
|
16419
|
+
flags: [
|
|
16420
|
+
...settings2("CLANG_ENABLE_OBJC_ARC") === "YES" ? ["-fobjc-arc"] : [],
|
|
16421
|
+
...settings2("CLANG_ENABLE_OBJC_WEAK") === "YES" ? ["-fobjc-weak"] : [],
|
|
16422
|
+
...settings2("CLANG_ENABLE_MODULES") === "YES" ? ["-fmodules"] : [],
|
|
16423
|
+
...settings2("GCC_C_LANGUAGE_STANDARD") ? [`-std=${settings2("GCC_C_LANGUAGE_STANDARD")}`] : [],
|
|
16424
|
+
...settingList(settings2("GCC_PREPROCESSOR_DEFINITIONS")).map(
|
|
16425
|
+
(value) => `-D${value}`
|
|
16426
|
+
),
|
|
16427
|
+
...settingList(settings2("OTHER_CFLAGS"))
|
|
16428
|
+
],
|
|
16429
|
+
cxxFlags: [
|
|
16430
|
+
...settings2("CLANG_CXX_LANGUAGE_STANDARD") ? [`-std=${settings2("CLANG_CXX_LANGUAGE_STANDARD")}`] : [],
|
|
16431
|
+
...settingList(settings2("OTHER_CPLUSPLUSFLAGS"))
|
|
16432
|
+
],
|
|
16433
|
+
fileFlags
|
|
16434
|
+
}
|
|
16435
|
+
} : {}
|
|
13804
16436
|
}
|
|
13805
16437
|
};
|
|
13806
16438
|
};
|
|
@@ -13849,6 +16481,23 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
|
|
|
13849
16481
|
...projects.flatMap(
|
|
13850
16482
|
(project) => Object.entries(project.objects).flatMap(([id, entry]) => {
|
|
13851
16483
|
if (!isDict(entry)) return [];
|
|
16484
|
+
if (entry.isa === "PBXFileSystemSynchronizedRootGroup") {
|
|
16485
|
+
const folder = project.resolvePath(id);
|
|
16486
|
+
const pending = folder ? [folder] : [];
|
|
16487
|
+
const packages = [];
|
|
16488
|
+
while (pending.length > 0) {
|
|
16489
|
+
const dir = pending.pop();
|
|
16490
|
+
if (import_node_fs13.default.existsSync(import_node_path13.default.join(dir, "Package.swift"))) {
|
|
16491
|
+
packages.push(dir);
|
|
16492
|
+
continue;
|
|
16493
|
+
}
|
|
16494
|
+
if (!isDirectory(dir)) continue;
|
|
16495
|
+
for (const child of import_node_fs13.default.readdirSync(dir, { withFileTypes: true }))
|
|
16496
|
+
if (child.isDirectory() && !child.name.startsWith("."))
|
|
16497
|
+
pending.push(import_node_path13.default.join(dir, child.name));
|
|
16498
|
+
}
|
|
16499
|
+
return packages;
|
|
16500
|
+
}
|
|
13852
16501
|
const candidate = entry.isa === "XCLocalSwiftPackageReference" ? import_node_path13.default.resolve(project.projectDir, str(entry.relativePath) ?? "") : entry.isa === "PBXFileReference" ? project.resolvePath(id) : null;
|
|
13853
16502
|
return candidate && import_node_fs13.default.existsSync(import_node_path13.default.join(candidate, "Package.swift")) ? [candidate] : [];
|
|
13854
16503
|
})
|
|
@@ -13903,6 +16552,7 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
|
|
|
13903
16552
|
"swiftpm",
|
|
13904
16553
|
"Package.resolved"
|
|
13905
16554
|
);
|
|
16555
|
+
const packageResolved = import_node_fs13.default.existsSync(resolvedFile) ? [import_node_fs13.default.realpathSync(resolvedFile)] : [...new Set(localPackageDirs.map((dir) => import_node_path13.default.join(dir, "Package.resolved")))].filter((file) => import_node_fs13.default.existsSync(file)).map((file) => import_node_fs13.default.realpathSync(file)).sort();
|
|
13906
16556
|
const used = order.map((ref) => ref.project);
|
|
13907
16557
|
return {
|
|
13908
16558
|
...module2,
|
|
@@ -13928,7 +16578,7 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
|
|
|
13928
16578
|
...new Set(localPackageDirs.map((dir) => import_node_fs13.default.realpathSync(dir)))
|
|
13929
16579
|
].sort(),
|
|
13930
16580
|
binaryFrameworks: [...binaryFrameworks].map(([name2, file]) => ({ name: name2, path: file })).sort((left, right) => left.name.localeCompare(right.name)),
|
|
13931
|
-
packageResolved
|
|
16581
|
+
packageResolved,
|
|
13932
16582
|
appTargets: appTargetNames,
|
|
13933
16583
|
configuration,
|
|
13934
16584
|
settings
|
|
@@ -13936,15 +16586,12 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
|
|
|
13936
16586
|
}
|
|
13937
16587
|
|
|
13938
16588
|
// src/native-app-identity-project.ts
|
|
13939
|
-
function isRecord4(value) {
|
|
13940
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
13941
|
-
}
|
|
13942
16589
|
function nonEmptyString2(value) {
|
|
13943
16590
|
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
13944
16591
|
}
|
|
13945
16592
|
function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSource) {
|
|
13946
16593
|
const dictionary = parseInfoPlist(app.infoPlist);
|
|
13947
|
-
if (!
|
|
16594
|
+
if (!isRecord(dictionary)) throw new Error("native app Info.plist is not a dictionary");
|
|
13948
16595
|
const settings = app.settings;
|
|
13949
16596
|
const bundleIdentifier = nonEmptyString2(dictionary.CFBundleIdentifier) ?? nonEmptyString2(settings?.("PRODUCT_BUNDLE_IDENTIFIER"));
|
|
13950
16597
|
if (!bundleIdentifier) throw new Error("native app has no bundle identifier");
|
|
@@ -13961,8 +16608,8 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
|
|
|
13961
16608
|
const designRequiresCompatibility = dictionary.UIDesignRequiresCompatibility === true;
|
|
13962
16609
|
const alternateIconNames = /* @__PURE__ */ new Set();
|
|
13963
16610
|
const icons = dictionary.CFBundleIcons;
|
|
13964
|
-
const alternates =
|
|
13965
|
-
if (
|
|
16611
|
+
const alternates = isRecord(icons) ? icons.CFBundleAlternateIcons : void 0;
|
|
16612
|
+
if (isRecord(alternates)) {
|
|
13966
16613
|
for (const name2 of Object.keys(alternates)) {
|
|
13967
16614
|
if (name2) alternateIconNames.add(name2);
|
|
13968
16615
|
}
|
|
@@ -14194,7 +16841,7 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
|
|
|
14194
16841
|
const installedManifest = JSON.parse(
|
|
14195
16842
|
import_node_fs14.default.readFileSync(reanimatedManifestPath, "utf8")
|
|
14196
16843
|
);
|
|
14197
|
-
const installedVersion =
|
|
16844
|
+
const installedVersion = isRecord(installedManifest) ? nonEmptyString2(installedManifest.version) : void 0;
|
|
14198
16845
|
if (!installedVersion) throw new Error("Reanimated package version is malformed");
|
|
14199
16846
|
if (Number.parseInt(installedVersion, 10) < 4) return identity;
|
|
14200
16847
|
const defaults = JSON.parse(
|
|
@@ -14206,11 +16853,11 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
|
|
|
14206
16853
|
"utf8"
|
|
14207
16854
|
)
|
|
14208
16855
|
);
|
|
14209
|
-
if (!
|
|
16856
|
+
if (!isRecord(defaults)) throw new Error("Reanimated static flags are malformed");
|
|
14210
16857
|
const manifest = JSON.parse(import_node_fs14.default.readFileSync(projectManifestPath, "utf8"));
|
|
14211
|
-
const reanimated =
|
|
14212
|
-
const overrides =
|
|
14213
|
-
if (overrides !== void 0 && !
|
|
16858
|
+
const reanimated = isRecord(manifest) ? manifest.reanimated : void 0;
|
|
16859
|
+
const overrides = isRecord(reanimated) ? reanimated.staticFeatureFlags : void 0;
|
|
16860
|
+
if (overrides !== void 0 && !isRecord(overrides)) {
|
|
14214
16861
|
throw new Error("Reanimated static flag overrides are malformed");
|
|
14215
16862
|
}
|
|
14216
16863
|
const flags = {};
|
|
@@ -14231,7 +16878,7 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
|
|
|
14231
16878
|
}
|
|
14232
16879
|
|
|
14233
16880
|
// src/native-firebase-config.ts
|
|
14234
|
-
var
|
|
16881
|
+
var import_node_child_process6 = require("node:child_process");
|
|
14235
16882
|
var import_node_fs15 = __toESM(require("node:fs"), 1);
|
|
14236
16883
|
var import_node_os3 = __toESM(require("node:os"), 1);
|
|
14237
16884
|
var import_node_path15 = __toESM(require("node:path"), 1);
|
|
@@ -14276,7 +16923,7 @@ function readExpoConfig(projectRoot) {
|
|
|
14276
16923
|
const directory = resultDirectory();
|
|
14277
16924
|
const resultPath = import_node_path15.default.join(directory, "config.json");
|
|
14278
16925
|
try {
|
|
14279
|
-
const child = (0,
|
|
16926
|
+
const child = (0, import_node_child_process6.spawnSync)("node", expoConfigArgs(projectRoot, resultPath), {
|
|
14280
16927
|
cwd: projectRoot,
|
|
14281
16928
|
encoding: "utf8",
|
|
14282
16929
|
stdio: ["ignore", "ignore", "pipe"],
|
|
@@ -14774,7 +17421,7 @@ function withPeach(config, options = {}) {
|
|
|
14774
17421
|
const configuredBundleUrl = "/index.bundle?platform=ios&dev=true&hot=true&minify=false";
|
|
14775
17422
|
const cfgServer = config.server;
|
|
14776
17423
|
const port = resolveMetroPort(cfgServer);
|
|
14777
|
-
const metroServerId = (0,
|
|
17424
|
+
const metroServerId = (0, import_node_crypto7.randomUUID)();
|
|
14778
17425
|
const bundleUrl = tagRnxBundleForPlugin(
|
|
14779
17426
|
configuredBundleUrl,
|
|
14780
17427
|
`http://localhost:${port}`,
|