lecodes-cli 2.1.0 → 2.1.1

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
@@ -52,7 +52,7 @@ var package_default;
52
52
  var init_package = __esm(() => {
53
53
  package_default = {
54
54
  name: "lecodes-cli",
55
- version: "2.1.0",
55
+ version: "2.1.1",
56
56
  dependencies: {
57
57
  "@letary/chisel": "^0.13.0",
58
58
  jimp: "^1.6.1",
@@ -76,7 +76,7 @@ var init_package = __esm(() => {
76
76
  },
77
77
  peerDependencies: {
78
78
  "lecodes-design": "^0.11.0",
79
- "lecodes-headless": "^2.1.0",
79
+ "lecodes-headless": "^2.1.1",
80
80
  "lecodes-3d-editor": "^0.9.0",
81
81
  "lecodes-assets": "^0.2.1",
82
82
  "heic-decode": "^2.1.0",
@@ -146,7 +146,7 @@ var init_package = __esm(() => {
146
146
  });
147
147
 
148
148
  // ../../sdk/src/version.ts
149
- var SDK_VERSION = "2.1.0", sdkMajor = (version) => {
149
+ var SDK_VERSION = "2.1.1", sdkMajor = (version) => {
150
150
  const m = version?.match(/^(\d+)\.\d+\.\d+/);
151
151
  return m ? Number(m[1]) : null;
152
152
  }, bundleSdkVersion = (head) => head.slice(0, 2000).match(/^\/\/ sdk: (\d+\.\d+\.\d+\S*)/m)?.[1] ?? null, bundleRunsOn = (bundleVersion, hostVersion) => sdkMajor(bundleVersion) !== null && sdkMajor(bundleVersion) === sdkMajor(hostVersion);
@@ -215995,8 +215995,10 @@ var describeField = (f5) => {
215995
215995
  const fields = Object.entries(m.fields).filter(([k]) => !shown[name] || shown[name].includes(k));
215996
215996
  const described = Object.fromEntries(fields.map(([k, f5]) => [k, describeField(f5)]));
215997
215997
  for (const f5 of files) {
215998
- if (f5.model === name)
215999
- described[f5.key] = { kind: "file", optional: false, unique: false, index: false, hasDefault: false, array: f5.array, isId: false };
215998
+ if (f5.model !== name)
215999
+ continue;
216000
+ const declared = db.$given[name]?.fields?.[f5.key]?.def;
216001
+ described[f5.key] = { kind: "file", optional: declared?.optional ?? false, unique: false, index: false, hasDefault: false, array: f5.array, isId: false, ...f5.image ? { image: f5.image } : {} };
216000
216002
  }
216001
216003
  models[name] = { fields: described, ...name === FILE_MODEL ? { files: true } : shown[name] ? { auth: true } : {} };
216002
216004
  }
@@ -217921,6 +217923,15 @@ var resolveVariant = (requested, bundleJs, configKey = "ios.variant") => {
217921
217923
  }
217922
217924
  return { variant, detected };
217923
217925
  };
217926
+ var ANDROID_SDK_VARIANTS = [...SDK_VARIANTS, "vulkan"];
217927
+ var ANDROID_SDK_VULKAN_MIN = "2.1.0";
217928
+ var androidSdkArtifact = (variant, sdkVersion) => {
217929
+ if (variant === "vulkan" && sdkVersion && cmpVersion(sdkVersion, ANDROID_SDK_VULKAN_MIN) < 0) {
217930
+ throw new CliError(`android.variant "vulkan" needs lecodes-android-sdk >= ${ANDROID_SDK_VULKAN_MIN} (pinned: ${sdkVersion}) — run \`lecodes app update\` or set android.sdk.`);
217931
+ }
217932
+ return variant === "full" ? "lecodes-sdk" : `lecodes-sdk-${variant}`;
217933
+ };
217934
+ var androidVariantEngines = (variant) => variant === "vulkan" ? "full" : variant;
217924
217935
  var VERSION_RE = /^\d+\.\d+\.\d+$/;
217925
217936
  var cmpVersion = (a, b) => {
217926
217937
  const pa = a.split(".").map(Number);
@@ -220005,6 +220016,10 @@ engines the bundle uses and cannot see those, so a project using \`Physics\`,
220005
220016
  \`CharacterController\`, \`NavMesh\` or networking must set \`android.variant: "full"\` in
220006
220017
  \`../app.json\` — otherwise those aspects silently do nothing on device.
220007
220018
 
220019
+ \`android.variant: "vulkan"\` links \`lecodes-sdk-vulkan\`: the full engine set with Filament on
220020
+ Vulkan (OpenGL ES where the device has no Vulkan 1.1), \`arm64-v8a\` only — for 3D games. Never
220021
+ auto-selected; needs lecodes-android-sdk >= 2.1.0.
220022
+
220008
220023
  ## App-local native code
220009
220024
 
220010
220025
  Drop Kotlin files into \`app/src/main/java/\` and register them in \`MainActivity\` after the
@@ -220720,7 +220735,6 @@ if "%OS%"=="Windows_NT" endlocal
220720
220735
  var ANDROID_SDK_REPO = "letary/lecodes-android-sdk";
220721
220736
  var ANDROID_SDK_MIN_VERSION = "2.0.13";
220722
220737
  var ANDROID_SDK_VARIANTS_MIN = "1.3.0";
220723
- var variantArtifact = (variant) => variant === "full" ? "lecodes-sdk" : `lecodes-sdk-${variant}`;
220724
220738
  var ANDROID_SDK_URL_DEFAULT = `https://github.com/${ANDROID_SDK_REPO}/releases/download`;
220725
220739
  var sdkRepoUrl = () => process.env.LECODES_ANDROID_SDK_URL ?? ANDROID_SDK_URL_DEFAULT;
220726
220740
  var ANDROID_SDK_OPTS = { repo: ANDROID_SDK_REPO, minVersion: ANDROID_SDK_MIN_VERSION, configKey: "android.sdk" };
@@ -220762,8 +220776,8 @@ var initAndroid = async (opts) => {
220762
220776
  }
220763
220777
  const existing = readJson2(join21(root, "app.json")) ?? {};
220764
220778
  const variant = opts.variant ?? existing.android?.variant ?? "auto";
220765
- if (variant !== "auto" && !SDK_VARIANTS.includes(variant)) {
220766
- throw new CliError(`--variant must be auto, ${SDK_VARIANTS.join(", ")} (got "${variant}")`);
220779
+ if (variant !== "auto" && !ANDROID_SDK_VARIANTS.includes(variant)) {
220780
+ throw new CliError(`--variant must be auto, ${ANDROID_SDK_VARIANTS.join(", ")} (got "${variant}")`);
220767
220781
  }
220768
220782
  const sdkFlag = opts.sdk ?? existing.android?.sdk;
220769
220783
  const sdkVersion = await resolveSdkVersion(process.env.LECODES_ANDROID_SDK ?? sdkFlag ?? "latest", null, ANDROID_SDK_OPTS);
@@ -220824,7 +220838,7 @@ var initAndroid = async (opts) => {
220824
220838
  write("app/src/main/res/values/strings.xml", stringsXmlTemplate(name));
220825
220839
  write("app/src/main/res/drawable/ic_launcher.xml", IC_LAUNCHER_XML);
220826
220840
  const initVariant = variant === "auto" ? "core" : variant;
220827
- const initArtifact = cmpVersion(sdkVersion, ANDROID_SDK_VARIANTS_MIN) >= 0 ? variantArtifact(initVariant) : "lecodes-sdk";
220841
+ const initArtifact = cmpVersion(sdkVersion, ANDROID_SDK_VARIANTS_MIN) >= 0 ? androidSdkArtifact(initVariant, sdkVersion) : "lecodes-sdk";
220828
220842
  write("lecodes-runtime/build.gradle.kts", runtimeBuildGradleTemplate(sdkVersion, [], initArtifact));
220829
220843
  write("lecodes-runtime/src/main/kotlin/io/letary/lecodes/runtime/LeCodesRuntime.kt", runtimeKotlinTemplate([]));
220830
220844
  log("");
@@ -220868,11 +220882,12 @@ var syncAndroid = async (root, config, prior) => {
220868
220882
  bundleJs = readFileSync18(join21(assetsDir, "app.js"), "utf8");
220869
220883
  }
220870
220884
  const requestedVariant = config.android?.variant ?? "auto";
220871
- if (requestedVariant !== "auto" && !SDK_VARIANTS.includes(requestedVariant)) {
220872
- throw new CliError(`app.json android.variant must be "auto" or one of ${SDK_VARIANTS.join(", ")} (got "${requestedVariant}").`);
220885
+ if (requestedVariant !== "auto" && !ANDROID_SDK_VARIANTS.includes(requestedVariant)) {
220886
+ throw new CliError(`app.json android.variant must be "auto" or one of ${ANDROID_SDK_VARIANTS.join(", ")} (got "${requestedVariant}").`);
220873
220887
  }
220874
- const { variant, detected } = resolveVariant(requestedVariant, bundleJs, "android.variant");
220875
- let sdkArtifact = variantArtifact(variant);
220888
+ const { variant: covered, detected } = resolveVariant(requestedVariant === "auto" ? "auto" : androidVariantEngines(requestedVariant), bundleJs, "android.variant");
220889
+ const variant = requestedVariant === "vulkan" ? "vulkan" : covered;
220890
+ let sdkArtifact = androidSdkArtifact(variant, sdkVersion);
220876
220891
  if (sdkArtifact !== "lecodes-sdk" && cmpVersion(sdkVersion, ANDROID_SDK_VARIANTS_MIN) < 0) {
220877
220892
  warn(`lecodes-android-sdk ${sdkVersion} predates the variant matrix (${ANDROID_SDK_VARIANTS_MIN}) — linking the full lecodes-sdk AAR; run \`lecodes app update\` to pick up variant builds.`);
220878
220893
  sdkArtifact = "lecodes-sdk";
@@ -221502,8 +221517,8 @@ var doctorAndroidChecks = async (root, config, check) => {
221502
221517
  const hasSdkHome = !!(process.env.ANDROID_HOME ?? process.env.ANDROID_SDK_ROOT) || existsSync19(join21(androidDir, "local.properties"));
221503
221518
  check(hasSdkHome, "Android SDK location", "set ANDROID_HOME or create android/local.properties");
221504
221519
  const requestedVariant = config.android?.variant ?? "auto";
221505
- const validVariant = requestedVariant === "auto" || SDK_VARIANTS.includes(requestedVariant);
221506
- check(validVariant, `android.variant "${requestedVariant}"`, `use "auto" or one of ${SDK_VARIANTS.join(", ")}`);
221520
+ const validVariant = requestedVariant === "auto" || ANDROID_SDK_VARIANTS.includes(requestedVariant);
221521
+ check(validVariant, `android.variant "${requestedVariant}"`, `use "auto" or one of ${ANDROID_SDK_VARIANTS.join(", ")}`);
221507
221522
  const wrapperJar = join21(androidDir, "gradle", "wrapper", "gradle-wrapper.jar");
221508
221523
  check(existsSync19(wrapperJar) && statSync5(wrapperJar).size > 0, "Gradle wrapper jar", `run \`gradle wrapper --gradle-version ${GRADLE_VERSION}\` in android/ (or let Android Studio repair it)`);
221509
221524
  check(existsSync19(join21(androidDir, "app", "src", "main", "assets", "app.js")), "Bundled app.js", "run `lecodes app sync`");
@@ -222821,7 +222836,7 @@ var init = defineCommand({
222821
222836
  "bundle-id": str("iOS bundle identifier (default com.example.<slug>)", { value: "<id>" }),
222822
222837
  "app-id": str("Android applicationId (default com.example.<slug>)", { value: "<id>" }),
222823
222838
  team: str("Apple development team id", { value: "<id>" }),
222824
- variant: str("SDK variant: auto (default — sync picks the smallest of core/2d/3d/full covering what the bundle uses), or one of those to pin", { value: "<v>" }),
222839
+ variant: str("SDK variant: auto (default — sync picks the smallest of core/2d/3d/full covering what the bundle uses), or one of those to pin; Android also vulkan (full on Vulkan, arm64 only)", { value: "<v>" }),
222825
222840
  sdk: str("native SDK release (default: the newest one, pinned in app.json); 'latest' floats it — every sync re-resolves", { value: "<v|latest>" }),
222826
222841
  fullscreen: bool("(desktop) borderless fullscreen on the primary monitor — kiosks")
222827
222842
  },
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "lecodes-cli",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "dependencies": {
5
5
  "@letary/chisel": "^0.13.0",
6
6
  "jimp": "^1.6.1",
7
- "lecodes-sdk": "2.1.0"
7
+ "lecodes-sdk": "2.1.1"
8
8
  },
9
9
  "devDependencies": {
10
10
  "lecodes-design": "https://storage.yandexcloud.net/le-codes/releases/packages/lecodes-design/lecodes-design-0.11.0.tgz",
11
- "lecodes-headless": "2.1.0",
11
+ "lecodes-headless": "2.1.1",
12
12
  "qrcode-terminal": "^0.12.0",
13
13
  "lecodes-3d-editor": "https://storage.yandexcloud.net/le-codes/releases/packages/lecodes-3d-editor/lecodes-3d-editor-0.9.0.tgz",
14
14
  "lecodes-assets": "0.2.1",
15
15
  "lecodes-creator-nav": "0.19.0",
16
- "lecodes-gl-lite": "2.1.0",
17
- "lecodes-web-frame": "2.1.0",
18
- "lecodes-web-player": "2.1.0",
19
- "lecodes-web-shared": "2.1.0",
16
+ "lecodes-gl-lite": "2.1.1",
17
+ "lecodes-web-frame": "2.1.1",
18
+ "lecodes-web-player": "2.1.1",
19
+ "lecodes-web-shared": "2.1.1",
20
20
  "lecodes-web-lite": "2.0.2",
21
21
  "heic-decode": "^2.1.0",
22
22
  "marcidb-embedded": "^0.14.1",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "peerDependencies": {
26
26
  "lecodes-design": "^0.11.0",
27
- "lecodes-headless": "^2.1.0",
27
+ "lecodes-headless": "^2.1.1",
28
28
  "lecodes-3d-editor": "^0.9.0",
29
29
  "lecodes-assets": "^0.2.1",
30
30
  "heic-decode": "^2.1.0",