@legendapp/create-spark 0.0.1-next.6 → 0.0.1-next.8
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 +19 -1
- package/dist/index.js +76 -11
- package/dist/release.json +18 -18
- package/package.json +3 -2
- package/templates/blank-typescript/app.json +5 -1
- package/templates/blank-typescript/gitignore +2 -1
- package/templates/blank-typescript/package.json +7 -7
- package/templates/universal/app.json +5 -1
- package/templates/universal/gitignore +2 -1
- package/templates/universal/package.json +8 -8
- package/templates/windows/app.json +5 -1
- package/templates/windows/gitignore +2 -1
- package/templates/windows/package.json +8 -8
package/README.md
CHANGED
|
@@ -9,9 +9,27 @@ cd MyApp
|
|
|
9
9
|
npm run macos
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
+
Choose a channel explicitly with any supported package manager:
|
|
13
|
+
|
|
14
|
+
| Manager | Next preview | Latest |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| npm | `npm create @legendapp/spark@next MyApp -- --next` | `npm create @legendapp/spark@latest MyApp -- --latest` |
|
|
17
|
+
| Bun | `bun create @legendapp/spark@next MyApp --next` | `bun create @legendapp/spark@latest MyApp --latest` |
|
|
18
|
+
| pnpm | `pnpm create @legendapp/spark MyApp --next` | `pnpm create @legendapp/spark MyApp --latest` |
|
|
19
|
+
| Yarn (including Yarn 1) | `yarn create @legendapp/spark MyApp --next` | `yarn create @legendapp/spark MyApp --latest` |
|
|
20
|
+
|
|
21
|
+
pnpm can drop the creator tag, and Yarn 1 cannot take a tag in `yarn create`.
|
|
22
|
+
The self-contained creator resolves explicit channel flags through npm dist-tags.
|
|
23
|
+
It pins the SDK to its bundled release metadata. If the selected version differs,
|
|
24
|
+
it prints an exact `npx @legendapp/create-spark@<version>` command to run; version
|
|
25
|
+
selection downloads no SDK. `--spark-version <version|tag>` selects another release;
|
|
26
|
+
use only one selection flag. With no flag, the creator uses its own release.
|
|
27
|
+
These commands require the matching creator and release assets to be published.
|
|
28
|
+
|
|
12
29
|
The app opens in Spark Runner, downloaded from the matching GitHub release.
|
|
13
30
|
Bun is optional. Select another installed package manager with
|
|
14
|
-
`-- --package-manager bun|pnpm|yarn
|
|
31
|
+
`-- --package-manager bun|pnpm|yarn` with npm, or
|
|
32
|
+
`--package-manager npm|bun|pnpm|yarn` with other managers. Native builds require Xcode and CocoaPods.
|
|
15
33
|
|
|
16
34
|
Spark is experimental. Windows is a preview without a downloadable Runner.
|
|
17
35
|
See the [documentation](https://legend.so/spark) and
|
package/dist/index.js
CHANGED
|
@@ -89,11 +89,13 @@ var require_validation = __commonJS((exports, module) => {
|
|
|
89
89
|
}
|
|
90
90
|
function validateOwned(value) {
|
|
91
91
|
if (value.macos !== undefined) {
|
|
92
|
-
object(value.macos, "macos", ["bundleIdentifier", "buildNumber", "entitlements", "infoPlist", "lifecycle"]);
|
|
92
|
+
object(value.macos, "macos", ["bundleIdentifier", "buildNumber", "entitlements", "infoPlist", "testDriverInRelease", "lifecycle"]);
|
|
93
93
|
if (typeof value.macos.bundleIdentifier !== "string" || !/^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/.test(value.macos.bundleIdentifier))
|
|
94
94
|
throw new Error("macos.bundleIdentifier must be a reverse-DNS identifier");
|
|
95
95
|
if (value.macos.buildNumber !== undefined && typeof value.macos.buildNumber !== "string")
|
|
96
96
|
throw new Error("macos.buildNumber must be a string");
|
|
97
|
+
if (value.macos.testDriverInRelease !== undefined && typeof value.macos.testDriverInRelease !== "boolean")
|
|
98
|
+
throw new Error("macos.testDriverInRelease must be a boolean");
|
|
97
99
|
for (const key of ["entitlements", "infoPlist"])
|
|
98
100
|
if (value.macos[key] !== undefined)
|
|
99
101
|
object(value.macos[key], `macos.${key}`);
|
|
@@ -223,7 +225,7 @@ var require_updates = __commonJS((exports, module) => {
|
|
|
223
225
|
if (!updates || typeof updates !== "object" || Array.isArray(updates))
|
|
224
226
|
throw new Error("extra.spark.updates must be an object");
|
|
225
227
|
for (const key of Object.keys(updates))
|
|
226
|
-
if (!["feedURL", "publicKey"].includes(key))
|
|
228
|
+
if (!["feedURL", "publicKey", "maximumDeltas"].includes(key))
|
|
227
229
|
throw new Error(`Unknown updates field: ${key}`);
|
|
228
230
|
let url;
|
|
229
231
|
try {
|
|
@@ -235,7 +237,10 @@ var require_updates = __commonJS((exports, module) => {
|
|
|
235
237
|
throw new Error("Update feedURL must be an HTTPS .xml URL without credentials, query or fragment");
|
|
236
238
|
if (typeof updates.publicKey !== "string" || !/^[A-Za-z0-9+/]{43}=$/.test(updates.publicKey) || Buffer.from(updates.publicKey, "base64").length !== 32)
|
|
237
239
|
throw new Error("Updates need a base64 Ed25519 publicKey; run spark updates init <feedURL>");
|
|
238
|
-
|
|
240
|
+
const { maximumDeltas } = updates;
|
|
241
|
+
if (maximumDeltas !== undefined && (!Number.isInteger(maximumDeltas) || maximumDeltas < 0 || maximumDeltas > 10))
|
|
242
|
+
throw new Error("Updates maximumDeltas must be an integer from 0 to 10");
|
|
243
|
+
return { feedURL: url.href, publicKey: updates.publicKey, ...maximumDeltas === undefined ? {} : { maximumDeltas } };
|
|
239
244
|
}
|
|
240
245
|
function updatePlist(expo) {
|
|
241
246
|
const updates = updateConfiguration(expo);
|
|
@@ -2478,7 +2483,7 @@ var require_config = __commonJS((exports, module) => {
|
|
|
2478
2483
|
version: value.version,
|
|
2479
2484
|
platforms: [selected],
|
|
2480
2485
|
newArchEnabled: true,
|
|
2481
|
-
...value.macos ? { macos: { ...value.macos, infoPlist: { CFBundleName: value.name, ...value.macos.infoPlist } } } : {},
|
|
2486
|
+
...value.macos ? { macos: { ...value.macos, version: value.version, buildNumber: value.macos.buildNumber ?? backend.ios?.buildNumber ?? "1", infoPlist: { CFBundleName: value.name, ...value.macos.infoPlist } } } : {},
|
|
2482
2487
|
...value.scheme !== undefined ? { scheme: value.scheme } : {},
|
|
2483
2488
|
extra: { ...backend.extra, spark: { ...extra, ...platforms.length > 1 ? { supportedPlatforms: platforms } : {} } },
|
|
2484
2489
|
experiments: { ...backend.experiments, outOfTreePlatforms: true },
|
|
@@ -2578,8 +2583,9 @@ var require_init_template = __commonJS((exports, module) => {
|
|
|
2578
2583
|
config.name = expo.name;
|
|
2579
2584
|
config.projectId = expo.windows.projectGuid;
|
|
2580
2585
|
config.expo = { ...expo, ...config.expo };
|
|
2586
|
+
const { version, ...macos } = expo.macos;
|
|
2581
2587
|
if (config.macos)
|
|
2582
|
-
config.macos = { ...
|
|
2588
|
+
config.macos = { ...macos, ...config.macos, bundleIdentifier: macos.bundleIdentifier };
|
|
2583
2589
|
toExpo(config);
|
|
2584
2590
|
fs.writeFileSync(file, JSON.stringify(config, null, 2) + `
|
|
2585
2591
|
`);
|
|
@@ -174418,7 +174424,7 @@ var import_spark_window_options = __toESM(require_window_options(), 1);
|
|
|
174418
174424
|
var import_native_patches = __toESM(require_native_patches(), 1);
|
|
174419
174425
|
var import_config3 = __toESM(require_config(), 1);
|
|
174420
174426
|
import { createHash as createHash2 } from "node:crypto";
|
|
174421
|
-
var VERSION2 = "0.0.1-next.
|
|
174427
|
+
var VERSION2 = "0.0.1-next.8";
|
|
174422
174428
|
function digest(value) {
|
|
174423
174429
|
return createHash2("sha256").update(value).digest("hex");
|
|
174424
174430
|
}
|
|
@@ -174562,12 +174568,13 @@ async function configureExample(root, example) {
|
|
|
174562
174568
|
}
|
|
174563
174569
|
|
|
174564
174570
|
// packages/cli/src/create.ts
|
|
174565
|
-
import { cpSync as cpSync2, existsSync as existsSync7, readFileSync as readFileSync6, writeFileSync as writeFileSync5, mkdtempSync as mkdtempSync2, rmSync as rmSync3 } from "node:fs";
|
|
174571
|
+
import { appendFileSync as appendFileSync2, cpSync as cpSync2, existsSync as existsSync7, readFileSync as readFileSync6, writeFileSync as writeFileSync5, mkdtempSync as mkdtempSync2, rmSync as rmSync3 } from "node:fs";
|
|
174566
174572
|
import path12 from "node:path";
|
|
174567
174573
|
import os3 from "node:os";
|
|
174568
174574
|
import { createInterface } from "node:readline";
|
|
174569
174575
|
import { Readable as Readable2 } from "node:stream";
|
|
174570
174576
|
var template = path12.resolve(import.meta.dirname, "../templates/blank-typescript");
|
|
174577
|
+
var pnpWriteFile = `--import=data:text/javascript,${encodeURIComponent("import fs from 'node:fs'; const write = fs.promises.writeFile; fs.promises.writeFile = async (file, data, options) => write(file, data?.[Symbol.asyncIterator] ? Buffer.concat(await Array.fromAsync(data)) : data, options);")}`;
|
|
174571
174578
|
async function create(root, archiveManifest, platform = hostPlatform(), universal = false, example, selectedManager) {
|
|
174572
174579
|
if (!(universal || example) && !["macos", "windows"].includes(platform))
|
|
174573
174580
|
throw new Error("Use create --universal for mobile/web targets");
|
|
@@ -174606,6 +174613,7 @@ async function create(root, archiveManifest, platform = hostPlatform(), universa
|
|
|
174606
174613
|
verifyMaterializedReleasePackages(release, temporary);
|
|
174607
174614
|
const name = path12.basename(root);
|
|
174608
174615
|
const npmBin = path12.join(import.meta.dirname, "npm-bin");
|
|
174616
|
+
const pnp = !!process.versions.pnp;
|
|
174609
174617
|
const child = spawnProcess(nodeCommand(path12.resolve(import.meta.dirname, ".."), "expo-desktop", "expo-desktop", [
|
|
174610
174618
|
"create-app",
|
|
174611
174619
|
root,
|
|
@@ -174616,8 +174624,9 @@ async function create(root, archiveManifest, platform = hostPlatform(), universa
|
|
|
174616
174624
|
"--display-name",
|
|
174617
174625
|
name,
|
|
174618
174626
|
"--rdns",
|
|
174619
|
-
`so.legend.spark.prototype.${name.toLowerCase()}
|
|
174620
|
-
|
|
174627
|
+
`so.legend.spark.prototype.${name.toLowerCase()}`,
|
|
174628
|
+
...pnp ? ["--no-install"] : []
|
|
174629
|
+
]), { cwd: process.cwd(), env: { ...process.env, PATH: `${npmBin}${path12.delimiter}${process.env.PATH ?? ""}`, npm_config_user_agent: `${manager}/spark`, CI: "1", ...pnp ? { NODE_OPTIONS: `${process.env.NODE_OPTIONS ?? ""} ${pnpWriteFile}` } : {}, ...manager === "yarn" ? { YARN_ENABLE_IMMUTABLE_INSTALLS: "false" } : {} }, stdout: "pipe", stderr: "inherit" });
|
|
174621
174630
|
let projectReady = false;
|
|
174622
174631
|
for await (const line of createInterface({ input: Readable2.from(child.stdout), crlfDelay: Infinity })) {
|
|
174623
174632
|
if (line.includes("✅ Your project is created!"))
|
|
@@ -174628,6 +174637,12 @@ async function create(root, archiveManifest, platform = hostPlatform(), universa
|
|
|
174628
174637
|
}
|
|
174629
174638
|
if (await child.exited)
|
|
174630
174639
|
throw new Error("Expo Desktop could not create the app. See its output above.");
|
|
174640
|
+
if (pnp) {
|
|
174641
|
+
process.env.NODE_OPTIONS = process.env.NODE_OPTIONS?.replace(/--(?:require|experimental-loader)[ =]("[^"]*\.pnp\.[^"]*"|\S*\.pnp\.\S*)/g, "") ?? "";
|
|
174642
|
+
if (manager === "yarn")
|
|
174643
|
+
appendFileSync2(path12.join(root, "yarn.lock"), "");
|
|
174644
|
+
await run(root, managerCommand(manager, ["install"]));
|
|
174645
|
+
}
|
|
174631
174646
|
} finally {
|
|
174632
174647
|
rmSync3(temporary, { recursive: true, force: true });
|
|
174633
174648
|
}
|
|
@@ -174667,14 +174682,64 @@ async function create(root, archiveManifest, platform = hostPlatform(), universa
|
|
|
174667
174682
|
|
|
174668
174683
|
// packages/create-spark/src/create.ts
|
|
174669
174684
|
import path13 from "node:path";
|
|
174685
|
+
|
|
174686
|
+
// packages/create-spark/src/version.ts
|
|
174687
|
+
function creatorArguments(args) {
|
|
174688
|
+
const forwarded = [];
|
|
174689
|
+
let requested;
|
|
174690
|
+
for (let index = 0;index < args.length; index++) {
|
|
174691
|
+
const arg = args[index];
|
|
174692
|
+
if (arg === "--spark-version" || arg.startsWith("--spark-version=") || arg === "--next" || arg === "--latest") {
|
|
174693
|
+
if (requested !== undefined)
|
|
174694
|
+
throw new Error("Choose only one of --next, --latest, or --spark-version.");
|
|
174695
|
+
const value = arg === "--spark-version" ? args[++index] : arg.startsWith("--spark-version=") ? arg.slice(16) : arg.slice(2);
|
|
174696
|
+
if (!value || value.startsWith("-"))
|
|
174697
|
+
throw new Error("--spark-version requires a version or tag");
|
|
174698
|
+
requested = value;
|
|
174699
|
+
} else
|
|
174700
|
+
forwarded.push(arg);
|
|
174701
|
+
}
|
|
174702
|
+
return { requested, forwarded };
|
|
174703
|
+
}
|
|
174704
|
+
var exactVersion = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;
|
|
174705
|
+
async function resolveCreatorVersion(requested, fetcher = fetch) {
|
|
174706
|
+
if (exactVersion.test(requested))
|
|
174707
|
+
return requested;
|
|
174708
|
+
if (!/^[a-zA-Z][\w.-]*$/.test(requested))
|
|
174709
|
+
throw new Error(`Invalid Spark version or tag: ${requested}`);
|
|
174710
|
+
const response = await fetcher("https://registry.npmjs.org/-/package/@legendapp%2fspark/dist-tags", { signal: AbortSignal.timeout(15000) });
|
|
174711
|
+
if (!response.ok)
|
|
174712
|
+
throw new Error(`Could not resolve Spark tag ${requested}: npm registry HTTP ${response.status}`);
|
|
174713
|
+
const tags = await response.json();
|
|
174714
|
+
const version = tags[requested];
|
|
174715
|
+
if (!version || !exactVersion.test(version))
|
|
174716
|
+
throw new Error(`npm has no exact Spark version for tag ${requested}`);
|
|
174717
|
+
return version;
|
|
174718
|
+
}
|
|
174719
|
+
async function checkCreatorVersion(requested, forwarded) {
|
|
174720
|
+
const resolved = await resolveCreatorVersion(requested);
|
|
174721
|
+
if (resolved !== VERSION2) {
|
|
174722
|
+
const args = forwarded.filter((arg) => arg !== "--").map((arg) => "'" + arg.replaceAll("'", "'\\''") + "'").join(" ");
|
|
174723
|
+
throw new Error(`Spark ${requested} resolves to ${resolved}, but this creator bundles ${VERSION2}. Run the matching self-contained creator:
|
|
174724
|
+
npx @legendapp/create-spark@${resolved} ${args}`);
|
|
174725
|
+
}
|
|
174726
|
+
}
|
|
174727
|
+
|
|
174728
|
+
// packages/create-spark/src/create.ts
|
|
174670
174729
|
async function createSpark(args) {
|
|
174671
|
-
const {
|
|
174730
|
+
const { requested, forwarded } = creatorArguments(args);
|
|
174731
|
+
const { positionals, values } = cliArguments(["create", ...forwarded]);
|
|
174672
174732
|
if (values.help) {
|
|
174673
|
-
console.log("Usage: npm create @legendapp/spark@next MyApp -- [--universal] [--platform macos|windows|ios|android|web] [--example document-editor|notes-lite|music-lite|diff-lite] [--packages manifest.json] [--package-manager npm|pnpm|yarn|bun]");
|
|
174733
|
+
console.log("Usage: npm create @legendapp/spark@next MyApp -- [--next | --latest | --spark-version <version|tag>] [--universal] [--platform macos|windows|ios|android|web] [--example document-editor|notes-lite|music-lite|diff-lite] [--packages manifest.json] [--package-manager npm|pnpm|yarn|bun]");
|
|
174674
174734
|
return;
|
|
174675
174735
|
}
|
|
174676
174736
|
if (values.example && !examples.includes(values.example))
|
|
174677
174737
|
throw new Error(`Use --example ${examples.join(" | ")}`);
|
|
174738
|
+
if (requested) {
|
|
174739
|
+
if (values.packages)
|
|
174740
|
+
throw new Error("Release version flags cannot be combined with --packages.");
|
|
174741
|
+
await checkCreatorVersion(requested, forwarded);
|
|
174742
|
+
}
|
|
174678
174743
|
const platform = values.platform ?? hostPlatform();
|
|
174679
174744
|
process.env.SPARK_PLATFORM = platform;
|
|
174680
174745
|
try {
|
package/dist/release.json
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 1,
|
|
3
|
-
"version": "0.0.1-next.
|
|
4
|
-
"revision": "
|
|
3
|
+
"version": "0.0.1-next.8",
|
|
4
|
+
"revision": "8d40fdcbb527da31394b960fdd6c4e0fe621e58a",
|
|
5
5
|
"packages": {
|
|
6
6
|
"@react-native-runtimes/core": {
|
|
7
|
-
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.
|
|
8
|
-
"size":
|
|
9
|
-
"sha256": "
|
|
7
|
+
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.8/runtimes-4df45cb5ea74.tgz",
|
|
8
|
+
"size": 54050,
|
|
9
|
+
"sha256": "3a04e0455ac44b0bc11cfa315943ad84509c445111a2b3974ca85c8ed489827c"
|
|
10
10
|
},
|
|
11
11
|
"react-native-nitro-modules": {
|
|
12
|
-
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.
|
|
12
|
+
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.8/react-native-nitro-modules-0.37.0-5df8774796c4.tgz",
|
|
13
13
|
"size": 145600,
|
|
14
|
-
"sha256": "
|
|
14
|
+
"sha256": "5df8774796c48ed54d238f3fada01b64d710b14077983c37f639607eb805e066"
|
|
15
15
|
},
|
|
16
16
|
"@op-engineering/op-sqlite": {
|
|
17
|
-
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.
|
|
18
|
-
"size":
|
|
19
|
-
"sha256": "
|
|
17
|
+
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.8/op-engineering-op-sqlite-18.2.1-a14b99ecf491.tgz",
|
|
18
|
+
"size": 5847607,
|
|
19
|
+
"sha256": "a14b99ecf4911b55f586b2c5d1f58ac48b0a9d8fe4b84fa6edef1a167630646b"
|
|
20
20
|
},
|
|
21
21
|
"react-native-webview": {
|
|
22
|
-
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.
|
|
23
|
-
"size":
|
|
24
|
-
"sha256": "
|
|
22
|
+
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.8/react-native-webview-16.0.0-333e421ad38b.tgz",
|
|
23
|
+
"size": 116285,
|
|
24
|
+
"sha256": "333e421ad38b0da2b1dc7b3306de019f257e31bfd6cdb0272d97b1bb2b129354"
|
|
25
25
|
},
|
|
26
26
|
"expo-audio": {
|
|
27
|
-
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.
|
|
27
|
+
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.8/expo-audio-1.1.1-aff5604f2c4c.tgz",
|
|
28
28
|
"size": 381841,
|
|
29
29
|
"sha256": "aff5604f2c4cab23299a71e37e802a572b2e66e2e2250b20a261e664d5346693"
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"runners": {
|
|
33
33
|
"macos-arm64": {
|
|
34
|
-
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.
|
|
35
|
-
"size":
|
|
36
|
-
"sha256": "
|
|
34
|
+
"url": "https://github.com/LegendApp/legend-spark/releases/download/v0.0.1-next.8/spark-runner-macos-arm64.zip",
|
|
35
|
+
"size": 20579687,
|
|
36
|
+
"sha256": "f1137d1d8922cdad365a7530f5f5121f57a140d5a81756c31b4f3028215c76e5",
|
|
37
37
|
"app": "SparkRunner.app",
|
|
38
38
|
"teamId": "56DD97VT22",
|
|
39
|
-
"fingerprint": "
|
|
39
|
+
"fingerprint": "2b1a4b243b0032e57eb0d0255005663ba99ff74a2045e7093a197249813f59f9"
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@legendapp/create-spark",
|
|
3
|
-
"version": "0.0.1-next.
|
|
3
|
+
"version": "0.0.1-next.8",
|
|
4
4
|
"description": "Create a Legend Spark app",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
8
|
"create-spark": "dist/index.js"
|
|
9
9
|
},
|
|
10
|
+
"preferUnplugged": true,
|
|
10
11
|
"files": [
|
|
11
12
|
"dist",
|
|
12
13
|
"templates"
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
28
|
"cross-spawn": "7.0.6",
|
|
28
|
-
"expo-desktop": "1.0.
|
|
29
|
+
"expo-desktop": "1.0.6",
|
|
29
30
|
"npm": "11.21.1",
|
|
30
31
|
"yaml": "2.9.1"
|
|
31
32
|
}
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
"postinstall": "node node_modules/@legendapp/spark/init-template.cjs"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@legendapp/spark": "0.0.1-next.
|
|
16
|
+
"@legendapp/spark": "0.0.1-next.8",
|
|
17
17
|
"expo": "54.0.37",
|
|
18
|
-
"expo-desktop": "1.0.
|
|
19
|
-
"expo-desktop-prebuild-config": "1.1.
|
|
20
|
-
"expo-desktop-config-plugins": "1.2
|
|
21
|
-
"expo-desktop-metro-config": "54.81.
|
|
22
|
-
"expo-desktop-template-bare-minimum": "54.81.
|
|
18
|
+
"expo-desktop": "1.0.6",
|
|
19
|
+
"expo-desktop-prebuild-config": "1.1.3",
|
|
20
|
+
"expo-desktop-config-plugins": "1.3.2",
|
|
21
|
+
"expo-desktop-metro-config": "54.81.3",
|
|
22
|
+
"expo-desktop-template-bare-minimum": "54.81.6",
|
|
23
23
|
"react": "19.1.4",
|
|
24
24
|
"react-dom": "19.1.4",
|
|
25
25
|
"react-native": "0.81.6",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"expo-keep-awake": "15.0.8",
|
|
42
42
|
"expo-modules-core": "3.0.30",
|
|
43
43
|
"expo-desktop-modules-core": "54.0.14",
|
|
44
|
-
"expo-desktop-stubs": "54.0.
|
|
44
|
+
"expo-desktop-stubs": "54.0.15",
|
|
45
45
|
"react": "19.1.4",
|
|
46
46
|
"react-native": "0.81.6",
|
|
47
47
|
"react-native-macos": "0.81.7",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"expo": "54.0.37",
|
|
21
|
-
"expo-desktop": "1.0.
|
|
22
|
-
"expo-desktop-prebuild-config": "1.1.
|
|
23
|
-
"expo-desktop-config-plugins": "1.2
|
|
24
|
-
"expo-desktop-metro-config": "54.81.
|
|
25
|
-
"expo-desktop-template-bare-minimum": "54.81.
|
|
21
|
+
"expo-desktop": "1.0.6",
|
|
22
|
+
"expo-desktop-prebuild-config": "1.1.3",
|
|
23
|
+
"expo-desktop-config-plugins": "1.3.2",
|
|
24
|
+
"expo-desktop-metro-config": "54.81.3",
|
|
25
|
+
"expo-desktop-template-bare-minimum": "54.81.6",
|
|
26
26
|
"react": "19.1.4",
|
|
27
27
|
"react-native": "0.81.6",
|
|
28
28
|
"react-native-macos": "0.81.7",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@types/react": "19.1.10",
|
|
32
32
|
"react-native-windows": "0.81.35",
|
|
33
33
|
"expo-desktop-modules-core": "54.0.14",
|
|
34
|
-
"expo-desktop-stubs": "54.0.
|
|
34
|
+
"expo-desktop-stubs": "54.0.15",
|
|
35
35
|
"@expo/ui": "0.2.0-beta.9",
|
|
36
36
|
"expo-dev-client": "6.0.21",
|
|
37
37
|
"expo-clipboard": "8.0.8",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"react-native-web": "0.21.0",
|
|
42
42
|
"uniwind": "1.6.3",
|
|
43
43
|
"tailwindcss": "4.2.4",
|
|
44
|
-
"@legendapp/spark": "0.0.1-next.
|
|
44
|
+
"@legendapp/spark": "0.0.1-next.8"
|
|
45
45
|
},
|
|
46
46
|
"overrides": {
|
|
47
47
|
"@expo/cli": "54.0.27",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"expo-keep-awake": "15.0.8",
|
|
56
56
|
"expo-modules-core": "3.0.30",
|
|
57
57
|
"expo-desktop-modules-core": "54.0.14",
|
|
58
|
-
"expo-desktop-stubs": "54.0.
|
|
58
|
+
"expo-desktop-stubs": "54.0.15",
|
|
59
59
|
"react": "19.1.4",
|
|
60
60
|
"react-native": "0.81.6",
|
|
61
61
|
"react-native-macos": "0.81.7",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"expo": "54.0.37",
|
|
17
|
-
"expo-desktop": "1.0.
|
|
18
|
-
"expo-desktop-prebuild-config": "1.1.
|
|
19
|
-
"expo-desktop-config-plugins": "1.2
|
|
20
|
-
"expo-desktop-metro-config": "54.81.
|
|
21
|
-
"expo-desktop-template-bare-minimum": "54.81.
|
|
17
|
+
"expo-desktop": "1.0.6",
|
|
18
|
+
"expo-desktop-prebuild-config": "1.1.3",
|
|
19
|
+
"expo-desktop-config-plugins": "1.3.2",
|
|
20
|
+
"expo-desktop-metro-config": "54.81.3",
|
|
21
|
+
"expo-desktop-template-bare-minimum": "54.81.6",
|
|
22
22
|
"react": "19.1.4",
|
|
23
23
|
"react-dom": "19.1.4",
|
|
24
24
|
"react-native": "0.81.6",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"@types/react": "19.1.10",
|
|
28
28
|
"react-native-windows": "0.81.35",
|
|
29
29
|
"expo-desktop-modules-core": "54.0.14",
|
|
30
|
-
"expo-desktop-stubs": "54.0.
|
|
31
|
-
"@legendapp/spark": "0.0.1-next.
|
|
30
|
+
"expo-desktop-stubs": "54.0.15",
|
|
31
|
+
"@legendapp/spark": "0.0.1-next.8"
|
|
32
32
|
},
|
|
33
33
|
"overrides": {
|
|
34
34
|
"@expo/cli": "54.0.27",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"expo-keep-awake": "15.0.8",
|
|
43
43
|
"expo-modules-core": "3.0.30",
|
|
44
44
|
"expo-desktop-modules-core": "54.0.14",
|
|
45
|
-
"expo-desktop-stubs": "54.0.
|
|
45
|
+
"expo-desktop-stubs": "54.0.15",
|
|
46
46
|
"react": "19.1.4",
|
|
47
47
|
"react-native": "0.81.6",
|
|
48
48
|
"react-native-macos": "0.81.7",
|