lecodes-cli 0.18.2 → 0.19.2
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 +1866 -301
- package/package.json +14 -12
- package/runtime/scene-harness.json +1 -1
- package/runtime/sdk-types.json +1 -1
- package/src/api.ts +302 -0
- package/src/browserAuth.ts +87 -0
- package/src/cmgenTool.ts +104 -0
- package/src/commands/app.ts +891 -0
- package/src/commands/appAndroid.ts +603 -0
- package/src/commands/appDesktop.ts +326 -0
- package/src/commands/appDesktopMac.ts +470 -0
- package/src/commands/appIcon.ts +187 -0
- package/src/commands/appShared.ts +448 -0
- package/src/commands/appTemplates.ts +883 -0
- package/src/commands/appTemplatesAndroid.ts +599 -0
- package/src/commands/appTemplatesGradlew.ts +9 -0
- package/src/commands/assets.ts +28 -0
- package/src/commands/clone.ts +60 -0
- package/src/commands/compile.ts +253 -0
- package/src/commands/create.ts +59 -0
- package/src/commands/design.ts +863 -0
- package/src/commands/designTemplates.ts +11 -0
- package/src/commands/desktop.ts +122 -0
- package/src/commands/dev.ts +214 -0
- package/src/commands/diff.ts +59 -0
- package/src/commands/init.ts +191 -0
- package/src/commands/install.ts +198 -0
- package/src/commands/lightmap.ts +290 -0
- package/src/commands/link.ts +147 -0
- package/src/commands/login.ts +24 -0
- package/src/commands/navmesh.ts +225 -0
- package/src/commands/pn.ts +305 -0
- package/src/commands/projectTemplates.ts +129 -0
- package/src/commands/pull.ts +109 -0
- package/src/commands/push.ts +173 -0
- package/src/commands/render.ts +414 -0
- package/src/commands/scene.ts +148 -0
- package/src/commands/shaders.ts +157 -0
- package/src/commands/status.ts +29 -0
- package/src/commands/test.ts +370 -0
- package/src/commands/thumbs.ts +178 -0
- package/src/commands/types.ts +87 -0
- package/src/commands/update.ts +190 -0
- package/src/compile/assetIcons.ts +214 -0
- package/src/compile/collect.ts +46 -0
- package/src/compile/collectLocal.ts +37 -0
- package/src/compile/designCompile.ts +104 -0
- package/src/compile/fonts.ts +156 -0
- package/src/compile/headlessBundle.ts +129 -0
- package/src/compile/nativeStack.ts +21 -0
- package/src/compile/projectCompile.ts +109 -0
- package/src/compile/sceneCompile.ts +113 -0
- package/src/compile/screenEntry.ts +127 -0
- package/src/compile/shaders.ts +245 -0
- package/src/config.ts +42 -0
- package/src/designMeta.ts +35 -0
- package/src/desktopRenderer.ts +532 -0
- package/src/desktopScript.ts +276 -0
- package/src/dev/clientTemplates.ts +160 -0
- package/src/dev/devServer.ts +292 -0
- package/src/dev/wsServer.ts +144 -0
- package/src/distRoot.ts +20 -0
- package/src/ignore.ts +163 -0
- package/src/index.ts +491 -0
- package/src/lecodes-3d-editor.d.ts +41 -0
- package/src/lecodes-assets.d.ts +7 -0
- package/src/lecodes-design.d.ts +191 -0
- package/src/lecodes-renderer.d.ts +131 -0
- package/src/localFiles.ts +144 -0
- package/src/manifest.ts +46 -0
- package/src/matcTool.ts +137 -0
- package/src/peers.ts +40 -0
- package/src/project.ts +61 -0
- package/src/projectEnv.ts +94 -0
- package/src/qrcode-terminal.d.ts +9 -0
- package/src/releases.ts +125 -0
- package/src/serverDiff.ts +78 -0
- package/src/textDiff.ts +103 -0
- package/src/types.ts +0 -0
- package/src/util.ts +146 -0
- package/runtime/sdk/animate/animate.ts +0 -238
- package/runtime/sdk/animate/bezier.ts +0 -138
- package/runtime/sdk/animate/easings.ts +0 -126
- package/runtime/sdk/canvas/Canvas.ts +0 -305
- package/runtime/sdk/core/Aspect.ts +0 -512
- package/runtime/sdk/core/InspectorUI.ts +0 -212
- package/runtime/sdk/core/color.ts +0 -66
- package/runtime/sdk/core/compWrite.ts +0 -42
- package/runtime/sdk/core/events.ts +0 -38
- package/runtime/sdk/core/fields.ts +0 -120
- package/runtime/sdk/core/registry.ts +0 -23
- package/runtime/sdk/core/signals.ts +0 -277
- package/runtime/sdk/core/time.ts +0 -81
- package/runtime/sdk/g2/Camera2D.ts +0 -40
- package/runtime/sdk/g2/CharacterController2D.ts +0 -276
- package/runtime/sdk/g2/Node2D.ts +0 -267
- package/runtime/sdk/g2/OneWay2D.ts +0 -66
- package/runtime/sdk/g2/Physics2D.ts +0 -346
- package/runtime/sdk/g2/Scene2D.ts +0 -209
- package/runtime/sdk/g2/Shape2D.ts +0 -259
- package/runtime/sdk/g2/Sprite.ts +0 -89
- package/runtime/sdk/g2/SpriteAnimation.ts +0 -171
- package/runtime/sdk/g2/SpriteSheet.ts +0 -166
- package/runtime/sdk/g2/Texture2D.ts +0 -47
- package/runtime/sdk/g2/Tilemap.ts +0 -41
- package/runtime/sdk/g2/Tileset.ts +0 -71
- package/runtime/sdk/g2/Trigger2D.ts +0 -77
- package/runtime/sdk/g2/autotile.ts +0 -433
- package/runtime/sdk/g2/cells.ts +0 -91
- package/runtime/sdk/g2/defineScene2d.ts +0 -381
- package/runtime/sdk/g2/groups2d.ts +0 -106
- package/runtime/sdk/g2/loop.ts +0 -50
- package/runtime/sdk/g2/scenarios2d.ts +0 -69
- package/runtime/sdk/g2/touch.ts +0 -83
- package/runtime/sdk/gl/Camera.ts +0 -160
- package/runtime/sdk/gl/CameraPlace.ts +0 -52
- package/runtime/sdk/gl/CharacterController.ts +0 -238
- package/runtime/sdk/gl/Gearbox.ts +0 -212
- package/runtime/sdk/gl/Geometry.ts +0 -279
- package/runtime/sdk/gl/IK.ts +0 -193
- package/runtime/sdk/gl/InstancedMesh.ts +0 -132
- package/runtime/sdk/gl/Light.ts +0 -99
- package/runtime/sdk/gl/Lightmap.ts +0 -179
- package/runtime/sdk/gl/Material.ts +0 -245
- package/runtime/sdk/gl/Mesh.ts +0 -83
- package/runtime/sdk/gl/Model.ts +0 -64
- package/runtime/sdk/gl/Node.ts +0 -350
- package/runtime/sdk/gl/Noise.ts +0 -30
- package/runtime/sdk/gl/Particles.ts +0 -676
- package/runtime/sdk/gl/Physics.ts +0 -222
- package/runtime/sdk/gl/Plane.ts +0 -53
- package/runtime/sdk/gl/Ray.ts +0 -16
- package/runtime/sdk/gl/Scene.ts +0 -479
- package/runtime/sdk/gl/Shape.ts +0 -377
- package/runtime/sdk/gl/Texture.ts +0 -46
- package/runtime/sdk/gl/Trigger.ts +0 -45
- package/runtime/sdk/gl/Vehicle.ts +0 -473
- package/runtime/sdk/gl/Wheel.ts +0 -240
- package/runtime/sdk/gl/animation/AnimationClip.ts +0 -204
- package/runtime/sdk/gl/animation/Animator.ts +0 -87
- package/runtime/sdk/gl/animation/Layer.ts +0 -29
- package/runtime/sdk/gl/animation/Loop.ts +0 -25
- package/runtime/sdk/gl/animation/Playback.ts +0 -43
- package/runtime/sdk/gl/animation/core.ts +0 -294
- package/runtime/sdk/gl/controls.ts +0 -95
- package/runtime/sdk/gl/physicsEvents.ts +0 -20
- package/runtime/sdk/gl/scenarios.ts +0 -291
- package/runtime/sdk/gl/state.ts +0 -6
- package/runtime/sdk/gl/touch.ts +0 -68
- package/runtime/sdk/inject.ts +0 -186
- package/runtime/sdk/math/Mathf.ts +0 -118
- package/runtime/sdk/math/mat4.ts +0 -278
- package/runtime/sdk/math/quat.ts +0 -232
- package/runtime/sdk/math/vec.ts +0 -255
- package/runtime/sdk/plugins/camera.ts +0 -81
- package/runtime/sdk/plugins/geolocation.ts +0 -123
- package/runtime/sdk/plugins/oauth.ts +0 -61
- package/runtime/sdk/plugins/permission.ts +0 -7
- package/runtime/sdk/plugins/push.ts +0 -132
- package/runtime/sdk/plugins/qr.ts +0 -73
- package/runtime/sdk/plugins/service.ts +0 -47
- package/runtime/sdk/runtime/app.ts +0 -101
- package/runtime/sdk/runtime/appEvents.ts +0 -54
- package/runtime/sdk/runtime/channel.ts +0 -61
- package/runtime/sdk/runtime/clipboard.ts +0 -20
- package/runtime/sdk/runtime/datetime.ts +0 -329
- package/runtime/sdk/runtime/device.ts +0 -293
- package/runtime/sdk/runtime/fetch.ts +0 -77
- package/runtime/sdk/runtime/files.ts +0 -23
- package/runtime/sdk/runtime/input.ts +0 -175
- package/runtime/sdk/runtime/media.ts +0 -111
- package/runtime/sdk/runtime/misc.ts +0 -16
- package/runtime/sdk/runtime/net.ts +0 -36
- package/runtime/sdk/runtime/rpc.ts +0 -218
- package/runtime/sdk/runtime/service.ts +0 -83
- package/runtime/sdk/runtime/share.ts +0 -9
- package/runtime/sdk/runtime/storage.ts +0 -13
- package/runtime/sdk/runtime/touch.ts +0 -76
- package/runtime/sdk/scene/defineScene.ts +0 -1227
- package/runtime/sdk/scene/editorPlugins.ts +0 -92
- package/runtime/sdk/scene/gizmos.ts +0 -148
- package/runtime/sdk/scene/grammar.ts +0 -120
- package/runtime/sdk/scene/material.ts +0 -188
- package/runtime/sdk/server/auth/appConfig.ts +0 -12
- package/runtime/sdk/server/auth/global.ts +0 -80
- package/runtime/sdk/server/auth/host.ts +0 -318
- package/runtime/sdk/server/auth/models.ts +0 -83
- package/runtime/sdk/server/auth/types.ts +0 -50
- package/runtime/sdk/server/channel.ts +0 -56
- package/runtime/sdk/server/context.ts +0 -36
- package/runtime/sdk/server/db/defineDb.ts +0 -237
- package/runtime/sdk/server/db/fields.ts +0 -132
- package/runtime/sdk/server/db/httpTransport.ts +0 -93
- package/runtime/sdk/server/db/index.ts +0 -7
- package/runtime/sdk/server/db/marci/query.ts +0 -412
- package/runtime/sdk/server/db/types.ts +0 -202
- package/runtime/sdk/server/errors.ts +0 -12
- package/runtime/sdk/server/host.ts +0 -74
- package/runtime/sdk/server/inject.ts +0 -13
- package/runtime/sdk/server/runtime.ts +0 -133
- package/runtime/sdk/server/validate.ts +0 -87
- package/runtime/sdk/ui/NativeView.ts +0 -142
- package/runtime/sdk/ui/UI.ts +0 -39
- package/runtime/sdk/ui/UIBottomSheet.ts +0 -139
- package/runtime/sdk/ui/UIButton.ts +0 -101
- package/runtime/sdk/ui/UIContainer.ts +0 -60
- package/runtime/sdk/ui/UIImage.ts +0 -83
- package/runtime/sdk/ui/UIInput.ts +0 -185
- package/runtime/sdk/ui/UIModal.ts +0 -139
- package/runtime/sdk/ui/UINode.ts +0 -826
- package/runtime/sdk/ui/UIPager.ts +0 -362
- package/runtime/sdk/ui/UIPopover.ts +0 -100
- package/runtime/sdk/ui/UIScreen.ts +0 -123
- package/runtime/sdk/ui/UIScrollable.ts +0 -87
- package/runtime/sdk/ui/UISpacer.ts +0 -14
- package/runtime/sdk/ui/UITabs.ts +0 -236
- package/runtime/sdk/ui/UIText.ts +0 -51
- package/runtime/sdk/ui/UIVideo.ts +0 -88
- package/runtime/sdk/ui/UIVirtualizedList.ts +0 -241
- package/runtime/sdk/ui/UIWidget.ts +0 -127
- package/runtime/sdk/ui/fonts.ts +0 -13
- package/runtime/sdk/ui/presentable.ts +0 -117
- package/runtime/sdk/ui/router.ts +0 -132
- package/runtime/sdk/ui/theme.ts +0 -84
package/dist/index.js
CHANGED
|
@@ -389,15 +389,18 @@ design/comments/
|
|
|
389
389
|
if (!existsSync2(file))
|
|
390
390
|
writeFileSync3(file, DEFAULT_IGNORE_FILE);
|
|
391
391
|
}, DEFAULT_GITIGNORE = `# LeCodes per-checkout state: generated IDE types + this machine's sync cursor
|
|
392
|
-
# (.lecodes/manifest.json). Regenerate with \`lecodes
|
|
392
|
+
# (.lecodes/manifest.json). Regenerate with \`lecodes update\` / re-attach with \`lecodes link\`.
|
|
393
393
|
.lecodes/
|
|
394
394
|
|
|
395
395
|
# Render / preview outputs and test failure frames
|
|
396
396
|
screenshot.png
|
|
397
397
|
shots/
|
|
398
398
|
tests/.artifacts/
|
|
399
|
+
tests/.shots/
|
|
399
400
|
|
|
400
401
|
node_modules/
|
|
402
|
+
|
|
403
|
+
dist/
|
|
401
404
|
`, ensureGitignore = (root) => {
|
|
402
405
|
const file = join3(root, ".gitignore");
|
|
403
406
|
if (!existsSync2(file)) {
|
|
@@ -3174,7 +3177,7 @@ var require_source_map_support = __commonJS((exports, module) => {
|
|
|
3174
3177
|
|
|
3175
3178
|
// ../../node_modules/.bun/typescript@5.8.3/node_modules/typescript/lib/typescript.js
|
|
3176
3179
|
var require_typescript = __commonJS((exports, module) => {
|
|
3177
|
-
var __dirname = "
|
|
3180
|
+
var __dirname = "C:\\Users\\Den\\Desktop\\LeCodes\\lecodes\\node_modules\\.bun\\typescript@5.8.3\\node_modules\\typescript\\lib", __filename = "C:\\Users\\Den\\Desktop\\LeCodes\\lecodes\\node_modules\\.bun\\typescript@5.8.3\\node_modules\\typescript\\lib\\typescript.js";
|
|
3178
3181
|
/*! *****************************************************************************
|
|
3179
3182
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3180
3183
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -171651,10 +171654,7 @@ var init_detectEntry = __esm(() => {
|
|
|
171651
171654
|
});
|
|
171652
171655
|
|
|
171653
171656
|
// ../sdk/src/compile/shaderTargets.ts
|
|
171654
|
-
var externalSamplerReg, PLATFORM_BUILD, LOCAL_PLATFORM_BUILD, ALL_PLATFORM_BUILD, LOCAL_ONLY_PLATFORMS, TARGET_MATRIX_GENERATION = 1,
|
|
171655
|
-
externalSamplerReg.lastIndex = 0;
|
|
171656
|
-
return externalSamplerReg.test(text) ? ["opengl", "metal", "webgl", "desktop"] : ["opengl", "metal", "desktop"];
|
|
171657
|
-
}, matcArgs = (platform, outPath, inPath) => {
|
|
171657
|
+
var externalSamplerReg, PLATFORM_BUILD, LOCAL_PLATFORM_BUILD, ALL_PLATFORM_BUILD, LOCAL_ONLY_PLATFORMS, TARGET_MATRIX_GENERATION = 1, MATC_PLATFORMS, matcArgs = (platform, outPath, inPath) => {
|
|
171658
171658
|
const build = ALL_PLATFORM_BUILD[platform];
|
|
171659
171659
|
return ["-p", build.profile, "--no-essl1", "-a", build.api, "-o", outPath, inPath];
|
|
171660
171660
|
};
|
|
@@ -171663,7 +171663,6 @@ var init_shaderTargets = __esm(() => {
|
|
|
171663
171663
|
PLATFORM_BUILD = {
|
|
171664
171664
|
opengl: { profile: "mobile", api: "opengl", replaceExternal: false },
|
|
171665
171665
|
metal: { profile: "mobile", api: "metal", replaceExternal: false },
|
|
171666
|
-
webgl: { profile: "mobile", api: "opengl", replaceExternal: true },
|
|
171667
171666
|
desktop: { profile: "desktop", api: "opengl", replaceExternal: true }
|
|
171668
171667
|
};
|
|
171669
171668
|
LOCAL_PLATFORM_BUILD = {
|
|
@@ -171671,6 +171670,7 @@ var init_shaderTargets = __esm(() => {
|
|
|
171671
171670
|
};
|
|
171672
171671
|
ALL_PLATFORM_BUILD = { ...PLATFORM_BUILD, ...LOCAL_PLATFORM_BUILD };
|
|
171673
171672
|
LOCAL_ONLY_PLATFORMS = ["desktop-vulkan"];
|
|
171673
|
+
MATC_PLATFORMS = ["opengl", "metal", "desktop"];
|
|
171674
171674
|
});
|
|
171675
171675
|
|
|
171676
171676
|
// ../sdk/src/compile/liteMaterial.ts
|
|
@@ -172186,8 +172186,6 @@ var compileProject = async (opts) => {
|
|
|
172186
172186
|
const name = shaders[0].src.split(/[\\/]/).pop() ?? "";
|
|
172187
172187
|
const [prefix, suffix = ".filamat"] = name.split("_opengl");
|
|
172188
172188
|
files[e.path] = `export default ("id:" + _creatorUtils.fetchLocal(${JSON.stringify(prefix + "_")} + _creator.backend + ${JSON.stringify(suffix)}))`;
|
|
172189
|
-
} else if (shaders.length > 2) {
|
|
172190
|
-
files[e.path] = `export default \`${opts.publicUrl}${shaders[0].src.replace("_opengl", "_${_creator.subBackend ?? _creator.backend}")}\``;
|
|
172191
172189
|
} else if (shaders.length > 0) {
|
|
172192
172190
|
files[e.path] = `export default \`${opts.publicUrl}${shaders[0].src.replace("_opengl", "_${_creator.backend}")}\``;
|
|
172193
172191
|
} else {
|
|
@@ -173134,7 +173132,6 @@ __export(exports_compile, {
|
|
|
173134
173132
|
parseSfnt: () => parseSfnt,
|
|
173135
173133
|
parseJsonish: () => parseJsonish,
|
|
173136
173134
|
offsetSourceMap: () => offsetSourceMap,
|
|
173137
|
-
matcPlatformsFor: () => matcPlatformsFor,
|
|
173138
173135
|
matcArgs: () => matcArgs,
|
|
173139
173136
|
loadSceneHarness: () => loadSceneHarness,
|
|
173140
173137
|
isServerPath: () => isServerPath,
|
|
@@ -173165,6 +173162,7 @@ __export(exports_compile, {
|
|
|
173165
173162
|
SCENE_HARNESS_DIR: () => SCENE_HARNESS_DIR,
|
|
173166
173163
|
SCENE_ENTRY_PATH: () => SCENE_ENTRY_PATH,
|
|
173167
173164
|
PLATFORM_BUILD: () => PLATFORM_BUILD,
|
|
173165
|
+
MATC_PLATFORMS: () => MATC_PLATFORMS,
|
|
173168
173166
|
LOCAL_PLATFORM_BUILD: () => LOCAL_PLATFORM_BUILD,
|
|
173169
173167
|
LOCAL_ONLY_PLATFORMS: () => LOCAL_ONLY_PLATFORMS,
|
|
173170
173168
|
ICON_ID: () => ICON_ID,
|
|
@@ -173195,7 +173193,13 @@ var init_compile = __esm(() => {
|
|
|
173195
173193
|
import { existsSync as existsSync7 } from "node:fs";
|
|
173196
173194
|
import { createRequire as createRequire3 } from "node:module";
|
|
173197
173195
|
import { dirname as dirname5, join as join9 } from "node:path";
|
|
173198
|
-
var
|
|
173196
|
+
var resolveSdkInject = () => {
|
|
173197
|
+
try {
|
|
173198
|
+
return createRequire3(import.meta.url).resolve("lecodes-sdk/inject");
|
|
173199
|
+
} catch {}
|
|
173200
|
+
const vendored = join9(distRoot, "runtime", "sdk", "inject.ts");
|
|
173201
|
+
return existsSync7(vendored) ? vendored : null;
|
|
173202
|
+
}, sdkInject, resolveChiselBin2 = () => {
|
|
173199
173203
|
if (process.env.LECODES_CHISEL_BIN)
|
|
173200
173204
|
return process.env.LECODES_CHISEL_BIN;
|
|
173201
173205
|
try {
|
|
@@ -173227,9 +173231,9 @@ var vendoredInject, resolveChiselBin2 = () => {
|
|
|
173227
173231
|
var init_projectCompile = __esm(() => {
|
|
173228
173232
|
init_distRoot();
|
|
173229
173233
|
init_compile();
|
|
173230
|
-
|
|
173231
|
-
if (
|
|
173232
|
-
process.env.LECODES_SDK_INJECT =
|
|
173234
|
+
sdkInject = resolveSdkInject();
|
|
173235
|
+
if (sdkInject)
|
|
173236
|
+
process.env.LECODES_SDK_INJECT = sdkInject;
|
|
173233
173237
|
chiselBin = resolveChiselBin2();
|
|
173234
173238
|
if (chiselBin)
|
|
173235
173239
|
process.env.LECODES_CHISEL_BIN = chiselBin;
|
|
@@ -214122,6 +214126,7 @@ var init_esm30 = __esm(() => {
|
|
|
214122
214126
|
// src/types.ts
|
|
214123
214127
|
import { dirname as dirname13, join as join22, relative as relative3, sep } from "node:path";
|
|
214124
214128
|
import { existsSync as existsSync21, mkdirSync as mkdirSync15, readdirSync as readdirSync10, readFileSync as readFileSync18, rmSync as rmSync8, statSync as statSync8, writeFileSync as writeFileSync17 } from "node:fs";
|
|
214129
|
+
import { createRequire as createRequire4 } from "node:module";
|
|
214125
214130
|
var TSCONFIG, listBundleFiles = (dir, base = dir) => {
|
|
214126
214131
|
if (!existsSync21(dir))
|
|
214127
214132
|
return [];
|
|
@@ -214171,8 +214176,16 @@ var TSCONFIG, listBundleFiles = (dir, base = dir) => {
|
|
|
214171
214176
|
bundle[path2] = readFileSync18(join22(typesDir, path2), "utf8");
|
|
214172
214177
|
return bundle;
|
|
214173
214178
|
}, materializeTypes = async (root, apiUrl) => writeTypeBundle(root, await getTypes(apiUrl)), readLocalTypeBundle = () => {
|
|
214179
|
+
const fromPackage = (() => {
|
|
214180
|
+
try {
|
|
214181
|
+
return createRequire4(import.meta.url).resolve("lecodes-sdk/types.json");
|
|
214182
|
+
} catch {
|
|
214183
|
+
return null;
|
|
214184
|
+
}
|
|
214185
|
+
})();
|
|
214174
214186
|
const candidates = [
|
|
214175
214187
|
join22(distRoot, "runtime", "sdk-types.json"),
|
|
214188
|
+
...fromPackage ? [fromPackage] : [],
|
|
214176
214189
|
join22(distRoot, "..", "sdk", "dist", "types.json")
|
|
214177
214190
|
];
|
|
214178
214191
|
for (const path2 of candidates) {
|
|
@@ -214355,7 +214368,7 @@ var init_browserAuth = __esm(() => {
|
|
|
214355
214368
|
init_util();
|
|
214356
214369
|
});
|
|
214357
214370
|
|
|
214358
|
-
//
|
|
214371
|
+
// ../../../lecodes-tools/packages/lecodes-design/src/core/concept.ts
|
|
214359
214372
|
var SPEC_TEMPLATE = `# Concept
|
|
214360
214373
|
|
|
214361
214374
|
The narrative half of this design. \`meta.json\` + the canvas hold the *visual/flow* half (screens,
|
|
@@ -214391,7 +214404,7 @@ Behaviour that isn't visible in a single screen — validation, permissions, not
|
|
|
214391
214404
|
cases — and the decisions you've made and why, so they aren't re-litigated later.
|
|
214392
214405
|
`;
|
|
214393
214406
|
|
|
214394
|
-
//
|
|
214407
|
+
// ../../../lecodes-tools/packages/lecodes-design/src/templates.ts
|
|
214395
214408
|
var SPEC_MD, META_JSON = `{
|
|
214396
214409
|
"screens": {
|
|
214397
214410
|
"home": { "pos": [0, 0], "desc": "Example screen — replace me", "role": "list" }
|
|
@@ -216526,25 +216539,26 @@ var require_main = __commonJS((exports, module) => {
|
|
|
216526
216539
|
// package.json
|
|
216527
216540
|
var package_default = {
|
|
216528
216541
|
name: "lecodes-cli",
|
|
216529
|
-
version: "0.
|
|
216542
|
+
version: "0.19.2",
|
|
216530
216543
|
dependencies: {
|
|
216531
216544
|
"@letary/chisel": "^0.10.0",
|
|
216532
|
-
jimp: "^1.6.1"
|
|
216545
|
+
jimp: "^1.6.1",
|
|
216546
|
+
"lecodes-sdk": "workspace:*"
|
|
216533
216547
|
},
|
|
216534
216548
|
devDependencies: {
|
|
216535
|
-
"lecodes-design": "
|
|
216549
|
+
"lecodes-design": "link:lecodes-design",
|
|
216536
216550
|
"lecodes-renderer": "workspace:*",
|
|
216537
216551
|
"qrcode-terminal": "^0.12.0",
|
|
216538
|
-
"lecodes-3d-editor": "
|
|
216552
|
+
"lecodes-3d-editor": "link:lecodes-3d-editor",
|
|
216539
216553
|
"lecodes-assets": "workspace:*",
|
|
216540
|
-
|
|
216541
|
-
"viewer-lite": "workspace:*"
|
|
216554
|
+
"lecodes-creator-nav": "workspace:*",
|
|
216555
|
+
"lecodes-viewer-lite": "workspace:*"
|
|
216542
216556
|
},
|
|
216543
216557
|
peerDependencies: {
|
|
216544
|
-
"lecodes-design": "^0.
|
|
216545
|
-
"lecodes-renderer": "^0.
|
|
216546
|
-
"lecodes-3d-editor": "^0.
|
|
216547
|
-
"lecodes-assets": "^0.1
|
|
216558
|
+
"lecodes-design": "^0.9.0",
|
|
216559
|
+
"lecodes-renderer": "^0.19.2",
|
|
216560
|
+
"lecodes-3d-editor": "^0.7.0",
|
|
216561
|
+
"lecodes-assets": "^0.2.1"
|
|
216548
216562
|
},
|
|
216549
216563
|
bin: {
|
|
216550
216564
|
lecodes: "dist/index.js"
|
|
@@ -216555,6 +216569,7 @@ var package_default = {
|
|
|
216555
216569
|
},
|
|
216556
216570
|
files: [
|
|
216557
216571
|
"dist",
|
|
216572
|
+
"src",
|
|
216558
216573
|
"runtime",
|
|
216559
216574
|
"README.md"
|
|
216560
216575
|
],
|
|
@@ -216721,7 +216736,7 @@ init_fonts();
|
|
|
216721
216736
|
init_compile();
|
|
216722
216737
|
import { execFile } from "node:child_process";
|
|
216723
216738
|
import { createHash as createHash4, randomBytes } from "node:crypto";
|
|
216724
|
-
import {
|
|
216739
|
+
import { existsSync as existsSync11, mkdirSync as mkdirSync6, readFileSync as readFileSync11, rmSync as rmSync2, statSync as statSync2, writeFileSync as writeFileSync7 } from "node:fs";
|
|
216725
216740
|
import { tmpdir } from "node:os";
|
|
216726
216741
|
import { basename as basename3, join as join13 } from "node:path";
|
|
216727
216742
|
|
|
@@ -216914,17 +216929,14 @@ var matcIdentity = (exe) => {
|
|
|
216914
216929
|
return `${stat.size}:${Math.trunc(stat.mtimeMs)}`;
|
|
216915
216930
|
};
|
|
216916
216931
|
var shaderHash = (text, matcId) => createHash4("sha256").update(`${TARGET_MATRIX_GENERATION}\x00${matcId}\x00${text}`).digest("hex").slice(0, 16);
|
|
216917
|
-
var artifactFamily = (
|
|
216918
|
-
const matcPlatforms = [...matcPlatformsFor(text), ...LOCAL_ONLY_PLATFORMS];
|
|
216919
|
-
return [...matcPlatforms, ...matcPlatforms.includes("webgl") ? [] : ["webgl"], "webgl-lite"];
|
|
216920
|
-
};
|
|
216932
|
+
var artifactFamily = () => [...MATC_PLATFORMS, ...LOCAL_ONLY_PLATFORMS, "webgl-lite"];
|
|
216921
216933
|
var shaderIsCompiled = (root, text, matcId) => {
|
|
216922
216934
|
const hash = shaderHash(text, matcId);
|
|
216923
|
-
return artifactFamily(
|
|
216935
|
+
return artifactFamily().every((p) => existsSync11(join13(shadersCacheDir(root), `${hash}_${p}.filamat`)));
|
|
216924
216936
|
};
|
|
216925
216937
|
var shaderCompiledPlatforms = (root, text, matcId) => {
|
|
216926
216938
|
const hash = shaderHash(text, matcId);
|
|
216927
|
-
return artifactFamily(
|
|
216939
|
+
return artifactFamily().filter((p) => existsSync11(join13(shadersCacheDir(root), `${hash}_${p}.filamat`)));
|
|
216928
216940
|
};
|
|
216929
216941
|
var localShaderArtifact = (root, text, platform) => {
|
|
216930
216942
|
const matcExe = resolveMatcExeCached();
|
|
@@ -216969,15 +216981,12 @@ var applyLocalShaders = async (entries, opts) => {
|
|
|
216969
216981
|
for (const entry of shaderEntries) {
|
|
216970
216982
|
const text = readFileSync11(entry.absPath, "utf8");
|
|
216971
216983
|
const hash = shaderHash(text, matcId);
|
|
216972
|
-
const family = artifactFamily(
|
|
216984
|
+
const family = artifactFamily();
|
|
216973
216985
|
const artifact = (platform) => `${hash}_${platform}.filamat`;
|
|
216974
216986
|
const has = (platform) => existsSync11(join13(cacheDir, artifact(platform)));
|
|
216975
216987
|
const wanted = opts.platforms ? family.filter((p) => opts.platforms.includes(p)) : family;
|
|
216976
|
-
if (wanted.includes("webgl") && !matcPlatformsFor(text).includes("webgl") && !wanted.includes("opengl")) {
|
|
216977
|
-
wanted.push("opengl");
|
|
216978
|
-
}
|
|
216979
216988
|
const missing = wanted.filter((p) => !has(p));
|
|
216980
|
-
const matcMissing = missing.filter((p) => p !== "webgl-lite"
|
|
216989
|
+
const matcMissing = missing.filter((p) => p !== "webgl-lite");
|
|
216981
216990
|
if (matcMissing.length > 0) {
|
|
216982
216991
|
const tempName = `lecodes-matc-${randomBytes(6).toString("hex")}.mat`;
|
|
216983
216992
|
const tempFile = join13(tmpdir(), tempName);
|
|
@@ -216997,9 +217006,6 @@ ${cleanMatcOutput(stderr, tempName, basename3(entry.path))}`);
|
|
|
216997
217006
|
rmSync2(tempFile, { force: true });
|
|
216998
217007
|
}
|
|
216999
217008
|
}
|
|
217000
|
-
if (missing.includes("webgl") && !matcPlatformsFor(text).includes("webgl")) {
|
|
217001
|
-
copyFileSync(join13(cacheDir, artifact("opengl")), join13(cacheDir, artifact("webgl")));
|
|
217002
|
-
}
|
|
217003
217009
|
if (missing.includes("webgl-lite")) {
|
|
217004
217010
|
writeFileSync7(join13(cacheDir, artifact("webgl-lite")), JSON.stringify(buildLiteMaterialArtifact(text)));
|
|
217005
217011
|
}
|
|
@@ -217014,7 +217020,7 @@ ${cleanMatcOutput(stderr, tempName, basename3(entry.path))}`);
|
|
|
217014
217020
|
artifacts.push({ name: artifact(platform), absPath: join13(cacheDir, artifact(platform)) });
|
|
217015
217021
|
}
|
|
217016
217022
|
} else {
|
|
217017
|
-
const order = ["opengl", "metal", "desktop", "webgl
|
|
217023
|
+
const order = ["opengl", "metal", "desktop", "webgl-lite"];
|
|
217018
217024
|
entry.shaders = order.map((platform) => ({ platform, src: `${opts.srcPrefix}/${artifact(platform)}` }));
|
|
217019
217025
|
}
|
|
217020
217026
|
}
|
|
@@ -218626,6 +218632,12 @@ Sync links the smallest SDK artifact covering the engines the compiled bundle ac
|
|
|
218626
218632
|
engine, sync switches automatically on the next run; set \`android.variant\` in \`../app.json\`
|
|
218627
218633
|
to force one (needs lecodes-android-sdk >= 1.3.0; older releases ship only the full AAR).
|
|
218628
218634
|
|
|
218635
|
+
Physics, navigation meshes and multiplayer ship in \`lecodes-sdk\` (full) ONLY —
|
|
218636
|
+
\`lecodes-sdk-3d\` is 3D rendering without the game stack. Auto-selection reads which RENDERING
|
|
218637
|
+
engines the bundle uses and cannot see those, so a project using \`Physics\`,
|
|
218638
|
+
\`CharacterController\`, \`NavMesh\` or networking must set \`android.variant: "full"\` in
|
|
218639
|
+
\`../app.json\` — otherwise those aspects silently do nothing on device.
|
|
218640
|
+
|
|
218629
218641
|
## App-local native code
|
|
218630
218642
|
|
|
218631
218643
|
Drop Kotlin files into \`app/src/main/java/\` and register them in \`MainActivity\` after the
|
|
@@ -219749,7 +219761,7 @@ import { basename as basename7, dirname as dirname11, join as join20, resolve as
|
|
|
219749
219761
|
|
|
219750
219762
|
// src/desktopRenderer.ts
|
|
219751
219763
|
import { execFileSync as execFileSync3, spawn as spawn2, spawnSync as spawnSync4 } from "node:child_process";
|
|
219752
|
-
import { copyFileSync
|
|
219764
|
+
import { copyFileSync, existsSync as existsSync17, mkdirSync as mkdirSync11, mkdtempSync as mkdtempSync2, readdirSync as readdirSync6, readFileSync as readFileSync16, rmSync as rmSync4, statSync as statSync4, writeFileSync as writeFileSync13 } from "node:fs";
|
|
219753
219765
|
import { homedir as homedir6, tmpdir as tmpdir2 } from "node:os";
|
|
219754
219766
|
import { join as join18, resolve as resolve5 } from "node:path";
|
|
219755
219767
|
init_util();
|
|
@@ -220060,12 +220072,26 @@ var windowEnv = (opts) => {
|
|
|
220060
220072
|
env.CREATOR_FPS = "1";
|
|
220061
220073
|
return env;
|
|
220062
220074
|
};
|
|
220075
|
+
var netArgs = (net) => {
|
|
220076
|
+
if (!net)
|
|
220077
|
+
return [];
|
|
220078
|
+
const args = [];
|
|
220079
|
+
if (net.role === "server")
|
|
220080
|
+
args.push("--server");
|
|
220081
|
+
else if (net.address)
|
|
220082
|
+
args.push("--connect", net.address);
|
|
220083
|
+
if (net.port)
|
|
220084
|
+
args.push("--port", String(net.port));
|
|
220085
|
+
if (net.maxClients)
|
|
220086
|
+
args.push("--max-clients", String(net.maxClients));
|
|
220087
|
+
return args;
|
|
220088
|
+
};
|
|
220063
220089
|
var stageBundle = (js, resources) => {
|
|
220064
220090
|
const runDir = mkdtempSync2(join18(tmpdir2(), "lecodes-render-"));
|
|
220065
220091
|
writeFileSync13(join18(runDir, "app.js"), js);
|
|
220066
220092
|
for (const r2 of resources) {
|
|
220067
220093
|
if (r2.absPath && existsSync17(r2.absPath) && statSync4(r2.absPath).isFile()) {
|
|
220068
|
-
|
|
220094
|
+
copyFileSync(r2.absPath, join18(runDir, r2.name));
|
|
220069
220095
|
}
|
|
220070
220096
|
}
|
|
220071
220097
|
return runDir;
|
|
@@ -220092,8 +220118,9 @@ var runDesktopApp = async (js, resources, opts = {}) => {
|
|
|
220092
220118
|
try {
|
|
220093
220119
|
const env = { ...process.env, ...windowEnv(opts) };
|
|
220094
220120
|
const demangle = makeStackDemangler(js);
|
|
220121
|
+
const argv = [join18(runDir, "app.js"), ...netArgs(opts.net)];
|
|
220095
220122
|
await new Promise((done, fail) => {
|
|
220096
|
-
const child = demangle ? spawn2(exe,
|
|
220123
|
+
const child = demangle ? spawn2(exe, argv, { cwd: runDir, env, stdio: ["ignore", "pipe", "pipe"] }) : spawn2(exe, argv, { cwd: runDir, env, stdio: ["ignore", "inherit", "inherit"] });
|
|
220097
220124
|
if (demangle) {
|
|
220098
220125
|
pipeThroughDemangler(child.stdout, process.stdout, demangle);
|
|
220099
220126
|
pipeThroughDemangler(child.stderr, process.stderr, demangle);
|
|
@@ -220107,7 +220134,16 @@ var runDesktopApp = async (js, resources, opts = {}) => {
|
|
|
220107
220134
|
});
|
|
220108
220135
|
});
|
|
220109
220136
|
} finally {
|
|
220110
|
-
|
|
220137
|
+
for (let attempt = 0;; attempt++) {
|
|
220138
|
+
try {
|
|
220139
|
+
rmSync4(runDir, { recursive: true, force: true });
|
|
220140
|
+
break;
|
|
220141
|
+
} catch {
|
|
220142
|
+
if (attempt >= 5)
|
|
220143
|
+
break;
|
|
220144
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 200);
|
|
220145
|
+
}
|
|
220146
|
+
}
|
|
220111
220147
|
}
|
|
220112
220148
|
};
|
|
220113
220149
|
var runDesktopDev = async (url, opts = {}) => {
|
|
@@ -220185,7 +220221,16 @@ ${tail}` : "";
|
|
|
220185
220221
|
});
|
|
220186
220222
|
});
|
|
220187
220223
|
} finally {
|
|
220188
|
-
|
|
220224
|
+
for (let attempt = 0;; attempt++) {
|
|
220225
|
+
try {
|
|
220226
|
+
rmSync4(runDir, { recursive: true, force: true });
|
|
220227
|
+
break;
|
|
220228
|
+
} catch {
|
|
220229
|
+
if (attempt >= 5)
|
|
220230
|
+
break;
|
|
220231
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 200);
|
|
220232
|
+
}
|
|
220233
|
+
}
|
|
220189
220234
|
}
|
|
220190
220235
|
};
|
|
220191
220236
|
|
|
@@ -220195,7 +220240,7 @@ init_util();
|
|
|
220195
220240
|
// src/commands/appDesktopMac.ts
|
|
220196
220241
|
init_util();
|
|
220197
220242
|
import { execFileSync as execFileSync4, spawn as spawn3, spawnSync as spawnSync5 } from "node:child_process";
|
|
220198
|
-
import { cpSync as cpSync2, existsSync as existsSync18, mkdirSync as mkdirSync12, mkdtempSync as mkdtempSync3, readdirSync as readdirSync7, rmSync as rmSync5, statSync as statSync5, writeFileSync as writeFileSync14 } from "node:fs";
|
|
220243
|
+
import { cpSync as cpSync2, existsSync as existsSync18, mkdirSync as mkdirSync12, mkdtempSync as mkdtempSync3, readdirSync as readdirSync7, rmSync as rmSync5, statSync as statSync5, symlinkSync, writeFileSync as writeFileSync14 } from "node:fs";
|
|
220199
220244
|
import { tmpdir as tmpdir3 } from "node:os";
|
|
220200
220245
|
import { basename as basename6, join as join19, resolve as resolve6 } from "node:path";
|
|
220201
220246
|
var mb = (bytes) => `${(bytes / 1024 / 1024).toFixed(1)} MB`;
|
|
@@ -220317,11 +220362,12 @@ var signApp = async (app, signing, hostApp, tmp) => {
|
|
|
220317
220362
|
throw new CliError(`The signature doesn't verify:
|
|
220318
220363
|
${(verify.stdout + verify.stderr).trim()}`);
|
|
220319
220364
|
};
|
|
220320
|
-
var
|
|
220321
|
-
const
|
|
220322
|
-
|
|
220323
|
-
|
|
220324
|
-
|
|
220365
|
+
var notarize = (target, profile, tmp, what) => {
|
|
220366
|
+
const submission = target.endsWith(".app") ? join19(tmp, `${basename6(target, ".app")}.zip`) : target;
|
|
220367
|
+
if (submission !== target)
|
|
220368
|
+
execFileSync4("ditto", ["-c", "-k", "--keepParent", target, submission]);
|
|
220369
|
+
note(`Notarizing the ${what} with profile "${profile}" — this waits on Apple (usually 1–5 minutes)…`);
|
|
220370
|
+
const r2 = spawnSync5("xcrun", ["notarytool", "submit", submission, "--keychain-profile", profile, "--wait"], { encoding: "utf8" });
|
|
220325
220371
|
const out = (r2.stdout + `
|
|
220326
220372
|
` + r2.stderr).trim();
|
|
220327
220373
|
const id = /id: ([0-9a-f-]{36})/.exec(out)?.[1];
|
|
@@ -220330,11 +220376,44 @@ var notarizeApp = (app, profile, tmp) => {
|
|
|
220330
220376
|
${out}
|
|
220331
220377
|
` + (id ? ` Details: xcrun notarytool log ${id} --keychain-profile ${profile}` : ""));
|
|
220332
220378
|
}
|
|
220333
|
-
const staple = spawnSync5("xcrun", ["stapler", "staple",
|
|
220379
|
+
const staple = spawnSync5("xcrun", ["stapler", "staple", target], { encoding: "utf8" });
|
|
220334
220380
|
if (staple.status !== 0)
|
|
220335
220381
|
throw new CliError(`Stapling failed:
|
|
220336
220382
|
${(staple.stdout + staple.stderr).trim()}`);
|
|
220337
|
-
success(
|
|
220383
|
+
success(`Notarized + stapled (${what}).`);
|
|
220384
|
+
};
|
|
220385
|
+
var buildDmg = async (app, out, appName, signing, tmp) => {
|
|
220386
|
+
const dmg = join19(out, `${appName}.dmg`);
|
|
220387
|
+
rmSync5(dmg, { force: true });
|
|
220388
|
+
const stage = join19(tmp, "dmg");
|
|
220389
|
+
rmSync5(stage, { recursive: true, force: true });
|
|
220390
|
+
mkdirSync12(stage, { recursive: true });
|
|
220391
|
+
note("Building the disk image…");
|
|
220392
|
+
execFileSync4("cp", ["-R", app, join19(stage, basename6(app))]);
|
|
220393
|
+
symlinkSync("/Applications", join19(stage, "Applications"));
|
|
220394
|
+
const r2 = spawnSync5("hdiutil", [
|
|
220395
|
+
"create",
|
|
220396
|
+
"-volname",
|
|
220397
|
+
appName,
|
|
220398
|
+
"-srcfolder",
|
|
220399
|
+
stage,
|
|
220400
|
+
"-fs",
|
|
220401
|
+
"HFS+",
|
|
220402
|
+
"-format",
|
|
220403
|
+
"UDZO",
|
|
220404
|
+
"-ov",
|
|
220405
|
+
dmg
|
|
220406
|
+
], { encoding: "utf8" });
|
|
220407
|
+
rmSync5(stage, { recursive: true, force: true });
|
|
220408
|
+
if (r2.status !== 0)
|
|
220409
|
+
throw new CliError(`hdiutil failed:
|
|
220410
|
+
${(r2.stdout + r2.stderr).trim()}`);
|
|
220411
|
+
if (signing.identity !== "-") {
|
|
220412
|
+
await codesignRetrying(["--force", "--timestamp", "--sign", signing.identity, dmg]);
|
|
220413
|
+
if (signing.notaryProfile)
|
|
220414
|
+
notarize(dmg, signing.notaryProfile, tmp, "disk image");
|
|
220415
|
+
}
|
|
220416
|
+
success(`DMG: ${dmg} (${mb(statSync5(dmg).size)})`);
|
|
220338
220417
|
};
|
|
220339
220418
|
var gatekeeperVerdict = (app) => {
|
|
220340
220419
|
const r2 = spawnSync5("spctl", ["-a", "-t", "exec", "-vv", app], { encoding: "utf8" });
|
|
@@ -220468,7 +220547,7 @@ var buildMacApp = async (input) => {
|
|
|
220468
220547
|
}, developerIdInKeychain);
|
|
220469
220548
|
await signApp(app, signing, hostApp, tmp);
|
|
220470
220549
|
if (signing.notaryProfile) {
|
|
220471
|
-
|
|
220550
|
+
notarize(app, signing.notaryProfile, tmp, "app");
|
|
220472
220551
|
} else if (signing.identity !== "-") {
|
|
220473
220552
|
warn("Signed with Developer ID but NOT notarized — Gatekeeper refuses a downloaded copy on every other Mac.");
|
|
220474
220553
|
warn(" Set desktop.macos.notarize.profile in app.json (a `xcrun notarytool store-credentials` profile) or pass --notarize <profile>.");
|
|
@@ -220480,6 +220559,8 @@ var buildMacApp = async (input) => {
|
|
|
220480
220559
|
}
|
|
220481
220560
|
writeFileSync14(join19(out, "README.txt"), readmeText(appName, !!signing.notaryProfile, signing.identity !== "-"));
|
|
220482
220561
|
success(`App: ${app} (${mb(dirSize(app))})`);
|
|
220562
|
+
if (flagBool(args, "dmg"))
|
|
220563
|
+
await buildDmg(app, out, appName, signing, tmp);
|
|
220483
220564
|
if (flagBool(args, "probe"))
|
|
220484
220565
|
await probeMacApp(app, out, args);
|
|
220485
220566
|
if (flagBool(args, "zip")) {
|
|
@@ -220487,8 +220568,8 @@ var buildMacApp = async (input) => {
|
|
|
220487
220568
|
rmSync5(zip, { force: true });
|
|
220488
220569
|
execFileSync4("ditto", ["-c", "-k", "--keepParent", app, zip]);
|
|
220489
220570
|
success(`Zip: ${zip} (${mb(statSync5(zip).size)})`);
|
|
220490
|
-
} else {
|
|
220491
|
-
note("Tip: --zip packs the .app for sending
|
|
220571
|
+
} else if (!flagBool(args, "dmg")) {
|
|
220572
|
+
note("Tip: --zip packs the .app for sending; --dmg wraps it in a drag-to-Applications image.");
|
|
220492
220573
|
}
|
|
220493
220574
|
} finally {
|
|
220494
220575
|
rmSync5(tmp, { recursive: true, force: true });
|
|
@@ -220589,6 +220670,8 @@ var buildDesktop = async (args) => {
|
|
|
220589
220670
|
}
|
|
220590
220671
|
if (mac)
|
|
220591
220672
|
return buildMacApp({ root, config, name, slug, out, js, shipped, hostExe: exe, args });
|
|
220673
|
+
if (flagBool(args, "dmg"))
|
|
220674
|
+
warn("--dmg is a macOS format — ignored on this platform.");
|
|
220592
220675
|
const version = process.env.LECODES_DESKTOP_EXE ? "local build" : selectedDesktopVersion();
|
|
220593
220676
|
rmSync6(out, { recursive: true, force: true });
|
|
220594
220677
|
mkdirSync13(out, { recursive: true });
|
|
@@ -221641,7 +221724,7 @@ channel for game state that has no UI.
|
|
|
221641
221724
|
## SDK documentation
|
|
221642
221725
|
|
|
221643
221726
|
\`.lecodes/types/\` is the exact API surface (signatures only; generated and gitignored — run
|
|
221644
|
-
\`lecodes
|
|
221727
|
+
\`lecodes update\` if it's missing, never commit \`.lecodes/\`). For semantics and examples,
|
|
221645
221728
|
fetch the docs — they are served as raw markdown for AI tools:
|
|
221646
221729
|
|
|
221647
221730
|
- https://le.codes/llms.txt — the docs map; fetch it first to find the right page
|
|
@@ -221760,7 +221843,8 @@ var run = async (args) => {
|
|
|
221760
221843
|
scale: resolveScale(flagStr(args, "scale"), win?.scale),
|
|
221761
221844
|
renderScale: resolveRenderScale(flagStr(args, "render-scale"), appCfg?.desktop?.renderScale),
|
|
221762
221845
|
maxRenderSize: appCfg?.desktop?.maxRenderSize,
|
|
221763
|
-
fps: flagBool(args, "fps")
|
|
221846
|
+
fps: flagBool(args, "fps"),
|
|
221847
|
+
net: flagBool(args, "server") ? { role: "server", port: Number(flagStr(args, "port")) || undefined, maxClients: Number(flagStr(args, "max-clients")) || undefined } : flagStr(args, "connect") ? { role: "client", address: flagStr(args, "connect") } : undefined
|
|
221764
221848
|
});
|
|
221765
221849
|
};
|
|
221766
221850
|
var status = async () => {
|
|
@@ -222757,9 +222841,9 @@ lecodes app open # open it in Xcode, build & run
|
|
|
222757
222841
|
- \`CLAUDE.md\` — guidance for AI assistants (the headless feedback loop + testability conventions)
|
|
222758
222842
|
- \`assets/\` — images/fonts the app references (created on demand)
|
|
222759
222843
|
- \`tsconfig.json\` + \`.lecodes/types/\` — generated IDE types (rewritten by the CLI; don't edit).
|
|
222760
|
-
They come from the SDK bundled in the CLI; \`lecodes
|
|
222844
|
+
They come from the SDK bundled in the CLI; \`lecodes update\` refreshes them from the platform.
|
|
222761
222845
|
- \`.lecodes/\` is gitignored — per-checkout state (those types + \`manifest.json\`, this machine's
|
|
222762
|
-
sync cursor once linked). After a fresh git clone: \`lecodes
|
|
222846
|
+
sync cursor once linked). After a fresh git clone: \`lecodes update\`, then
|
|
222763
222847
|
\`lecodes link --project <uuid>\` to re-attach.
|
|
222764
222848
|
- \`.lecodesignore\` — files a future \`lecodes push\` would skip
|
|
222765
222849
|
|
|
@@ -223073,8 +223157,8 @@ var link = async (args) => {
|
|
|
223073
223157
|
|
|
223074
223158
|
// src/commands/lightmap.ts
|
|
223075
223159
|
init_manifest();
|
|
223076
|
-
import { existsSync as existsSync28, mkdirSync as mkdirSync21, mkdtempSync as mkdtempSync4, rmSync as rmSync9, statSync as statSync10, unlinkSync, writeFileSync as writeFileSync22 } from "node:fs";
|
|
223077
|
-
import { spawnSync as spawnSync6 } from "node:child_process";
|
|
223160
|
+
import { existsSync as existsSync28, mkdirSync as mkdirSync21, mkdtempSync as mkdtempSync4, readFileSync as readFileSync25, renameSync as renameSync3, rmSync as rmSync9, statSync as statSync10, unlinkSync, writeFileSync as writeFileSync22 } from "node:fs";
|
|
223161
|
+
import { spawn as spawn6, spawnSync as spawnSync6 } from "node:child_process";
|
|
223078
223162
|
import { tmpdir as tmpdir4 } from "node:os";
|
|
223079
223163
|
import { join as join30, relative as relative4, resolve as resolve13 } from "node:path";
|
|
223080
223164
|
init_util();
|
|
@@ -223116,14 +223200,26 @@ var requireToktx = () => {
|
|
|
223116
223200
|
}
|
|
223117
223201
|
return toktx;
|
|
223118
223202
|
};
|
|
223119
|
-
var encodeKtx2 = (toktx, png2, ktx2) => {
|
|
223203
|
+
var encodeKtx2 = (toktx, png2, ktx2) => new Promise((resolve14, reject) => {
|
|
223120
223204
|
const args = ["--t2", "--encode", "uastc", "--uastc_quality", "2", "--zcmp", "18", "--genmipmap", "--assign_oetf", "srgb", ktx2, png2];
|
|
223121
|
-
const p2 =
|
|
223122
|
-
|
|
223123
|
-
|
|
223124
|
-
|
|
223125
|
-
}
|
|
223126
|
-
|
|
223205
|
+
const p2 = spawn6(toktx, args, { stdio: ["ignore", "pipe", "pipe"] });
|
|
223206
|
+
let out = "";
|
|
223207
|
+
p2.stdout.on("data", (d) => {
|
|
223208
|
+
out += String(d);
|
|
223209
|
+
});
|
|
223210
|
+
p2.stderr.on("data", (d) => {
|
|
223211
|
+
out += String(d);
|
|
223212
|
+
});
|
|
223213
|
+
p2.on("error", (e2) => reject(new CliError(`toktx failed (${e2.message}) while encoding ${ktx2}`)));
|
|
223214
|
+
p2.on("close", (status2) => {
|
|
223215
|
+
if (status2 === 0)
|
|
223216
|
+
resolve14();
|
|
223217
|
+
else
|
|
223218
|
+
reject(new CliError(`toktx failed (${status2 ?? "?"}) while encoding ${ktx2}:
|
|
223219
|
+
${out.trim()}`));
|
|
223220
|
+
});
|
|
223221
|
+
});
|
|
223222
|
+
var pageFile = (stem, page, light, ext2 = ".ktx2") => `${stem}${light ? "-light" : ""}${page > 0 ? `_${page}` : ""}${ext2}`;
|
|
223127
223223
|
var bake = async (args) => {
|
|
223128
223224
|
let root;
|
|
223129
223225
|
try {
|
|
@@ -223133,6 +223229,9 @@ var bake = async (args) => {
|
|
|
223133
223229
|
}
|
|
223134
223230
|
const toktx = requireToktx();
|
|
223135
223231
|
const outDir = resolve13(root, flagStr(args, "out") ?? "assets/lightmap");
|
|
223232
|
+
const stem = flagStr(args, "name") ?? "lightmap";
|
|
223233
|
+
if (!/^[A-Za-z0-9_-]+$/.test(stem))
|
|
223234
|
+
throw new CliError(`--name wants a plain file stem (letters, digits, - and _), got "${stem}".`);
|
|
223136
223235
|
const entryFlag = flagStr(args, "entry");
|
|
223137
223236
|
const entryFile = entryFlag ?? "main.ts";
|
|
223138
223237
|
if (!existsSync28(resolve13(root, entryFile))) {
|
|
@@ -223142,11 +223241,20 @@ var bake = async (args) => {
|
|
|
223142
223241
|
outDir: outDir.replace(/\\/g, "/"),
|
|
223143
223242
|
size: num(args, "size", 4096, 256, 16384),
|
|
223144
223243
|
texel: num(args, "texel", 0.02, 0.001, 2),
|
|
223244
|
+
pages: num(args, "pages", 4, 1, 16),
|
|
223145
223245
|
sunRays: num(args, "sun-rays", 32, 1, 1024),
|
|
223146
223246
|
aoRays: num(args, "ao-rays", 64, 1, 4096),
|
|
223147
223247
|
aoDistance: num(args, "ao-distance", 2, 0.01, 1000),
|
|
223148
223248
|
bias: num(args, "bias", 0.02, 0.0001, 1),
|
|
223149
|
-
sunAngle: num(args, "sun-angle", 0.5, 0.01, 30)
|
|
223249
|
+
sunAngle: num(args, "sun-angle", 0.5, 0.01, 30),
|
|
223250
|
+
lightRays: num(args, "light-rays", 16, 1, 256),
|
|
223251
|
+
lightRadius: num(args, "light-radius", 0.1, 0.001, 5),
|
|
223252
|
+
bounce: num(args, "bounce", 0, 0, 1),
|
|
223253
|
+
bounceDistance: num(args, "bounce-distance", 8, 0.5, 100),
|
|
223254
|
+
bounceRays: num(args, "bounce-rays", 1, 1, 32),
|
|
223255
|
+
coplanarSkip: num(args, "coplanar-skip", 0.05, 0, 1),
|
|
223256
|
+
denoise: num(args, "denoise", 2, 0, 4),
|
|
223257
|
+
volumeCell: flagBool(args, "no-volume") ? 0 : num(args, "cell", 0.5, 0.05, 20)
|
|
223150
223258
|
};
|
|
223151
223259
|
const frames = num(args, "frames", 900, 30, 1e5);
|
|
223152
223260
|
const win = readAppConfigAt(root)?.desktop?.window;
|
|
@@ -223159,7 +223267,7 @@ var bake = async (args) => {
|
|
|
223159
223267
|
import ${JSON.stringify(importPath)}
|
|
223160
223268
|
`;
|
|
223161
223269
|
mkdirSync21(outDir, { recursive: true });
|
|
223162
|
-
ensurePlaceholders(outDir);
|
|
223270
|
+
ensurePlaceholders(outDir, stem);
|
|
223163
223271
|
const desktopRenderer = resolveDesktopRenderer(root, args);
|
|
223164
223272
|
const { js, resources } = await buildBundle(args, undefined, {
|
|
223165
223273
|
localAssets: true,
|
|
@@ -223169,10 +223277,10 @@ import ${JSON.stringify(importPath)}
|
|
|
223169
223277
|
});
|
|
223170
223278
|
const scratch = mkdtempSync4(join30(tmpdir4(), "lecodes-lightmap-"));
|
|
223171
223279
|
const outPng = join30(scratch, "frame.png");
|
|
223172
|
-
note(`Baking ${cfg.size}² at ${(cfg.texel * 100).toFixed(1)} cm texels (${cfg.sunRays} sun + ${cfg.aoRays} AO rays) → ${relative4(root, outDir) || "."}
|
|
223280
|
+
note(`Baking up to ${cfg.pages} × ${cfg.size}² at ${(cfg.texel * 100).toFixed(1)} cm texels (${cfg.sunRays} sun + ${cfg.aoRays} AO + ${cfg.lightRays} light rays)${cfg.volumeCell ? ` + a ${cfg.volumeCell} m light volume` : ""} → ${relative4(root, outDir) || "."}/${stem}.*…`);
|
|
223173
223281
|
let output = "";
|
|
223174
223282
|
try {
|
|
223175
|
-
const timeoutMs = Number(flagStr(args, "timeout")) ||
|
|
223283
|
+
const timeoutMs = Number(flagStr(args, "timeout")) || 24 * 3600 * 1000;
|
|
223176
223284
|
const res = await runDesktopRender(js, resources, {
|
|
223177
223285
|
renderer: desktopRenderer,
|
|
223178
223286
|
width,
|
|
@@ -223190,27 +223298,76 @@ import ${JSON.stringify(importPath)}
|
|
|
223190
223298
|
throw e2;
|
|
223191
223299
|
output = msg;
|
|
223192
223300
|
} finally {
|
|
223193
|
-
|
|
223301
|
+
try {
|
|
223302
|
+
rmSync9(scratch, { recursive: true, force: true });
|
|
223303
|
+
} catch {}
|
|
223194
223304
|
}
|
|
223195
223305
|
const lines = output.split(/\r?\n/).filter((l2) => l2.startsWith("[lightmap]"));
|
|
223196
223306
|
for (const l2 of lines) {
|
|
223197
223307
|
const text = l2.slice("[lightmap]".length).trim();
|
|
223198
223308
|
if (text === "done")
|
|
223199
223309
|
continue;
|
|
223200
|
-
logErr(text.startsWith("error") ? c.red(`✗ ${text}`) : c.dim(` ${text}`));
|
|
223310
|
+
logErr(text.startsWith("error") ? c.red(`✗ ${text}`) : text.startsWith("warning") ? c.yellow(` ${text}`) : c.dim(` ${text}`));
|
|
223201
223311
|
}
|
|
223202
223312
|
if (/\[lightmap\] done/.test(output)) {
|
|
223203
|
-
const
|
|
223204
|
-
|
|
223205
|
-
|
|
223206
|
-
|
|
223313
|
+
const bakePath = join30(outDir, "lightmap.bake");
|
|
223314
|
+
if (!existsSync28(bakePath))
|
|
223315
|
+
throw new CliError(`The host reported a bake but ${bakePath} is missing.`);
|
|
223316
|
+
const data = JSON.parse(readFileSync25(bakePath, "utf8"));
|
|
223317
|
+
const pages = Math.max(1, data.pages ?? 1);
|
|
223318
|
+
const hasLight = !!data.lightTextures?.length;
|
|
223207
223319
|
const t0 = Date.now();
|
|
223208
|
-
|
|
223209
|
-
const
|
|
223210
|
-
|
|
223211
|
-
|
|
223212
|
-
|
|
223213
|
-
|
|
223320
|
+
let pngKb = 0, ktxKb = 0;
|
|
223321
|
+
const encodePage = async (page, light) => {
|
|
223322
|
+
const png2 = join30(outDir, pageFile("lightmap", page, light, ".png"));
|
|
223323
|
+
const ktx2 = join30(outDir, pageFile(stem, page, light));
|
|
223324
|
+
if (!existsSync28(png2))
|
|
223325
|
+
throw new CliError(`The host reported a bake but ${png2} is missing.`);
|
|
223326
|
+
await encodeKtx2(toktx, png2, ktx2);
|
|
223327
|
+
pngKb += statSync10(png2).size / 1024;
|
|
223328
|
+
ktxKb += statSync10(ktx2).size / 1024;
|
|
223329
|
+
unlinkSync(png2);
|
|
223330
|
+
};
|
|
223331
|
+
const encodes = [];
|
|
223332
|
+
for (let p2 = 0;p2 < pages; p2++) {
|
|
223333
|
+
encodes.push(encodePage(p2, false));
|
|
223334
|
+
if (hasLight)
|
|
223335
|
+
encodes.push(encodePage(p2, true));
|
|
223336
|
+
}
|
|
223337
|
+
await Promise.all(encodes);
|
|
223338
|
+
for (let p2 = pages;p2 < 16; p2++) {
|
|
223339
|
+
for (const light of [false, true]) {
|
|
223340
|
+
const stale = join30(outDir, pageFile(stem, p2, light));
|
|
223341
|
+
if (existsSync28(stale) && statSync10(stale).size !== PLACEHOLDER_KTX2.length)
|
|
223342
|
+
writeFileSync22(stale, PLACEHOLDER_KTX2);
|
|
223343
|
+
}
|
|
223344
|
+
}
|
|
223345
|
+
if (!hasLight) {
|
|
223346
|
+
const light = join30(outDir, pageFile(stem, 0, true));
|
|
223347
|
+
if (existsSync28(light) && statSync10(light).size !== PLACEHOLDER_KTX2.length)
|
|
223348
|
+
writeFileSync22(light, PLACEHOLDER_KTX2);
|
|
223349
|
+
}
|
|
223350
|
+
data.texture = pageFile(stem, 0, false);
|
|
223351
|
+
data.textures = Array.from({ length: pages }, (_, p2) => pageFile(stem, p2, false));
|
|
223352
|
+
if (hasLight)
|
|
223353
|
+
data.lightTextures = Array.from({ length: pages }, (_, p2) => pageFile(stem, p2, true));
|
|
223354
|
+
if (data.volume)
|
|
223355
|
+
data.volume.file = `${stem}.volume`;
|
|
223356
|
+
writeFileSync22(join30(outDir, `${stem}.bake`), JSON.stringify(data, null, 1) + `
|
|
223357
|
+
`);
|
|
223358
|
+
if (stem !== "lightmap")
|
|
223359
|
+
unlinkSync(bakePath);
|
|
223360
|
+
const volumeSrc = join30(outDir, "lightmap.volume");
|
|
223361
|
+
const hasVolume = cfg.volumeCell > 0 && existsSync28(volumeSrc);
|
|
223362
|
+
if (hasVolume && stem !== "lightmap") {
|
|
223363
|
+
rmSync9(join30(outDir, `${stem}.volume`), { force: true });
|
|
223364
|
+
renameSync3(volumeSrc, join30(outDir, `${stem}.volume`));
|
|
223365
|
+
}
|
|
223366
|
+
logErr(c.dim(` encoded ${pages} page(s)${hasLight ? " + the light atlas" : ""} (UASTC + mips, ${Math.round(ktxKb)} KB from ${Math.round(pngKb)} KB of rasters) in ${((Date.now() - t0) / 1000).toFixed(1)} s`));
|
|
223367
|
+
logErr(c.green(`✓ baked → ${relative4(root, outDir) || "."}/${stem}.bake + ${data.textures.join(", ")}${hasLight ? ` + ${data.lightTextures.join(", ")}` : ""}${hasVolume ? ` + ${stem}.volume` : ""}`));
|
|
223368
|
+
const rel = (f3) => relative4(root, join30(outDir, f3)).replace(/\\/g, "/");
|
|
223369
|
+
const assets = (files) => files.length === 1 ? `asset('<rel>/${rel(files[0])}')` : `[${files.map((f3) => `asset('<rel>/${rel(f3)}')`).join(", ")}]`;
|
|
223370
|
+
logErr(c.dim(` scene file: env.lightmap: { data: asset('<rel>/${rel(`${stem}.bake`)}'), texture: ${assets(data.textures)}${hasLight ? `, light: ${assets(data.lightTextures)}` : ""}${hasVolume ? `, volume: asset('<rel>/${rel(`${stem}.volume`)}')` : ""} } — asset() paths are relative to the scene file`));
|
|
223214
223371
|
return;
|
|
223215
223372
|
}
|
|
223216
223373
|
if (lines.some((l2) => /no bake module/.test(l2))) {
|
|
@@ -223222,20 +223379,1054 @@ import ${JSON.stringify(importPath)}
|
|
|
223222
223379
|
throw new CliError("Nothing was baked.");
|
|
223223
223380
|
};
|
|
223224
223381
|
var PLACEHOLDER_KTX2 = Buffer.from("q0tUWCAyMLsNChoKAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAaAAAACwAAACUAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAAAABAAAAAAAAAAEAAAAAAAAAAsAAAAAAAAAAIAKACmAQIAAwMAABAAAAAAAAAAAAB/AAAAAAAAAAAA/////xEAAABLVFhvcmllbnRhdGlvbgByAAAAACcAAABLVFh3cml0ZXIAdG9rdHggdjQuNC4yIC8gbGlia3R4IHY0LjQuMgAAMwAAAEtUWHdyaXRlclNjUGFyYW1zAC0tZW5jb2RlIHVhc3RjIC0tdWFzdGNfcXVhbGl0eSAwAAD3////H3zvAQAAAAAAAAAA", "base64");
|
|
223225
|
-
var
|
|
223226
|
-
const
|
|
223227
|
-
|
|
223228
|
-
|
|
223229
|
-
|
|
223382
|
+
var placeholderVolume = () => {
|
|
223383
|
+
const b = Buffer.alloc(4 + 4 + 12 + 12 + 4 + 2);
|
|
223384
|
+
b.write("LVOL", 0, "latin1");
|
|
223385
|
+
b.writeUInt32LE(1, 4);
|
|
223386
|
+
b.writeUInt32LE(1, 8);
|
|
223387
|
+
b.writeUInt32LE(1, 12);
|
|
223388
|
+
b.writeUInt32LE(1, 16);
|
|
223389
|
+
b.writeFloatLE(0, 20);
|
|
223390
|
+
b.writeFloatLE(0, 24);
|
|
223391
|
+
b.writeFloatLE(0, 28);
|
|
223392
|
+
b.writeFloatLE(1, 32);
|
|
223393
|
+
b[36] = 255;
|
|
223394
|
+
b[37] = 255;
|
|
223395
|
+
return b;
|
|
223396
|
+
};
|
|
223397
|
+
var ensurePlaceholders = (outDir, stem) => {
|
|
223398
|
+
const missing = (f3) => !existsSync28(f3) || statSync10(f3).size === 0;
|
|
223399
|
+
const bake2 = join30(outDir, `${stem}.bake`);
|
|
223400
|
+
const ktx2 = join30(outDir, pageFile(stem, 0, false));
|
|
223401
|
+
const light = join30(outDir, pageFile(stem, 0, true));
|
|
223402
|
+
const volume = join30(outDir, `${stem}.volume`);
|
|
223403
|
+
if (missing(bake2))
|
|
223404
|
+
writeFileSync22(bake2, JSON.stringify({ version: 2, placeholder: true, size: 1, texel: 0, pages: 1, instances: [] }) + `
|
|
223230
223405
|
`);
|
|
223231
|
-
if (
|
|
223406
|
+
if (missing(ktx2))
|
|
223232
223407
|
writeFileSync22(ktx2, PLACEHOLDER_KTX2);
|
|
223408
|
+
if (missing(light))
|
|
223409
|
+
writeFileSync22(light, PLACEHOLDER_KTX2);
|
|
223410
|
+
if (missing(volume))
|
|
223411
|
+
writeFileSync22(volume, placeholderVolume());
|
|
223233
223412
|
};
|
|
223234
223413
|
var lightmap = async (args) => {
|
|
223235
223414
|
const sub = args._[0];
|
|
223236
223415
|
if (sub === "bake")
|
|
223237
223416
|
return bake({ ...args, _: args._.slice(1) });
|
|
223238
|
-
throw new CliError("Usage: lecodes lightmap bake [--out assets/lightmap] [--size 4096] [--texel 0.02] [--sun-rays 32] [--ao-rays 64] [--ao-distance 2] [--bias 0.02] [--sun-angle 0.5] [--frames 900] [--entry main.ts] [--logs] (needs KTX-Software's toktx)");
|
|
223417
|
+
throw new CliError("Usage: lecodes lightmap bake [--out assets/lightmap] [--name lightmap] [--size 4096] [--pages 4] [--texel 0.02] [--sun-rays 32] [--ao-rays 64] [--ao-distance 2] [--bias 0.02] [--sun-angle 0.5] [--light-rays 16] [--light-radius 0.1] [--bounce 0..1] [--denoise 2] [--cell 0.5 | --no-volume] [--frames 900] [--timeout <ms>] [--entry main.ts] [--logs] (needs KTX-Software's toktx)");
|
|
223418
|
+
};
|
|
223419
|
+
|
|
223420
|
+
// src/commands/navmesh.ts
|
|
223421
|
+
init_manifest();
|
|
223422
|
+
import { existsSync as existsSync29, mkdirSync as mkdirSync22, mkdtempSync as mkdtempSync5, readdirSync as readdirSync14, readFileSync as readFileSync26, rmSync as rmSync10, statSync as statSync11, unlinkSync as unlinkSync2, writeFileSync as writeFileSync23 } from "node:fs";
|
|
223423
|
+
import { tmpdir as tmpdir5 } from "node:os";
|
|
223424
|
+
import { basename as basename16, join as join31, relative as relative5, resolve as resolve14 } from "node:path";
|
|
223425
|
+
init_util();
|
|
223426
|
+
|
|
223427
|
+
// ../creator-nav/dist/creatorNav.js
|
|
223428
|
+
var createCreatorNav = (() => {
|
|
223429
|
+
return async function(moduleArg = {}) {
|
|
223430
|
+
var moduleRtn;
|
|
223431
|
+
var Module = moduleArg;
|
|
223432
|
+
var readyPromiseResolve, readyPromiseReject;
|
|
223433
|
+
var readyPromise = new Promise((resolve14, reject) => {
|
|
223434
|
+
readyPromiseResolve = resolve14;
|
|
223435
|
+
readyPromiseReject = reject;
|
|
223436
|
+
});
|
|
223437
|
+
var ENVIRONMENT_IS_WEB = typeof window == "object";
|
|
223438
|
+
var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != "undefined";
|
|
223439
|
+
var ENVIRONMENT_IS_NODE = typeof process == "object" && process.versions?.node && process.type != "renderer";
|
|
223440
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
223441
|
+
const { createRequire: createRequire5 } = await import("module");
|
|
223442
|
+
var require2 = createRequire5(import.meta.url);
|
|
223443
|
+
}
|
|
223444
|
+
var arguments_ = [];
|
|
223445
|
+
var thisProgram = "./this.program";
|
|
223446
|
+
var quit_ = (status2, toThrow) => {
|
|
223447
|
+
throw toThrow;
|
|
223448
|
+
};
|
|
223449
|
+
var _scriptName = import.meta.url;
|
|
223450
|
+
var scriptDirectory = "";
|
|
223451
|
+
var readAsync, readBinary2;
|
|
223452
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
223453
|
+
var fs3 = require2("fs");
|
|
223454
|
+
var nodePath = require2("path");
|
|
223455
|
+
if (_scriptName.startsWith("file:")) {
|
|
223456
|
+
scriptDirectory = nodePath.dirname(require2("url").fileURLToPath(_scriptName)) + "/";
|
|
223457
|
+
}
|
|
223458
|
+
readBinary2 = (filename) => {
|
|
223459
|
+
filename = isFileURI(filename) ? new URL(filename) : filename;
|
|
223460
|
+
var ret = fs3.readFileSync(filename);
|
|
223461
|
+
return ret;
|
|
223462
|
+
};
|
|
223463
|
+
readAsync = async (filename, binary = true) => {
|
|
223464
|
+
filename = isFileURI(filename) ? new URL(filename) : filename;
|
|
223465
|
+
var ret = fs3.readFileSync(filename, binary ? undefined : "utf8");
|
|
223466
|
+
return ret;
|
|
223467
|
+
};
|
|
223468
|
+
if (process.argv.length > 1) {
|
|
223469
|
+
thisProgram = process.argv[1].replace(/\\/g, "/");
|
|
223470
|
+
}
|
|
223471
|
+
arguments_ = process.argv.slice(2);
|
|
223472
|
+
quit_ = (status2, toThrow) => {
|
|
223473
|
+
process.exitCode = status2;
|
|
223474
|
+
throw toThrow;
|
|
223475
|
+
};
|
|
223476
|
+
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
|
|
223477
|
+
try {
|
|
223478
|
+
scriptDirectory = new URL(".", _scriptName).href;
|
|
223479
|
+
} catch {}
|
|
223480
|
+
{
|
|
223481
|
+
readAsync = async (url) => {
|
|
223482
|
+
var response = await fetch(url, { credentials: "same-origin" });
|
|
223483
|
+
if (response.ok) {
|
|
223484
|
+
return response.arrayBuffer();
|
|
223485
|
+
}
|
|
223486
|
+
throw new Error(response.status + " : " + response.url);
|
|
223487
|
+
};
|
|
223488
|
+
}
|
|
223489
|
+
}
|
|
223490
|
+
var out = console.log.bind(console);
|
|
223491
|
+
var err = console.error.bind(console);
|
|
223492
|
+
var wasmBinary;
|
|
223493
|
+
var wasmMemory;
|
|
223494
|
+
var ABORT = false;
|
|
223495
|
+
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;
|
|
223496
|
+
var runtimeInitialized = false;
|
|
223497
|
+
var isFileURI = (filename) => filename.startsWith("file://");
|
|
223498
|
+
function updateMemoryViews() {
|
|
223499
|
+
var b = wasmMemory.buffer;
|
|
223500
|
+
HEAP8 = new Int8Array(b);
|
|
223501
|
+
HEAP16 = new Int16Array(b);
|
|
223502
|
+
Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
|
|
223503
|
+
HEAPU16 = new Uint16Array(b);
|
|
223504
|
+
Module["HEAP32"] = HEAP32 = new Int32Array(b);
|
|
223505
|
+
Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
|
|
223506
|
+
Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
|
|
223507
|
+
HEAPF64 = new Float64Array(b);
|
|
223508
|
+
HEAP64 = new BigInt64Array(b);
|
|
223509
|
+
HEAPU64 = new BigUint64Array(b);
|
|
223510
|
+
}
|
|
223511
|
+
function preRun() {
|
|
223512
|
+
if (Module["preRun"]) {
|
|
223513
|
+
if (typeof Module["preRun"] == "function")
|
|
223514
|
+
Module["preRun"] = [Module["preRun"]];
|
|
223515
|
+
while (Module["preRun"].length) {
|
|
223516
|
+
addOnPreRun(Module["preRun"].shift());
|
|
223517
|
+
}
|
|
223518
|
+
}
|
|
223519
|
+
callRuntimeCallbacks(onPreRuns);
|
|
223520
|
+
}
|
|
223521
|
+
function initRuntime() {
|
|
223522
|
+
runtimeInitialized = true;
|
|
223523
|
+
wasmExports["__wasm_call_ctors"]();
|
|
223524
|
+
}
|
|
223525
|
+
function postRun() {
|
|
223526
|
+
if (Module["postRun"]) {
|
|
223527
|
+
if (typeof Module["postRun"] == "function")
|
|
223528
|
+
Module["postRun"] = [Module["postRun"]];
|
|
223529
|
+
while (Module["postRun"].length) {
|
|
223530
|
+
addOnPostRun(Module["postRun"].shift());
|
|
223531
|
+
}
|
|
223532
|
+
}
|
|
223533
|
+
callRuntimeCallbacks(onPostRuns);
|
|
223534
|
+
}
|
|
223535
|
+
var runDependencies = 0;
|
|
223536
|
+
var dependenciesFulfilled = null;
|
|
223537
|
+
function addRunDependency(id) {
|
|
223538
|
+
runDependencies++;
|
|
223539
|
+
Module["monitorRunDependencies"]?.(runDependencies);
|
|
223540
|
+
}
|
|
223541
|
+
function removeRunDependency(id) {
|
|
223542
|
+
runDependencies--;
|
|
223543
|
+
Module["monitorRunDependencies"]?.(runDependencies);
|
|
223544
|
+
if (runDependencies == 0) {
|
|
223545
|
+
if (dependenciesFulfilled) {
|
|
223546
|
+
var callback = dependenciesFulfilled;
|
|
223547
|
+
dependenciesFulfilled = null;
|
|
223548
|
+
callback();
|
|
223549
|
+
}
|
|
223550
|
+
}
|
|
223551
|
+
}
|
|
223552
|
+
function abort(what) {
|
|
223553
|
+
Module["onAbort"]?.(what);
|
|
223554
|
+
what = "Aborted(" + what + ")";
|
|
223555
|
+
err(what);
|
|
223556
|
+
ABORT = true;
|
|
223557
|
+
what += ". Build with -sASSERTIONS for more info.";
|
|
223558
|
+
var e2 = new WebAssembly.RuntimeError(what);
|
|
223559
|
+
readyPromiseReject(e2);
|
|
223560
|
+
throw e2;
|
|
223561
|
+
}
|
|
223562
|
+
var wasmBinaryFile;
|
|
223563
|
+
function findWasmBinary() {
|
|
223564
|
+
return base64Decode("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aigCADYCACAHQQFqIQcgJEEBaiIkIClHDQALCyAEIDFBAnRqIAs2AgAgDSAyNgLUASANIDFBAWo2AtABIAoQQiANIAQ2AtgBIA0oAtQBIQcgDSgC0AEhCgsgDEH//wNxIRACQCAHIApKBEAgDSAKQQFqIgw2AtABIAQgCkECdGogEDYCAAwBC0GQ4gAoAgAaQf////8HIA0oAtQBIgRBAXQiDCAHQQFqIgcgByAMSBsgBEH+////A0obITECQEGQ4gAoAgAiBEUEQCAxQYCAgIACSA0BQdAcQbIaQbsBQcYKEAAACyAxQYCAgIACSA0AQZccQbIaQbsBIAQRAAALIDFBAnRBARBBIQQgDSgC2AEhByANKALQASE0AkAgBEUNACA0QQBMDQAgNEEDcSEqQQAhC0EAIQwgNEEETwRAIDRB/P///wdxISlBACEkA0AgBCAMQQJ0IgpqIAcgCmooAgA2AgAgBCAKQQRyIiZqIAcgJmooAgA2AgAgBCAKQQhyIiZqIAcgJmooAgA2AgAgBCAKQQxyIgpqIAcgCmooAgA2AgAgDEEEaiEMICRBBGoiJCApRw0ACwsgKkUNAANAIAQgDEECdCIKaiAHIApqKAIANgIAIAxBAWohDCALQQFqIgsgKkcNAAsLIAQgNEECdGogEDYCACANIDE2AtQBIA0gNEEBajYC0AEgBxBCIA0gBDYC2AEgDSgC1AEhByANKALQASEMCwJAIAcgDEoEQCANIAxBAWoiCjYC0AEgBCAMQQJ0aiAdNgIADAELQZDiACgCABpB/////wcgDSgC1AEiBEEBdCIMIAdBAWoiByAHIAxIGyAEQf7///8DShshNAJAQZDiACgCACIERQRAIDRBgICAgAJIDQFB0BxBshpBuwFBxgoQAAALIDRBgICAgAJIDQBBlxxBshpBuwEgBBEAAAsgNEECdEEBEEEhBCANKALYASEHIA0oAtABISkCQCAERQ0AIClBAEwNACApQQNxISZBACEQQQAhDCApQQRPBEAgKUH8////B3EhKkEAIQsDQCAEIAxBAnQiCmogByAKaigCADYCACAEIApBBHIiJGogByAkaigCADYCACAEIApBCHIiJGogByAkaigCADYCACAEIApBDHIiCmogByAKaigCADYCACAMQQRqIQwgC0EEaiILICpHDQALCyAmRQ0AA0Ag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BCACIAgoAhg2AgggAiAIKAIcNgIMIAkgAkEQajYCBAwBCyAJIAhBEGoQDyEEIAgoAhQhAiAJIAQ2AgQgAkUNACAIIAI2AhggCCgCHBogAhC1AQsgAyAGaiEDQQEhAiAMQQFqIgwgC0cNAAsMAgtBASECIAAgAU0NAQtBACECQdAfQQAQNQsgCEEgaiQAAkAgAkUNAEGcAhC3ASIAQgA3AgAgAEEBNgKYAiAAQRBqIgNCADcCACAAQQhqIgVCADcCACAAQRxqIQJBGCEBIABBGGohECAAQRRqIQQgAEEMaiEHIABBBGohBgNAIAAgAWpBgICA/AM2AgAgASAGakGAgID8AzYCACABIAVqQYCAgPwDNgIAIAEgB2pBgICA/AM2AgAgASADakGAgID8AzYCACABIARqQYCAgPwDNgIAIAEgEGpBgICA/AM2AgAgASACakGAgID8AzYCACABQSBqIgFBmAJHDQALIABBCGohASAKLABLIQMCQCAALAATQQBOBEAgA0EATgRAIAEgCikDQDcCACABIAooAkg2AggMAgsgCigCQCEHIAooAkQhAyMAQRBrIgUkACABEL0BIQICQCADQQpNBEAgASADEMMBIAEiBCAHIAMQwQEgBUEAOgAPIAMgBGogBUEPahDAAQwBCyABQQogA0EKayACIAIgAyAHELsBCyAFQRBqJAAMAQsgCigCQCAKQUBrIANBAEgiBRshByAKKAJEIAMgBRshAyMAQRBrIgUkACABEL4BIQIgASgCBCEEAkAgAiADSwRAIAEoAgAhAiABIAMQwgEgAiAHIAMQwQEgBUEAOgAPIAIgA2ogBUEPahDAAQwBCyABIAJBAWsgAyACa0EBaiAEIAQgAyAHELsBCyAFQRBqJAALQdQAQQAQWiIBBEAgAUEAQdQA/AsACyAAIAE2AgACQCABBEBBACEEQQAhByABIgUgCkEkaiIGKQIANwIAIAEgBigCGDYCGCABIAZBEGoiAikCADcCECABIAZBCGoiAykCADcCCCABIAYqAgA4AhwgASAGKgIEOAIgIAEgAyoCADgCJCABIAYqAgw4AiggASACKgIAOAIsIAEgBigCFCICNgIwIAFBASACQQRtQQFrIgNBAXYgA3IiA0ECdiADciIDQQR2IANyIgNBCHYgA3IiA0EQdiADckEBaiIDIANBAU0bIgM2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ACgCFAsmACABQT9NBEAgACABQQJ0aiACOAIYIAAgACgCmAJBAWo2ApgCCwvMFQIPfwZ9IwBBwBJrIg0kACAIBEAgCEEAOgAACwJAAkAgB0EBTARAQQAhBUGAJUEAEDUMAQsgDUG8EGoQcCILIAU7AYICIAsgBDsBgAIgCyAAQRhqQYAC/AoAAEEAIQUgDUEANgK4ECANQQA2ArQQIAAoAgQgASADQfDBACADGyIDIAsgDUG4EGogDUGoEGoQdxogACgCBCACIAMgCyANQbQQaiANQZwQahB3GiANKAK4ECIDRQRAQaUZQQAQNQwBCyANKAK0ECIERQRAQcMZQQAQNQwBCyANQQA2AgwgACgCBCEKIAMhDiANQagQaiECIA1BnBBqIQ8gDUEQaiEUIA1BDGohEiMAQTBrIgwkACAKKAIAIQkCQEGc4gAoAgAiAUUEQCAJDQFB3wtB7g9B0gdB8hgQAAALIAkNAEHfC0HuD0HSByABEQAACyAKKAJAIQkCQEGc4gAoAgAiAUUEQCAJDQFBvBdB7g9B0wdB8hgQAAALIAkNAEG8F0HuD0HTByABEQAACyAKKAJEIQkCQEGc4gAoAgAiAUUEQCAJDQFBmQxB7g9B1AdB8hgQAAALIAkNAEGZDEHuD0HUByABEQAAC0GIgICAeCEBAkAgEkUNACASQQA2AgAgCigCACAOEGtFDQAgCigCACAEEGshCSACRQ0AIAlFDQAgAigCAEH/////B3FB////+wdLDQAgAigCBEH/////B3FB////+wdLDQAgD0UNACACKAIIQf////8HcUGAgID8B08NACAPKAIAQf////8HcUH////7B0sNACAPKAIEQf////8HcUH////7B0sNACAURQ0AIAtFDQAgDygCCEH/////B3FBgICA/AdPDQAgBCAORgRAIBQgDjYCACASQQE2AgBBgICAgAQhAQwBCyAKKAJAEIQBIAooAkRBADYCCCAKKAJAIA5BABCFASIDIAIqAgA4AgAgAyACKgIEOAIEIAMgAioCCDgCCCADIAMoAhQiAUGAgIB4cTYCFCADQQA2AgwgAioCCCEYIA8qAgghGSACKgIAIRogDyoCACEbIAIqAgQhHCAPKgIEIR0gAyAONgIYIAMgAUGAgICYfnFBgICAIHI2AhQgAyAZIBiTIhggGJQgGyAakyIYIBiU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AWogASAGaioCADgCACADIAVBDHIiBWogBSAGaioCADgCACAHQQRqIgdBwABHDQALCyAEC0gBAX8CQCABQQBIDQAgASAAKAIITg0AIAFBxABsIgIgACgCDGotAABBAUcNACAAKAIAIAEQjgEgACgCDCACakEAQcQA/AsACwvFBAIGfwJ9IwBBMGsiBiQAAkAgAUEASA0AIAEgACgCCE4NACACRQ0AIAAoAgwgAUHEAGxqIgMtAABBAXFFDQAgAyACKQIANwIQIANBQGsgAigCMDYCACADIAIpAig3AjggAyACKQIgNwIwIAMgAikCGDcCKCADIAIpAhA3AiAgAyACKQIINwIYIAZBDGoiA0IANwIAIANBADYCICADQRhqIgVCADcCACADQRBqIgdCADcCACADQQhqIghCADcCACADIAIqAgAiCTgCACADIAIqAgQ4AgQgAyACKgIIOAIMIAggAioCDDgCACAHIAIqAhAiCiAJQwAAQEGUIApDAAAAAF4bOAIAIAMgAioCFCIKIAlDAADwQZQgCkMAAAAAXhs4AhQgBSACKgIYIgk4AgAgAioCKEMAAAA/XgRAIANBAToAHEEBIQQLIAIqAixDAAAAP14EQCADIARBCHIiBDoAHAsgBEEQciAEIAIqAjBDAAAAP14iBxsiBEEEciAEIAlDAAAAAF4iCBshBSAHIAhyBEAgAyAFOgAcCyACKgIc/AAiBEEATgRAIAMgBUECcjoAHCADQQMgBCAEQQNPGzoAHQsgAyAAIAIqAiD8ASACKgIk/AEQLDoAHiAAKAIAIQIgBkEMaiEAAkAgAUEASA0AIAEgAigCAE4NACACKAIEIAFB4ARsaiIBIAApAgA3AtQDIAEgACgCIDYC9AMgASAAKQIYNwLsAyABIAApAhA3AuQDIAEgACkCCDcC3AMLCyAGQTBqJAAL8QEBBX8jAEEQayIDJAACQAJAAkAgAUEASA0AIAEgACgCCE4NACAAKAIMIAFBxABsai0AAA0BC0HrDEEAEDUMAQsgACgCACABEIwBLQDyAyEFIAAoAgAiBigCpCYhByADQQA2AgwgByACIAZB0AVqIAYgBUGEAmxqQdwFakEAIAVBEEkbIANBDGogAxB3GiADKAIMIgVFBEBBwxlBABA1DAELIAAoAgAgASAFIAMQjwFFDQBBASEEIAAoAgwgAUHE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dCIDIAUgAyAFSxsgBkH/////A08bIgUEfyAFELcBBUEACyIDIAJqIgcgAToAACACBEAgAyAEIAL8CgAACyAAIAMgBWo2AgggACAHQQFqIgI2AgQgACADNgIAIARFDQAgBBC1AQsgACACNgIEIAFBCHYhBQJAIAAoAggiAyACSwRAIAIgBToAACACQQFqIQIMAQsgAiAAKAIAIgRrIgJBAWoiBkEASA0BQf////8HIAMgBGsiB0EBdCIDIAYgAyAGSxsgB0H/////A08bIgYEfyAGELcBBUEACyIDIAJqIgcgBToAACACBEAgAyAEIAL8CgAACyAAIAMgBmo2AgggACAHQQFqIgI2AgQgACADNgIAIARFDQAgBBC1AQsgACACNgIEIAFBEHYhBQJAIAAoAggiAyACSwRAIAIgBToAACACQQFqIQIMAQsgAiAAKAIAIgRrIgJBAWoiBkEASA0BQf////8HIAMgBGsiB0EBdCIDIAYgAyAGSxsgB0H/////A08bIgYEfyAGELcBBUEACyIDIAJqIgcgBToAACACBEAgAyAEIAL8CgAACyAAIAMgBmo2AgggACAHQQFqIgI2AgQgACADNgIAIARFDQAgBBC1AQsgACACNgIEIAFBGHYhBCAAKAIIIgEgAksEQCACIAQ6AAAgACACQQFqNgIEDwsgAiAAKAIAIgNrIgJBAWoiBUEASA0AIAJB/////wcgASADayIGQQF0IgEgBSABIAVLGyAGQf////8DTxsiBQR/IAUQtwEFQQALIgFqIgcgBDoAACACBEAgASADIAL8CgAACyAAIAEgBWo2AgggACAHQQFqIgI2AgQgACABNgIAIAMEQCADELUBCyAAIAI2AgQPCxCVAQALwQQBB38CQAJAIARBAEwNACAAKAIIIgUgACgCBCIGayAETgRAAkAgBiABayIFIAROBEAgAiAEaiEJIAYhBwwBCyADIAIgBWoiCWshCAJAIAMgCUYNACAIRQ0AIAYgCSAI/AoAAAsgACAGIAhqIgc2AgQgBUEATA0CCyABIARqIQoCQCAHIgMgBGsiBSAGTw0AIAQgBmoiCyADa0EHcSIIBEBBACEEA0AgAyAFLQAAOgAAIANBAWohAyAFQQFqIQUgBEEBaiIEIAhHDQALCyAHIAtrQXlPDQADQCADIAUtAAA6AAAgAyAFLQABOgAB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IBAgFF4iCxsiECAQIBNeIgobIhAgECASXiIJGyIQIBAgEV4iDxshECABIAggDCAEIAIgCxsgChsgCRsgDxshAiAEQQRqIQQgBkEEaiIGIA5HDQALCyANBEADQCAFQSBqIARBAnRqKgIAIhEgECAQIBFeIgYbIRAgBCACIAYbIQIgBEEBaiEEIABBAWoiACANRw0ACwsgBwshBCADIAVBQGsgAkEBaiAEcEEMbGoiBCoCACAFQUBrIAJBDGxqIgAqAgAiEZMgBSACQQJ0aioCACIQlCARkjgCACADIBAgBCoCBCAAKgIEIhGTlCARkjgCBCAQIAQqAgggACoCCCIRk5QgEZILOAIIQYCAgIAEIQALIAVBkAFqJAAgAAvrEAIVfw19IwBBMGsiCCQAIAAoAgAhBwJAQZziACgCACIJRQRAIAcNAUHfC0HuD0HCBUHYChAAAAsgBw0AQd8LQe4PQcIFIAkRAAALAkAgBEUEQEGIgICAeCEADAELIAhCADcCJCAIQQA6ACwgCEIANwIcIAhB////+wc2AhggCCABNgIUIAggADYCECAIQdjDADYCDCABIQcgAiEJIAMhFCAIQQxqIREjAEGwAWsiBiQAIAAiASgCACEOAkBBnOIAKAIAIg1FBEAgDg0BQd8LQe4PQZ4HQYIOEAAACyAODQBB3wtB7g9BngcgDREAAAtBiICAgHghDQJAIAdFDQAgByoCACIbvEH/////B3FB////+wdLDQAgByoCBCIcvEH/////B3FB////+wdLDQAgCUUNACAHKgIIIh28Qf////8HcUGAgID8B08NACAJKgIAIh68Qf////8HcUH////7B0sNACAJKgIEIh+8Qf////8HcUH////7B0sNACARRQ0AIBRFDQAgCSoCCCIgvEH/////B3FBgICA/AdPDQAgBiAdICCTOAKsASAGIBwgH5M4AqgBIAYgGyAekzgCpAEgBiAdICCSOAKgASAGIBwgH5I4ApwBIAYgGyAekjgCmAEgASgCACAGQaQBaiAGQZQBaiAGQZABahBpIAEoAgAgBkGYAWogBkGMAWogBkGIAWoQaSAGKAKQASIJIAYoAogBIgJMBEAgBigCjAEhDQNAIA0gBigClAEiDk4EQANAQQAhB0EAIQAgASgCACICKAI8IAIoAjggCUHB8NjAfWwgDkHD5prteGxq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IAYgATYCACADBEAgACADKgIAOAIYIAAgAyoCBDgCHCAAIAMqAgg4AiALIAQEQCAAIAQqAgA4AiQgACAEKgIEOAIoIAAgBCoCCDgCLAsgAEH////7BzYCOCAAQQA2AjQgACAFNgIwQYiAgIB4IQYCQCAAKAIAIAEQa0UNACAAKAIAIAIQayEHIANFDQAgB0UNACADKAIAQf////8HcUH////7B0sNACADKAIEQf////8HcUH////7B0sNACAERQ0AIAMoAghB/////wdxQYCAgPwHTw0AIAQoAgBB/////wdxQf////sHSw0AIAQoAgRB/////wdxQf////sHSw0AIAVFDQAgBCgCCEH/////B3FBgICA/AdPDQAgASACRgRAIABBgICAgAQ2AgRBgICAgAQPCyAAKAJAEIQBIAAoAkRBADYCCCAAKAJAIAFBABCFASICIAMqAgA4AgAgAiADKgIEOAIEIAIgAyoCCDgCCCACIAIoAhQiBkGAgIB4cTYCFCACQQA2AgwgAyoCCCEIIAQqAgghCSADKgIAIQogBCoCACELIAMqAgQhDCAEKgIEIQ0gAiABNgIYIAIgBkGAgICYfnFBgICAIHI2AhQgAiAJIAiTIgggCJQgCyAKkyIIIAiUIA0gDJMiCCAIlJKSkUN3vn8/lDgCECAAKAJEIgMgAygCCCIEQQFqNgIIIAMgBCACEIcBIAAgAjYCCEGAgICAAiEGIABBgICAgAI2AgQgACACKgIQOAIMCyAGC9AMAg9/A30jAEHgAGsiBCQAAkAgACgCBCIFQYCAgIACcUUNAAJAIAAoAgAgACgCEBBrBEAgACgCACAAKAIUEGsNAQtBgICAgHghBSAAQYCAgIB4NgIEDAELIARBADYCQAJAAkAgAAJ/AkACQCABQQBMDQADQCAAKAJEIgUoAggiA0UNASAFKAIAIgwoAgAhBiAFIANBAWsiAzYCCCAFIAwgA0ECdGooAgAQiAEgBiAGKAIUQf///59/cUGAgIDAAHI2AhQgCUEBaiEJIAYoAhgiECAAKAIURgRAIAAgBjYCCCAAKAIEQf///wdxQYCAgIAEcgwECyAEQQA2AiAgBEEANgIcIAAoAgAgECAEQSBqIARBHGoQakEASA0CQQAhDSAEQQA2AhggBEEANgIUAkAgBigCFEH///8HcSIFRQRAQQAhCkEA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ACgCFCACajYCFAsLC3MBBX8gACgCACIDLAAAQTBrIgJBCUsEQEEADwsDQEF/IQQgAUHMmbPmAE0EQEF/IAIgAUEKbCIBaiACIAFB/////wdzSxshBAsgACADQQFqIgI2AgAgAywAASEFIAQhASACIQMgBUEwayICQQpJDQALIAELtAQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAECBQMEBgcICQoLDA0ODxAREgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACELABCwuIAQIDfwF+AkAgAEKAgICAEFQEQCAAIQUMAQsDQCABQQFrIgEgACAAQgqAIgVCCn59p0EwcjoAACAAQv////+fAVYhAiAFIQAgAg0ACwsgBUIAUgRAIAWnIQIDQCABQQFrIgEgAiACQQpuIgNBCmxrQTByOgAAIAJBCUshBCADIQIgBA0ACwsgAQvSAwIDfwF+IwBBgAJrIgckAAJAIAIgA0wNACAEQYDABHENAAJAIAIgA2siA0GAAiADQYACSSICGyIFRQ0AIAcgAToA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WgRAIANCAXwhAwwBCyACQoCAgICAgICACFINACADQgGDIAN8IQMLQgAgAyADQv////////8HViIAGyECIACtIAR8DAELAkAgAiADhFANACAEQv//AVINACADQgSGIAJCPIiEQoCAgICAgIAEhCECQv8PDAELIABB/ocBSwRAQgAhAkL/DwwBC0GA+ABBgfgAIARQIggbIgsgAGsiCUHwAEoEQEIAIQJCAAwBCyABQRBqIQogAiEEIAMgA0KAgICAgIDAAIQgCBsiAyEFAkBBgAEgCWsiCEHAAHEEQCACIAhBQGqthiEFQgAhBAwBCyAIRQ0AIAUgCK0iB4YgBEHAACAIa62IhCEFIAQgB4YhBAsgCiAENwMAIAogBTcDCAJAIAlBwABxBEAgAyAJQUBqrYghAkIAIQMMAQsgCUUNACADQcAAIAlrrYYgAiAJrSIEiIQhAiADIASIIQMLIAEgAjcDACABIAM3AwggASkDCEIEhiABKQMAIgNCPIiEIQICQCAAIAtHIAEpAxAgASkDGIRCAFJxrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIAJCgICAgICAgAiFIAIgAkL/////////B1YiABshAiAArQshAyABQSBqJAAgBkKAgICAgICAgIB/gyADQjSGhCAChL85AwALwgMBA38jAEGgAWsiBCQAIAQgACAEQZ4BaiABGyIANgKUASAEIAFBAWsiBkEAIAEgBk8bNgKYASAEQQBBkAH8CwAgBEF/NgJMIARBGTYCJCAEQX82AlAgBCAEQZ8BajYCLCAEIARBlAFqNgJUIABBADoAAEEAIQYjAEHQAWsiBSQAIAUgAzYCzAEgBUGgAWpBAEEo/AsAIAUgBSgCzAE2AsgBAkBBACACIAVByAFqIAVB0ABqIAVBoAFqEKkBQQBIBEBBfyECDAELIAQoAkxBAEghASAEIAQoAgAiAEFfcTYCAAJ/AkACQCAEKAIwRQRAIARB0AA2AjAgBEEANgIcIARCADcDECAEKAIsIQYgBCAFNgIsDAELIAQoAhANAQtBfyAEEKcBDQEaCyAEIAIgBUHIAWogBUHQAGogBUGgAWoQqQELIQMgAEEgcSECIAYEQCAEQQBBACAEKAIkEQUAGiAEQQA2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aWdodCI6JWcsImNsaW1iIjolZywic2xvcGUiOiVnfSwiY2VsbCI6JWcsImNlbGxIZWlnaHQiOiVnLCJ0aWxlU2l6ZSI6JWQsImdyaWQiOlslZCwlZF0sInRpbGVzIjpbJWQsJWRdLCJib3VuZHMiOltbJWcsJWcsJWddLFslZywlZywlZ11dLCJzdGF0cyI6eyJ0aWxlcyI6JWQsInBvbHlzIjolZCwidmVydHMiOiVkLCJ0cmlhbmdsZXMiOiVkLCJ2b2x1bWVzIjolZCwibGlua3MiOiVkfSwibWV0YSI6JXN9AG9wdGltaXplUGF0aFZpc2liaWxpdHkAbmF2cXVlcnkAY2xvc2VzdFBvaW50T25Qb2x5Qm91bmRhcnkAYWxsb2NhdGVfYW5kX2NvcHkAZmluZE5lYXJlc3RQb2x5AGNsb3Nlc3RQb2ludE9uUG9seQBkaXZpZGVQb2x5AG9wdGltaXplUGF0aFRvcG9sb2d5AGN0eAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AHJjQnVpbGRSZWdpb25zOiBSZWdpb24gSUQgb3ZlcmZsb3cAbV9uYXYATE5BViB2ZXJzaW9uICV1LCBleHBlY3RlZCAldQBjb250ZXh0AG1fbmV4dABtX2ZpcnN0AG1fb3Blbkxpc3QAdXBkYXRlTW92ZVJlcXVlc3QAcmF5Y2FzdABmaXhQYXRoU3RhcnQAbm8gcmFuZG9tIHBvaW50AGZpbmRSYW5kb21Qb2ludABubyBzdWNoIGFnZW50AGluaXQAZ2V0UG9seUhlaWdodAByZXNldABhIHZvbHVtZSBuZWVkcyBhdCBsZWFzdCAzIHBvaW50cwBnZXRQb3J0YWxQb2ludHMAZ2V0UG9seVdhbGxTZWdtZW50cwByY0J1aWxkQ29udG91cnMAZmluZENvcm5lcnMAcmNCdWlsZFJlZ2lvbnMAcXVlcnlQb2x5Z29ucwByY0ZpbHRlcldhbGthYmxlTG93SGVpZ2h0U3BhbnMAcmNGaWx0ZXJMZWRnZVNwYW5zAG5vIHRyaWFuZ2xlcwByY1Jhc3Rlcml6ZVRyaWFuZ2xlcwByY0ZpbHRlckxvd0hhbmdpbmdXYWxrYWJsZU9ic3RhY2xlcwBtX25vZGVzAHNldENvcnJpZG9yAFdhbGsgdG93YXJkcyBwb2x5Z29uIGNlbnRlciBmYWlsZWQgdG8gcmVhY2ggY2VudGVyAHNlZWRBcnJheVdpdGhQb2x5Q2VudGVyAGZpbHRlcgB0aGlyZF9wYXJ0eS9yZWNhc3RuYXZpZ2F0aW9uL0RldG91ci9Tb3VyY2UvRGV0b3VyTmF2TWVzaFF1ZXJ5LmNwcAB0aGlyZF9wYXJ0eS9yZWNhc3RuYXZpZ2F0aW9uL1JlY2FzdC9Tb3VyY2UvUmVjYXN0LmNwcAB0aGlyZF9wYXJ0eS9yZWNhc3RuYXZpZ2F0aW9uL1JlY2FzdC9Tb3VyY2UvUmVjYXN0Q29udG91ci5jcHAAdGhpcmRfcGFydHkvcmVjYXN0bmF2aWdhdGlvbi9EZXRvdXJDcm93ZC9Tb3VyY2UvRGV0b3VyUGF0aENvcnJpZG9yLmNwcAB0aGlyZF9wYXJ0eS9yZWNhc3RuYXZpZ2F0aW9uL1JlY2FzdC9Tb3VyY2UvUmVjYXN0RmlsdGVyLmNwcAB0aGlyZF9wYXJ0eS9yZWNhc3RuYXZpZ2F0aW9uL1JlY2FzdC9Tb3VyY2UvUmVjYXN0UmFzdGVyaXphdGlvbi5jcHAAdGhpcmRfcGFydHkvcmVjYXN0bmF2aWdhdGlvbi9SZWNhc3QvU291cmNlL1JlY2FzdFJlZ2lvbi5jcHAAdGhpcmRfcGFydHkvcmVjYXN0bmF2aWdhdGlvbi9SZWNhc3QvU291cmNlL1JlY2FzdE1lc2hEZXRhaWwuY3BwAHRoaXJkX3BhcnR5L3JlY2FzdG5hdmlnYXRpb24vUmVjYXN0L1NvdXJjZS9SZWNhc3RNZXNoLmNwcAB0aGlyZF9wYXJ0eS9yZWNhc3RuYXZpZ2F0aW9uL0RldG91ci9Tb3VyY2UvRGV0b3VyTm9kZS5jcHAAdGhpcmRfcGFydHkvcmVjYXN0bmF2aWdhdGlvbi9EZXRvdXJDcm93ZC9Tb3VyY2UvRGV0b3VyT2JzdGFjbGVBdm9pZGFuY2UuY3BwAHRoaXJkX3BhcnR5L3JlY2FzdG5hdmlnYXRpb24vRGV0b3VyQ3Jvd2QvU291cmNlL0RldG91ckNyb3dkLmNwcAB0aGlyZF9wYXJ0eS9yZWNhc3RuYXZpZ2F0aW9uL0RldG91ckNyb3dkL1NvdXJjZS9EZXRvdXJQcm94aW1pdHlHcmlkLmNwcAB0aGlyZF9wYXJ0eS9yZWNhc3RuYXZpZ2F0aW9uL1JlY2FzdC9Tb3VyY2UvUmVjYXN0QXJlYS5jcHAAbV9oZWFwAG1vdmVQb3NpdGlvbgBtb3ZlT3Zlck9mZm1lc2hDb25uZWN0aW9uAG1fdnBlbgBtX3RwZW4AbV9zcGVuAG1fdmNwZW4AbV9wZW4AbmFuAG1fbm9kZVBvb2wAbV90aW55Tm9kZVBvb2wAZHROb2RlUG9vbABudWxsAGNyb3dkIGlzIGZ1bGwAcmNCdWlsZFBvbHlNZXNoRGV0YWlsAG1fdmVsAGZpbmFsaXplU2xpY2VkRmluZFBhdGhQYXJ0aWFsAHBvcF9iYWNrAG1fbnBhdGgAIW1fcGF0aABubyBwYXRoAG5wYXRoIDwgbV9tYXhQYXRoAGZpbmRTdHJhaWdodFBhdGgAZmluZFBhdGgAaW5pdFNsaWNlZEZpbmRQYXRoAGZpbmFsaXplU2xpY2VkRmluZFBhdGgAc3RhcnQgaXMgbm90IG5lYXIgdGhlIG5hdm1lc2gAdGFyZ2V0IGlzIG5vdCBuZWFyIHRoZSBuYXZtZXNoAGNlbnRlciBpcyBub3QgbmVhciB0aGUgbmF2bWVzaABwb3NpdGlvbiBpcyBub3QgbmVhciB0aGUgbmF2bWVzaAByY0J1aWxkUG9seU1lc2gAdGhpcmRfcGFydHkvcmVjYXN0bmF2aWdhdGlvbi9SZWNhc3QvSW5jbHVkZS9SZWNhc3RBbGxvYy5oAGJhc2ljX3N0cmluZwBpbmYAY2VsbFNpemUgPiAwLjBmAG1fc3NpemUAaSA+PSAwICYmIGkgPCBtX3NpemUAJWQgdGlsZXMg4oCUIHJhaXNlIHRoZSB0aWxlIHNpemUgb3IgdGhlIGNlbGwgc2l6ZQB0aWxlICVkLCVkOiB0b28gbWFueSB2ZXJ0aWNlcyAoJWQpIOKAlCBsb3dlciB0aGUgdGlsZSBzaXplAFJDX1NJWkVfTUFYIC8gc3RhdGljX2Nhc3Q8cmNTaXplVHlwZT4oc2l6ZW9mKFQpKSA+PSBzaXplADIxNDc0ODM2NDdMIC8gc3RhdGljX2Nhc3Q8cmNTaXplVHlwZT4oc2l6ZW9mKFQpKSA+PSBzaXplAGR0TmV4dFBvdzIobV9oYXNoU2l6ZSkgPT0gKHVuc2lnbmVkIGludCltX2hhc2hTaXplAGNlbGwgc2l6ZSAvIGhlaWdodCBtdXN0IGJlIHBvc2l0aXZlAGR0Tm9kZVF1ZXVlAGFkZFNhbXBsZQBub3QgYW4gTE5BViBmaWxlAHF1ZXJ5UG9seWdvbnNJblRpbGUAZmluZFJhbmRvbVBvaW50QXJvdW5kQ2lyY2xlAG1fcXVlcnkubGFzdEJlc3ROb2RlACFjdXJOb2RlAGdldFBhdGhUb05vZGUAbW92ZUFsb25nU3VyZmFjZQBmaW5kTG9jYWxOZWlnaGJvdXJob29kAHJjQnVpbGRDb21wYWN0SGVpZ2h0ZmllbGQAcmNCdWlsZERpc3RhbmNlRmllbGQATE5BViBwYXJhbXMgdHJ1bmNhdGVkAExOQVYgdGlsZXMgdHJ1bmNhdGVkAExvZyBtZXNzYWdlIHdhcyB0cnVuY2F0ZWQATE5BViBoZWFkZXIgdHJ1bmNhdGVkAGR0TmF2TWVzaFF1ZXJ5IGluaXQgZmFpbGVkAGR0Q3Jvd2QgaW5pdCBmYWlsZWQAdGlsZSAlZCwlZDogcmNCdWlsZENvbnRvdXJzIGZhaWxlZAB0aWxlICVkLCVkOiByY1Jhc3Rlcml6ZVRyaWFuZ2xlcyBmYWlsZWQAdGlsZSAlZCwlZDogcmNCdWlsZFBvbHlNZXNoRGV0YWlsIGZhaWxlZABmaW5kU3RyYWlnaHRQYXRoIGZhaWxlZAB0aWxlICVkLCVkOiByY0J1aWxkUG9seU1lc2ggZmFpbGVkAHRpbGUgJWQsJWQ6IHJlZ2lvbiBidWlsZCBmYWlsZWQAdGlsZSAlZCwlZDogcmNCdWlsZENvbXBhY3RIZWlnaHRmaWVsZCBmYWlsZWQAdGlsZSAlZCwlZDogcmNDcmVhdGVIZWlnaHRmaWVsZCBmYWlsZWQAdGlsZSAlZCwlZDogZHRDcmVhdGVOYXZNZXNoRGF0YSBmYWlsZWQAdGlsZSAlZCwlZDogcmNFcm9kZVdhbGthYmxlQXJlYSBmYWlsZWQAbGluayBhcmVhICVkIGlzIG5vdCAwLi4lZAB2b2x1bWUgYXJlYSAlZCBpcyBub3QgMC4uJWQAdHJpYW5nbGUgJWQ6IGFyZWEgJWQgaXMgbm90IDAuLiVkIG9yICVkAHJjTWFya0NvbnZleFBvbHlBcmVhAHJjRXJvZGVXYWxrYWJsZUFyZWEAb3BlcmF0b3JbXQBOQU4AY29udGV4dCAhPSBOVUxMAGNvbnRleHQgIT0gMEwASU5GAGluVmVydHNDb3VudCA8PSAxMgBtYXhDb3JuZXJzIG11c3QgYmUgYXQgbGVhc3QgMgBzdGFydFNwYW5JbmRleCAhPSAtMQBtYXhBZ2VudHMgbXVzdCBiZSBhdCBsZWFzdCAxAG1fbWF4Tm9kZXMgPiAwICYmIG1fbWF4Tm9kZXMgPD0gRFRfTlVMTF9JRFggJiYgbV9tYXhOb2RlcyA8PSAoMSA8PCBEVF9OT0RFX1BBUkVOVF9CSVRTKSAtIDEAbV9jYXBhY2l0eSA+IDAAbnBhdGggPiAwAG1fc2l6ZSA+IDAAcG9vbFNpemUgPiAwAHJjUmFzdGVyaXplVHJpYW5nbGVzOiBPdXQgb2YgbWVtb3J5LgByZW1vdmVWZXJ0ZXg6IHRyaWFuZ3VsYXRlKCkgcmV0dXJuZWQgYmFkIHJlc3VsdHMuAHJjQnVpbGRSZWdpb25zOiAlZCBvdmVybGFwcGluZyByZWdpb25zLgBtZXJnZUhvbGVzOiBGYWlsZWQgdG8gbWVyZ2UgY29udG91cnMgJXAgYW5kICVwLgBtZXJnZUhvbGVzOiBGYWlsZWQgdG8gZmluZCBtZXJnZSBwb2ludHMgZm9yICVwIGFuZCAlcC4AcmNCdWlsZENvbnRvdXJzOiBCYWQgb3V0bGluZSBmb3IgcmVnaW9uICVkLCBjb250b3VyIHNpbXBsaWZpY2F0aW9uIGlzIGxpa2VseSB0b28gYWdncmVzc2l2ZS4AcmNCdWlsZFBvbHlNZXNoOiBUaGUgcmVzdWx0aW5nIG1lc2ggaGFzIHRvbyBtYW55IHBvbHlnb25zICVkIChtYXggJWQpLiBEYXRhIGNhbiBiZSBjb3JydXB0ZWQuAHJjQnVpbGRQb2x5TWVzaDogVGhlIHJlc3VsdGluZyBtZXNoIGhhcyB0b28gbWFueSB2ZXJ0aWNlcyAlZCAobWF4ICVkKS4gRGF0YSBjYW4gYmUgY29ycnVwdGVkLgByY0J1aWxkUG9seU1lc2g6IEFkamFjZW5jeSBmYWlsZWQuAHJjQnVpbGRQb2x5TWVzaDogRmFpbGVkIHRvIHJlbW92ZSBlZGdlIHZlcnRleCAlZC4AcmNCdWlsZFBvbHlNZXNoRGV0YWlsOiBTaHJpbmtpbmcgdHJpYW5nbGUgY291bnQgZnJvbSAlZCB0byBtYXggJWQuAG1lcmdlUmVnaW9uSG9sZXM6IEZhaWxlZCB0byBhbGxvY2F0ZWQgZGlhZ3MgJWQuAHJjQnVpbGRQb2x5TWVzaDogVG9vIG1hbnkgdmVydGljZXMgJWQuAHJjQnVpbGRQb2x5TWVzaDogQmFkIHRyaWFuZ3VsYXRpb24gQ29udG91ciAlZC4AcmNCdWlsZENvbnRvdXJzOiBFeHBhbmRpbmcgbWF4IGNvbnRvdXJzIGZyb20gJWQgdG8gJWQuAHJjQnVpbGRDb250b3VyczogTXVsdGlwbGUgb3V0bGluZXMgZm9yIHJlZ2lvbiAlZC4AZGVsYXVuYXlIdWxsOiBSZW1vdmluZyBkYW5nbGluZyBmYWNlICVkIFslZCwlZCwlZF0uAGJ1aWxkUG9seURldGFpbDogQ291bGQgbm90IHRyaWFuZ3VsYXRlIHBvbHlnb24gKCVkIHZlcnRzKS4AcmVtb3ZlVmVydGV4OiBUb28gbWFueSBwb2x5Z29ucyAlZCAobWF4OiVkKS4AcmNCdWlsZFBvbHlNZXNoOiBUb28gbWFueSBwb2x5Z29ucyAlZCAobWF4OiVkKS4AYWRkRWRnZTogVG9vIG1hbnkgZWRnZXMgKCVkLyVkKS4AcmNCdWlsZFBvbHlNZXNoRGV0YWlsOiBPdXQgb2YgbWVtb3J5ICdwb2x5JyAoJWQpLgByY0J1aWxkUG9seU1lc2hEZXRhaWw6IE91dCBvZiBtZW1vcnkgJ25ld3YnICglZCkuAHJjQnVpbGRQb2x5TWVzaERldGFpbDogT3V0IG9mIG1lbW9yeSAnbmV3dCcgKCVkKS4AZXJvZGVXYWxrYWJsZUFyZWE6IE91dCBvZiBtZW1vcnkgJ2Rpc3QnICglZCkuAHJjQnVpbGREaXN0YW5jZUZpZWxkOiBPdXQgb2YgbWVtb3J5ICdkc3QnICglZCkuAHJjQnVpbGRQb2x5TWVzaDogT3V0IG9mIG1lbW9yeSAnbmV4dFZlcnQnICglZCkuAHJjQnVpbGRQb2x5TWVzaDogT3V0IG9mIG1lbW9yeSAnZmlyc3RWZXJ0JyAoJWQpLgByY0J1aWxkUG9seU1lc2g6IE91dCBvZiBtZW1vcnkgJ21lc2gucG9seXMnICglZCkuAHJlbW92ZVZlcnRleDogT3V0IG9mIG1lbW9yeSAncG9seXMnICglZCkuAHJjQnVpbGRQb2x5TWVzaDogT3V0IG9mIG1lbW9yeSAncG9seXMnICglZCkuAHJlbW92ZVZlcnRleDogT3V0IG9mIG1lbW9yeSAndHZlcnRzJyAoJWQpLgByY0J1aWxkQ29udG91cnM6IE91dCBvZiBtZW1vcnkgJ3J2ZXJ0cycgKCVkKS4AcmNCdWlsZFBvbHlNZXNoRGV0YWlsOiBPdXQgb2YgbWVtb3J5ICdkbWVzaC52ZXJ0cycgKCVkKS4AcmNCdWlsZFBvbHlNZXNoOiBPdXQgb2YgbWVtb3J5ICdtZXNoLnZlcnRzJyAoJWQpLgByY0J1aWxkQ29udG91cnM6IE91dCBvZiBtZW1vcnkgJ3ZlcnRzJyAoJWQpLgByY0J1aWxkQ29udG91cnM6IE91dCBvZiBtZW1vcnkgJ3JlZ2lvbnMnICglZCkuAG1lcmdlQW5kRmlsdGVyUmVnaW9uczogT3V0IG9mIG1lbW9yeSAncmVnaW9ucycgKCVkKS4AcmNCdWlsZFBvbHlNZXNoRGV0YWlsOiBPdXQgb2YgbWVtb3J5ICdkbWVzaC50cmlzJyAoJWQpLgByZW1vdmVWZXJ0ZXg6IE91dCBvZiBtZW1vcnkgJ3RyaXMnICglZCkuAHJjQnVpbGRQb2x5TWVzaDogT3V0IG9mIG1lbW9yeSAndHJpcycgKCVkKS4AcmVtb3ZlVmVydGV4OiBPdXQgb2YgbWVtb3J5ICdwcmVncycgKCVkKS4AcmNCdWlsZFBvbHlNZXNoOiBPdXQgb2YgbWVtb3J5ICdtZXNoLnJlZ3MnICglZCkuAHJjQnVpbGRQb2x5TWVzaDogT3V0IG9mIG1lbW9yeSAndmZsYWdzJyAoJWQpLgByY0J1aWxkUG9seU1lc2g6IE91dCBvZiBtZW1vcnkgJ21lc2guZmxhZ3MnICglZCkuAHJjQnVpbGRDb250b3VyczogT3V0IG9mIG1lbW9yeSAnZmxhZ3MnICglZCkuAHJjQnVpbGRDb250b3VyczogT3V0IG9mIG1lbW9yeSAnaG9sZXMnICglZCkuAHJjQnVpbGRQb2x5TWVzaERldGFpbDogT3V0IG9mIG1lbW9yeSAnZG1lc2gubWVzaGVzJyAoJWQpLgByZW1vdmVWZXJ0ZXg6IE91dCBvZiBtZW1vcnkgJ2VkZ2VzJyAoJWQpLgBjYW5SZW1vdmVWZXJ0ZXg6IE91dCBvZiBtZW1vcnkgJ2VkZ2VzJyAoJWQpLgByY0J1aWxkUG9seU1lc2g6IE91dCBvZiBtZW1vcnkgJ2luZGljZXMnICglZCkuAHJjQnVpbGRQb2x5TWVzaERldGFpbDogT3V0IG9mIG1lbW9yeSAnYm91bmRzJyAoJWQpLgByZW1vdmVWZXJ0ZXg6IE91dCBvZiBtZW1vcnkgJ3BhcmVhcycgKCVkKS4AcmNCdWlsZFBvbHlNZXNoOiBPdXQgb2YgbWVtb3J5ICdtZXNoLmFyZWFzJyAoJWQpLgByY0J1aWxkUmVnaW9uczogT3V0IG9mIG1lbW9yeSAndG1wJyAoJWQpLgByZW1vdmVWZXJ0ZXg6IE91dCBvZiBtZW1vcnkgJ2hyZWcnICglZCkuAHJlbW92ZVZlcnRleDogT3V0IG9mIG1lbW9yeSAndGhvbGUnICglZCkuAHJlbW92ZVZlcnRleDogT3V0IG9mIG1lbW9yeSAnaG9sZScgKCVkKS4AcmNCdWlsZENvbnRvdXJzOiBPdXQgb2YgbWVtb3J5ICdob2xlJyAoJWQpLgByY0J1aWxkRGlzdGFuY2VGaWVsZDogT3V0IG9mIG1lbW9yeSAnc3JjJyAoJWQpLgByY0J1aWxkUG9seU1lc2hEZXRhaWw6IE91dCBvZiBtZW1vcnkgJ2hwLmRhdGEnICglZCkuAHJlbW92ZVZlcnRleDogT3V0IG9mIG1lbW9yeSAnaGFyZWEnICglZCkuAGFkZFRpbGUgZmFpbGVkIChzdGF0dXMgMHgleCkAaW5kZXggJWQgb3V0IG9mIHJhbmdlICglZCB2ZXJ0aWNlcykAKG51bGwpAHJjQnVpbGRDb21wYWN0SGVpZ2h0ZmllbGQ6IE91dCBvZiBtZW1vcnkgJ2NoZi5zcGFucycgKCVkKQByY0J1aWxkQ29tcGFjdEhlaWdodGZpZWxkOiBPdXQgb2YgbWVtb3J5ICdjaGYuY2VsbHMnICglZCkAcmNCdWlsZENvbXBhY3RIZWlnaHRmaWVsZDogT3V0IG9mIG1lbW9yeSAnY2hmLmFyZWFz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");
|
|
223565
|
+
}
|
|
223566
|
+
function getBinarySync(file) {
|
|
223567
|
+
if (ArrayBuffer.isView(file)) {
|
|
223568
|
+
return file;
|
|
223569
|
+
}
|
|
223570
|
+
if (file == wasmBinaryFile && wasmBinary) {
|
|
223571
|
+
return new Uint8Array(wasmBinary);
|
|
223572
|
+
}
|
|
223573
|
+
if (readBinary2) {
|
|
223574
|
+
return readBinary2(file);
|
|
223575
|
+
}
|
|
223576
|
+
throw "both async and sync fetching of the wasm failed";
|
|
223577
|
+
}
|
|
223578
|
+
async function getWasmBinary(binaryFile) {
|
|
223579
|
+
return getBinarySync(binaryFile);
|
|
223580
|
+
}
|
|
223581
|
+
async function instantiateArrayBuffer(binaryFile, imports) {
|
|
223582
|
+
try {
|
|
223583
|
+
var binary = await getWasmBinary(binaryFile);
|
|
223584
|
+
var instance = await WebAssembly.instantiate(binary, imports);
|
|
223585
|
+
return instance;
|
|
223586
|
+
} catch (reason) {
|
|
223587
|
+
err(`failed to asynchronously prepare wasm: ${reason}`);
|
|
223588
|
+
abort(reason);
|
|
223589
|
+
}
|
|
223590
|
+
}
|
|
223591
|
+
async function instantiateAsync(binary, binaryFile, imports) {
|
|
223592
|
+
return instantiateArrayBuffer(binaryFile, imports);
|
|
223593
|
+
}
|
|
223594
|
+
function getWasmImports() {
|
|
223595
|
+
return { env: wasmImports, wasi_snapshot_preview1: wasmImports };
|
|
223596
|
+
}
|
|
223597
|
+
async function createWasm() {
|
|
223598
|
+
function receiveInstance(instance, module) {
|
|
223599
|
+
wasmExports = instance.exports;
|
|
223600
|
+
wasmMemory = wasmExports["memory"];
|
|
223601
|
+
updateMemoryViews();
|
|
223602
|
+
wasmTable = wasmExports["__indirect_function_table"];
|
|
223603
|
+
removeRunDependency("wasm-instantiate");
|
|
223604
|
+
return wasmExports;
|
|
223605
|
+
}
|
|
223606
|
+
addRunDependency("wasm-instantiate");
|
|
223607
|
+
function receiveInstantiationResult(result2) {
|
|
223608
|
+
return receiveInstance(result2["instance"]);
|
|
223609
|
+
}
|
|
223610
|
+
var info2 = getWasmImports();
|
|
223611
|
+
if (Module["instantiateWasm"]) {
|
|
223612
|
+
return new Promise((resolve14, reject) => {
|
|
223613
|
+
Module["instantiateWasm"](info2, (mod, inst) => {
|
|
223614
|
+
resolve14(receiveInstance(mod, inst));
|
|
223615
|
+
});
|
|
223616
|
+
});
|
|
223617
|
+
}
|
|
223618
|
+
wasmBinaryFile ??= findWasmBinary();
|
|
223619
|
+
try {
|
|
223620
|
+
var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info2);
|
|
223621
|
+
var exports = receiveInstantiationResult(result);
|
|
223622
|
+
return exports;
|
|
223623
|
+
} catch (e2) {
|
|
223624
|
+
readyPromiseReject(e2);
|
|
223625
|
+
return Promise.reject(e2);
|
|
223626
|
+
}
|
|
223627
|
+
}
|
|
223628
|
+
|
|
223629
|
+
class ExitStatus {
|
|
223630
|
+
name = "ExitStatus";
|
|
223631
|
+
constructor(status2) {
|
|
223632
|
+
this.message = `Program terminated with exit(${status2})`;
|
|
223633
|
+
this.status = status2;
|
|
223634
|
+
}
|
|
223635
|
+
}
|
|
223636
|
+
var callRuntimeCallbacks = (callbacks) => {
|
|
223637
|
+
while (callbacks.length > 0) {
|
|
223638
|
+
callbacks.shift()(Module);
|
|
223639
|
+
}
|
|
223640
|
+
};
|
|
223641
|
+
var onPostRuns = [];
|
|
223642
|
+
var addOnPostRun = (cb) => onPostRuns.push(cb);
|
|
223643
|
+
var onPreRuns = [];
|
|
223644
|
+
var addOnPreRun = (cb) => onPreRuns.push(cb);
|
|
223645
|
+
var base64Decode = (b64) => {
|
|
223646
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
223647
|
+
var buf = Buffer.from(b64, "base64");
|
|
223648
|
+
return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
|
|
223649
|
+
}
|
|
223650
|
+
var b1, b2, i3 = 0, j = 0, bLength = b64.length;
|
|
223651
|
+
var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == "=") - (b64[bLength - 1] == "="));
|
|
223652
|
+
for (;i3 < bLength; i3 += 4, j += 3) {
|
|
223653
|
+
b1 = base64ReverseLookup[b64.charCodeAt(i3 + 1)];
|
|
223654
|
+
b2 = base64ReverseLookup[b64.charCodeAt(i3 + 2)];
|
|
223655
|
+
output[j] = base64ReverseLookup[b64.charCodeAt(i3)] << 2 | b1 >> 4;
|
|
223656
|
+
output[j + 1] = b1 << 4 | b2 >> 2;
|
|
223657
|
+
output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i3 + 3)];
|
|
223658
|
+
}
|
|
223659
|
+
return output;
|
|
223660
|
+
};
|
|
223661
|
+
var noExitRuntime = true;
|
|
223662
|
+
var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder : undefined;
|
|
223663
|
+
var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {
|
|
223664
|
+
var endIdx = idx + maxBytesToRead;
|
|
223665
|
+
var endPtr = idx;
|
|
223666
|
+
while (heapOrArray[endPtr] && !(endPtr >= endIdx))
|
|
223667
|
+
++endPtr;
|
|
223668
|
+
if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
|
|
223669
|
+
return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
|
|
223670
|
+
}
|
|
223671
|
+
var str = "";
|
|
223672
|
+
while (idx < endPtr) {
|
|
223673
|
+
var u0 = heapOrArray[idx++];
|
|
223674
|
+
if (!(u0 & 128)) {
|
|
223675
|
+
str += String.fromCharCode(u0);
|
|
223676
|
+
continue;
|
|
223677
|
+
}
|
|
223678
|
+
var u1 = heapOrArray[idx++] & 63;
|
|
223679
|
+
if ((u0 & 224) == 192) {
|
|
223680
|
+
str += String.fromCharCode((u0 & 31) << 6 | u1);
|
|
223681
|
+
continue;
|
|
223682
|
+
}
|
|
223683
|
+
var u2 = heapOrArray[idx++] & 63;
|
|
223684
|
+
if ((u0 & 240) == 224) {
|
|
223685
|
+
u0 = (u0 & 15) << 12 | u1 << 6 | u2;
|
|
223686
|
+
} else {
|
|
223687
|
+
u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
|
|
223688
|
+
}
|
|
223689
|
+
if (u0 < 65536) {
|
|
223690
|
+
str += String.fromCharCode(u0);
|
|
223691
|
+
} else {
|
|
223692
|
+
var ch = u0 - 65536;
|
|
223693
|
+
str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
|
|
223694
|
+
}
|
|
223695
|
+
}
|
|
223696
|
+
return str;
|
|
223697
|
+
};
|
|
223698
|
+
var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
|
|
223699
|
+
var ___assert_fail = (condition, filename, line, func) => abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function"]);
|
|
223700
|
+
var __abort_js = () => abort("");
|
|
223701
|
+
var getHeapMax = () => 2147483648;
|
|
223702
|
+
var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
|
|
223703
|
+
var growMemory = (size) => {
|
|
223704
|
+
var b = wasmMemory.buffer;
|
|
223705
|
+
var pages = (size - b.byteLength + 65535) / 65536 | 0;
|
|
223706
|
+
try {
|
|
223707
|
+
wasmMemory.grow(pages);
|
|
223708
|
+
updateMemoryViews();
|
|
223709
|
+
return 1;
|
|
223710
|
+
} catch (e2) {}
|
|
223711
|
+
};
|
|
223712
|
+
var _emscripten_resize_heap = (requestedSize) => {
|
|
223713
|
+
var oldSize = HEAPU8.length;
|
|
223714
|
+
requestedSize >>>= 0;
|
|
223715
|
+
var maxHeapSize = getHeapMax();
|
|
223716
|
+
if (requestedSize > maxHeapSize) {
|
|
223717
|
+
return false;
|
|
223718
|
+
}
|
|
223719
|
+
for (var cutDown = 1;cutDown <= 4; cutDown *= 2) {
|
|
223720
|
+
var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);
|
|
223721
|
+
overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
|
|
223722
|
+
var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));
|
|
223723
|
+
var replacement = growMemory(newSize);
|
|
223724
|
+
if (replacement) {
|
|
223725
|
+
return true;
|
|
223726
|
+
}
|
|
223727
|
+
}
|
|
223728
|
+
return false;
|
|
223729
|
+
};
|
|
223730
|
+
var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {
|
|
223731
|
+
if (!(maxBytesToWrite > 0))
|
|
223732
|
+
return 0;
|
|
223733
|
+
var startIdx = outIdx;
|
|
223734
|
+
var endIdx = outIdx + maxBytesToWrite - 1;
|
|
223735
|
+
for (var i3 = 0;i3 < str.length; ++i3) {
|
|
223736
|
+
var u2 = str.charCodeAt(i3);
|
|
223737
|
+
if (u2 >= 55296 && u2 <= 57343) {
|
|
223738
|
+
var u1 = str.charCodeAt(++i3);
|
|
223739
|
+
u2 = 65536 + ((u2 & 1023) << 10) | u1 & 1023;
|
|
223740
|
+
}
|
|
223741
|
+
if (u2 <= 127) {
|
|
223742
|
+
if (outIdx >= endIdx)
|
|
223743
|
+
break;
|
|
223744
|
+
heap[outIdx++] = u2;
|
|
223745
|
+
} else if (u2 <= 2047) {
|
|
223746
|
+
if (outIdx + 1 >= endIdx)
|
|
223747
|
+
break;
|
|
223748
|
+
heap[outIdx++] = 192 | u2 >> 6;
|
|
223749
|
+
heap[outIdx++] = 128 | u2 & 63;
|
|
223750
|
+
} else if (u2 <= 65535) {
|
|
223751
|
+
if (outIdx + 2 >= endIdx)
|
|
223752
|
+
break;
|
|
223753
|
+
heap[outIdx++] = 224 | u2 >> 12;
|
|
223754
|
+
heap[outIdx++] = 128 | u2 >> 6 & 63;
|
|
223755
|
+
heap[outIdx++] = 128 | u2 & 63;
|
|
223756
|
+
} else {
|
|
223757
|
+
if (outIdx + 3 >= endIdx)
|
|
223758
|
+
break;
|
|
223759
|
+
heap[outIdx++] = 240 | u2 >> 18;
|
|
223760
|
+
heap[outIdx++] = 128 | u2 >> 12 & 63;
|
|
223761
|
+
heap[outIdx++] = 128 | u2 >> 6 & 63;
|
|
223762
|
+
heap[outIdx++] = 128 | u2 & 63;
|
|
223763
|
+
}
|
|
223764
|
+
}
|
|
223765
|
+
heap[outIdx] = 0;
|
|
223766
|
+
return outIdx - startIdx;
|
|
223767
|
+
};
|
|
223768
|
+
var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
|
|
223769
|
+
var lengthBytesUTF8 = (str) => {
|
|
223770
|
+
var len = 0;
|
|
223771
|
+
for (var i3 = 0;i3 < str.length; ++i3) {
|
|
223772
|
+
var c4 = str.charCodeAt(i3);
|
|
223773
|
+
if (c4 <= 127) {
|
|
223774
|
+
len++;
|
|
223775
|
+
} else if (c4 <= 2047) {
|
|
223776
|
+
len += 2;
|
|
223777
|
+
} else if (c4 >= 55296 && c4 <= 57343) {
|
|
223778
|
+
len += 4;
|
|
223779
|
+
++i3;
|
|
223780
|
+
} else {
|
|
223781
|
+
len += 3;
|
|
223782
|
+
}
|
|
223783
|
+
}
|
|
223784
|
+
return len;
|
|
223785
|
+
};
|
|
223786
|
+
var uleb128Encode = (n2, target) => {
|
|
223787
|
+
if (n2 < 128) {
|
|
223788
|
+
target.push(n2);
|
|
223789
|
+
} else {
|
|
223790
|
+
target.push(n2 % 128 | 128, n2 >> 7);
|
|
223791
|
+
}
|
|
223792
|
+
};
|
|
223793
|
+
var sigToWasmTypes = (sig) => {
|
|
223794
|
+
var typeNames = { i: "i32", j: "i64", f: "f32", d: "f64", e: "externref", p: "i32" };
|
|
223795
|
+
var type = { parameters: [], results: sig[0] == "v" ? [] : [typeNames[sig[0]]] };
|
|
223796
|
+
for (var i3 = 1;i3 < sig.length; ++i3) {
|
|
223797
|
+
type.parameters.push(typeNames[sig[i3]]);
|
|
223798
|
+
}
|
|
223799
|
+
return type;
|
|
223800
|
+
};
|
|
223801
|
+
var generateFuncType = (sig, target) => {
|
|
223802
|
+
var sigRet = sig.slice(0, 1);
|
|
223803
|
+
var sigParam = sig.slice(1);
|
|
223804
|
+
var typeCodes = { i: 127, p: 127, j: 126, f: 125, d: 124, e: 111 };
|
|
223805
|
+
target.push(96);
|
|
223806
|
+
uleb128Encode(sigParam.length, target);
|
|
223807
|
+
for (var paramType of sigParam) {
|
|
223808
|
+
target.push(typeCodes[paramType]);
|
|
223809
|
+
}
|
|
223810
|
+
if (sigRet == "v") {
|
|
223811
|
+
target.push(0);
|
|
223812
|
+
} else {
|
|
223813
|
+
target.push(1, typeCodes[sigRet]);
|
|
223814
|
+
}
|
|
223815
|
+
};
|
|
223816
|
+
var convertJsFunctionToWasm = (func, sig) => {
|
|
223817
|
+
if (typeof WebAssembly.Function == "function") {
|
|
223818
|
+
return new WebAssembly.Function(sigToWasmTypes(sig), func);
|
|
223819
|
+
}
|
|
223820
|
+
var typeSectionBody = [1];
|
|
223821
|
+
generateFuncType(sig, typeSectionBody);
|
|
223822
|
+
var bytes = [0, 97, 115, 109, 1, 0, 0, 0, 1];
|
|
223823
|
+
uleb128Encode(typeSectionBody.length, bytes);
|
|
223824
|
+
bytes.push(...typeSectionBody);
|
|
223825
|
+
bytes.push(2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0);
|
|
223826
|
+
var module = new WebAssembly.Module(new Uint8Array(bytes));
|
|
223827
|
+
var instance = new WebAssembly.Instance(module, { e: { f: func } });
|
|
223828
|
+
var wrappedFunc = instance.exports["f"];
|
|
223829
|
+
return wrappedFunc;
|
|
223830
|
+
};
|
|
223831
|
+
var wasmTableMirror = [];
|
|
223832
|
+
var wasmTable;
|
|
223833
|
+
var getWasmTableEntry = (funcPtr) => {
|
|
223834
|
+
var func = wasmTableMirror[funcPtr];
|
|
223835
|
+
if (!func) {
|
|
223836
|
+
wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr);
|
|
223837
|
+
}
|
|
223838
|
+
return func;
|
|
223839
|
+
};
|
|
223840
|
+
var updateTableMap = (offset, count) => {
|
|
223841
|
+
if (functionsInTableMap) {
|
|
223842
|
+
for (var i3 = offset;i3 < offset + count; i3++) {
|
|
223843
|
+
var item = getWasmTableEntry(i3);
|
|
223844
|
+
if (item) {
|
|
223845
|
+
functionsInTableMap.set(item, i3);
|
|
223846
|
+
}
|
|
223847
|
+
}
|
|
223848
|
+
}
|
|
223849
|
+
};
|
|
223850
|
+
var functionsInTableMap;
|
|
223851
|
+
var getFunctionAddress = (func) => {
|
|
223852
|
+
if (!functionsInTableMap) {
|
|
223853
|
+
functionsInTableMap = new WeakMap;
|
|
223854
|
+
updateTableMap(0, wasmTable.length);
|
|
223855
|
+
}
|
|
223856
|
+
return functionsInTableMap.get(func) || 0;
|
|
223857
|
+
};
|
|
223858
|
+
var freeTableIndexes = [];
|
|
223859
|
+
var getEmptyTableSlot = () => {
|
|
223860
|
+
if (freeTableIndexes.length) {
|
|
223861
|
+
return freeTableIndexes.pop();
|
|
223862
|
+
}
|
|
223863
|
+
try {
|
|
223864
|
+
wasmTable.grow(1);
|
|
223865
|
+
} catch (err2) {
|
|
223866
|
+
if (!(err2 instanceof RangeError)) {
|
|
223867
|
+
throw err2;
|
|
223868
|
+
}
|
|
223869
|
+
throw "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";
|
|
223870
|
+
}
|
|
223871
|
+
return wasmTable.length - 1;
|
|
223872
|
+
};
|
|
223873
|
+
var setWasmTableEntry = (idx, func) => {
|
|
223874
|
+
wasmTable.set(idx, func);
|
|
223875
|
+
wasmTableMirror[idx] = wasmTable.get(idx);
|
|
223876
|
+
};
|
|
223877
|
+
var addFunction = (func, sig) => {
|
|
223878
|
+
var rtn = getFunctionAddress(func);
|
|
223879
|
+
if (rtn) {
|
|
223880
|
+
return rtn;
|
|
223881
|
+
}
|
|
223882
|
+
var ret = getEmptyTableSlot();
|
|
223883
|
+
try {
|
|
223884
|
+
setWasmTableEntry(ret, func);
|
|
223885
|
+
} catch (err2) {
|
|
223886
|
+
if (!(err2 instanceof TypeError)) {
|
|
223887
|
+
throw err2;
|
|
223888
|
+
}
|
|
223889
|
+
var wrapped = convertJsFunctionToWasm(func, sig);
|
|
223890
|
+
setWasmTableEntry(ret, wrapped);
|
|
223891
|
+
}
|
|
223892
|
+
functionsInTableMap.set(func, ret);
|
|
223893
|
+
return ret;
|
|
223894
|
+
};
|
|
223895
|
+
var removeFunction = (index) => {
|
|
223896
|
+
functionsInTableMap.delete(getWasmTableEntry(index));
|
|
223897
|
+
setWasmTableEntry(index, null);
|
|
223898
|
+
freeTableIndexes.push(index);
|
|
223899
|
+
};
|
|
223900
|
+
for (var base64ReverseLookup = new Uint8Array(123), i2 = 25;i2 >= 0; --i2) {
|
|
223901
|
+
base64ReverseLookup[48 + i2] = 52 + i2;
|
|
223902
|
+
base64ReverseLookup[65 + i2] = i2;
|
|
223903
|
+
base64ReverseLookup[97 + i2] = 26 + i2;
|
|
223904
|
+
}
|
|
223905
|
+
base64ReverseLookup[43] = 62;
|
|
223906
|
+
base64ReverseLookup[47] = 63;
|
|
223907
|
+
{
|
|
223908
|
+
if (Module["noExitRuntime"])
|
|
223909
|
+
noExitRuntime = Module["noExitRuntime"];
|
|
223910
|
+
if (Module["print"])
|
|
223911
|
+
out = Module["print"];
|
|
223912
|
+
if (Module["printErr"])
|
|
223913
|
+
err = Module["printErr"];
|
|
223914
|
+
if (Module["wasmBinary"])
|
|
223915
|
+
wasmBinary = Module["wasmBinary"];
|
|
223916
|
+
if (Module["arguments"])
|
|
223917
|
+
arguments_ = Module["arguments"];
|
|
223918
|
+
if (Module["thisProgram"])
|
|
223919
|
+
thisProgram = Module["thisProgram"];
|
|
223920
|
+
}
|
|
223921
|
+
Module["addFunction"] = addFunction;
|
|
223922
|
+
Module["removeFunction"] = removeFunction;
|
|
223923
|
+
Module["UTF8ToString"] = UTF8ToString;
|
|
223924
|
+
Module["stringToUTF8"] = stringToUTF8;
|
|
223925
|
+
Module["lengthBytesUTF8"] = lengthBytesUTF8;
|
|
223926
|
+
var wasmImports = { __assert_fail: ___assert_fail, _abort_js: __abort_js, emscripten_resize_heap: _emscripten_resize_heap };
|
|
223927
|
+
var wasmExports = await createWasm();
|
|
223928
|
+
var ___wasm_call_ctors = wasmExports["__wasm_call_ctors"];
|
|
223929
|
+
var _cnavBuildDefaults = Module["_cnavBuildDefaults"] = wasmExports["cnavBuildDefaults"];
|
|
223930
|
+
var _cnavBuildCreate = Module["_cnavBuildCreate"] = wasmExports["cnavBuildCreate"];
|
|
223931
|
+
var _cnavBuildDestroy = Module["_cnavBuildDestroy"] = wasmExports["cnavBuildDestroy"];
|
|
223932
|
+
var _cnavBuildAddTriangles = Module["_cnavBuildAddTriangles"] = wasmExports["cnavBuildAddTriangles"];
|
|
223933
|
+
var _cnavBuildAddVolume = Module["_cnavBuildAddVolume"] = wasmExports["cnavBuildAddVolume"];
|
|
223934
|
+
var _cnavBuildAddLink = Module["_cnavBuildAddLink"] = wasmExports["cnavBuildAddLink"];
|
|
223935
|
+
var _cnavBuildRun = Module["_cnavBuildRun"] = wasmExports["cnavBuildRun"];
|
|
223936
|
+
var _cnavBuildData = Module["_cnavBuildData"] = wasmExports["cnavBuildData"];
|
|
223937
|
+
var _cnavBuildTileCount = Module["_cnavBuildTileCount"] = wasmExports["cnavBuildTileCount"];
|
|
223938
|
+
var _cnavBuildPolyCount = Module["_cnavBuildPolyCount"] = wasmExports["cnavBuildPolyCount"];
|
|
223939
|
+
var _cnavBuildBounds = Module["_cnavBuildBounds"] = wasmExports["cnavBuildBounds"];
|
|
223940
|
+
var _cnavMeshLoad = Module["_cnavMeshLoad"] = wasmExports["cnavMeshLoad"];
|
|
223941
|
+
var _cnavMeshDestroy = Module["_cnavMeshDestroy"] = wasmExports["cnavMeshDestroy"];
|
|
223942
|
+
var _cnavMeshHeader = Module["_cnavMeshHeader"] = wasmExports["cnavMeshHeader"];
|
|
223943
|
+
var _cnavMeshTileCount = Module["_cnavMeshTileCount"] = wasmExports["cnavMeshTileCount"];
|
|
223944
|
+
var _cnavMeshPolyCount = Module["_cnavMeshPolyCount"] = wasmExports["cnavMeshPolyCount"];
|
|
223945
|
+
var _cnavMeshSetAreaCost = Module["_cnavMeshSetAreaCost"] = wasmExports["cnavMeshSetAreaCost"];
|
|
223946
|
+
var _cnavFindPath = Module["_cnavFindPath"] = wasmExports["cnavFindPath"];
|
|
223947
|
+
var _cnavNearest = Module["_cnavNearest"] = wasmExports["cnavNearest"];
|
|
223948
|
+
var _cnavRaycast = Module["_cnavRaycast"] = wasmExports["cnavRaycast"];
|
|
223949
|
+
var _cnavRandomPoint = Module["_cnavRandomPoint"] = wasmExports["cnavRandomPoint"];
|
|
223950
|
+
var _cnavDebugTriangles = Module["_cnavDebugTriangles"] = wasmExports["cnavDebugTriangles"];
|
|
223951
|
+
var _cnavAgentDefaults = Module["_cnavAgentDefaults"] = wasmExports["cnavAgentDefaults"];
|
|
223952
|
+
var _cnavCrowdCreate = Module["_cnavCrowdCreate"] = wasmExports["cnavCrowdCreate"];
|
|
223953
|
+
var _cnavCrowdDestroy = Module["_cnavCrowdDestroy"] = wasmExports["cnavCrowdDestroy"];
|
|
223954
|
+
var _cnavCrowdMaxAgents = Module["_cnavCrowdMaxAgents"] = wasmExports["cnavCrowdMaxAgents"];
|
|
223955
|
+
var _cnavCrowdAdd = Module["_cnavCrowdAdd"] = wasmExports["cnavCrowdAdd"];
|
|
223956
|
+
var _cnavCrowdRemove = Module["_cnavCrowdRemove"] = wasmExports["cnavCrowdRemove"];
|
|
223957
|
+
var _cnavCrowdSetParams = Module["_cnavCrowdSetParams"] = wasmExports["cnavCrowdSetParams"];
|
|
223958
|
+
var _cnavCrowdSetTarget = Module["_cnavCrowdSetTarget"] = wasmExports["cnavCrowdSetTarget"];
|
|
223959
|
+
var _cnavCrowdSetVelocity = Module["_cnavCrowdSetVelocity"] = wasmExports["cnavCrowdSetVelocity"];
|
|
223960
|
+
var _cnavCrowdResetTarget = Module["_cnavCrowdResetTarget"] = wasmExports["cnavCrowdResetTarget"];
|
|
223961
|
+
var _cnavCrowdWarp = Module["_cnavCrowdWarp"] = wasmExports["cnavCrowdWarp"];
|
|
223962
|
+
var _cnavCrowdUpdate = Module["_cnavCrowdUpdate"] = wasmExports["cnavCrowdUpdate"];
|
|
223963
|
+
var _cnavCrowdRead = Module["_cnavCrowdRead"] = wasmExports["cnavCrowdRead"];
|
|
223964
|
+
var _cnavLastError = Module["_cnavLastError"] = wasmExports["cnavLastError"];
|
|
223965
|
+
var _malloc = Module["_malloc"] = wasmExports["malloc"];
|
|
223966
|
+
var _free = Module["_free"] = wasmExports["free"];
|
|
223967
|
+
var __emscripten_stack_restore = wasmExports["_emscripten_stack_restore"];
|
|
223968
|
+
var __emscripten_stack_alloc = wasmExports["_emscripten_stack_alloc"];
|
|
223969
|
+
var _emscripten_stack_get_current = wasmExports["emscripten_stack_get_current"];
|
|
223970
|
+
function run2() {
|
|
223971
|
+
if (runDependencies > 0) {
|
|
223972
|
+
dependenciesFulfilled = run2;
|
|
223973
|
+
return;
|
|
223974
|
+
}
|
|
223975
|
+
preRun();
|
|
223976
|
+
if (runDependencies > 0) {
|
|
223977
|
+
dependenciesFulfilled = run2;
|
|
223978
|
+
return;
|
|
223979
|
+
}
|
|
223980
|
+
function doRun() {
|
|
223981
|
+
Module["calledRun"] = true;
|
|
223982
|
+
if (ABORT)
|
|
223983
|
+
return;
|
|
223984
|
+
initRuntime();
|
|
223985
|
+
readyPromiseResolve(Module);
|
|
223986
|
+
Module["onRuntimeInitialized"]?.();
|
|
223987
|
+
postRun();
|
|
223988
|
+
}
|
|
223989
|
+
if (Module["setStatus"]) {
|
|
223990
|
+
Module["setStatus"]("Running...");
|
|
223991
|
+
setTimeout(() => {
|
|
223992
|
+
setTimeout(() => Module["setStatus"](""), 1);
|
|
223993
|
+
doRun();
|
|
223994
|
+
}, 1);
|
|
223995
|
+
} else {
|
|
223996
|
+
doRun();
|
|
223997
|
+
}
|
|
223998
|
+
}
|
|
223999
|
+
function preInit() {
|
|
224000
|
+
if (Module["preInit"]) {
|
|
224001
|
+
if (typeof Module["preInit"] == "function")
|
|
224002
|
+
Module["preInit"] = [Module["preInit"]];
|
|
224003
|
+
while (Module["preInit"].length > 0) {
|
|
224004
|
+
Module["preInit"].shift()();
|
|
224005
|
+
}
|
|
224006
|
+
}
|
|
224007
|
+
}
|
|
224008
|
+
preInit();
|
|
224009
|
+
run2();
|
|
224010
|
+
moduleRtn = readyPromise;
|
|
224011
|
+
return moduleRtn;
|
|
224012
|
+
};
|
|
224013
|
+
})();
|
|
224014
|
+
var creatorNav_default = createCreatorNav;
|
|
224015
|
+
|
|
224016
|
+
// ../creator-nav/js/index.ts
|
|
224017
|
+
var BUILD = {
|
|
224018
|
+
CELL_SIZE: 0,
|
|
224019
|
+
CELL_HEIGHT: 1,
|
|
224020
|
+
AGENT_RADIUS: 2,
|
|
224021
|
+
AGENT_HEIGHT: 3,
|
|
224022
|
+
AGENT_MAX_CLIMB: 4,
|
|
224023
|
+
AGENT_MAX_SLOPE: 5,
|
|
224024
|
+
TILE_SIZE: 6,
|
|
224025
|
+
REGION_MIN_SIZE: 7,
|
|
224026
|
+
REGION_MERGE_SIZE: 8,
|
|
224027
|
+
EDGE_MAX_LEN: 9,
|
|
224028
|
+
EDGE_MAX_ERROR: 10,
|
|
224029
|
+
VERTS_PER_POLY: 11,
|
|
224030
|
+
DETAIL_SAMPLE_DIST: 12,
|
|
224031
|
+
DETAIL_MAX_ERROR: 13,
|
|
224032
|
+
FILTER_LOW_HANGING: 14,
|
|
224033
|
+
FILTER_LEDGES: 15,
|
|
224034
|
+
FILTER_LOW_HEIGHT: 16,
|
|
224035
|
+
COUNT: 17
|
|
224036
|
+
};
|
|
224037
|
+
var BUILD_KEYS = {
|
|
224038
|
+
cellSize: BUILD.CELL_SIZE,
|
|
224039
|
+
cellHeight: BUILD.CELL_HEIGHT,
|
|
224040
|
+
agentRadius: BUILD.AGENT_RADIUS,
|
|
224041
|
+
agentHeight: BUILD.AGENT_HEIGHT,
|
|
224042
|
+
agentMaxClimb: BUILD.AGENT_MAX_CLIMB,
|
|
224043
|
+
agentMaxSlope: BUILD.AGENT_MAX_SLOPE,
|
|
224044
|
+
tileSize: BUILD.TILE_SIZE,
|
|
224045
|
+
regionMinSize: BUILD.REGION_MIN_SIZE,
|
|
224046
|
+
regionMergeSize: BUILD.REGION_MERGE_SIZE,
|
|
224047
|
+
edgeMaxLen: BUILD.EDGE_MAX_LEN,
|
|
224048
|
+
edgeMaxError: BUILD.EDGE_MAX_ERROR,
|
|
224049
|
+
vertsPerPoly: BUILD.VERTS_PER_POLY,
|
|
224050
|
+
detailSampleDist: BUILD.DETAIL_SAMPLE_DIST,
|
|
224051
|
+
detailMaxError: BUILD.DETAIL_MAX_ERROR
|
|
224052
|
+
};
|
|
224053
|
+
var modulePromise = null;
|
|
224054
|
+
var loadCreatorNav = () => modulePromise ??= creatorNav_default();
|
|
224055
|
+
var withF32 = (mod, values, fn) => {
|
|
224056
|
+
const ptr = mod._malloc(Math.max(4, values.length * 4));
|
|
224057
|
+
mod.HEAPF32.set(values, ptr >> 2);
|
|
224058
|
+
try {
|
|
224059
|
+
return fn(ptr);
|
|
224060
|
+
} finally {
|
|
224061
|
+
mod._free(ptr);
|
|
224062
|
+
}
|
|
224063
|
+
};
|
|
224064
|
+
var withString = (mod, s2, fn) => {
|
|
224065
|
+
if (s2 === null)
|
|
224066
|
+
return fn(0);
|
|
224067
|
+
const n2 = mod.lengthBytesUTF8(s2) + 1;
|
|
224068
|
+
const ptr = mod._malloc(n2);
|
|
224069
|
+
mod.stringToUTF8(s2, ptr, n2);
|
|
224070
|
+
try {
|
|
224071
|
+
return fn(ptr);
|
|
224072
|
+
} finally {
|
|
224073
|
+
mod._free(ptr);
|
|
224074
|
+
}
|
|
224075
|
+
};
|
|
224076
|
+
var readNgeo = (bytes) => {
|
|
224077
|
+
const dv2 = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
224078
|
+
if (bytes.byteLength < 16 || dv2.getUint32(0, true) !== 1329940302)
|
|
224079
|
+
throw new Error("not an NGEO geometry dump");
|
|
224080
|
+
const version = dv2.getUint32(4, true);
|
|
224081
|
+
if (version !== 1)
|
|
224082
|
+
throw new Error(`NGEO version ${version}, expected 1`);
|
|
224083
|
+
const triangleCount = dv2.getUint32(8, true);
|
|
224084
|
+
const bodyCount = dv2.getUint32(12, true);
|
|
224085
|
+
const triangles = new Float32Array(triangleCount * 9);
|
|
224086
|
+
const areas = new Uint8Array(triangleCount);
|
|
224087
|
+
let at = 16;
|
|
224088
|
+
for (let i2 = 0;i2 < triangleCount; i2++) {
|
|
224089
|
+
for (let k = 0;k < 9; k++) {
|
|
224090
|
+
triangles[i2 * 9 + k] = dv2.getFloat32(at, true);
|
|
224091
|
+
at += 4;
|
|
224092
|
+
}
|
|
224093
|
+
areas[i2] = dv2.getUint32(at, true) & 255;
|
|
224094
|
+
at += 4;
|
|
224095
|
+
}
|
|
224096
|
+
return { triangles, areas, triangleCount, bodyCount };
|
|
224097
|
+
};
|
|
224098
|
+
|
|
224099
|
+
class NavBuilder {
|
|
224100
|
+
mod;
|
|
224101
|
+
handle;
|
|
224102
|
+
constructor(mod, params = {}) {
|
|
224103
|
+
this.mod = mod;
|
|
224104
|
+
const p2 = new Float32Array(BUILD.COUNT);
|
|
224105
|
+
withF32(mod, p2, (ptr) => {
|
|
224106
|
+
mod._cnavBuildDefaults(ptr);
|
|
224107
|
+
p2.set(mod.HEAPF32.subarray(ptr >> 2, (ptr >> 2) + BUILD.COUNT));
|
|
224108
|
+
});
|
|
224109
|
+
for (const [key, value] of Object.entries(params)) {
|
|
224110
|
+
if (value === undefined)
|
|
224111
|
+
continue;
|
|
224112
|
+
const idx = BUILD_KEYS[key];
|
|
224113
|
+
if (idx === undefined)
|
|
224114
|
+
throw new Error(`NavBuilder: unknown build parameter "${key}"`);
|
|
224115
|
+
p2[idx] = value;
|
|
224116
|
+
}
|
|
224117
|
+
this.handle = withF32(mod, p2, (ptr) => mod._cnavBuildCreate(ptr));
|
|
224118
|
+
}
|
|
224119
|
+
addTriangles(xyz, indices, area = 0, areas) {
|
|
224120
|
+
const mod = this.mod;
|
|
224121
|
+
const vp = mod._malloc(xyz.byteLength);
|
|
224122
|
+
mod.HEAPF32.set(xyz, vp >> 2);
|
|
224123
|
+
const ip = mod._malloc(indices.byteLength);
|
|
224124
|
+
mod.HEAP32.set(indices, ip >> 2);
|
|
224125
|
+
let ap = 0;
|
|
224126
|
+
if (areas) {
|
|
224127
|
+
ap = mod._malloc(areas.byteLength);
|
|
224128
|
+
mod.HEAPU8.set(areas, ap);
|
|
224129
|
+
}
|
|
224130
|
+
const ok = mod._cnavBuildAddTriangles(this.handle, vp, xyz.length / 3, ip, indices.length / 3, area, ap);
|
|
224131
|
+
mod._free(vp);
|
|
224132
|
+
mod._free(ip);
|
|
224133
|
+
if (ap)
|
|
224134
|
+
mod._free(ap);
|
|
224135
|
+
if (!ok)
|
|
224136
|
+
throw new Error(`NavBuilder.addTriangles: ${this.lastError()}`);
|
|
224137
|
+
}
|
|
224138
|
+
addSoup(triangles, areas) {
|
|
224139
|
+
const n2 = triangles.length / 3;
|
|
224140
|
+
const indices = new Int32Array(n2);
|
|
224141
|
+
for (let i2 = 0;i2 < n2; i2++)
|
|
224142
|
+
indices[i2] = i2;
|
|
224143
|
+
this.addTriangles(triangles, indices, 0, areas);
|
|
224144
|
+
}
|
|
224145
|
+
addVolume(hullXZ, minY, maxY, area) {
|
|
224146
|
+
const ok = withF32(this.mod, hullXZ, (ptr) => this.mod._cnavBuildAddVolume(this.handle, ptr, hullXZ.length / 2, minY, maxY, area));
|
|
224147
|
+
if (!ok)
|
|
224148
|
+
throw new Error(`NavBuilder.addVolume: ${this.lastError()}`);
|
|
224149
|
+
}
|
|
224150
|
+
addLink(a2, b, radius, bidirectional = true, area = 0, userId = 0) {
|
|
224151
|
+
const ok = withF32(this.mod, [a2[0], a2[1], a2[2], b[0], b[1], b[2]], (ptr) => this.mod._cnavBuildAddLink(this.handle, ptr, ptr + 12, radius, bidirectional ? 1 : 0, area, userId));
|
|
224152
|
+
if (!ok)
|
|
224153
|
+
throw new Error(`NavBuilder.addLink: ${this.lastError()}`);
|
|
224154
|
+
}
|
|
224155
|
+
run(meta = null, onProgress) {
|
|
224156
|
+
const mod = this.mod;
|
|
224157
|
+
const t0 = performance.now();
|
|
224158
|
+
let cb = 0;
|
|
224159
|
+
if (onProgress) {
|
|
224160
|
+
cb = mod.addFunction((tile, count, msg) => {
|
|
224161
|
+
onProgress(tile, count, msg ? mod.UTF8ToString(msg) : null);
|
|
224162
|
+
}, "viiii");
|
|
224163
|
+
}
|
|
224164
|
+
const ok = withString(mod, meta ? JSON.stringify(meta) : null, (mp) => mod._cnavBuildRun(this.handle, mp, cb, 0));
|
|
224165
|
+
if (cb)
|
|
224166
|
+
mod.removeFunction(cb);
|
|
224167
|
+
if (!ok)
|
|
224168
|
+
throw new Error(`navmesh build failed: ${this.lastError()}`);
|
|
224169
|
+
const sizePtr = mod._malloc(4);
|
|
224170
|
+
const dataPtr = mod._cnavBuildData(this.handle, sizePtr);
|
|
224171
|
+
const size = mod.HEAPU32[sizePtr >> 2];
|
|
224172
|
+
mod._free(sizePtr);
|
|
224173
|
+
const data = new Uint8Array(mod.HEAPU8.subarray(dataPtr, dataPtr + size));
|
|
224174
|
+
const bp = mod._malloc(24);
|
|
224175
|
+
mod._cnavBuildBounds(this.handle, bp, bp + 12);
|
|
224176
|
+
const b = mod.HEAPF32.subarray(bp >> 2, (bp >> 2) + 6);
|
|
224177
|
+
const bounds = { min: [b[0], b[1], b[2]], max: [b[3], b[4], b[5]] };
|
|
224178
|
+
mod._free(bp);
|
|
224179
|
+
return { data, tiles: mod._cnavBuildTileCount(this.handle), polys: mod._cnavBuildPolyCount(this.handle), bounds, time: (performance.now() - t0) / 1000 };
|
|
224180
|
+
}
|
|
224181
|
+
lastError() {
|
|
224182
|
+
return this.mod.UTF8ToString(this.mod._cnavLastError());
|
|
224183
|
+
}
|
|
224184
|
+
destroy() {
|
|
224185
|
+
if (this.handle) {
|
|
224186
|
+
this.mod._cnavBuildDestroy(this.handle);
|
|
224187
|
+
this.handle = 0;
|
|
224188
|
+
}
|
|
224189
|
+
}
|
|
224190
|
+
}
|
|
224191
|
+
var navMeshTriangles = (mod, data) => {
|
|
224192
|
+
const ptr = mod._malloc(data.byteLength);
|
|
224193
|
+
mod.HEAPU8.set(data, ptr);
|
|
224194
|
+
const mesh = mod._cnavMeshLoad(ptr, data.byteLength);
|
|
224195
|
+
mod._free(ptr);
|
|
224196
|
+
if (!mesh)
|
|
224197
|
+
throw new Error(`navmesh load failed: ${mod.UTF8ToString(mod._cnavLastError())}`);
|
|
224198
|
+
const n2 = mod._cnavDebugTriangles(mesh, 0, 0);
|
|
224199
|
+
const out = new Float32Array(n2 * 3);
|
|
224200
|
+
if (n2 > 0) {
|
|
224201
|
+
const op = mod._malloc(n2 * 12);
|
|
224202
|
+
mod._cnavDebugTriangles(mesh, op, n2);
|
|
224203
|
+
out.set(mod.HEAPF32.subarray(op >> 2, (op >> 2) + n2 * 3));
|
|
224204
|
+
mod._free(op);
|
|
224205
|
+
}
|
|
224206
|
+
mod._cnavMeshDestroy(mesh);
|
|
224207
|
+
return out;
|
|
224208
|
+
};
|
|
224209
|
+
|
|
224210
|
+
// src/commands/navmesh.ts
|
|
224211
|
+
var num2 = (args, key, fallback, min, max) => {
|
|
224212
|
+
const raw = flagStr(args, key);
|
|
224213
|
+
if (raw === undefined)
|
|
224214
|
+
return fallback;
|
|
224215
|
+
const n2 = Number(raw);
|
|
224216
|
+
if (!Number.isFinite(n2) || n2 < min || n2 > max)
|
|
224217
|
+
throw new CliError(`--${key} wants a number in ${min}..${max}, got "${raw}".`);
|
|
224218
|
+
return n2;
|
|
224219
|
+
};
|
|
224220
|
+
var guessName = (root) => {
|
|
224221
|
+
const dirs = [join31(root, "src"), root];
|
|
224222
|
+
for (const dir of dirs) {
|
|
224223
|
+
if (!existsSync29(dir))
|
|
224224
|
+
continue;
|
|
224225
|
+
let entries;
|
|
224226
|
+
try {
|
|
224227
|
+
entries = readdirSync14(dir);
|
|
224228
|
+
} catch {
|
|
224229
|
+
continue;
|
|
224230
|
+
}
|
|
224231
|
+
for (const f3 of entries) {
|
|
224232
|
+
if (!f3.endsWith(".scene.ts"))
|
|
224233
|
+
continue;
|
|
224234
|
+
try {
|
|
224235
|
+
if (/\bnavmesh\s*:/.test(readFileSync26(join31(dir, f3), "utf8")))
|
|
224236
|
+
return f3.slice(0, -".scene.ts".length);
|
|
224237
|
+
} catch {}
|
|
224238
|
+
}
|
|
224239
|
+
}
|
|
224240
|
+
return null;
|
|
224241
|
+
};
|
|
224242
|
+
var placeholderLnav = () => {
|
|
224243
|
+
const json = Buffer.from(JSON.stringify({ version: 1, placeholder: true, stats: { tiles: 0, polys: 0 } }), "utf8");
|
|
224244
|
+
const jsonPadded = Buffer.alloc(Math.ceil(json.length / 4) * 4);
|
|
224245
|
+
json.copy(jsonPadded);
|
|
224246
|
+
const head = Buffer.alloc(12);
|
|
224247
|
+
head.writeUInt32LE(1447120460, 0);
|
|
224248
|
+
head.writeUInt32LE(1, 4);
|
|
224249
|
+
head.writeUInt32LE(json.length, 8);
|
|
224250
|
+
const params = Buffer.alloc(28);
|
|
224251
|
+
params.writeFloatLE(1, 12);
|
|
224252
|
+
params.writeFloatLE(1, 16);
|
|
224253
|
+
params.writeInt32LE(1, 20);
|
|
224254
|
+
params.writeInt32LE(1, 24);
|
|
224255
|
+
const tiles = Buffer.alloc(4);
|
|
224256
|
+
return Buffer.concat([head, jsonPadded, params, tiles]);
|
|
224257
|
+
};
|
|
224258
|
+
var writeObj = (path2, tris) => {
|
|
224259
|
+
const lines = ["# navmesh polygons — lecodes navmesh bake --obj"];
|
|
224260
|
+
for (let i2 = 0;i2 < tris.length; i2 += 3)
|
|
224261
|
+
lines.push(`v ${tris[i2].toFixed(4)} ${tris[i2 + 1].toFixed(4)} ${tris[i2 + 2].toFixed(4)}`);
|
|
224262
|
+
for (let i2 = 0;i2 < tris.length / 3; i2 += 3)
|
|
224263
|
+
lines.push(`f ${i2 + 1} ${i2 + 2} ${i2 + 3}`);
|
|
224264
|
+
writeFileSync23(path2, lines.join(`
|
|
224265
|
+
`) + `
|
|
224266
|
+
`);
|
|
224267
|
+
};
|
|
224268
|
+
var bake2 = async (args) => {
|
|
224269
|
+
let root;
|
|
224270
|
+
try {
|
|
224271
|
+
root = findProjectRoot(process.cwd());
|
|
224272
|
+
} catch {
|
|
224273
|
+
root = process.cwd();
|
|
224274
|
+
}
|
|
224275
|
+
const outDir = resolve14(root, flagStr(args, "out") ?? "assets/nav");
|
|
224276
|
+
const entryFlag = flagStr(args, "entry");
|
|
224277
|
+
const entryFile = entryFlag ?? "main.ts";
|
|
224278
|
+
if (!existsSync29(resolve14(root, entryFile))) {
|
|
224279
|
+
throw new CliError(`No ${entryFile} in ${root} — pass --entry <file> (the file that builds the level: a scene file with env.navmesh, or code calling NavMesh.load).`);
|
|
224280
|
+
}
|
|
224281
|
+
const name = flagStr(args, "name") ?? guessName(root) ?? "scene";
|
|
224282
|
+
const frames = num2(args, "frames", 900, 30, 1e5);
|
|
224283
|
+
const win = readAppConfigAt(root)?.desktop?.window;
|
|
224284
|
+
const width = Number(flagStr(args, "width")) || win?.width || 1280;
|
|
224285
|
+
const height = Number(flagStr(args, "height")) || win?.height || 720;
|
|
224286
|
+
const logs = flagBool(args, "logs");
|
|
224287
|
+
const keepGeometry = flagBool(args, "keep-geometry");
|
|
224288
|
+
const obj = flagBool(args, "obj");
|
|
224289
|
+
mkdirSync22(outDir, { recursive: true });
|
|
224290
|
+
const navmeshPath = join31(outDir, `${name}.navmesh`);
|
|
224291
|
+
if (!existsSync29(navmeshPath))
|
|
224292
|
+
writeFileSync23(navmeshPath, placeholderLnav());
|
|
224293
|
+
const importPath = "./" + entryFile.replace(/\\/g, "/").replace(/\.tsx?$/, "");
|
|
224294
|
+
const entryPath = "/.navmesh-entry.ts";
|
|
224295
|
+
const cfg = { outDir: outDir.replace(/\\/g, "/"), name };
|
|
224296
|
+
const entryText = `globalThis.__lecodesNavmesh = ${JSON.stringify(cfg)}
|
|
224297
|
+
import ${JSON.stringify(importPath)}
|
|
224298
|
+
`;
|
|
224299
|
+
const desktopRenderer = resolveDesktopRenderer(root, args);
|
|
224300
|
+
const { js, resources } = await buildBundle(args, undefined, {
|
|
224301
|
+
localAssets: true,
|
|
224302
|
+
desktopRenderer,
|
|
224303
|
+
extraEntries: [{ path: entryPath, type: "text", text: entryText }],
|
|
224304
|
+
entryOverride: entryPath
|
|
224305
|
+
});
|
|
224306
|
+
const scratch = mkdtempSync5(join31(tmpdir5(), "lecodes-navmesh-"));
|
|
224307
|
+
const outPng = join31(scratch, "frame.png");
|
|
224308
|
+
note(`Dumping the level's static collision geometry through the desktop host → ${relative5(root, outDir) || "."}/${name}.navgeo…`);
|
|
224309
|
+
let output = "";
|
|
224310
|
+
try {
|
|
224311
|
+
const timeoutMs = Number(flagStr(args, "timeout")) || 600000;
|
|
224312
|
+
const res = await runDesktopRender(js, resources, {
|
|
224313
|
+
renderer: desktopRenderer,
|
|
224314
|
+
width,
|
|
224315
|
+
height,
|
|
224316
|
+
frames,
|
|
224317
|
+
outPng,
|
|
224318
|
+
logs,
|
|
224319
|
+
timeoutMs,
|
|
224320
|
+
stopOnLine: (chunk) => chunk.includes("[navmesh] done") || chunk.includes("[navmesh] error")
|
|
224321
|
+
});
|
|
224322
|
+
output = res.output;
|
|
224323
|
+
} catch (e2) {
|
|
224324
|
+
const msg = e2 instanceof Error ? e2.message : String(e2);
|
|
224325
|
+
if (!/\[navmesh\] done/.test(msg))
|
|
224326
|
+
throw e2;
|
|
224327
|
+
output = msg;
|
|
224328
|
+
} finally {
|
|
224329
|
+
rmSync10(scratch, { recursive: true, force: true });
|
|
224330
|
+
}
|
|
224331
|
+
const lines = output.split(/\r?\n/).filter((l2) => l2.includes("[navmesh]")).map((l2) => l2.slice(l2.indexOf("[navmesh]")));
|
|
224332
|
+
let config = null;
|
|
224333
|
+
let triangles = 0;
|
|
224334
|
+
for (const l2 of lines) {
|
|
224335
|
+
const text = l2.slice("[navmesh]".length).trim();
|
|
224336
|
+
if (text === "done")
|
|
224337
|
+
continue;
|
|
224338
|
+
if (text.startsWith("config ")) {
|
|
224339
|
+
try {
|
|
224340
|
+
config = JSON.parse(text.slice(7));
|
|
224341
|
+
} catch {}
|
|
224342
|
+
continue;
|
|
224343
|
+
}
|
|
224344
|
+
const geo2 = /^geometry (\d+) triangles/.exec(text);
|
|
224345
|
+
if (geo2)
|
|
224346
|
+
triangles = Number(geo2[1]);
|
|
224347
|
+
logErr(text.startsWith("error") ? c.red(`✗ ${text}`) : c.dim(` ${text}`));
|
|
224348
|
+
}
|
|
224349
|
+
if (!/\[navmesh\] done/.test(output)) {
|
|
224350
|
+
if (lines.some((l2) => /cannot dump collision geometry/.test(l2))) {
|
|
224351
|
+
throw new CliError("This desktop host has no collision-geometry dump. Build packages/desktop and point LECODES_DESKTOP_EXE at build/lecodes-desktop.exe, or update: lecodes desktop update.");
|
|
224352
|
+
}
|
|
224353
|
+
if (lines.some((l2) => /error/.test(l2)))
|
|
224354
|
+
throw new CliError("The bake failed — see the lines above.");
|
|
224355
|
+
warnErr("The host ran to its frame cap without dumping geometry. Make sure the level declares `env.navmesh` (a scene file) or calls NavMesh.load(...) after its static bodies exist, and skips menus when NavMesh.baking is true. More load headroom: --frames <n>. Host output: --logs.");
|
|
224356
|
+
throw new CliError("Nothing was baked.");
|
|
224357
|
+
}
|
|
224358
|
+
if (!config)
|
|
224359
|
+
throw new CliError("The host reported a dump but no `[navmesh] config` line — SDK/host mismatch?");
|
|
224360
|
+
const geoPath = join31(outDir, `${name}.navgeo`);
|
|
224361
|
+
if (!existsSync29(geoPath))
|
|
224362
|
+
throw new CliError(`The host reported a dump but ${geoPath} is missing.`);
|
|
224363
|
+
const geo = readNgeo(new Uint8Array(readFileSync26(geoPath)));
|
|
224364
|
+
const params = {
|
|
224365
|
+
agentRadius: num2(args, "radius", config.agent.radius, 0.05, 10),
|
|
224366
|
+
agentHeight: num2(args, "height", config.agent.height, 0.1, 20),
|
|
224367
|
+
agentMaxClimb: num2(args, "climb", config.agent.climb, 0, 10),
|
|
224368
|
+
agentMaxSlope: num2(args, "slope", config.agent.slope, 0, 89),
|
|
224369
|
+
cellSize: num2(args, "cell", 0.25, 0.01, 5),
|
|
224370
|
+
cellHeight: num2(args, "cell-height", 0.1, 0.01, 5),
|
|
224371
|
+
tileSize: num2(args, "tile", 48, 0, 1024),
|
|
224372
|
+
regionMinSize: num2(args, "region-min", 8, 0, 1000),
|
|
224373
|
+
regionMergeSize: num2(args, "region-merge", 20, 0, 1000),
|
|
224374
|
+
edgeMaxLen: num2(args, "edge-max", 12, 0, 1000),
|
|
224375
|
+
edgeMaxError: num2(args, "edge-error", 1.3, 0.1, 10),
|
|
224376
|
+
detailSampleDist: num2(args, "detail", 6, 0, 100),
|
|
224377
|
+
detailMaxError: num2(args, "detail-error", 1, 0, 100)
|
|
224378
|
+
};
|
|
224379
|
+
note(`Building the navmesh: ${geo.triangleCount} triangles from ${geo.bodyCount} static bodies, agent r ${params.agentRadius} / h ${params.agentHeight} / climb ${params.agentMaxClimb} / slope ${params.agentMaxSlope}°, cell ${params.cellSize} m…`);
|
|
224380
|
+
const mod = await loadCreatorNav();
|
|
224381
|
+
const builder = new NavBuilder(mod, params);
|
|
224382
|
+
let result;
|
|
224383
|
+
try {
|
|
224384
|
+
builder.addSoup(geo.triangles, geo.areas);
|
|
224385
|
+
const meta = {
|
|
224386
|
+
scene: name,
|
|
224387
|
+
areas: config.areas,
|
|
224388
|
+
costs: config.costs,
|
|
224389
|
+
bakedAt: new Date().toISOString(),
|
|
224390
|
+
params,
|
|
224391
|
+
triangles: geo.triangleCount,
|
|
224392
|
+
bodies: geo.bodyCount
|
|
224393
|
+
};
|
|
224394
|
+
let lastTile = -1;
|
|
224395
|
+
result = builder.run(meta, (tile, count, message) => {
|
|
224396
|
+
if (message)
|
|
224397
|
+
logErr(c.dim(` recast: ${message}`));
|
|
224398
|
+
else if (count > 8 && tile !== lastTile && (tile + 1) % Math.max(1, Math.floor(count / 8)) === 0) {
|
|
224399
|
+
lastTile = tile;
|
|
224400
|
+
logErr(c.dim(` tile ${tile + 1}/${count}`));
|
|
224401
|
+
}
|
|
224402
|
+
});
|
|
224403
|
+
} finally {
|
|
224404
|
+
builder.destroy();
|
|
224405
|
+
}
|
|
224406
|
+
if (result.polys === 0) {
|
|
224407
|
+
throw new CliError("The build produced no polygons — nothing walkable for this agent. Check the cell size against the level's scale, the slope, and that the floor is a STATIC body (Shape + Physics { motion: 'static' }).");
|
|
224408
|
+
}
|
|
224409
|
+
writeFileSync23(navmeshPath, result.data);
|
|
224410
|
+
if (obj) {
|
|
224411
|
+
const objPath = join31(outDir, `${name}.navmesh.obj`);
|
|
224412
|
+
writeObj(objPath, navMeshTriangles(mod, result.data));
|
|
224413
|
+
logErr(c.dim(` wrote ${relative5(root, objPath)} (the polygon mesh, for inspection)`));
|
|
224414
|
+
}
|
|
224415
|
+
if (!keepGeometry)
|
|
224416
|
+
unlinkSync2(geoPath);
|
|
224417
|
+
const kb = Math.round(statSync11(navmeshPath).size / 1024);
|
|
224418
|
+
const b = result.bounds;
|
|
224419
|
+
logErr(c.dim(` ${result.tiles} tiles, ${result.polys} polygons, ${(b.max[0] - b.min[0]).toFixed(0)} × ${(b.max[2] - b.min[2]).toFixed(0)} m, ${result.time.toFixed(1)} s`));
|
|
224420
|
+
logErr(c.green(`✓ baked → ${relative5(root, navmeshPath).replace(/\\/g, "/")} (${kb} KB)`));
|
|
224421
|
+
if (!config.data) {
|
|
224422
|
+
logErr(c.dim(` load it with env.navmesh: { data: asset('<rel>/${basename16(navmeshPath)}') } in the scene file, or NavMesh.load(scene, { data: asset(...) })`));
|
|
224423
|
+
}
|
|
224424
|
+
};
|
|
224425
|
+
var navmesh = async (args) => {
|
|
224426
|
+
const sub = args._[0];
|
|
224427
|
+
if (sub === "bake")
|
|
224428
|
+
return bake2({ ...args, _: args._.slice(1) });
|
|
224429
|
+
throw new CliError("Usage: lecodes navmesh bake [--out assets/nav] [--name <scene>] [--entry main.ts] [--radius 0.4] [--height 1.8] [--climb 0.4] [--slope 50] [--cell 0.25] [--cell-height 0.1] [--tile 48] [--obj] [--keep-geometry] [--frames 900] [--logs]");
|
|
223239
224430
|
};
|
|
223240
224431
|
|
|
223241
224432
|
// src/commands/login.ts
|
|
@@ -223255,7 +224446,7 @@ var login = async (args) => {
|
|
|
223255
224446
|
|
|
223256
224447
|
// src/commands/shaders.ts
|
|
223257
224448
|
init_manifest();
|
|
223258
|
-
import { readFileSync as
|
|
224449
|
+
import { readFileSync as readFileSync27 } from "node:fs";
|
|
223259
224450
|
init_util();
|
|
223260
224451
|
init_compile();
|
|
223261
224452
|
var collectShaders = () => {
|
|
@@ -223287,7 +224478,7 @@ var status2 = async () => {
|
|
|
223287
224478
|
if (matcId === null)
|
|
223288
224479
|
state = c.dim("unknown (matc not downloaded)");
|
|
223289
224480
|
else {
|
|
223290
|
-
const text =
|
|
224481
|
+
const text = readFileSync27(shader.absPath, "utf8");
|
|
223291
224482
|
if (shaderIsCompiled(root, text, matcId))
|
|
223292
224483
|
state = "compiled";
|
|
223293
224484
|
else {
|
|
@@ -223296,7 +224487,7 @@ var status2 = async () => {
|
|
|
223296
224487
|
}
|
|
223297
224488
|
}
|
|
223298
224489
|
log(` ${shader.path.padEnd(width)} ${state}`);
|
|
223299
|
-
const schema = parseShaderSchema(
|
|
224490
|
+
const schema = parseShaderSchema(readFileSync27(shader.absPath, "utf8"));
|
|
223300
224491
|
for (const p2 of schema.params) {
|
|
223301
224492
|
const range = p2.min !== undefined ? ` [${p2.min}..${p2.max}]` : "";
|
|
223302
224493
|
const def = p2.default !== null && p2.default !== undefined ? ` = ${JSON.stringify(p2.default)}` : "";
|
|
@@ -223339,7 +224530,7 @@ var compile3 = async (args) => {
|
|
|
223339
224530
|
}
|
|
223340
224531
|
const matcExe = await resolveMatcExe();
|
|
223341
224532
|
const matcId = matcIdentity(matcExe);
|
|
223342
|
-
const wasCompiled = new Map(shaders.map((s2) => [s2.path, shaderIsCompiled(root,
|
|
224533
|
+
const wasCompiled = new Map(shaders.map((s2) => [s2.path, shaderIsCompiled(root, readFileSync27(s2.absPath, "utf8"), matcId)]));
|
|
223343
224534
|
const errors2 = [];
|
|
223344
224535
|
for (const shader of shaders) {
|
|
223345
224536
|
try {
|
|
@@ -223373,8 +224564,8 @@ var shaders = async (args) => {
|
|
|
223373
224564
|
};
|
|
223374
224565
|
|
|
223375
224566
|
// src/commands/render.ts
|
|
223376
|
-
import { mkdirSync as
|
|
223377
|
-
import { dirname as dirname15, resolve as
|
|
224567
|
+
import { mkdirSync as mkdirSync23, readFileSync as readFileSync29, writeFileSync as writeFileSync24 } from "node:fs";
|
|
224568
|
+
import { dirname as dirname15, resolve as resolve17 } from "node:path";
|
|
223378
224569
|
|
|
223379
224570
|
// src/compile/headlessBundle.ts
|
|
223380
224571
|
init_api();
|
|
@@ -223458,23 +224649,23 @@ var compileHeadlessBundle = async (args, opts = {}) => {
|
|
|
223458
224649
|
// src/compile/screenEntry.ts
|
|
223459
224650
|
init_designMeta();
|
|
223460
224651
|
init_util();
|
|
223461
|
-
import { existsSync as
|
|
223462
|
-
import { isAbsolute, join as
|
|
224652
|
+
import { existsSync as existsSync30, readFileSync as readFileSync28, statSync as statSync12 } from "node:fs";
|
|
224653
|
+
import { isAbsolute, join as join32, relative as relative6, resolve as resolve15 } from "node:path";
|
|
223463
224654
|
var SCREEN_EXTS = [".ts", ".tsx", ".js", ".jsx", ".mjs"];
|
|
223464
224655
|
var SCREEN_ENTRY_PATH = "/.screen-entry.ts";
|
|
223465
224656
|
var DEFAULT_DESIGN_DIR = "design";
|
|
223466
224657
|
var screenArg = (args) => args._[0];
|
|
223467
224658
|
var hasSeparator = (file) => file.includes("/") || file.includes("\\");
|
|
223468
224659
|
var findScreenFile = (root, file, dirFlag) => {
|
|
223469
|
-
const candidates = [
|
|
224660
|
+
const candidates = [resolve15(process.cwd(), file)];
|
|
223470
224661
|
if (!hasSeparator(file)) {
|
|
223471
|
-
candidates.push(
|
|
224662
|
+
candidates.push(join32(root, (dirFlag ?? DEFAULT_DESIGN_DIR).replace(/[/\\]+$/, ""), "screens", file));
|
|
223472
224663
|
}
|
|
223473
224664
|
for (const base of candidates) {
|
|
223474
|
-
if (
|
|
224665
|
+
if (existsSync30(base) && statSync12(base).isFile())
|
|
223475
224666
|
return base;
|
|
223476
224667
|
for (const ext2 of SCREEN_EXTS)
|
|
223477
|
-
if (
|
|
224668
|
+
if (existsSync30(base + ext2))
|
|
223478
224669
|
return base + ext2;
|
|
223479
224670
|
}
|
|
223480
224671
|
throw new CliError(`No screen file at "${file}".` + (hasSeparator(file) ? "" : ` Pass a path, or a screen id that exists in ${dirFlag ?? DEFAULT_DESIGN_DIR}/screens/.`));
|
|
@@ -223483,17 +224674,17 @@ var designDirOf = (root, key) => {
|
|
|
223483
224674
|
const m = /^\/(.*)screens\/([^/]+)\.[^./]+$/.exec(key);
|
|
223484
224675
|
if (!m)
|
|
223485
224676
|
return null;
|
|
223486
|
-
const dir =
|
|
223487
|
-
return
|
|
224677
|
+
const dir = join32(root, m[1]);
|
|
224678
|
+
return existsSync30(join32(dir, "meta.json")) ? { dir, id: m[2] } : null;
|
|
223488
224679
|
};
|
|
223489
224680
|
var resolveScreenTarget = (root, file, opts = {}) => {
|
|
223490
224681
|
const abs = findScreenFile(root, file, opts.dir);
|
|
223491
|
-
const rel =
|
|
224682
|
+
const rel = relative6(root, abs);
|
|
223492
224683
|
if (rel.startsWith("..") || isAbsolute(rel)) {
|
|
223493
224684
|
throw new CliError(`"${file}" is outside the project (${root}) — a screen renders as part of its project, so its ` + `imports and asset() files resolve from the same tree.`);
|
|
223494
224685
|
}
|
|
223495
224686
|
const key = toKey(rel);
|
|
223496
|
-
if (!/^\s*export\s+default\b/m.test(
|
|
224687
|
+
if (!/^\s*export\s+default\b/m.test(readFileSync28(abs, "utf8"))) {
|
|
223497
224688
|
throw new CliError(`${key.slice(1)} has no default export. A screen file ends with ` + `\`export default UIScreen([...])\` — or \`export default (state) => UIScreen([...])\` for screen states.`);
|
|
223498
224689
|
}
|
|
223499
224690
|
const invoke = opts.state !== undefined ? `screen(${JSON.stringify(opts.state)})` : "screen()";
|
|
@@ -223532,7 +224723,7 @@ init_manifest();
|
|
|
223532
224723
|
|
|
223533
224724
|
// src/desktopScript.ts
|
|
223534
224725
|
init_util();
|
|
223535
|
-
import { resolve as
|
|
224726
|
+
import { resolve as resolve16 } from "node:path";
|
|
223536
224727
|
var isPoint = (v) => typeof v === "object" && v !== null && typeof v.x === "number" && typeof v.y === "number";
|
|
223537
224728
|
var FRAME_MS = 16;
|
|
223538
224729
|
var ACTIONS = ["tap", "type", "fill", "scroll", "wait", "frames", "drag", "hold", "key", "keyDown", "keyUp", "look", "mouseTo", "wheel", "stick", "gamepad", "camera", "view"];
|
|
@@ -223560,7 +224751,7 @@ var translateScenario = (rawSteps, opts) => {
|
|
|
223560
224751
|
}
|
|
223561
224752
|
throw new CliError(`${at}: "${key}" must be { "x", "y" }.`);
|
|
223562
224753
|
};
|
|
223563
|
-
const
|
|
224754
|
+
const num3 = (at, key, v, def) => {
|
|
223564
224755
|
if (v === undefined && def !== undefined)
|
|
223565
224756
|
return def;
|
|
223566
224757
|
if (typeof v !== "number")
|
|
@@ -223587,7 +224778,7 @@ var translateScenario = (rawSteps, opts) => {
|
|
|
223587
224778
|
}
|
|
223588
224779
|
if (action === "view") {
|
|
223589
224780
|
const v = s2.view;
|
|
223590
|
-
const fov = s2.fov !== undefined ?
|
|
224781
|
+
const fov = s2.fov !== undefined ? num3(at, "fov", s2.fov) : undefined;
|
|
223591
224782
|
if (v === "off") {
|
|
223592
224783
|
plan.lines.push(emit("view off"));
|
|
223593
224784
|
inspecting = false;
|
|
@@ -223607,7 +224798,7 @@ var translateScenario = (rawSteps, opts) => {
|
|
|
223607
224798
|
parts.push("camera off");
|
|
223608
224799
|
} else if (typeof cam === "object" && cam !== null && isVec3(cam.at) && isVec3(cam.lookAt)) {
|
|
223609
224800
|
const { at: eye, lookAt, fov } = cam;
|
|
223610
|
-
const fovN = fov !== undefined ?
|
|
224801
|
+
const fovN = fov !== undefined ? num3(at, "camera.fov", fov) : undefined;
|
|
223611
224802
|
plan.lines.push(emit(`camera ${eye.join(" ")} ${lookAt.join(" ")}${fovN !== undefined ? ` ${fovN}` : ""}`));
|
|
223612
224803
|
inspecting = true;
|
|
223613
224804
|
parts.push(`camera at (${eye.join(",")}) → (${lookAt.join(",")})`);
|
|
@@ -223624,20 +224815,20 @@ var translateScenario = (rawSteps, opts) => {
|
|
|
223624
224815
|
parts.push(`tap ${pt(p2)}`);
|
|
223625
224816
|
} else if (action === "drag") {
|
|
223626
224817
|
const a2 = coord(at, "drag", s2.drag), b = coord(at, "to", s2.to);
|
|
223627
|
-
const ms =
|
|
224818
|
+
const ms = num3(at, "ms", s2.ms, 300);
|
|
223628
224819
|
plan.lines.push(emit(`drag ${a2.x} ${a2.y} ${b.x} ${b.y} ${Math.round(ms)}`));
|
|
223629
224820
|
budgetMs += ms + 4 * FRAME_MS;
|
|
223630
224821
|
parts.push(`drag ${pt(a2)} → ${pt(b)} over ${ms}ms`);
|
|
223631
224822
|
} else if (action === "hold") {
|
|
223632
224823
|
const p2 = coord(at, "hold", s2.hold);
|
|
223633
|
-
const ms =
|
|
224824
|
+
const ms = num3(at, "ms", s2.ms);
|
|
223634
224825
|
plan.lines.push(emit(`hold ${p2.x} ${p2.y} ${Math.round(ms)}`));
|
|
223635
224826
|
budgetMs += ms + 4 * FRAME_MS;
|
|
223636
224827
|
parts.push(`hold ${pt(p2)} ${ms}ms`);
|
|
223637
224828
|
} else if (action === "key") {
|
|
223638
224829
|
if (typeof s2.key !== "string")
|
|
223639
224830
|
throw new CliError(`${at}: "key" must be a KeyboardEvent.code string.`);
|
|
223640
|
-
const ms =
|
|
224831
|
+
const ms = num3(at, "ms", s2.ms);
|
|
223641
224832
|
plan.lines.push(emit(`key ${s2.key} ${Math.round(ms)}`));
|
|
223642
224833
|
budgetMs += ms + 2 * FRAME_MS;
|
|
223643
224834
|
parts.push(`key ${s2.key} ${ms}ms`);
|
|
@@ -223652,7 +224843,7 @@ var translateScenario = (rawSteps, opts) => {
|
|
|
223652
224843
|
const v = s2.look;
|
|
223653
224844
|
if (!Array.isArray(v) || v.length !== 2 || !v.every((n2) => typeof n2 === "number"))
|
|
223654
224845
|
throw new CliError(`${at}: "look" must be [dx, dy] (logical px of mouse motion).`);
|
|
223655
|
-
const ms =
|
|
224846
|
+
const ms = num3(at, "ms", s2.ms, FRAME_MS);
|
|
223656
224847
|
plan.lines.push(emit(`look ${v[0]} ${v[1]} ${Math.round(ms)}`));
|
|
223657
224848
|
budgetMs += ms + 2 * FRAME_MS;
|
|
223658
224849
|
parts.push(`look ${v[0]},${v[1]} over ${ms}ms`);
|
|
@@ -223698,12 +224889,12 @@ var translateScenario = (rawSteps, opts) => {
|
|
|
223698
224889
|
budgetMs += 2 * FRAME_MS;
|
|
223699
224890
|
parts.push(`gamepad ${s2.gamepad} #${pad}`);
|
|
223700
224891
|
} else if (action === "wait") {
|
|
223701
|
-
const ms =
|
|
224892
|
+
const ms = num3(at, "wait", s2.wait);
|
|
223702
224893
|
plan.lines.push(emit(`wait ${Math.round(ms)}`));
|
|
223703
224894
|
budgetMs += ms + FRAME_MS;
|
|
223704
224895
|
parts.push(`wait ${ms}ms`);
|
|
223705
224896
|
} else if (action === "frames") {
|
|
223706
|
-
const n2 =
|
|
224897
|
+
const n2 = num3(at, "frames", s2.frames);
|
|
223707
224898
|
plan.lines.push(emit(`frames ${Math.round(n2)}`));
|
|
223708
224899
|
budgetMs += n2 * FRAME_MS + FRAME_MS;
|
|
223709
224900
|
parts.push(`advance ${n2} frames`);
|
|
@@ -223733,7 +224924,7 @@ var translateScenario = (rawSteps, opts) => {
|
|
|
223733
224924
|
if (s2.screenshot !== undefined) {
|
|
223734
224925
|
if (typeof s2.screenshot !== "string")
|
|
223735
224926
|
throw new CliError(`${at}: "screenshot" must be a path.`);
|
|
223736
|
-
plan.screenshot =
|
|
224927
|
+
plan.screenshot = resolve16(opts.outDir, s2.screenshot);
|
|
223737
224928
|
plan.lines.push(emit(`frames 2`));
|
|
223738
224929
|
plan.lines.push(emit(`shot ${plan.screenshot}`));
|
|
223739
224930
|
budgetMs += 3 * FRAME_MS;
|
|
@@ -223800,7 +224991,7 @@ var evaluateDesktopRun = (plan, output) => {
|
|
|
223800
224991
|
if (!error && st.expectLog !== undefined) {
|
|
223801
224992
|
const seen = consoleLines.slice(0, cutoff);
|
|
223802
224993
|
if (!seen.some((l2) => l2.includes(st.expectLog))) {
|
|
223803
|
-
const tail = seen.filter((l2) => l2.startsWith("[DEBUG]") || l2.startsWith("[INFO]") || l2.startsWith("[WARN]") || l2.startsWith("[ERROR]")).slice(-
|
|
224994
|
+
const tail = seen.filter((l2) => l2.startsWith("[DEBUG]") || l2.startsWith("[INFO]") || l2.startsWith("[WARN]") || l2.startsWith("[ERROR]")).slice(-8);
|
|
223804
224995
|
error = `expected a console line containing "${st.expectLog}" — ${tail.length === 0 ? "the app logged nothing" : `last lines: ${tail.map((l2) => `"${l2}"`).join(", ")}`}`;
|
|
223805
224996
|
}
|
|
223806
224997
|
}
|
|
@@ -223842,9 +225033,9 @@ var requireRenderer = async () => {
|
|
|
223842
225033
|
};
|
|
223843
225034
|
var fileScenarioIO = (dir) => ({
|
|
223844
225035
|
write: (relPath, data) => {
|
|
223845
|
-
const abs =
|
|
223846
|
-
|
|
223847
|
-
|
|
225036
|
+
const abs = resolve17(dir, relPath);
|
|
225037
|
+
mkdirSync23(dirname15(abs), { recursive: true });
|
|
225038
|
+
writeFileSync24(abs, data);
|
|
223848
225039
|
}
|
|
223849
225040
|
});
|
|
223850
225041
|
var resolveFixtures = (value, baseDir) => {
|
|
@@ -223852,9 +225043,9 @@ var resolveFixtures = (value, baseDir) => {
|
|
|
223852
225043
|
return;
|
|
223853
225044
|
let map = value;
|
|
223854
225045
|
if (typeof value === "string") {
|
|
223855
|
-
const abs =
|
|
225046
|
+
const abs = resolve17(baseDir, value);
|
|
223856
225047
|
try {
|
|
223857
|
-
map = JSON.parse(
|
|
225048
|
+
map = JSON.parse(readFileSync29(abs, "utf8"));
|
|
223858
225049
|
} catch (e2) {
|
|
223859
225050
|
throw new CliError(`Can't read fixtures "${value}": ${e2 instanceof Error ? e2.message : String(e2)}`);
|
|
223860
225051
|
}
|
|
@@ -223867,7 +225058,7 @@ var resolveFixtures = (value, baseDir) => {
|
|
|
223867
225058
|
var readScenarioFile = (path2) => {
|
|
223868
225059
|
let raw;
|
|
223869
225060
|
try {
|
|
223870
|
-
raw = JSON.parse(
|
|
225061
|
+
raw = JSON.parse(readFileSync29(resolve17(path2), "utf8"));
|
|
223871
225062
|
} catch (e2) {
|
|
223872
225063
|
throw new CliError(`Can't read scenario "${path2}": ${e2 instanceof Error ? e2.message : String(e2)}`);
|
|
223873
225064
|
}
|
|
@@ -223924,13 +225115,13 @@ var renderDesktop = async (args) => {
|
|
|
223924
225115
|
extraEntries: screen2 ? [screen2.entry] : undefined,
|
|
223925
225116
|
entryOverride: screen2?.entryPath
|
|
223926
225117
|
});
|
|
223927
|
-
|
|
225118
|
+
mkdirSync23(dirname15(resolve17(pngFlag)), { recursive: true });
|
|
223928
225119
|
if (scenario) {
|
|
223929
225120
|
const outDir = flagStr(args, "out-dir") ?? ".";
|
|
223930
225121
|
const plan = translateScenario(scenario.steps, { outDir, headroomFrames: frames });
|
|
223931
225122
|
for (const st of plan.steps)
|
|
223932
225123
|
if (st.screenshot)
|
|
223933
|
-
|
|
225124
|
+
mkdirSync23(dirname15(st.screenshot), { recursive: true });
|
|
223934
225125
|
const timeoutMs2 = Number(flagStr(args, "timeout")) || 60000 + plan.steps.length * 5000;
|
|
223935
225126
|
note(`Running ${plan.steps.length} step${plan.steps.length === 1 ? "" : "s"} (native)…`);
|
|
223936
225127
|
const { output } = await runDesktopRender(js, resources, {
|
|
@@ -224034,7 +225225,7 @@ var render = async (args) => {
|
|
|
224034
225225
|
const settleStr = flagStr(args, "settle") ?? (scenario?.settle !== undefined ? String(scenario.settle) : undefined);
|
|
224035
225226
|
const timeStr = flagStr(args, "time");
|
|
224036
225227
|
const onConsole = flagBool(args, "logs") ? (level, text2) => logErr(`${c.dim(`[${level}]`)} ${text2}`) : undefined;
|
|
224037
|
-
const envelopeFixtures = resolveFixtures(scenario?.fixtures, scriptFlag !== undefined ? dirname15(
|
|
225228
|
+
const envelopeFixtures = resolveFixtures(scenario?.fixtures, scriptFlag !== undefined ? dirname15(resolve17(scriptFlag)) : ".");
|
|
224038
225229
|
const flagFixtures = resolveFixtures(flagStr(args, "fixtures"), ".");
|
|
224039
225230
|
const fixtures = envelopeFixtures || flagFixtures ? { ...envelopeFixtures, ...flagFixtures } : undefined;
|
|
224040
225231
|
if (fixtures) {
|
|
@@ -224073,7 +225264,7 @@ var render = async (args) => {
|
|
|
224073
225264
|
${c.red(st.error ?? "failed")}`);
|
|
224074
225265
|
}
|
|
224075
225266
|
if (!result2.ok && result2.failureArtifacts.length > 0) {
|
|
224076
|
-
logErr(c.dim(` failing frame: ${result2.failureArtifacts.map((p2) =>
|
|
225267
|
+
logErr(c.dim(` failing frame: ${result2.failureArtifacts.map((p2) => resolve17(outDir, p2)).join(", ")}`));
|
|
224077
225268
|
}
|
|
224078
225269
|
logErr(result2.ok ? c.green(`✓ ${result2.steps.length}/${steps.length} steps passed`) : c.red(`✗ failed at step ${result2.steps.length} of ${steps.length}`));
|
|
224079
225270
|
return done((cb) => cb(), result2.ok ? 0 : 1);
|
|
@@ -224081,6 +225272,26 @@ var render = async (args) => {
|
|
|
224081
225272
|
session.dispose();
|
|
224082
225273
|
}
|
|
224083
225274
|
}
|
|
225275
|
+
const mapFlag = flagStr(args, "map") ?? (flagBool(args, "map") ? "map.png" : undefined);
|
|
225276
|
+
if (mapFlag !== undefined) {
|
|
225277
|
+
note(`Rendering map…`);
|
|
225278
|
+
const title = root.split(/[\\/]/).pop();
|
|
225279
|
+
const { png: png2, data, warnings: mapWarnings } = await renderer.renderToMap(js, {
|
|
225280
|
+
...timing,
|
|
225281
|
+
maxPx: Number(flagStr(args, "max-px")) || undefined,
|
|
225282
|
+
title,
|
|
225283
|
+
labelAll: flagBool(args, "label-all")
|
|
225284
|
+
});
|
|
225285
|
+
for (const w of [...warnings, ...mapWarnings])
|
|
225286
|
+
warnErr(w);
|
|
225287
|
+
const pngPath = mapFlag.endsWith(".png") ? mapFlag : mapFlag + ".png";
|
|
225288
|
+
mkdirSync23(dirname15(resolve17(pngPath)), { recursive: true });
|
|
225289
|
+
writeFileSync24(resolve17(pngPath), png2);
|
|
225290
|
+
const jsonPath = pngPath.slice(0, -4) + ".json";
|
|
225291
|
+
writeFileSync24(resolve17(jsonPath), JSON.stringify(data, null, 2));
|
|
225292
|
+
note(`Wrote ${pngPath} + ${jsonPath}`);
|
|
225293
|
+
return done((cb) => cb());
|
|
225294
|
+
}
|
|
224084
225295
|
const pngFlag = flagStr(args, "png") ?? (flagBool(args, "png") ? "screenshot.png" : undefined);
|
|
224085
225296
|
if (pngFlag !== undefined) {
|
|
224086
225297
|
note(screen2 ? `Rendering ${screen2.label} (PNG)…` : "Rendering PNG…");
|
|
@@ -224097,8 +225308,8 @@ var render = async (args) => {
|
|
|
224097
225308
|
if (isNullSink(pngFlag)) {
|
|
224098
225309
|
note(`Discarded PNG (${pngFlag})`);
|
|
224099
225310
|
} else {
|
|
224100
|
-
|
|
224101
|
-
|
|
225311
|
+
mkdirSync23(dirname15(resolve17(pngFlag)), { recursive: true });
|
|
225312
|
+
writeFileSync24(resolve17(pngFlag), png2);
|
|
224102
225313
|
note(`Wrote ${pngFlag} (${png2.length} bytes, ${outW}x${outH}${clip !== undefined ? ", clipped" : ""})`);
|
|
224103
225314
|
}
|
|
224104
225315
|
return done((cb) => cb());
|
|
@@ -224113,7 +225324,7 @@ var render = async (args) => {
|
|
|
224113
225324
|
return done((cb) => cb());
|
|
224114
225325
|
}
|
|
224115
225326
|
if (out) {
|
|
224116
|
-
|
|
225327
|
+
writeFileSync24(resolve17(out), result.text);
|
|
224117
225328
|
note(`Wrote ${out} (${result.text.length} bytes)`);
|
|
224118
225329
|
return done((cb) => cb());
|
|
224119
225330
|
}
|
|
@@ -224128,8 +225339,8 @@ init_api();
|
|
|
224128
225339
|
init_config();
|
|
224129
225340
|
init_manifest();
|
|
224130
225341
|
init_util();
|
|
224131
|
-
import { appendFileSync as appendFileSync2, existsSync as
|
|
224132
|
-
import { join as
|
|
225342
|
+
import { appendFileSync as appendFileSync2, existsSync as existsSync31, readFileSync as readFileSync30, writeFileSync as writeFileSync25 } from "node:fs";
|
|
225343
|
+
import { join as join33 } from "node:path";
|
|
224133
225344
|
var ENV_VAR = "LECODES_PUSH_KEY";
|
|
224134
225345
|
var context = () => {
|
|
224135
225346
|
const root = findProjectRoot(process.cwd());
|
|
@@ -224273,11 +225484,11 @@ var pnKeysList = async (ctx) => {
|
|
|
224273
225484
|
};
|
|
224274
225485
|
var writeEnv = (root, key) => {
|
|
224275
225486
|
const touched = [];
|
|
224276
|
-
const envPath =
|
|
225487
|
+
const envPath = join33(root, ".env");
|
|
224277
225488
|
const line = `${ENV_VAR}=${key}`;
|
|
224278
|
-
const existing =
|
|
225489
|
+
const existing = existsSync31(envPath) ? readFileSync30(envPath, "utf8") : "";
|
|
224279
225490
|
if (new RegExp(`^${ENV_VAR}=`, "m").test(existing)) {
|
|
224280
|
-
|
|
225491
|
+
writeFileSync25(envPath, existing.replace(new RegExp(`^${ENV_VAR}=.*$`, "m"), line));
|
|
224281
225492
|
} else {
|
|
224282
225493
|
const separator = !existing || existing.endsWith(`
|
|
224283
225494
|
`) ? "" : `
|
|
@@ -224286,8 +225497,8 @@ var writeEnv = (root, key) => {
|
|
|
224286
225497
|
`);
|
|
224287
225498
|
}
|
|
224288
225499
|
touched.push(".env");
|
|
224289
|
-
const ignorePath =
|
|
224290
|
-
const ignore =
|
|
225500
|
+
const ignorePath = join33(root, ".gitignore");
|
|
225501
|
+
const ignore = existsSync31(ignorePath) ? readFileSync30(ignorePath, "utf8") : "";
|
|
224291
225502
|
if (!ignore.split(`
|
|
224292
225503
|
`).some((l2) => l2.trim() === ".env")) {
|
|
224293
225504
|
const separator = !ignore || ignore.endsWith(`
|
|
@@ -224386,8 +225597,8 @@ var pn = async (args) => {
|
|
|
224386
225597
|
init_api();
|
|
224387
225598
|
init_config();
|
|
224388
225599
|
init_manifest();
|
|
224389
|
-
import { existsSync as
|
|
224390
|
-
import { dirname as dirname16, join as
|
|
225600
|
+
import { existsSync as existsSync32, mkdirSync as mkdirSync24, rmSync as rmSync11, writeFileSync as writeFileSync26 } from "node:fs";
|
|
225601
|
+
import { dirname as dirname16, join as join34 } from "node:path";
|
|
224391
225602
|
init_types4();
|
|
224392
225603
|
init_localFiles();
|
|
224393
225604
|
init_util();
|
|
@@ -224410,9 +225621,9 @@ var pull = async (args) => {
|
|
|
224410
225621
|
const remotePaths = new Set([...buildPaths(project.assets).entries()].filter(([id]) => project.assets.find((a2) => a2.id === id)?.type !== "folder").map(([, path2]) => path2));
|
|
224411
225622
|
for (const path2 of Object.keys(manifest.files)) {
|
|
224412
225623
|
if (!remotePaths.has(path2)) {
|
|
224413
|
-
const abs =
|
|
224414
|
-
if (
|
|
224415
|
-
|
|
225624
|
+
const abs = join34(root, ...path2.replace(/^\//, "").split("/"));
|
|
225625
|
+
if (existsSync32(abs))
|
|
225626
|
+
rmSync11(abs);
|
|
224416
225627
|
}
|
|
224417
225628
|
}
|
|
224418
225629
|
const files = await materializeAssets(root, project, apiUrl, token, progress);
|
|
@@ -224449,18 +225660,18 @@ var pullPaths = async (root, manifest, project, paths, apiUrl, token) => {
|
|
|
224449
225660
|
const files = { ...manifest.files };
|
|
224450
225661
|
for (const asset of targets) {
|
|
224451
225662
|
const key = pathById.get(asset.id);
|
|
224452
|
-
const abs =
|
|
224453
|
-
|
|
225663
|
+
const abs = join34(root, ...key.replace(/^\//, "").split("/"));
|
|
225664
|
+
mkdirSync24(dirname16(abs), { recursive: true });
|
|
224454
225665
|
let sha;
|
|
224455
225666
|
if (asset.type === "file") {
|
|
224456
225667
|
if (!asset.file?.src)
|
|
224457
225668
|
continue;
|
|
224458
225669
|
const bytes = await downloadBlob(apiUrl, asset.file.src);
|
|
224459
|
-
|
|
225670
|
+
writeFileSync26(abs, bytes);
|
|
224460
225671
|
sha = sha256(bytes);
|
|
224461
225672
|
} else {
|
|
224462
225673
|
const text = asset.text ?? "";
|
|
224463
|
-
|
|
225674
|
+
writeFileSync26(abs, text);
|
|
224464
225675
|
sha = sha256(text);
|
|
224465
225676
|
}
|
|
224466
225677
|
files[key] = { id: asset.id, type: kindOf3(asset.type), sha };
|
|
@@ -224473,8 +225684,8 @@ var pullPaths = async (root, manifest, project, paths, apiUrl, token) => {
|
|
|
224473
225684
|
|
|
224474
225685
|
// src/commands/scene.ts
|
|
224475
225686
|
init_manifest();
|
|
224476
|
-
import { existsSync as
|
|
224477
|
-
import { basename as
|
|
225687
|
+
import { existsSync as existsSync34, readFileSync as readFileSync32, readdirSync as readdirSync15, statSync as statSync13, writeFileSync as writeFileSync28 } from "node:fs";
|
|
225688
|
+
import { basename as basename17, dirname as dirname17, join as join36, resolve as resolve18 } from "node:path";
|
|
224478
225689
|
|
|
224479
225690
|
// src/compile/sceneCompile.ts
|
|
224480
225691
|
init_localFiles();
|
|
@@ -224483,18 +225694,18 @@ init_distRoot();
|
|
|
224483
225694
|
init_util();
|
|
224484
225695
|
init_projectCompile();
|
|
224485
225696
|
import { createHash as createHash8 } from "node:crypto";
|
|
224486
|
-
import { existsSync as
|
|
224487
|
-
import { join as
|
|
225697
|
+
import { existsSync as existsSync33, mkdirSync as mkdirSync25, readFileSync as readFileSync31, writeFileSync as writeFileSync27 } from "node:fs";
|
|
225698
|
+
import { join as join35 } from "node:path";
|
|
224488
225699
|
var TEXT_EXT = /\.(ts|js|json|svg|txt|md)$/i;
|
|
224489
225700
|
var rel = (key) => key.replace(/^\//, "");
|
|
224490
225701
|
var resolveHarness = (loadSceneHarness2) => {
|
|
224491
|
-
const inRepo =
|
|
225702
|
+
const inRepo = join35(distRoot, "..", "projects", "src", "scene-editor");
|
|
224492
225703
|
try {
|
|
224493
|
-
return loadSceneHarness2(
|
|
225704
|
+
return loadSceneHarness2(existsSync33(inRepo) ? inRepo : undefined);
|
|
224494
225705
|
} catch {
|
|
224495
|
-
const vendored =
|
|
224496
|
-
if (
|
|
224497
|
-
return JSON.parse(
|
|
225706
|
+
const vendored = join35(distRoot, "runtime", "scene-harness.json");
|
|
225707
|
+
if (existsSync33(vendored))
|
|
225708
|
+
return JSON.parse(readFileSync31(vendored, "utf8"));
|
|
224498
225709
|
throw new CliError("scene-editor harness sources not found — reinstall the CLI or set LECODES_SCENE_HARNESS_DIR.");
|
|
224499
225710
|
}
|
|
224500
225711
|
};
|
|
@@ -224506,16 +225717,16 @@ var compileSceneEditor = async (opts) => {
|
|
|
224506
225717
|
for (const file of scan2.files) {
|
|
224507
225718
|
const path2 = "./" + rel(file.path);
|
|
224508
225719
|
if (TEXT_EXT.test(path2)) {
|
|
224509
|
-
entries.push({ path: path2, type: "text", text:
|
|
225720
|
+
entries.push({ path: path2, type: "text", text: readFileSync31(file.absPath, "utf8") });
|
|
224510
225721
|
} else if (/\.mat$/i.test(path2)) {
|
|
224511
|
-
entries.push({ path: path2, type: "shader", text:
|
|
225722
|
+
entries.push({ path: path2, type: "shader", text: readFileSync31(file.absPath, "utf8"), absPath: file.absPath });
|
|
224512
225723
|
} else {
|
|
224513
225724
|
entries.push({ path: path2, type: "resource", fileSrc: "/project/" + rel(file.path) });
|
|
224514
225725
|
}
|
|
224515
225726
|
}
|
|
224516
225727
|
const shaderEntries = entries.filter((e2) => e2.type === "shader");
|
|
224517
225728
|
if (shaderEntries.length > 0) {
|
|
224518
|
-
const { warnings } = await applyLocalShaders(shaderEntries, { root, srcPrefix: "/project/.lecodes/shaders", platforms: ["
|
|
225729
|
+
const { warnings } = await applyLocalShaders(shaderEntries, { root, srcPrefix: "/project/.lecodes/shaders", platforms: ["opengl", "webgl-lite"] });
|
|
224519
225730
|
for (const w of warnings)
|
|
224520
225731
|
warnErr(w);
|
|
224521
225732
|
const { buildLiteMaterialArtifact: buildLiteMaterialArtifact2 } = await Promise.resolve().then(() => (init_compile(), exports_compile));
|
|
@@ -224524,12 +225735,12 @@ var compileSceneEditor = async (opts) => {
|
|
|
224524
225735
|
continue;
|
|
224525
225736
|
const hash = createHash8("sha256").update(e2.text ?? "").digest("hex").slice(0, 16);
|
|
224526
225737
|
const dir = shadersCacheDir(root);
|
|
224527
|
-
|
|
225738
|
+
mkdirSync25(dir, { recursive: true });
|
|
224528
225739
|
const liteName = `${hash}_webgl-lite.filamat`;
|
|
224529
|
-
if (!
|
|
224530
|
-
|
|
225740
|
+
if (!existsSync33(join35(dir, liteName)))
|
|
225741
|
+
writeFileSync27(join35(dir, liteName), JSON.stringify(buildLiteMaterialArtifact2(e2.text ?? "")));
|
|
224531
225742
|
const src = `/project/.lecodes/shaders/${hash}_opengl.filamat`;
|
|
224532
|
-
e2.shaders = ["opengl", "webgl
|
|
225743
|
+
e2.shaders = ["opengl", "webgl-lite"].map((platform) => ({ platform, src }));
|
|
224533
225744
|
}
|
|
224534
225745
|
}
|
|
224535
225746
|
const scene = scenePath.startsWith("./") ? scenePath : "./" + rel(scenePath);
|
|
@@ -224561,7 +225772,7 @@ var DEFAULT_PORT3 = 4488;
|
|
|
224561
225772
|
var findAppRoot = (start) => {
|
|
224562
225773
|
let dir = start;
|
|
224563
225774
|
while (true) {
|
|
224564
|
-
if (
|
|
225775
|
+
if (existsSync34(join36(dir, "app.json")))
|
|
224565
225776
|
return dir;
|
|
224566
225777
|
const parent = dirname17(dir);
|
|
224567
225778
|
if (parent === dir)
|
|
@@ -224569,6 +225780,13 @@ var findAppRoot = (start) => {
|
|
|
224569
225780
|
dir = parent;
|
|
224570
225781
|
}
|
|
224571
225782
|
};
|
|
225783
|
+
var projectRootOf = (dir) => {
|
|
225784
|
+
try {
|
|
225785
|
+
return findProjectRoot(dir);
|
|
225786
|
+
} catch {
|
|
225787
|
+
return findAppRoot(dir) ?? dir;
|
|
225788
|
+
}
|
|
225789
|
+
};
|
|
224572
225790
|
var getContext2 = (args) => {
|
|
224573
225791
|
let root;
|
|
224574
225792
|
let manifest;
|
|
@@ -224580,10 +225798,10 @@ var getContext2 = (args) => {
|
|
|
224580
225798
|
manifest = null;
|
|
224581
225799
|
const pathArg = args._[0];
|
|
224582
225800
|
if (pathArg) {
|
|
224583
|
-
const abs =
|
|
224584
|
-
if (
|
|
225801
|
+
const abs = resolve18(process.cwd(), pathArg);
|
|
225802
|
+
if (existsSync34(abs) && statSync13(abs).isDirectory())
|
|
224585
225803
|
root = abs;
|
|
224586
|
-
else if (abs.endsWith(".scene.ts") &&
|
|
225804
|
+
else if (abs.endsWith(".scene.ts") && existsSync34(abs))
|
|
224587
225805
|
root = findAppRoot(dirname17(abs)) ?? dirname17(abs);
|
|
224588
225806
|
else
|
|
224589
225807
|
throw new CliError(`No such folder or .scene.ts: ${pathArg}`);
|
|
@@ -224591,15 +225809,15 @@ var getContext2 = (args) => {
|
|
|
224591
225809
|
root = findAppRoot(root) ?? root;
|
|
224592
225810
|
}
|
|
224593
225811
|
}
|
|
224594
|
-
return { root, manifest, name: manifest?.name ??
|
|
225812
|
+
return { root, manifest, name: manifest?.name ?? basename17(root) };
|
|
224595
225813
|
};
|
|
224596
225814
|
var writeMcpConfig2 = (root, port) => {
|
|
224597
|
-
const path2 =
|
|
225815
|
+
const path2 = join36(root, ".mcp.json");
|
|
224598
225816
|
const entry = { type: "http", url: `http://localhost:${port}/mcp` };
|
|
224599
225817
|
let config = {};
|
|
224600
|
-
if (
|
|
225818
|
+
if (existsSync34(path2)) {
|
|
224601
225819
|
try {
|
|
224602
|
-
config = JSON.parse(
|
|
225820
|
+
config = JSON.parse(readFileSync32(path2, "utf8"));
|
|
224603
225821
|
} catch {
|
|
224604
225822
|
warnErr(".mcp.json exists but isn't valid JSON — left it untouched. Add the lecodes-scene server by hand.");
|
|
224605
225823
|
return;
|
|
@@ -224612,17 +225830,17 @@ var writeMcpConfig2 = (root, port) => {
|
|
|
224612
225830
|
return;
|
|
224613
225831
|
}
|
|
224614
225832
|
config.mcpServers["lecodes-scene"] = entry;
|
|
224615
|
-
|
|
225833
|
+
writeFileSync28(path2, JSON.stringify(config, null, 2) + `
|
|
224616
225834
|
`);
|
|
224617
225835
|
note(`${existing ? "updated" : "created"} .mcp.json (lecodes-scene MCP → ${entry.url})`);
|
|
224618
225836
|
};
|
|
224619
225837
|
var countScenes = (dir) => {
|
|
224620
225838
|
let n2 = 0;
|
|
224621
|
-
for (const name of
|
|
225839
|
+
for (const name of readdirSync15(dir)) {
|
|
224622
225840
|
if (name === "node_modules" || name.startsWith("."))
|
|
224623
225841
|
continue;
|
|
224624
|
-
const full =
|
|
224625
|
-
if (
|
|
225842
|
+
const full = join36(dir, name);
|
|
225843
|
+
if (statSync13(full).isDirectory())
|
|
224626
225844
|
n2 += countScenes(full);
|
|
224627
225845
|
else if (name.endsWith(".scene.ts"))
|
|
224628
225846
|
n2++;
|
|
@@ -224663,13 +225881,170 @@ var scene = async (args) => {
|
|
|
224663
225881
|
openBrowser(server2.url);
|
|
224664
225882
|
};
|
|
224665
225883
|
|
|
225884
|
+
// src/commands/thumbs.ts
|
|
225885
|
+
import { createRequire as createRequire5 } from "node:module";
|
|
225886
|
+
import { execFileSync as execFileSync7 } from "node:child_process";
|
|
225887
|
+
import { existsSync as existsSync35, mkdtempSync as mkdtempSync6, readdirSync as readdirSync16, rmSync as rmSync12, statSync as statSync14 } from "node:fs";
|
|
225888
|
+
import { tmpdir as tmpdir6 } from "node:os";
|
|
225889
|
+
import { extname, join as join37, relative as relative7, resolve as resolve19 } from "node:path";
|
|
225890
|
+
init_util();
|
|
225891
|
+
var DEFAULT_SIZE = 256;
|
|
225892
|
+
var IMAGE_EXT = /\.(png|jpe?g|webp|bmp|gif|tiff?|ktx2)$/i;
|
|
225893
|
+
var RENDERED_EXT = /\.(glb|gltf|material\.ts|scene\.ts)$/i;
|
|
225894
|
+
var findKtx = () => {
|
|
225895
|
+
const exe = process.platform === "win32" ? "ktx.exe" : "ktx";
|
|
225896
|
+
const candidates = [
|
|
225897
|
+
process.env.LECODES_KTX,
|
|
225898
|
+
process.env.KTX_CLI,
|
|
225899
|
+
process.env.KTX_TOKTX?.replace(/toktx(\.exe)?$/i, exe),
|
|
225900
|
+
process.platform === "win32" ? join37(process.env.LOCALAPPDATA ?? "", "Programs", "KTX-Software", "bin", exe) : null,
|
|
225901
|
+
process.platform === "win32" ? join37(process.env.ProgramFiles ?? "", "KTX-Software", "bin", exe) : null,
|
|
225902
|
+
"/usr/local/bin/ktx",
|
|
225903
|
+
"/opt/homebrew/bin/ktx"
|
|
225904
|
+
].filter((p2) => !!p2);
|
|
225905
|
+
for (const path2 of candidates) {
|
|
225906
|
+
if (existsSync35(path2))
|
|
225907
|
+
return path2;
|
|
225908
|
+
}
|
|
225909
|
+
try {
|
|
225910
|
+
execFileSync7(exe, ["--version"], { stdio: "ignore" });
|
|
225911
|
+
return exe;
|
|
225912
|
+
} catch {
|
|
225913
|
+
return null;
|
|
225914
|
+
}
|
|
225915
|
+
};
|
|
225916
|
+
var sharpResizer = () => {
|
|
225917
|
+
try {
|
|
225918
|
+
const req = createRequire5(import.meta.url);
|
|
225919
|
+
const sharp = createRequire5(req.resolve("lecodes-assets/cli"))("sharp");
|
|
225920
|
+
return async (file, size) => sharp(file).resize({ width: size, height: size, fit: "inside", withoutEnlargement: true }).png().toBuffer();
|
|
225921
|
+
} catch {
|
|
225922
|
+
return null;
|
|
225923
|
+
}
|
|
225924
|
+
};
|
|
225925
|
+
var jimpResizer = () => async (file, size) => {
|
|
225926
|
+
const { Jimp: Jimp2 } = await Promise.resolve().then(() => (init_esm30(), exports_esm2));
|
|
225927
|
+
const img = await Jimp2.read(file);
|
|
225928
|
+
if (Math.max(img.width, img.height) > size)
|
|
225929
|
+
img.scaleToFit({ w: size, h: size });
|
|
225930
|
+
return await img.getBuffer("image/png");
|
|
225931
|
+
};
|
|
225932
|
+
var ktxToPng = (ktx, file, out) => {
|
|
225933
|
+
const run2 = (args) => execFileSync7(ktx, args, { stdio: ["ignore", "ignore", "pipe"], encoding: "utf8" });
|
|
225934
|
+
try {
|
|
225935
|
+
run2(["extract", "--transcode", "rgba8", "--level", "0", file, out]);
|
|
225936
|
+
} catch (e2) {
|
|
225937
|
+
run2(["extract", "--level", "0", file, out]);
|
|
225938
|
+
if (!existsSync35(out))
|
|
225939
|
+
throw e2;
|
|
225940
|
+
}
|
|
225941
|
+
};
|
|
225942
|
+
var collect = (dir) => {
|
|
225943
|
+
const out = [];
|
|
225944
|
+
for (const name of readdirSync16(dir)) {
|
|
225945
|
+
if (name === "node_modules" || name.startsWith("."))
|
|
225946
|
+
continue;
|
|
225947
|
+
const full = join37(dir, name);
|
|
225948
|
+
if (statSync14(full).isDirectory())
|
|
225949
|
+
out.push(...collect(full));
|
|
225950
|
+
else if (IMAGE_EXT.test(name))
|
|
225951
|
+
out.push(full);
|
|
225952
|
+
}
|
|
225953
|
+
return out;
|
|
225954
|
+
};
|
|
225955
|
+
var thumbs = async (args) => {
|
|
225956
|
+
const root = projectRootOf(process.cwd());
|
|
225957
|
+
let sceneServer;
|
|
225958
|
+
try {
|
|
225959
|
+
sceneServer = await import("lecodes-3d-editor/server");
|
|
225960
|
+
} catch {
|
|
225961
|
+
throw new CliError("The scene editor isn't installed (it owns the preview cache). Run: npm install -g lecodes-3d-editor");
|
|
225962
|
+
}
|
|
225963
|
+
const size = Number(flagStr(args, "size")) || DEFAULT_SIZE;
|
|
225964
|
+
const force = flagBool(args, "force");
|
|
225965
|
+
let files = [];
|
|
225966
|
+
const rendered = [];
|
|
225967
|
+
if (args._.length > 0) {
|
|
225968
|
+
for (const arg of args._) {
|
|
225969
|
+
const abs = resolve19(process.cwd(), arg);
|
|
225970
|
+
if (!existsSync35(abs))
|
|
225971
|
+
throw new CliError(`No such file or folder: ${arg}`);
|
|
225972
|
+
if (statSync14(abs).isDirectory())
|
|
225973
|
+
files.push(...collect(abs));
|
|
225974
|
+
else if (IMAGE_EXT.test(abs))
|
|
225975
|
+
files.push(abs);
|
|
225976
|
+
else if (RENDERED_EXT.test(abs))
|
|
225977
|
+
rendered.push(arg);
|
|
225978
|
+
else
|
|
225979
|
+
throw new CliError(`Not a previewable asset: ${arg}`);
|
|
225980
|
+
}
|
|
225981
|
+
} else {
|
|
225982
|
+
files = collect(root);
|
|
225983
|
+
}
|
|
225984
|
+
files = [...new Set(files)];
|
|
225985
|
+
if (files.length === 0 && rendered.length === 0) {
|
|
225986
|
+
log("No images to thumbnail.");
|
|
225987
|
+
return;
|
|
225988
|
+
}
|
|
225989
|
+
const ktx = files.some((f3) => f3.toLowerCase().endsWith(".ktx2")) ? findKtx() : null;
|
|
225990
|
+
const sharp = sharpResizer();
|
|
225991
|
+
const resize = sharp ?? jimpResizer();
|
|
225992
|
+
const tmp = mkdtempSync6(join37(tmpdir6(), "lecodes-thumbs-"));
|
|
225993
|
+
let made = 0, fresh = 0;
|
|
225994
|
+
const skipped = [];
|
|
225995
|
+
try {
|
|
225996
|
+
for (const [i2, file] of files.entries()) {
|
|
225997
|
+
const asset = "./" + toKey(relative7(root, file));
|
|
225998
|
+
progress(i2, files.length, asset);
|
|
225999
|
+
const hash = sceneServer.hashAsset(root, asset);
|
|
226000
|
+
if (!hash)
|
|
226001
|
+
continue;
|
|
226002
|
+
if (!force && sceneServer.previewIsCurrent(root, asset, hash)) {
|
|
226003
|
+
fresh++;
|
|
226004
|
+
continue;
|
|
226005
|
+
}
|
|
226006
|
+
const ext2 = extname(file).toLowerCase();
|
|
226007
|
+
if (ext2 === ".webp" && !sharp) {
|
|
226008
|
+
skipped.push(`${asset} (webp needs sharp — npm install -g lecodes-assets)`);
|
|
226009
|
+
continue;
|
|
226010
|
+
}
|
|
226011
|
+
try {
|
|
226012
|
+
let source = file;
|
|
226013
|
+
if (ext2 === ".ktx2") {
|
|
226014
|
+
if (!ktx) {
|
|
226015
|
+
skipped.push(`${asset} (KTX2 needs KTX-Software's \`ktx\` — set LECODES_KTX or put it on PATH)`);
|
|
226016
|
+
continue;
|
|
226017
|
+
}
|
|
226018
|
+
source = join37(tmp, `${i2}.png`);
|
|
226019
|
+
ktxToPng(ktx, file, source);
|
|
226020
|
+
}
|
|
226021
|
+
sceneServer.writePreviewFile(root, asset, await resize(source, size));
|
|
226022
|
+
made++;
|
|
226023
|
+
} catch (e2) {
|
|
226024
|
+
skipped.push(`${asset} (${(e2?.message ?? String(e2)).split(`
|
|
226025
|
+
`)[0]})`);
|
|
226026
|
+
}
|
|
226027
|
+
}
|
|
226028
|
+
} finally {
|
|
226029
|
+
endProgress();
|
|
226030
|
+
rmSync12(tmp, { recursive: true, force: true });
|
|
226031
|
+
}
|
|
226032
|
+
log(`${c.bold(String(made))} generated · ${fresh} already current${skipped.length > 0 ? ` · ${skipped.length} skipped` : ""}`);
|
|
226033
|
+
for (const s2 of skipped)
|
|
226034
|
+
warnErr(s2);
|
|
226035
|
+
if (rendered.length > 0) {
|
|
226036
|
+
warnErr(`Models, materials and prefabs are RENDERED, not decoded — the scene editor does those: ${rendered.join(", ")}`);
|
|
226037
|
+
}
|
|
226038
|
+
note(`Cache: ${join37(root, ".lecodes", "preview")} (re-runs skip everything unchanged)`);
|
|
226039
|
+
};
|
|
226040
|
+
|
|
224666
226041
|
// src/commands/assets.ts
|
|
224667
226042
|
init_util();
|
|
224668
226043
|
|
|
224669
226044
|
// src/cmgenTool.ts
|
|
224670
|
-
import { existsSync as
|
|
226045
|
+
import { existsSync as existsSync36, readdirSync as readdirSync17 } from "node:fs";
|
|
224671
226046
|
import { homedir as homedir8 } from "node:os";
|
|
224672
|
-
import { join as
|
|
226047
|
+
import { join as join38, resolve as resolve20 } from "node:path";
|
|
224673
226048
|
init_util();
|
|
224674
226049
|
var exeName2 = () => process.platform === "win32" ? "cmgen.exe" : "cmgen";
|
|
224675
226050
|
var platformKey3 = () => {
|
|
@@ -224679,10 +226054,10 @@ var platformKey3 = () => {
|
|
|
224679
226054
|
return "linux-x64";
|
|
224680
226055
|
throw new CliError(process.platform === "darwin" ? "cmgen isn't published for macOS yet — build filament's host tools locally and set LECODES_CMGEN." : `cmgen isn't published for ${process.platform}.`);
|
|
224681
226056
|
};
|
|
224682
|
-
var cacheRoot3 = () =>
|
|
226057
|
+
var cacheRoot3 = () => join38(homedir8(), ".lecodes", "cmgen");
|
|
224683
226058
|
var findCmgenIn = (dir) => {
|
|
224684
|
-
for (const entry of
|
|
224685
|
-
const p2 =
|
|
226059
|
+
for (const entry of readdirSync17(dir, { withFileTypes: true })) {
|
|
226060
|
+
const p2 = join38(dir, entry.name);
|
|
224686
226061
|
if (entry.isFile() && entry.name === exeName2())
|
|
224687
226062
|
return p2;
|
|
224688
226063
|
if (entry.isDirectory()) {
|
|
@@ -224695,7 +226070,7 @@ var findCmgenIn = (dir) => {
|
|
|
224695
226070
|
};
|
|
224696
226071
|
var installedCmgenVersions = () => {
|
|
224697
226072
|
try {
|
|
224698
|
-
return
|
|
226073
|
+
return readdirSync17(cacheRoot3(), { withFileTypes: true }).filter((e2) => e2.isDirectory() && e2.name.startsWith("cmgen-")).map((e2) => e2.name.slice("cmgen-".length)).filter((v) => findCmgenIn(join38(cacheRoot3(), `cmgen-${v}`)) !== null).sort(semverNewer);
|
|
224699
226074
|
} catch {
|
|
224700
226075
|
return [];
|
|
224701
226076
|
}
|
|
@@ -224717,19 +226092,19 @@ var downloadCmgen = async (version, versions, dest) => {
|
|
|
224717
226092
|
var resolveCmgenExeCached = () => {
|
|
224718
226093
|
const override = process.env.LECODES_CMGEN;
|
|
224719
226094
|
if (override) {
|
|
224720
|
-
if (!
|
|
226095
|
+
if (!existsSync36(override))
|
|
224721
226096
|
throw new CliError(`LECODES_CMGEN points at "${override}" which doesn't exist.`);
|
|
224722
|
-
return
|
|
226097
|
+
return resolve20(override);
|
|
224723
226098
|
}
|
|
224724
226099
|
const cached = installedCmgenVersions()[0];
|
|
224725
|
-
return cached ? findCmgenIn(
|
|
226100
|
+
return cached ? findCmgenIn(join38(cacheRoot3(), `cmgen-${cached}`)) : null;
|
|
224726
226101
|
};
|
|
224727
226102
|
var resolveCmgenExe = async () => {
|
|
224728
226103
|
const cached = resolveCmgenExeCached();
|
|
224729
226104
|
if (cached)
|
|
224730
226105
|
return cached;
|
|
224731
226106
|
const { latest, versions } = await fetchCmgenManifest();
|
|
224732
|
-
const dir =
|
|
226107
|
+
const dir = join38(cacheRoot3(), `cmgen-${latest}`);
|
|
224733
226108
|
await downloadCmgen(latest, versions, dir);
|
|
224734
226109
|
const exe = findCmgenIn(dir);
|
|
224735
226110
|
if (!exe)
|
|
@@ -224787,8 +226162,8 @@ var status3 = async (_args) => {
|
|
|
224787
226162
|
};
|
|
224788
226163
|
|
|
224789
226164
|
// src/commands/test.ts
|
|
224790
|
-
import { existsSync as
|
|
224791
|
-
import { dirname as dirname18, resolve as
|
|
226165
|
+
import { existsSync as existsSync37, mkdirSync as mkdirSync26, readFileSync as readFileSync33, readdirSync as readdirSync18 } from "node:fs";
|
|
226166
|
+
import { dirname as dirname18, resolve as resolve21 } from "node:path";
|
|
224792
226167
|
init_manifest();
|
|
224793
226168
|
init_util();
|
|
224794
226169
|
var deriveDesignFlows = (meta, entryScreen) => {
|
|
@@ -224851,7 +226226,7 @@ var slug3 = (s2) => s2.replace(/[^a-zA-Z0-9-_]+/g, "-").replace(/^-+|-+$/g, "").
|
|
|
224851
226226
|
var readFlowFile = (abs, displayName) => {
|
|
224852
226227
|
let raw;
|
|
224853
226228
|
try {
|
|
224854
|
-
raw = JSON.parse(
|
|
226229
|
+
raw = JSON.parse(readFileSync33(abs, "utf8"));
|
|
224855
226230
|
} catch (e2) {
|
|
224856
226231
|
throw new CliError(`Can't read "${displayName}": ${e2 instanceof Error ? e2.message : String(e2)}`);
|
|
224857
226232
|
}
|
|
@@ -224906,40 +226281,40 @@ var test = async (args) => {
|
|
|
224906
226281
|
if (!Number.isFinite(nativeFixedDt) || nativeFixedDt < 0 || nativeFixedDt > 1000)
|
|
224907
226282
|
throw new CliError(`--fixed-dt wants a number of ms (0 = wall clock, max 1000), got "${fixedDtFlag}".`);
|
|
224908
226283
|
const projectViewport = desktopDefaultViewport(root);
|
|
224909
|
-
const testsDir =
|
|
224910
|
-
const designMetaPath =
|
|
226284
|
+
const testsDir = resolve21(root, flagStr(args, "dir") ?? "tests");
|
|
226285
|
+
const designMetaPath = resolve21(root, flagStr(args, "design-dir") ?? "design", "meta.json");
|
|
224911
226286
|
const asJson = flagBool(args, "json");
|
|
224912
226287
|
const out = asJson ? logErr : log;
|
|
224913
226288
|
const cases = [];
|
|
224914
226289
|
if (args._.length > 0) {
|
|
224915
226290
|
for (const given of args._) {
|
|
224916
|
-
const candidates = [
|
|
224917
|
-
const abs = candidates.find((p2) =>
|
|
226291
|
+
const candidates = [resolve21(given), resolve21(testsDir, given), resolve21(testsDir, `${given}.flow.json`)];
|
|
226292
|
+
const abs = candidates.find((p2) => existsSync37(p2));
|
|
224918
226293
|
if (!abs)
|
|
224919
226294
|
throw new CliError(`No such test: "${given}" (looked in ${testsDir}).`);
|
|
224920
226295
|
cases.push(readFlowFile(abs, given));
|
|
224921
226296
|
}
|
|
224922
|
-
} else if (
|
|
224923
|
-
for (const f3 of
|
|
224924
|
-
cases.push(readFlowFile(
|
|
226297
|
+
} else if (existsSync37(testsDir)) {
|
|
226298
|
+
for (const f3 of readdirSync18(testsDir).filter((f4) => f4.endsWith(".flow.json")).sort()) {
|
|
226299
|
+
cases.push(readFlowFile(resolve21(testsDir, f3), f3));
|
|
224925
226300
|
}
|
|
224926
226301
|
}
|
|
224927
226302
|
const fixturesFlag = flagStr(args, "fixtures");
|
|
224928
|
-
const defaultPack =
|
|
224929
|
-
const flowFixtures = fixturesFlag !== undefined ? resolveFixtures(fixturesFlag, ".") :
|
|
226303
|
+
const defaultPack = resolve21(testsDir, "fixtures.json");
|
|
226304
|
+
const flowFixtures = fixturesFlag !== undefined ? resolveFixtures(fixturesFlag, ".") : existsSync37(defaultPack) ? resolveFixtures("fixtures.json", testsDir) : undefined;
|
|
224930
226305
|
const flowsOnly = flagBool(args, "flows");
|
|
224931
226306
|
const wantFlows = !flagBool(args, "no-flows") && args._.length === 0;
|
|
224932
226307
|
if (flowsOnly)
|
|
224933
226308
|
cases.length = 0;
|
|
224934
226309
|
let skipped = [];
|
|
224935
226310
|
let entryScreen = null;
|
|
224936
|
-
if (desktop2 && wantFlows &&
|
|
226311
|
+
if (desktop2 && wantFlows && existsSync37(designMetaPath)) {
|
|
224937
226312
|
note("Design-derived flows skipped with --desktop (they tap by name; run `lecodes test` headless for them).");
|
|
224938
226313
|
}
|
|
224939
|
-
if (!desktop2 && (wantFlows || flowsOnly) &&
|
|
226314
|
+
if (!desktop2 && (wantFlows || flowsOnly) && existsSync37(designMetaPath)) {
|
|
224940
226315
|
let meta;
|
|
224941
226316
|
try {
|
|
224942
|
-
meta = JSON.parse(
|
|
226317
|
+
meta = JSON.parse(readFileSync33(designMetaPath, "utf8"));
|
|
224943
226318
|
} catch (e2) {
|
|
224944
226319
|
throw new CliError(`Can't read ${designMetaPath}: ${e2 instanceof Error ? e2.message : String(e2)}`);
|
|
224945
226320
|
}
|
|
@@ -224971,16 +226346,16 @@ var test = async (args) => {
|
|
|
224971
226346
|
}, timeoutMs);
|
|
224972
226347
|
killer.unref?.();
|
|
224973
226348
|
const onConsole = flagBool(args, "logs") ? (level, text) => logErr(`${c.dim(`[${level}]`)} ${text}`) : undefined;
|
|
224974
|
-
const artifactsRoot =
|
|
226349
|
+
const artifactsRoot = resolve21(root, flagStr(args, "artifacts") ?? resolve21(testsDir, ".artifacts"));
|
|
224975
226350
|
const results = [];
|
|
224976
226351
|
const runNativeCase = async (kase) => {
|
|
224977
|
-
const caseDir =
|
|
226352
|
+
const caseDir = resolve21(artifactsRoot, slug3(kase.name));
|
|
224978
226353
|
const plan = translateScenario(kase.steps, { outDir: caseDir, headroomFrames: nativeFrames });
|
|
224979
226354
|
for (const st of plan.steps)
|
|
224980
226355
|
if (st.screenshot)
|
|
224981
|
-
|
|
224982
|
-
|
|
224983
|
-
const finalPng =
|
|
226356
|
+
mkdirSync26(dirname18(st.screenshot), { recursive: true });
|
|
226357
|
+
mkdirSync26(caseDir, { recursive: true });
|
|
226358
|
+
const finalPng = resolve21(caseDir, "final.png");
|
|
224984
226359
|
const { output } = await runDesktopRender(native.js, native.resources, {
|
|
224985
226360
|
renderer: desktopRenderer,
|
|
224986
226361
|
width: Number(flagStr(args, "width")) || kase.width || projectViewport?.width || 390,
|
|
@@ -225032,14 +226407,14 @@ var test = async (args) => {
|
|
|
225032
226407
|
onConsole
|
|
225033
226408
|
});
|
|
225034
226409
|
try {
|
|
225035
|
-
const io = fileScenarioIO(
|
|
226410
|
+
const io = fileScenarioIO(resolve21(artifactsRoot, slug3(kase.name)));
|
|
225036
226411
|
const outcome = await renderer.runScenario(session, steps, io);
|
|
225037
226412
|
result = {
|
|
225038
226413
|
name: kase.name,
|
|
225039
226414
|
kind: kase.kind,
|
|
225040
226415
|
ok: outcome.ok,
|
|
225041
226416
|
steps: outcome.steps.map((s2) => ({ desc: s2.desc, ok: s2.ok, error: s2.error })),
|
|
225042
|
-
artifacts: outcome.failureArtifacts.map((p2) =>
|
|
226417
|
+
artifacts: outcome.failureArtifacts.map((p2) => resolve21(artifactsRoot, slug3(kase.name), p2))
|
|
225043
226418
|
};
|
|
225044
226419
|
} finally {
|
|
225045
226420
|
session.dispose();
|
|
@@ -225101,17 +226476,54 @@ var test = async (args) => {
|
|
|
225101
226476
|
process.exit(failed > 0 ? 1 : 0);
|
|
225102
226477
|
};
|
|
225103
226478
|
|
|
226479
|
+
// src/commands/update.ts
|
|
226480
|
+
import { spawnSync as spawnSync7 } from "node:child_process";
|
|
226481
|
+
import { existsSync as existsSync39, readdirSync as readdirSync19 } from "node:fs";
|
|
226482
|
+
import { homedir as homedir9 } from "node:os";
|
|
226483
|
+
import { dirname as dirname20, join as join40, resolve as resolve23 } from "node:path";
|
|
226484
|
+
init_util();
|
|
226485
|
+
|
|
226486
|
+
// src/peers.ts
|
|
226487
|
+
import { existsSync as existsSync38, readFileSync as readFileSync34 } from "node:fs";
|
|
226488
|
+
import { createRequire as createRequire6 } from "node:module";
|
|
226489
|
+
import { dirname as dirname19, join as join39 } from "node:path";
|
|
226490
|
+
var OPTIONAL_PEERS = [
|
|
226491
|
+
["lecodes-renderer", "lecodes-renderer/headless"],
|
|
226492
|
+
["lecodes-design", "lecodes-design/server"],
|
|
226493
|
+
["lecodes-3d-editor", "lecodes-3d-editor/server"],
|
|
226494
|
+
["lecodes-assets", "lecodes-assets/cli"]
|
|
226495
|
+
];
|
|
226496
|
+
var peerVersion = (name, probe) => {
|
|
226497
|
+
try {
|
|
226498
|
+
const require2 = createRequire6(import.meta.url);
|
|
226499
|
+
let dir = dirname19(require2.resolve(probe));
|
|
226500
|
+
for (let depth = 0;depth < 16; depth++) {
|
|
226501
|
+
const manifest = join39(dir, "package.json");
|
|
226502
|
+
if (existsSync38(manifest)) {
|
|
226503
|
+
const parsed = JSON.parse(readFileSync34(manifest, "utf8"));
|
|
226504
|
+
if (parsed.name === name)
|
|
226505
|
+
return parsed.version ?? "unknown";
|
|
226506
|
+
}
|
|
226507
|
+
const parent = dirname19(dir);
|
|
226508
|
+
if (parent === dir)
|
|
226509
|
+
break;
|
|
226510
|
+
dir = parent;
|
|
226511
|
+
}
|
|
226512
|
+
} catch {}
|
|
226513
|
+
return null;
|
|
226514
|
+
};
|
|
226515
|
+
|
|
225104
226516
|
// src/commands/types.ts
|
|
225105
226517
|
init_api();
|
|
225106
226518
|
init_config();
|
|
225107
226519
|
init_manifest();
|
|
225108
226520
|
init_types4();
|
|
225109
226521
|
init_util();
|
|
225110
|
-
import { resolve as
|
|
226522
|
+
import { resolve as resolve22 } from "node:path";
|
|
225111
226523
|
var label = (bundle) => `${Object.keys(bundle).length} file(s)`;
|
|
225112
226524
|
var types4 = async (args) => {
|
|
225113
226525
|
const dirArg = args._[0];
|
|
225114
|
-
const root = dirArg ?
|
|
226526
|
+
const root = dirArg ? resolve22(dirArg) : (() => {
|
|
225115
226527
|
try {
|
|
225116
226528
|
return findProjectRoot(process.cwd());
|
|
225117
226529
|
} catch {
|
|
@@ -225146,9 +226558,9 @@ var types4 = async (args) => {
|
|
|
225146
226558
|
const same = bundleHash(onDisk) === bundleHash(bundle);
|
|
225147
226559
|
if (checkOnly) {
|
|
225148
226560
|
if (Object.keys(onDisk).length === 0)
|
|
225149
|
-
throw new CliError(`No types in ${LECODES_DIR}/types/ — run \`lecodes
|
|
226561
|
+
throw new CliError(`No types in ${LECODES_DIR}/types/ — run \`lecodes update\`.`);
|
|
225150
226562
|
if (!same)
|
|
225151
|
-
throw new CliError(`Types are out of date (${label(onDisk)} on disk) — run \`lecodes
|
|
226563
|
+
throw new CliError(`Types are out of date (${label(onDisk)} on disk) — run \`lecodes update\`.`);
|
|
225152
226564
|
success(`Types are up to date (${label(onDisk)}).`);
|
|
225153
226565
|
return;
|
|
225154
226566
|
}
|
|
@@ -225169,24 +226581,161 @@ var types4 = async (args) => {
|
|
|
225169
226581
|
note("Reload the TypeScript server in your editor to pick them up.");
|
|
225170
226582
|
};
|
|
225171
226583
|
|
|
226584
|
+
// src/commands/update.ts
|
|
226585
|
+
var findProjectDir = (start) => {
|
|
226586
|
+
const home = resolve23(homedir9());
|
|
226587
|
+
let dir = resolve23(start);
|
|
226588
|
+
while (true) {
|
|
226589
|
+
if (dir !== home && (existsSync39(join40(dir, "app.json")) || existsSync39(join40(dir, ".lecodes", "manifest.json")) || existsSync39(join40(dir, ".lecodes", "types"))))
|
|
226590
|
+
return dir;
|
|
226591
|
+
const parent = dirname20(dir);
|
|
226592
|
+
if (parent === dir)
|
|
226593
|
+
return null;
|
|
226594
|
+
dir = parent;
|
|
226595
|
+
}
|
|
226596
|
+
};
|
|
226597
|
+
var NPM = "https://registry.npmjs.org";
|
|
226598
|
+
var npmLatest = async (name) => {
|
|
226599
|
+
try {
|
|
226600
|
+
const res = await fetch(`${NPM}/${name}/latest`, { signal: AbortSignal.timeout(4000) });
|
|
226601
|
+
if (!res.ok)
|
|
226602
|
+
return null;
|
|
226603
|
+
const json = await res.json();
|
|
226604
|
+
return json.version ?? null;
|
|
226605
|
+
} catch {
|
|
226606
|
+
return null;
|
|
226607
|
+
}
|
|
226608
|
+
};
|
|
226609
|
+
var semverNewer2 = (a2, b) => {
|
|
226610
|
+
const pa = a2.split(/[.-]/).map(Number), pb = b.split(/[.-]/).map(Number);
|
|
226611
|
+
for (let i2 = 0;i2 < 3; i2++) {
|
|
226612
|
+
const d = (pa[i2] ?? 0) - (pb[i2] ?? 0);
|
|
226613
|
+
if (d)
|
|
226614
|
+
return d;
|
|
226615
|
+
}
|
|
226616
|
+
return 0;
|
|
226617
|
+
};
|
|
226618
|
+
var FROM_SOURCE = /[\\/]src[\\/]commands[\\/]/.test(import.meta.url);
|
|
226619
|
+
var STANDALONE = existsSync39(join40(dirname20(process.execPath), "runtime")) && existsSync39(join40(dirname20(process.execPath), process.platform === "win32" ? "chisel.exe" : "chisel"));
|
|
226620
|
+
var update = async (args) => {
|
|
226621
|
+
const steps = [];
|
|
226622
|
+
const heading = (name, what) => log(`
|
|
226623
|
+
${c.bold(name)} ${c.dim(what)}`);
|
|
226624
|
+
const run2 = async (name, what, fn) => {
|
|
226625
|
+
heading(name, what);
|
|
226626
|
+
try {
|
|
226627
|
+
const r2 = await fn();
|
|
226628
|
+
const [outcome, detail] = Array.isArray(r2) ? r2 : [r2, undefined];
|
|
226629
|
+
steps.push({ name, outcome, detail });
|
|
226630
|
+
if (outcome === "skipped" && detail)
|
|
226631
|
+
note(`skipped — ${detail}`);
|
|
226632
|
+
} catch (e2) {
|
|
226633
|
+
const msg = e2 instanceof CliError ? e2.message : e2 instanceof Error ? e2.message : String(e2);
|
|
226634
|
+
log(c.red("✗ ") + msg);
|
|
226635
|
+
steps.push({ name, outcome: "failed", detail: msg });
|
|
226636
|
+
}
|
|
226637
|
+
};
|
|
226638
|
+
const root = findProjectDir(process.cwd());
|
|
226639
|
+
await run2("desktop", "LeCodes Desktop host (desktop run / render --desktop)", async () => {
|
|
226640
|
+
if (process.env.LECODES_DESKTOP_EXE)
|
|
226641
|
+
return ["skipped", `LECODES_DESKTOP_EXE=${process.env.LECODES_DESKTOP_EXE} (a local build; \`lecodes desktop update\` refreshes the cache anyway)`];
|
|
226642
|
+
await updateDesktop();
|
|
226643
|
+
return "ok";
|
|
226644
|
+
});
|
|
226645
|
+
await run2("matc", "Filament material compiler for local shader compiles", async () => {
|
|
226646
|
+
if (process.env.LECODES_MATC)
|
|
226647
|
+
return ["skipped", `LECODES_MATC=${process.env.LECODES_MATC} (a local matc)`];
|
|
226648
|
+
await updateMatc();
|
|
226649
|
+
return "ok";
|
|
226650
|
+
});
|
|
226651
|
+
await run2("shaders", "recompile the project's .mat shaders with the current matc", async () => {
|
|
226652
|
+
if (!root)
|
|
226653
|
+
return ["skipped", "not inside a project"];
|
|
226654
|
+
await shaders({ _: ["compile"], flags: {} });
|
|
226655
|
+
return "ok";
|
|
226656
|
+
});
|
|
226657
|
+
await run2("types", flagBool(args, "local") ? "IDE types from the SDK bundled in this CLI" : "IDE types from the server", async () => {
|
|
226658
|
+
if (!root)
|
|
226659
|
+
return ["skipped", "not inside a project"];
|
|
226660
|
+
await types4({ _: [], flags: flagBool(args, "local") ? { local: true } : {} });
|
|
226661
|
+
return "ok";
|
|
226662
|
+
});
|
|
226663
|
+
await run2("shells", "ios/ + android/ pins → newest SDK release + plugin tags, then re-sync", async () => {
|
|
226664
|
+
if (!root)
|
|
226665
|
+
return ["skipped", "not inside a project"];
|
|
226666
|
+
if (flagBool(args, "no-shells"))
|
|
226667
|
+
return ["skipped", "--no-shells"];
|
|
226668
|
+
const present = ["ios", "android"].filter((d) => existsSync39(join40(root, d)) && readdirSync19(join40(root, d)).length > 0);
|
|
226669
|
+
if (present.length === 0)
|
|
226670
|
+
return ["skipped", "no ios/ or android/ shell in this project (`lecodes app init ios|android`)"];
|
|
226671
|
+
await app({ _: ["update"], flags: {} });
|
|
226672
|
+
return "ok";
|
|
226673
|
+
});
|
|
226674
|
+
await run2("cli", "lecodes-cli + its optional peers (global npm installs)", async () => {
|
|
226675
|
+
if (flagBool(args, "no-cli"))
|
|
226676
|
+
return ["skipped", "--no-cli"];
|
|
226677
|
+
if (FROM_SOURCE)
|
|
226678
|
+
return ["skipped", "running from the repo checkout — the CLI and its peers are the repo's own"];
|
|
226679
|
+
const rows = [];
|
|
226680
|
+
for (const [name, probe] of OPTIONAL_PEERS) {
|
|
226681
|
+
const installed = peerVersion(name, probe);
|
|
226682
|
+
rows.push({ name, installed, latest: installed ? await npmLatest(name) : null });
|
|
226683
|
+
}
|
|
226684
|
+
rows.push({ name: "lecodes-cli", installed: package_default.version, latest: await npmLatest("lecodes-cli") });
|
|
226685
|
+
if (rows.every((r3) => r3.latest === null))
|
|
226686
|
+
return ["skipped", "npm unreachable"];
|
|
226687
|
+
const behind = rows.filter((r3) => r3.installed && r3.latest && semverNewer2(r3.latest, r3.installed) > 0);
|
|
226688
|
+
for (const r3 of rows) {
|
|
226689
|
+
const state = !r3.installed ? c.dim("not installed (optional — npm install -g " + r3.name + ")") : !r3.latest ? c.dim("(npm: unknown)") : behind.includes(r3) ? c.yellow("→ " + r3.latest) : c.dim("(up to date)");
|
|
226690
|
+
log(" " + r3.name.padEnd(18) + " " + (r3.installed ?? "").padEnd(8) + " " + state);
|
|
226691
|
+
}
|
|
226692
|
+
if (behind.length === 0)
|
|
226693
|
+
return "ok";
|
|
226694
|
+
const specs = behind.map((r3) => r3.name + "@latest");
|
|
226695
|
+
if (flagBool(args, "check"))
|
|
226696
|
+
return ["updated", behind.length + " behind — run: npm install -g " + specs.join(" ")];
|
|
226697
|
+
if (STANDALONE && behind.some((r3) => r3.name === "lecodes-cli")) {
|
|
226698
|
+
note("this is the standalone build — the CLI updates by re-installing the release archive, not through npm; peers still go through npm");
|
|
226699
|
+
}
|
|
226700
|
+
const toInstall = STANDALONE ? specs.filter((s2) => !s2.startsWith("lecodes-cli@")) : specs;
|
|
226701
|
+
if (toInstall.length === 0)
|
|
226702
|
+
return ["skipped", "only the standalone CLI itself is behind — download the release"];
|
|
226703
|
+
log(" " + c.dim("$") + " npm install -g " + toInstall.join(" "));
|
|
226704
|
+
const r2 = spawnSync7("npm", ["install", "-g", ...toInstall], { stdio: "inherit", shell: true });
|
|
226705
|
+
if (r2.status !== 0)
|
|
226706
|
+
throw new CliError("npm install -g exited with " + (r2.status ?? "a signal"));
|
|
226707
|
+
const names3 = toInstall.map((s2) => s2.replace("@latest", "")).join(", ");
|
|
226708
|
+
const cliToo = toInstall.some((s2) => s2.startsWith("lecodes-cli@"));
|
|
226709
|
+
return ["updated", names3 + " → latest" + (cliToo ? " (the new CLI runs from your next command)" : "")];
|
|
226710
|
+
});
|
|
226711
|
+
log(`
|
|
226712
|
+
${c.bold("Summary")}`);
|
|
226713
|
+
const width = Math.max(...steps.map((s2) => s2.name.length));
|
|
226714
|
+
for (const s2 of steps) {
|
|
226715
|
+
const mark = s2.outcome === "failed" ? c.red("✗") : s2.outcome === "skipped" ? c.dim("–") : c.green("✓");
|
|
226716
|
+
log(` ${mark} ${s2.name.padEnd(width)} ${s2.outcome === "failed" ? c.red(s2.detail ?? "failed") : s2.outcome === "skipped" ? c.dim(s2.detail ?? "skipped") : s2.detail ?? s2.outcome}`);
|
|
226717
|
+
}
|
|
226718
|
+
if (steps.some((s2) => s2.outcome === "failed"))
|
|
226719
|
+
process.exitCode = 1;
|
|
226720
|
+
};
|
|
226721
|
+
|
|
225172
226722
|
// src/index.ts
|
|
225173
|
-
import { existsSync as
|
|
225174
|
-
import {
|
|
225175
|
-
import { delimiter as delimiter2, dirname as dirname21, join as join39 } from "node:path";
|
|
226723
|
+
import { existsSync as existsSync42, realpathSync as realpathSync2 } from "node:fs";
|
|
226724
|
+
import { delimiter as delimiter2, dirname as dirname23, join as join43 } from "node:path";
|
|
225176
226725
|
|
|
225177
226726
|
// src/commands/install.ts
|
|
225178
226727
|
init_util();
|
|
225179
|
-
import { execFileSync as
|
|
225180
|
-
import { appendFileSync as appendFileSync3, chmodSync as chmodSync2, cpSync as cpSync5, existsSync as
|
|
225181
|
-
import { homedir as
|
|
225182
|
-
import { basename as
|
|
226728
|
+
import { execFileSync as execFileSync8 } from "node:child_process";
|
|
226729
|
+
import { appendFileSync as appendFileSync3, chmodSync as chmodSync2, cpSync as cpSync5, existsSync as existsSync40, mkdirSync as mkdirSync27, readFileSync as readFileSync35, realpathSync, rmSync as rmSync13, symlinkSync as symlinkSync2 } from "node:fs";
|
|
226730
|
+
import { homedir as homedir10 } from "node:os";
|
|
226731
|
+
import { basename as basename18, delimiter, dirname as dirname21, join as join41, resolve as resolve24, sep as sep2 } from "node:path";
|
|
225183
226732
|
var isWin = process.platform === "win32";
|
|
225184
|
-
var HOME =
|
|
226733
|
+
var HOME = homedir10();
|
|
225185
226734
|
var safeRealpath = (p2) => {
|
|
225186
226735
|
try {
|
|
225187
226736
|
return realpathSync(p2);
|
|
225188
226737
|
} catch {
|
|
225189
|
-
return
|
|
226738
|
+
return resolve24(p2);
|
|
225190
226739
|
}
|
|
225191
226740
|
};
|
|
225192
226741
|
var onPath = (dir) => {
|
|
@@ -225202,25 +226751,25 @@ var onPath = (dir) => {
|
|
|
225202
226751
|
});
|
|
225203
226752
|
};
|
|
225204
226753
|
var install = async (args) => {
|
|
225205
|
-
const bundle =
|
|
225206
|
-
const exeName3 =
|
|
226754
|
+
const bundle = dirname21(process.execPath);
|
|
226755
|
+
const exeName3 = basename18(process.execPath);
|
|
225207
226756
|
const chiselName = isWin ? "chisel.exe" : "chisel";
|
|
225208
|
-
if (!
|
|
226757
|
+
if (!existsSync40(join41(bundle, "runtime")) || !existsSync40(join41(bundle, chiselName))) {
|
|
225209
226758
|
throw new CliError("`lecodes install` only works from the packaged release build (the archive containing lecodes + " + "chisel + runtime/). You appear to be running from source or an npm install — install globally " + "with your package manager there instead.");
|
|
225210
226759
|
}
|
|
225211
|
-
const companions = [exeName3, chiselName, "runtime", "README.txt"].filter((f3) =>
|
|
226760
|
+
const companions = [exeName3, chiselName, "runtime", "README.txt"].filter((f3) => existsSync40(join41(bundle, f3)));
|
|
225212
226761
|
if (isWin)
|
|
225213
226762
|
return installWindows(args, bundle, companions);
|
|
225214
226763
|
return installUnix(args, bundle, companions);
|
|
225215
226764
|
};
|
|
225216
226765
|
var copyBundle = (bundle, target, companions) => {
|
|
225217
|
-
|
|
226766
|
+
mkdirSync27(target, { recursive: true });
|
|
225218
226767
|
if (safeRealpath(target) === safeRealpath(bundle))
|
|
225219
226768
|
return;
|
|
225220
226769
|
for (const f3 of companions) {
|
|
225221
|
-
const dest =
|
|
225222
|
-
|
|
225223
|
-
cpSync5(
|
|
226770
|
+
const dest = join41(target, f3);
|
|
226771
|
+
rmSync13(dest, { recursive: true, force: true });
|
|
226772
|
+
cpSync5(join41(bundle, f3), dest, { recursive: true });
|
|
225224
226773
|
}
|
|
225225
226774
|
};
|
|
225226
226775
|
var permError = (e2, dir, system) => {
|
|
@@ -225232,41 +226781,41 @@ var permError = (e2, dir, system) => {
|
|
|
225232
226781
|
};
|
|
225233
226782
|
var installUnix = (args, bundle, companions) => {
|
|
225234
226783
|
const system = flagBool(args, "system");
|
|
225235
|
-
const libDir =
|
|
225236
|
-
const binDir =
|
|
225237
|
-
const link2 =
|
|
226784
|
+
const libDir = resolve24(flagStr(args, "dir") ?? (system ? "/usr/local/lib/lecodes-cli" : join41(HOME, ".local", "lib", "lecodes-cli")));
|
|
226785
|
+
const binDir = resolve24(flagStr(args, "bin") ?? (system ? "/usr/local/bin" : join41(HOME, ".local", "bin")));
|
|
226786
|
+
const link2 = join41(binDir, "lecodes");
|
|
225238
226787
|
try {
|
|
225239
226788
|
copyBundle(bundle, libDir, companions);
|
|
225240
|
-
chmodSync2(
|
|
225241
|
-
chmodSync2(
|
|
226789
|
+
chmodSync2(join41(libDir, "lecodes"), 493);
|
|
226790
|
+
chmodSync2(join41(libDir, "chisel"), 493);
|
|
225242
226791
|
} catch (e2) {
|
|
225243
226792
|
throw permError(e2, libDir, system);
|
|
225244
226793
|
}
|
|
225245
226794
|
try {
|
|
225246
|
-
|
|
225247
|
-
|
|
225248
|
-
|
|
226795
|
+
mkdirSync27(binDir, { recursive: true });
|
|
226796
|
+
rmSync13(link2, { force: true });
|
|
226797
|
+
symlinkSync2(join41(libDir, "lecodes"), link2);
|
|
225249
226798
|
} catch (e2) {
|
|
225250
226799
|
throw permError(e2, binDir, system);
|
|
225251
226800
|
}
|
|
225252
226801
|
success(`Installed to ${c.bold(libDir)}`);
|
|
225253
|
-
log(` ${c.dim(link2 + " → " +
|
|
226802
|
+
log(` ${c.dim(link2 + " → " + join41(libDir, "lecodes"))}`);
|
|
225254
226803
|
finishPathUnix(args, binDir);
|
|
225255
226804
|
};
|
|
225256
226805
|
var shellRc = () => {
|
|
225257
|
-
const shell =
|
|
226806
|
+
const shell = basename18(process.env.SHELL ?? "");
|
|
225258
226807
|
if (shell === "zsh")
|
|
225259
|
-
return { file:
|
|
226808
|
+
return { file: join41(HOME, ".zshrc"), name: "~/.zshrc" };
|
|
225260
226809
|
if (shell === "bash")
|
|
225261
|
-
return { file:
|
|
225262
|
-
return { file:
|
|
226810
|
+
return { file: join41(HOME, ".bashrc"), name: "~/.bashrc" };
|
|
226811
|
+
return { file: join41(HOME, ".profile"), name: "~/.profile" };
|
|
225263
226812
|
};
|
|
225264
226813
|
var PATH_MARKER = "# Added by `lecodes install`";
|
|
225265
226814
|
var appendPathToShellRc = (binDir) => {
|
|
225266
226815
|
const { file, name } = shellRc();
|
|
225267
226816
|
const line = `export PATH="${binDir}:$PATH"`;
|
|
225268
226817
|
try {
|
|
225269
|
-
const existing =
|
|
226818
|
+
const existing = existsSync40(file) ? readFileSync35(file, "utf8") : "";
|
|
225270
226819
|
if (existing.includes(line))
|
|
225271
226820
|
return name;
|
|
225272
226821
|
appendFileSync3(file, `${existing && !existing.endsWith(`
|
|
@@ -225304,7 +226853,7 @@ var finishPathUnix = (args, binDir) => {
|
|
|
225304
226853
|
log(` • or install system-wide (no PATH edit): ${c.bold("sudo lecodes install --system")}`);
|
|
225305
226854
|
};
|
|
225306
226855
|
var installWindows = (args, bundle, companions) => {
|
|
225307
|
-
const target =
|
|
226856
|
+
const target = resolve24(flagStr(args, "dir") ?? join41(process.env.LOCALAPPDATA ?? join41(HOME, "AppData", "Local"), "Programs", "lecodes-cli"));
|
|
225308
226857
|
try {
|
|
225309
226858
|
copyBundle(bundle, target, companions);
|
|
225310
226859
|
} catch (e2) {
|
|
@@ -225332,7 +226881,7 @@ var installWindows = (args, bundle, companions) => {
|
|
|
225332
226881
|
var addToUserPathWindows = (dir) => {
|
|
225333
226882
|
const script = "$d = $env:LECODES_INSTALL_DIR;" + "$p = [Environment]::GetEnvironmentVariable('Path','User'); if (-not $p) { $p = '' };" + "$parts = @($p.Split(';') | Where-Object { $_ -ne '' });" + "if ($parts -notcontains $d) { [Environment]::SetEnvironmentVariable('Path', (@($parts + $d) -join ';'), 'User') }";
|
|
225334
226883
|
try {
|
|
225335
|
-
|
|
226884
|
+
execFileSync8("powershell", ["-NoProfile", "-NonInteractive", "-Command", script], { stdio: "ignore", env: { ...process.env, LECODES_INSTALL_DIR: dir } });
|
|
225336
226885
|
return true;
|
|
225337
226886
|
} catch {
|
|
225338
226887
|
return false;
|
|
@@ -225343,9 +226892,9 @@ var addToUserPathWindows = (dir) => {
|
|
|
225343
226892
|
init_util();
|
|
225344
226893
|
|
|
225345
226894
|
// src/projectEnv.ts
|
|
225346
|
-
import { existsSync as
|
|
225347
|
-
import { homedir as
|
|
225348
|
-
import { dirname as
|
|
226895
|
+
import { existsSync as existsSync41, readFileSync as readFileSync36 } from "node:fs";
|
|
226896
|
+
import { homedir as homedir11 } from "node:os";
|
|
226897
|
+
import { dirname as dirname22, join as join42, resolve as resolve25 } from "node:path";
|
|
225349
226898
|
var KEY_RE = /^(LECODES|CREATOR)_[A-Z0-9_]+$/;
|
|
225350
226899
|
var parseDotEnv = (text) => {
|
|
225351
226900
|
const out = {};
|
|
@@ -225380,19 +226929,19 @@ var applyDotEnv = (parsed, dir, env) => {
|
|
|
225380
226929
|
continue;
|
|
225381
226930
|
let value = raw;
|
|
225382
226931
|
if (value.startsWith("./") || value.startsWith("../"))
|
|
225383
|
-
value =
|
|
226932
|
+
value = resolve25(dir, value);
|
|
225384
226933
|
else if (value === "~" || value.startsWith("~/"))
|
|
225385
|
-
value =
|
|
226934
|
+
value = join42(homedir11(), value.slice(1));
|
|
225386
226935
|
out[key] = value;
|
|
225387
226936
|
}
|
|
225388
226937
|
return out;
|
|
225389
226938
|
};
|
|
225390
226939
|
var findEnvRoot = (start) => {
|
|
225391
|
-
let dir =
|
|
226940
|
+
let dir = resolve25(start);
|
|
225392
226941
|
while (true) {
|
|
225393
|
-
if (
|
|
226942
|
+
if (existsSync41(join42(dir, "app.json")) || existsSync41(join42(dir, ".lecodes")))
|
|
225394
226943
|
return dir;
|
|
225395
|
-
const parent =
|
|
226944
|
+
const parent = dirname22(dir);
|
|
225396
226945
|
if (parent === dir)
|
|
225397
226946
|
return null;
|
|
225398
226947
|
dir = parent;
|
|
@@ -225403,10 +226952,10 @@ var loadProjectEnv = (cwd = process.cwd()) => {
|
|
|
225403
226952
|
const root = findEnvRoot(cwd);
|
|
225404
226953
|
if (!root)
|
|
225405
226954
|
return [];
|
|
225406
|
-
const file =
|
|
225407
|
-
if (!
|
|
226955
|
+
const file = join42(root, ".env");
|
|
226956
|
+
if (!existsSync41(file))
|
|
225408
226957
|
return [];
|
|
225409
|
-
const added = applyDotEnv(parseDotEnv(
|
|
226958
|
+
const added = applyDotEnv(parseDotEnv(readFileSync36(file, "utf8")), root, process.env);
|
|
225410
226959
|
for (const [k, v] of Object.entries(added))
|
|
225411
226960
|
process.env[k] = v;
|
|
225412
226961
|
return Object.keys(added);
|
|
@@ -225416,12 +226965,12 @@ var loadProjectEnv = (cwd = process.cwd()) => {
|
|
|
225416
226965
|
};
|
|
225417
226966
|
|
|
225418
226967
|
// src/index.ts
|
|
225419
|
-
var
|
|
225420
|
-
const dir =
|
|
226968
|
+
var STANDALONE2 = (() => {
|
|
226969
|
+
const dir = dirname23(process.execPath);
|
|
225421
226970
|
const chisel = process.platform === "win32" ? "chisel.exe" : "chisel";
|
|
225422
|
-
return
|
|
226971
|
+
return existsSync42(join43(dir, "runtime")) && existsSync42(join43(dir, chisel));
|
|
225423
226972
|
})();
|
|
225424
|
-
var INSTALLED =
|
|
226973
|
+
var INSTALLED = STANDALONE2 && (() => {
|
|
225425
226974
|
const exe = process.platform === "win32" ? "lecodes.exe" : "lecodes";
|
|
225426
226975
|
const self2 = (() => {
|
|
225427
226976
|
try {
|
|
@@ -225434,14 +226983,14 @@ var INSTALLED = STANDALONE && (() => {
|
|
|
225434
226983
|
if (!d)
|
|
225435
226984
|
return false;
|
|
225436
226985
|
try {
|
|
225437
|
-
const cand =
|
|
225438
|
-
return
|
|
226986
|
+
const cand = join43(d, exe);
|
|
226987
|
+
return existsSync42(cand) && realpathSync2(cand) === self2;
|
|
225439
226988
|
} catch {
|
|
225440
226989
|
return false;
|
|
225441
226990
|
}
|
|
225442
226991
|
});
|
|
225443
226992
|
})();
|
|
225444
|
-
var INSTALL_HELP =
|
|
226993
|
+
var INSTALL_HELP = STANDALONE2 && !INSTALLED ? `
|
|
225445
226994
|
install Install this standalone build so 'lecodes' is on your PATH
|
|
225446
226995
|
(copies the bundle to a library folder + a symlink/PATH entry).
|
|
225447
226996
|
--modify-path also add it to PATH (edits your shell rc / user PATH)
|
|
@@ -225528,6 +227077,11 @@ ${c.bold("Commands:")}
|
|
|
225528
227077
|
-o, --out <file> write JSON to a file instead of stdout
|
|
225529
227078
|
--png [file] rasterize a PNG (default screenshot.png;
|
|
225530
227079
|
needs @napi-rs/canvas)
|
|
227080
|
+
--map [file] draw the 3D scene's annotated top-down map
|
|
227081
|
+
(grid + XZ footprints + named markers) as
|
|
227082
|
+
<file>.png + <file>.json world-space data
|
|
227083
|
+
(default map.png; --label-all, --max-px N;
|
|
227084
|
+
also a { "map": "f.png" } script step)
|
|
225531
227085
|
--script <file> drive the app through a step list (tap/type/
|
|
225532
227086
|
scroll/wait/expect/screenshot/json steps;
|
|
225533
227087
|
games: frames/drag/hold/key/keyDown/keyUp,
|
|
@@ -225591,13 +227145,22 @@ ${c.bold("Commands:")}
|
|
|
225591
227145
|
render --desktop
|
|
225592
227146
|
(+ the render timing flags: --width/--height, --settle,
|
|
225593
227147
|
--device, --safe-area, --wait-network, --logs, --entry)
|
|
225594
|
-
|
|
225595
|
-
|
|
225596
|
-
|
|
225597
|
-
|
|
225598
|
-
|
|
225599
|
-
|
|
225600
|
-
|
|
227148
|
+
update Move everything a project depends on to its newest published
|
|
227149
|
+
state, in dependency order: the desktop host ('desktop
|
|
227150
|
+
update'), matc ('shaders update'), the project's shader
|
|
227151
|
+
compiles, the IDE types (.lecodes/types/ + tsconfig.json,
|
|
227152
|
+
from the server — the former 'lecodes types'), the
|
|
227153
|
+
ios/android shell pins ('app update'), then the GLOBAL npm
|
|
227154
|
+
installs: every installed optional peer (lecodes-renderer,
|
|
227155
|
+
lecodes-design, lecodes-3d-editor, lecodes-assets) and this
|
|
227156
|
+
CLI that is behind npm's latest gets 'npm install -g'.
|
|
227157
|
+
Pinned tools are skipped, not overridden: LECODES_DESKTOP_EXE
|
|
227158
|
+
/ LECODES_MATC mean a local build. Keeps going when a step
|
|
227159
|
+
fails; the summary says which.
|
|
227160
|
+
--local types from the SDK bundled in this CLI
|
|
227161
|
+
--no-shells leave ios/android pins alone (no re-sync)
|
|
227162
|
+
--check npm step: report what's behind, install nothing
|
|
227163
|
+
--no-cli skip the npm step (offline)
|
|
225601
227164
|
design [serve] LeCodes Design — a live canvas of screens for AI-driven prototyping
|
|
225602
227165
|
(needs the optional 'lecodes-design' package; works inside a
|
|
225603
227166
|
cloned project or standalone in any folder)
|
|
@@ -225631,7 +227194,10 @@ ${c.bold("Commands:")}
|
|
|
225631
227194
|
host's frame counter in the corner — composited fps,
|
|
225632
227195
|
plus the 3D fps when they diverge; asset() resources
|
|
225633
227196
|
load from the working tree — --remote-assets or
|
|
225634
|
-
--public-url <url> uses the server's copies instead)
|
|
227197
|
+
--public-url <url> uses the server's copies instead);
|
|
227198
|
+
--server [--port N] [--max-clients N] launches the
|
|
227199
|
+
host as a multiplayer server, --connect ip:port as a
|
|
227200
|
+
client — both only set Net.launch (the app decides)
|
|
225635
227201
|
build stage a portable app folder (default dist/<name>/):
|
|
225636
227202
|
the cached host renamed to <Name>.exe + app.js +
|
|
225637
227203
|
assets/ (the project's files) + runtime/ (the engine's)
|
|
@@ -225651,6 +227217,8 @@ ${c.bold("Commands:")}
|
|
|
225651
227217
|
--probe headless-render the staged folder to PNG
|
|
225652
227218
|
(macOS: a brief windowed run + snapshot)
|
|
225653
227219
|
--zip also pack the result for sending
|
|
227220
|
+
--dmg macOS: also build a drag-to-Applications
|
|
227221
|
+
disk image (signed + notarized too)
|
|
225654
227222
|
--sign <identity|adhoc> macOS codesign identity
|
|
225655
227223
|
--notarize <profile> / --no-notarize macOS
|
|
225656
227224
|
--zip <out>.zip, UTF-8/forward-slash entries
|
|
@@ -225666,6 +227234,16 @@ ${c.bold("Commands:")}
|
|
|
225666
227234
|
--sun-rays/--ao-rays <n> quality (32 / 64)
|
|
225667
227235
|
--ao-distance <m> AO reach (2) --sun-angle <deg> (0.5)
|
|
225668
227236
|
--frames <n> load headroom (900) --logs host output
|
|
227237
|
+
navmesh bake Build the level's navigation mesh (assets/nav/<scene>.navmesh)
|
|
227238
|
+
for NavAgent / NavMesh: the desktop host dumps every STATIC
|
|
227239
|
+
body's collision triangles at the scene's env.navmesh (or
|
|
227240
|
+
NavMesh.load) point, Recast builds the mesh here.
|
|
227241
|
+
--out <dir> where it lands (assets/nav)
|
|
227242
|
+
--name <n> file name (the scene file with env.navmesh)
|
|
227243
|
+
--radius/--height/--climb/--slope agent size (scene's)
|
|
227244
|
+
--cell <m> (0.25) --cell-height <m> (0.1) --tile <cells> (48)
|
|
227245
|
+
--obj also write <n>.navmesh.obj to inspect
|
|
227246
|
+
--frames <n> load headroom (900) --logs host output
|
|
225669
227247
|
shaders [compile|update] The project's custom shaders (.mat) and their local compile:
|
|
225670
227248
|
no args lists the shaders + their compile state; compile
|
|
225671
227249
|
compiles them all into .lecodes/shaders (the same pass
|
|
@@ -225678,6 +227256,13 @@ ${c.bold("Commands:")}
|
|
|
225678
227256
|
--port <n> editor-server port (default 4488)
|
|
225679
227257
|
--no-open don't open the browser
|
|
225680
227258
|
--no-mcp don't register the MCP server in .mcp.json
|
|
227259
|
+
thumbs [path…] Asset thumbnails for the scene editor, WITHOUT a browser: decodes
|
|
227260
|
+
the project's images (KTX2 too, via KTX-Software's ktx tool) into the
|
|
227261
|
+
editor's preview cache. Incremental — the cached name carries the
|
|
227262
|
+
asset's content hash, so unchanged files are skipped. Models,
|
|
227263
|
+
materials and prefabs are rendered by the editor, not here
|
|
227264
|
+
--force redo even the up-to-date ones
|
|
227265
|
+
--size <px> longest edge (default 256)
|
|
225681
227266
|
assets convert <model.fbx|.glb> [--clips a.fbx b.fbx …] [-o out.glb] [--drop-model-clips]
|
|
225682
227267
|
[--fix] [--ktx2|--ktx2-hq]
|
|
225683
227268
|
FBX → LeCodes-ready GLB: meters/Y-up, textures embedded, clips from
|
|
@@ -225704,6 +227289,11 @@ ${c.bold("Commands:")}
|
|
|
225704
227289
|
for 'skybox: { texture }') and ibl.ktx (prefiltered + SH, lights the
|
|
225705
227290
|
scene) — they are NOT interchangeable. Reports where the sun is in
|
|
225706
227291
|
the environment so the scene's light can be aimed to match
|
|
227292
|
+
assets terrain-pack <layer> … [-o dir] [--normals n0 n1 …] [--names a b …] [--size N] [--png]
|
|
227293
|
+
A terrain's splat layers (≤ 4) → <name>.ktx2 per layer + the packed
|
|
227294
|
+
normal maps normals01/normals23.ktx2 (what Terrain.create's
|
|
227295
|
+
layers/normals read). A layer = an albedo file or a FOLDER holding
|
|
227296
|
+
*Albedo* + *Normal* (Unity packs). Prints the Terrain.create fragment
|
|
225707
227297
|
assets doctor <in.glb|dir> [--fix] [--ktx2] [--dump]
|
|
225708
227298
|
Analyze / fix a GLB against engine limits (bone cap 256, texture
|
|
225709
227299
|
formats/size, KTX2 via toktx)
|
|
@@ -225771,35 +227361,10 @@ Config lives in ~/.lecodes/config.json (override with LECODES_API / LECODES_TOKE
|
|
|
225771
227361
|
A .env next to app.json is read at startup for LECODES_* / CREATOR_* keys (the shell's own
|
|
225772
227362
|
environment wins; ./ paths resolve against the project; the file is never pushed) — e.g.
|
|
225773
227363
|
LECODES_DESKTOP_EXE, LECODES_MATC, LECODES_NOTARY_PROFILE, LECODES_MACOS_SIGN_ID, LECODES_TOKEN.`;
|
|
225774
|
-
var commands = { init: init2, login, create, clone: clone3, link, status: status3, diff: diff2, pull, push, compile: compile2, preview: previewLegacy, render, test,
|
|
225775
|
-
if (
|
|
227364
|
+
var commands = { init: init2, login, create, clone: clone3, link, status: status3, diff: diff2, pull, push, compile: compile2, preview: previewLegacy, render, test, design, scene, thumbs, dev, app, pn, desktop, shaders, assets, lightmap, navmesh, update };
|
|
227365
|
+
if (STANDALONE2)
|
|
225776
227366
|
commands.install = install;
|
|
225777
227367
|
var readVersion = () => package_default.version ?? "unknown";
|
|
225778
|
-
var OPTIONAL_PEERS = [
|
|
225779
|
-
["lecodes-renderer", "lecodes-renderer/headless"],
|
|
225780
|
-
["lecodes-design", "lecodes-design/server"],
|
|
225781
|
-
["lecodes-3d-editor", "lecodes-3d-editor/server"],
|
|
225782
|
-
["lecodes-assets", "lecodes-assets/cli"]
|
|
225783
|
-
];
|
|
225784
|
-
var peerVersion = (name, probe) => {
|
|
225785
|
-
try {
|
|
225786
|
-
const require2 = createRequire4(import.meta.url);
|
|
225787
|
-
let dir = dirname21(require2.resolve(probe));
|
|
225788
|
-
for (let depth = 0;depth < 16; depth++) {
|
|
225789
|
-
const manifest = join39(dir, "package.json");
|
|
225790
|
-
if (existsSync38(manifest)) {
|
|
225791
|
-
const parsed = JSON.parse(readFileSync34(manifest, "utf8"));
|
|
225792
|
-
if (parsed.name === name)
|
|
225793
|
-
return parsed.version ?? "unknown";
|
|
225794
|
-
}
|
|
225795
|
-
const parent = dirname21(dir);
|
|
225796
|
-
if (parent === dir)
|
|
225797
|
-
break;
|
|
225798
|
-
dir = parent;
|
|
225799
|
-
}
|
|
225800
|
-
} catch {}
|
|
225801
|
-
return null;
|
|
225802
|
-
};
|
|
225803
227368
|
var printVersion = () => {
|
|
225804
227369
|
const rows = [["lecodes-cli", readVersion()]];
|
|
225805
227370
|
for (const [name, probe] of OPTIONAL_PEERS) {
|