@legendapp/create-spark 0.0.1-next.7 → 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/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
- return { feedURL: url.href, publicKey: updates.publicKey };
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 = { ...expo.macos, ...config.macos, bundleIdentifier: expo.macos.bundleIdentifier };
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.7";
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
- ]), { cwd: process.cwd(), env: { ...process.env, PATH: `${npmBin}${path12.delimiter}${process.env.PATH ?? ""}`, npm_config_user_agent: `${manager}/spark`, CI: "1", ...manager === "yarn" ? { YARN_ENABLE_IMMUTABLE_INSTALLS: "false" } : {} }, stdout: "pipe", stderr: "inherit" });
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
  }
package/dist/release.json CHANGED
@@ -1,42 +1,42 @@
1
1
  {
2
2
  "schema": 1,
3
- "version": "0.0.1-next.7",
4
- "revision": "d750a9463e09c00bf390bb26de207586a3648d40",
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.7/runtimes-985164a87eb0.tgz",
8
- "size": 53886,
9
- "sha256": "138644fcfaf60b172c9f206c66c6d160515dd8803c70264687d0f503294c9c0b"
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.7/react-native-nitro-modules-0.37.0-02b4dff54381.tgz",
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": "02b4dff54381bbd4640eb4067e1dc82d7a79ff7e7f83b4357a4265177722d999"
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.7/op-engineering-op-sqlite-18.2.1-dcc9490310bc.tgz",
18
- "size": 112508535,
19
- "sha256": "dcc9490310bc74c869ba7cf5e846a8966fab7c3871c4a536482c20be237894fd"
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.7/react-native-webview-16.0.0-b887e540eca8.tgz",
23
- "size": 116289,
24
- "sha256": "b887e540eca87c6817de6b38c4e8f4076e3a65e0f7fa63f0c5882e1155447a59"
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.7/expo-audio-1.1.1-aff5604f2c4c.tgz",
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.7/spark-runner-macos-arm64.zip",
35
- "size": 20509043,
36
- "sha256": "7441a17362d2be2f78bf5fbb1221b8eb88d988c7f9d877266ab680653f5e65b8",
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": "a0198a6ade8e3012beb792c8bc3f409e61de34a171035b52a10cc841d766fcb3"
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.7",
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.0",
29
+ "expo-desktop": "1.0.6",
29
30
  "npm": "11.21.1",
30
31
  "yaml": "2.9.1"
31
32
  }
@@ -6,6 +6,10 @@
6
6
  "platforms": [
7
7
  "macos"
8
8
  ],
9
- "icon": "./assets/icon.png"
9
+ "icon": "./assets/icon.png",
10
+ "macos": {
11
+ "version": "0.0.1",
12
+ "buildNumber": "1"
13
+ }
10
14
  }
11
15
  }
@@ -1,6 +1,7 @@
1
1
  node_modules/
2
2
  .threaded-runtime/
3
- .spark/
3
+ .spark/*
4
+ !.spark/version
4
5
  macos/
5
6
  dist/
6
7
  app.json
@@ -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.7",
16
+ "@legendapp/spark": "0.0.1-next.8",
17
17
  "expo": "54.0.37",
18
- "expo-desktop": "1.0.0",
19
- "expo-desktop-prebuild-config": "1.1.0",
20
- "expo-desktop-config-plugins": "1.2.0",
21
- "expo-desktop-metro-config": "54.81.0",
22
- "expo-desktop-template-bare-minimum": "54.81.1",
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.14",
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",
@@ -10,6 +10,10 @@
10
10
  "macos",
11
11
  "windows"
12
12
  ],
13
- "icon": "./assets/icon.png"
13
+ "icon": "./assets/icon.png",
14
+ "macos": {
15
+ "version": "0.0.1",
16
+ "buildNumber": "1"
17
+ }
14
18
  }
15
19
  }
@@ -1,6 +1,7 @@
1
1
  node_modules/
2
2
  .threaded-runtime/
3
- .spark/
3
+ .spark/*
4
+ !.spark/version
4
5
  macos/
5
6
  dist/
6
7
  app.json
@@ -18,11 +18,11 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "expo": "54.0.37",
21
- "expo-desktop": "1.0.0",
22
- "expo-desktop-prebuild-config": "1.1.0",
23
- "expo-desktop-config-plugins": "1.2.0",
24
- "expo-desktop-metro-config": "54.81.0",
25
- "expo-desktop-template-bare-minimum": "54.81.1",
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.14",
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.7"
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.14",
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",
@@ -6,6 +6,10 @@
6
6
  "platforms": [
7
7
  "windows"
8
8
  ],
9
- "icon": "./assets/icon.png"
9
+ "icon": "./assets/icon.png",
10
+ "macos": {
11
+ "version": "0.0.1",
12
+ "buildNumber": "1"
13
+ }
10
14
  }
11
15
  }
@@ -1,6 +1,7 @@
1
1
  node_modules/
2
2
  .threaded-runtime/
3
- .spark/
3
+ .spark/*
4
+ !.spark/version
4
5
  macos/
5
6
  dist/
6
7
  app.json
@@ -14,11 +14,11 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "expo": "54.0.37",
17
- "expo-desktop": "1.0.0",
18
- "expo-desktop-prebuild-config": "1.1.0",
19
- "expo-desktop-config-plugins": "1.2.0",
20
- "expo-desktop-metro-config": "54.81.0",
21
- "expo-desktop-template-bare-minimum": "54.81.1",
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.14",
31
- "@legendapp/spark": "0.0.1-next.7"
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.14",
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",