@moku-labs/game 0.15.0 → 0.15.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/app/page.d.mts +1 -1
- package/dist/app/page.mjs +2 -2
- package/dist/app/system.d.mts +3 -3
- package/dist/app.d.mts +3 -3
- package/dist/app.mjs +1 -1
- package/dist/assets.d.mts +1 -1
- package/dist/cli.mjs +75 -36
- package/dist/{commands-DAETmK86.d.mts → commands-C_GccOFq.d.mts} +7 -6
- package/dist/control.d.mts +30 -18
- package/dist/control.mjs +2 -2
- package/dist/{define-BASd9ZUh.d.mts → define-DnO7ZLGl.d.mts} +2 -2
- package/dist/{dev-DbHgx-R-.mjs → dev-BNndV-hU.mjs} +4 -4
- package/dist/{headless-cFveciuY.d.mts → headless-D6BrEwCf.d.mts} +1 -1
- package/dist/{index-DedbED3T.d.mts → index-w2uyRKkj.d.mts} +16 -4
- package/dist/index.d.mts +5 -5
- package/dist/index.mjs +2 -2
- package/dist/inspect.d.mts +6 -6
- package/dist/inspect.mjs +1 -1
- package/dist/jsx-dev-runtime.d.mts +1 -1
- package/dist/jsx-runtime.d.mts +1 -1
- package/dist/project.d.mts +4 -4
- package/dist/project.mjs +1 -1
- package/dist/{run-BbipFRc6.mjs → run-C07NXds7.mjs} +35 -25
- package/dist/{runtime-DoSlRx8X.d.mts → runtime-kOH8InAs.d.mts} +1 -1
- package/dist/{sources-Cdvb0rOS.mjs → sources-OvHvyeJS.mjs} +1 -1
- package/dist/{src-BEbJ_sSx.mjs → src-Ca8W8Dvv.mjs} +5331 -1719
- package/dist/testing.d.mts +4 -4
- package/dist/testing.mjs +1 -1
- package/dist/{types-BGcda5Le.d.mts → types-BHgJ1F6f.d.mts} +940 -86
- package/dist/{types-7GXcXxxv.d.mts → types-Bm7DVtA_.d.mts} +36 -10
- package/dist/{types-C73hbmxi.d.mts → types-DEYQF_tT.d.mts} +4 -4
- package/dist/{types-GHE4J5Uf.d.mts → types-fpFKYm6E.d.mts} +142 -43
- package/dist/{types-DngFQJro.d.mts → types-jiWJhLPE.d.mts} +2 -2
- package/dist/{visual-_XhoGeIC.d.mts → visual-BvkKJOSz.d.mts} +6 -6
- package/dist/visual.d.mts +1 -1
- package/dist/visual.mjs +2 -2
- package/dist/{watch-BEdrp80i.mjs → watch-BSgptowj.mjs} +16 -6
- package/llms.txt +6 -4
- package/package.json +4 -2
package/dist/app/page.d.mts
CHANGED
package/dist/app/page.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as systemSource, t as memory } from "../memory-CWlqhS7l.mjs";
|
|
2
2
|
import { t as applyTo } from "../drafts-BawpSaVp.mjs";
|
|
3
|
-
import { i as isControl } from "../dev-
|
|
4
|
-
import { n as read, r as watch, t as sources } from "../sources-
|
|
3
|
+
import { i as isControl } from "../dev-BNndV-hU.mjs";
|
|
4
|
+
import { n as read, r as watch, t as sources } from "../sources-OvHvyeJS.mjs";
|
|
5
5
|
import { t as resolveConfig } from "../config-B87aFTW-.mjs";
|
|
6
6
|
//#region src/app/save.ts
|
|
7
7
|
/**
|
package/dist/app/system.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { _ as SystemShellFactory, g as SystemName, h as SystemModules } from "../types-
|
|
1
|
+
import { Dr as PlayerStateProvider } from "../types-BHgJ1F6f.mjs";
|
|
2
|
+
import { pt as PlatformProvider } from "../index-w2uyRKkj.mjs";
|
|
3
|
+
import { _ as SystemShellFactory, g as SystemName, h as SystemModules } from "../types-DEYQF_tT.mjs";
|
|
4
4
|
import { Back, Haptics, KeepAwake, Lifecycle, Store } from "@moku-labs/system";
|
|
5
5
|
|
|
6
6
|
//#region src/app/system.d.ts
|
package/dist/app.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { V as StringTable } from "./types-
|
|
3
|
-
import { a as GameHandle, c as MemoryProvider, d as SaveKind, f as Scenario, g as SystemName, i as GameDefinition, l as PageAgent, n as GameApp, o as GamePluginConfigs, p as ScreenSeams, r as GameConfig, s as HeadlessSeams, v as WithGameState } from "./types-
|
|
1
|
+
import { Sr as Json } from "./types-BHgJ1F6f.mjs";
|
|
2
|
+
import { V as StringTable } from "./types-Bm7DVtA_.mjs";
|
|
3
|
+
import { a as GameHandle, c as MemoryProvider, d as SaveKind, f as Scenario, g as SystemName, i as GameDefinition, l as PageAgent, n as GameApp, o as GamePluginConfigs, p as ScreenSeams, r as GameConfig, s as HeadlessSeams, v as WithGameState } from "./types-DEYQF_tT.mjs";
|
|
4
4
|
import { AnyPluginInstance } from "@moku-labs/core";
|
|
5
5
|
|
|
6
6
|
//#region src/app/define.d.ts
|
package/dist/app.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Dt as effectsPlugin, K as platformPlugin, Rt as audioPlugin, i as screen, p as flattenFeatures, t as createApp } from "./src-
|
|
1
|
+
import { Dt as effectsPlugin, K as platformPlugin, Rt as audioPlugin, i as screen, p as flattenFeatures, t as createApp } from "./src-Ca8W8Dvv.mjs";
|
|
2
2
|
import { t as memory } from "./memory-CWlqhS7l.mjs";
|
|
3
3
|
import { n as isFakeClock, t as fakeClock } from "./fake-6mazmHK3.mjs";
|
|
4
4
|
//#region src/app/define.ts
|
package/dist/assets.d.mts
CHANGED
package/dist/cli.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as resolveConfig } from "./config-B87aFTW-.mjs";
|
|
2
2
|
import { t as findFeatureOwners } from "./features-DowEilZm.mjs";
|
|
3
|
-
import { r as watchTree, t as createBatcher, x as isSkippedFolder$1 } from "./watch-
|
|
3
|
+
import { r as watchTree, t as createBatcher, x as isSkippedFolder$1 } from "./watch-BSgptowj.mjs";
|
|
4
4
|
import { a as runCli$1, i as compileStrings, n as importStrings, t as exportStrings } from "./assets-CEMfBogh.mjs";
|
|
5
5
|
import { constants, copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, rmSync, statSync, watch, writeFileSync } from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
@@ -631,10 +631,10 @@ function devFlag(engine) {
|
|
|
631
631
|
].join("\n");
|
|
632
632
|
}
|
|
633
633
|
/**
|
|
634
|
-
* The in-memory `agent.ts` module of a debug page, imported after the startup mark:
|
|
635
|
-
*
|
|
636
|
-
* control flag of the profile, the agent flag, and the dev flag
|
|
637
|
-
* it.
|
|
634
|
+
* The in-memory `agent.ts` module of a debug page, imported after the startup mark: lines that
|
|
635
|
+
* set the build id, the engine id, the editor address and, when the game has one, the app id, each
|
|
636
|
+
* through `JSON.stringify`, the control flag of the profile, the agent flag, and the dev flag
|
|
637
|
+
* `false`. No header: nobody opens it.
|
|
638
638
|
*
|
|
639
639
|
* @param page - What the page is built with.
|
|
640
640
|
* @returns The text.
|
|
@@ -648,6 +648,7 @@ function agentFlag(page) {
|
|
|
648
648
|
`globalThis.__MOKU_GAME_BUILD__ = ${JSON.stringify(page.build)};`,
|
|
649
649
|
`globalThis.__MOKU_GAME_ENGINE__ = ${JSON.stringify(page.engine)};`,
|
|
650
650
|
`globalThis.__MOKU_GAME_EDITOR__ = ${JSON.stringify(page.editor)};`,
|
|
651
|
+
...page.app === void 0 ? [] : [`globalThis.__MOKU_GAME_APP__ = ${JSON.stringify(page.app)};`],
|
|
651
652
|
`globalThis.__MOKU_GAME_CONTROL__ = ${String(page.control)};`,
|
|
652
653
|
"globalThis.__MOKU_GAME_AGENT__ = true;",
|
|
653
654
|
"globalThis.__MOKU_GAME_DEV__ = false;",
|
|
@@ -1465,7 +1466,7 @@ async function serveChild(run, deps) {
|
|
|
1465
1466
|
* under a virtual `<game>/.moku/build/` that is never written, then the packed assets copied
|
|
1466
1467
|
* beside the page. A release page that carries the editor's agent is refused and removed. With
|
|
1467
1468
|
* `--debug` the page is a debug page instead: the editor's page agent, the game's `.dev` modules,
|
|
1468
|
-
* the agent
|
|
1469
|
+
* the agent and control flags, a marked title, a build id and the app id. The output works from any
|
|
1469
1470
|
* http sub-path and from the Tauri protocol: every link starts with `./`, and the page reads
|
|
1470
1471
|
* `manifest.json` next to itself. Node and Bun only: the bin bundles it.
|
|
1471
1472
|
*/
|
|
@@ -1629,24 +1630,41 @@ async function loadPlugins(files) {
|
|
|
1629
1630
|
}));
|
|
1630
1631
|
}
|
|
1631
1632
|
/**
|
|
1632
|
-
* The id of a debug build: the
|
|
1633
|
+
* The id of a debug build: the UTC time of the run, `YYYYMMDDTHHMMSSZ`, the same for both
|
|
1634
|
+
* profiles (the editor tells them apart by the CONTROL flag).
|
|
1633
1635
|
*
|
|
1634
|
-
* @param debug - The profile.
|
|
1635
1636
|
* @param now - The wall-clock time of the run, ms.
|
|
1636
1637
|
* @returns The id.
|
|
1637
1638
|
* @example
|
|
1638
1639
|
* ```ts
|
|
1639
|
-
* buildIdOf(
|
|
1640
|
+
* buildIdOf(Date.UTC(2026, 9, 14, 15, 30, 12)); // "debug-20261014T153012Z"
|
|
1640
1641
|
* ```
|
|
1641
1642
|
*/
|
|
1642
|
-
function buildIdOf(
|
|
1643
|
-
|
|
1644
|
-
|
|
1643
|
+
function buildIdOf(now) {
|
|
1644
|
+
return `debug-${new Date(now).toISOString().slice(0, 19).replaceAll(/[-:]/g, "")}Z`;
|
|
1645
|
+
}
|
|
1646
|
+
/**
|
|
1647
|
+
* The app id a debug page carries, so the editor pairs a device stream with its project: the
|
|
1648
|
+
* native bundle identifier, with `.debug` when native builds its debug app
|
|
1649
|
+
* (`MOKU_NATIVE_PROFILE=debug`), which installs under that id.
|
|
1650
|
+
*
|
|
1651
|
+
* @param identifier - `native.identifier` of `config.ts`, `undefined` without a native section.
|
|
1652
|
+
* @param profile - `MOKU_NATIVE_PROFILE` of the run.
|
|
1653
|
+
* @returns The app id, or `undefined` without an identifier.
|
|
1654
|
+
* @example
|
|
1655
|
+
* ```ts
|
|
1656
|
+
* appIdOf("com.mokulabs.timber", "debug"); // "com.mokulabs.timber.debug"
|
|
1657
|
+
* ```
|
|
1658
|
+
*/
|
|
1659
|
+
function appIdOf(identifier, profile) {
|
|
1660
|
+
if (identifier === void 0) return void 0;
|
|
1661
|
+
return profile === "debug" ? `${identifier}.debug` : identifier;
|
|
1645
1662
|
}
|
|
1646
1663
|
/**
|
|
1647
1664
|
* The `define` map of a page: a release page defines the three flags `false`; a debug page the
|
|
1648
1665
|
* dev flag `false`, the agent flag `true`, the control flag of its profile, and the build id, the
|
|
1649
|
-
* engine id
|
|
1666
|
+
* engine id, the editor address and, when the game has one, the app id (`__MOKU_GAME_APP__`) as
|
|
1667
|
+
* strings.
|
|
1650
1668
|
*
|
|
1651
1669
|
* @param page - What a debug page is built with; `undefined` for a release page.
|
|
1652
1670
|
* @returns The defines for `Bun.build`.
|
|
@@ -1667,7 +1685,8 @@ function definesOf(page) {
|
|
|
1667
1685
|
__MOKU_GAME_CONTROL__: page.level === "full" ? "true" : "false",
|
|
1668
1686
|
__MOKU_GAME_BUILD__: JSON.stringify(page.build),
|
|
1669
1687
|
__MOKU_GAME_ENGINE__: JSON.stringify(page.engine),
|
|
1670
|
-
__MOKU_GAME_EDITOR__: JSON.stringify(page.editor)
|
|
1688
|
+
__MOKU_GAME_EDITOR__: JSON.stringify(page.editor),
|
|
1689
|
+
...page.app === void 0 ? {} : { __MOKU_GAME_APP__: JSON.stringify(page.app) }
|
|
1671
1690
|
};
|
|
1672
1691
|
}
|
|
1673
1692
|
/**
|
|
@@ -1695,7 +1714,8 @@ function pageFiles(run, settings, page) {
|
|
|
1695
1714
|
const flags = {
|
|
1696
1715
|
build: page.build,
|
|
1697
1716
|
control: page.level === "full",
|
|
1698
|
-
engine: page.engine
|
|
1717
|
+
engine: page.engine,
|
|
1718
|
+
app: page.app
|
|
1699
1719
|
};
|
|
1700
1720
|
return {
|
|
1701
1721
|
...release,
|
|
@@ -1842,17 +1862,18 @@ function refuseStoreDebug(run, env) {
|
|
|
1842
1862
|
throw new Error("[game] build: MOKU_NATIVE_PROFILE is store: a store page must not carry the editor agent.\n Build the store app without --debug.");
|
|
1843
1863
|
}
|
|
1844
1864
|
/**
|
|
1845
|
-
* What a debug run builds its page with: the editor's page agent must resolve from the game,
|
|
1846
|
-
*
|
|
1865
|
+
* What a debug run builds its page with: the editor's page agent must resolve from the game, the
|
|
1866
|
+
* engine the page bundles is fingerprinted, and the app id comes from the native identifier.
|
|
1847
1867
|
*
|
|
1848
1868
|
* @param run - The flags of a debug run.
|
|
1849
1869
|
* @param level - Its profile.
|
|
1850
|
-
* @param
|
|
1870
|
+
* @param settings - The resolved config, for the native identifier.
|
|
1871
|
+
* @param deps - The resolver, the clock and the environment.
|
|
1851
1872
|
* @returns The debug page and the engine fingerprint.
|
|
1852
1873
|
* @throws {Error} With the install line when the game cannot resolve `@moku-labs/editor`, and
|
|
1853
1874
|
* when it cannot resolve `@moku-labs/game/hot`.
|
|
1854
1875
|
*/
|
|
1855
|
-
function debugPageOf(run, level, deps) {
|
|
1876
|
+
function debugPageOf(run, level, settings, deps) {
|
|
1856
1877
|
try {
|
|
1857
1878
|
deps.resolve(DEBUG_AGENT, run.root);
|
|
1858
1879
|
} catch (error) {
|
|
@@ -1862,9 +1883,10 @@ function debugPageOf(run, level, deps) {
|
|
|
1862
1883
|
return {
|
|
1863
1884
|
page: {
|
|
1864
1885
|
level,
|
|
1865
|
-
build: buildIdOf(
|
|
1886
|
+
build: buildIdOf(deps.now()),
|
|
1866
1887
|
engine: engine.id,
|
|
1867
|
-
editor: run.editor ?? "127.0.0.1:47600"
|
|
1888
|
+
editor: run.editor ?? "127.0.0.1:47600",
|
|
1889
|
+
app: appIdOf(settings.native?.identifier, deps.env.MOKU_NATIVE_PROFILE)
|
|
1868
1890
|
},
|
|
1869
1891
|
engine
|
|
1870
1892
|
};
|
|
@@ -1902,7 +1924,7 @@ async function runBuild(run, deps) {
|
|
|
1902
1924
|
refuseStoreDebug(run, deps.env);
|
|
1903
1925
|
const settings = await loadGame(run.root);
|
|
1904
1926
|
refuseOut(run.root, run.out);
|
|
1905
|
-
const debug = run.debug === void 0 ? void 0 : debugPageOf(run, run.debug, deps);
|
|
1927
|
+
const debug = run.debug === void 0 ? void 0 : debugPageOf(run, run.debug, settings, deps);
|
|
1906
1928
|
const packed = await deps.assets(packArguments(run.root, settings, false));
|
|
1907
1929
|
if (packed !== 0) return packed;
|
|
1908
1930
|
rmSync(run.out, {
|
|
@@ -2192,13 +2214,17 @@ const DEFAULT_PORT = "3000";
|
|
|
2192
2214
|
const MAX_PORT = 65535;
|
|
2193
2215
|
/** A host of `--editor`: a name or an IPv4 address, or an IPv6 address in brackets. */
|
|
2194
2216
|
const EDITOR_HOST = /^(?:[\w.-]+|\[[\da-f:.]+\])$/i;
|
|
2217
|
+
/** The value a bare `--debug` reads as: the full profile, with no alias note. */
|
|
2218
|
+
const BARE_DEBUG = "";
|
|
2219
|
+
/** The one line `--debug=full` prints: the alias builds the same page as `--debug`. */
|
|
2220
|
+
const FULL_ALIAS_NOTE = "--debug already includes control; =full is no longer needed";
|
|
2195
2221
|
/** The text of `moku-game help`. */
|
|
2196
2222
|
const USAGE = [
|
|
2197
2223
|
"moku-game <command> [options]",
|
|
2198
2224
|
"",
|
|
2199
2225
|
" dev [--port 3000] [--packed] serve the game with hot reload",
|
|
2200
|
-
" build [--out dist/web] [--debug
|
|
2201
|
-
" native build <target> [--simulator] [--debug
|
|
2226
|
+
" build [--out dist/web] [--debug [--editor host:port]] pack the assets and build the page; --debug adds the editor agent and control",
|
|
2227
|
+
" native build <target> [--simulator] [--debug [--editor host:port]] build the native app (ios, macos, android)",
|
|
2202
2228
|
" native dev <target> run the native shell on the dev server",
|
|
2203
2229
|
" native doctor | native clean check or remove the native project",
|
|
2204
2230
|
" keys [--check] write generated/assets.ts and generated/manifest.json",
|
|
@@ -2279,8 +2305,8 @@ function checkTokens(command, tokens) {
|
|
|
2279
2305
|
}
|
|
2280
2306
|
/**
|
|
2281
2307
|
* Reads the command line into one command with its flags, the paths resolved against the
|
|
2282
|
-
* working directory. A bare `--debug` reads as `--debug
|
|
2283
|
-
* would take the next word.
|
|
2308
|
+
* working directory. A bare `--debug` reads as `--debug=` (the empty value, the full profile): a
|
|
2309
|
+
* string flag without its value would take the next word.
|
|
2284
2310
|
*
|
|
2285
2311
|
* @param given - The arguments after the bin.
|
|
2286
2312
|
* @param cwd - The working directory.
|
|
@@ -2288,7 +2314,7 @@ function checkTokens(command, tokens) {
|
|
|
2288
2314
|
* @throws {Error} When the command is unknown or a flag is refused.
|
|
2289
2315
|
*/
|
|
2290
2316
|
function parseCommand(given, cwd) {
|
|
2291
|
-
const argv = given.map((word) => word === "--debug" ?
|
|
2317
|
+
const argv = given.map((word) => word === "--debug" ? `--debug=${BARE_DEBUG}` : word);
|
|
2292
2318
|
const loose = parseLoose(argv);
|
|
2293
2319
|
const word = loose.positionals[0];
|
|
2294
2320
|
if (loose.values.help === true || word === "help") return "help";
|
|
@@ -2316,27 +2342,38 @@ function parseCommand(given, cwd) {
|
|
|
2316
2342
|
function refuseExtra(parsed, count) {
|
|
2317
2343
|
const extra = parsed.rest[count];
|
|
2318
2344
|
if (extra === void 0) return;
|
|
2319
|
-
const advice = parsed.values.debug !== void 0 && (extra === "full" || extra === "read") ? ` Write --debug
|
|
2345
|
+
const advice = parsed.values.debug !== void 0 && (extra === "full" || extra === "read") ? ` Write ${extra === "read" ? "--debug=read" : "--debug"}.` : "";
|
|
2320
2346
|
throw new Error(`[game] ${parsed.command}: unexpected argument "${extra}".${advice}`);
|
|
2321
2347
|
}
|
|
2322
2348
|
/**
|
|
2323
|
-
* Reads `--debug`: no flag is a release page, a bare flag or `
|
|
2324
|
-
*
|
|
2349
|
+
* Reads `--debug`: no flag is a release page, a bare flag or its alias `full` every command,
|
|
2350
|
+
* `read` the read and cosmetic commands only.
|
|
2325
2351
|
*
|
|
2326
|
-
* @param value - The value of the flag,
|
|
2352
|
+
* @param value - The value of the flag, the empty value for a bare `--debug`.
|
|
2327
2353
|
* @param command - The command word, for the message.
|
|
2328
2354
|
* @returns The profile, or `undefined` without the flag.
|
|
2329
2355
|
* @throws {Error} When the value is another word.
|
|
2330
2356
|
* @example
|
|
2331
2357
|
* ```ts
|
|
2332
|
-
* debugLevelOf("
|
|
2358
|
+
* debugLevelOf(""); // "full"
|
|
2333
2359
|
* ```
|
|
2334
2360
|
*/
|
|
2335
2361
|
function debugLevelOf(value, command = "build") {
|
|
2362
|
+
if (value === BARE_DEBUG) return "full";
|
|
2336
2363
|
if (value === void 0 || value === "read" || value === "full") return value;
|
|
2337
2364
|
throw new Error(`[game] ${command}: --debug takes no value, "read" or "full", got "${value}".`);
|
|
2338
2365
|
}
|
|
2339
2366
|
/**
|
|
2367
|
+
* Prints the alias note once when the command line spells the full profile out: `--debug=full`
|
|
2368
|
+
* builds the same page as `--debug`.
|
|
2369
|
+
*
|
|
2370
|
+
* @param parsed - The command line.
|
|
2371
|
+
* @param ui - The console.
|
|
2372
|
+
*/
|
|
2373
|
+
function noteFullAlias(parsed, ui) {
|
|
2374
|
+
if (parsed.values.debug === "full") ui.info(FULL_ALIAS_NOTE);
|
|
2375
|
+
}
|
|
2376
|
+
/**
|
|
2340
2377
|
* Reads `--editor`: the `host:port` the page agent of a debug page dials, 127.0.0.1:47600 when
|
|
2341
2378
|
* left out.
|
|
2342
2379
|
*
|
|
@@ -2425,6 +2462,7 @@ async function runNativeVerb(parsed, deps) {
|
|
|
2425
2462
|
if (verb === void 0) throw new Error(`[game] native: no verb "${word}". Name one of build, dev, doctor, clean.`);
|
|
2426
2463
|
refuseExtra(parsed, 2);
|
|
2427
2464
|
const debug = nativeDebugOf(parsed, verb, target);
|
|
2465
|
+
noteFullAlias(parsed, deps.ui);
|
|
2428
2466
|
const settings = await loadSettings(parsed.root);
|
|
2429
2467
|
const where = {
|
|
2430
2468
|
cwd: parsed.root,
|
|
@@ -2537,8 +2575,8 @@ function hop(argv, parsed, deps) {
|
|
|
2537
2575
|
}).exited;
|
|
2538
2576
|
}
|
|
2539
2577
|
/**
|
|
2540
|
-
* Runs `moku-game build`: a release page, or with `--debug
|
|
2541
|
-
* `--editor
|
|
2578
|
+
* Runs `moku-game build`: a release page, or with `--debug` a debug page whose agent dials
|
|
2579
|
+
* `--editor` (`--debug=read` for the rare read-only page).
|
|
2542
2580
|
*
|
|
2543
2581
|
* @param parsed - The command line.
|
|
2544
2582
|
* @param deps - The process seams.
|
|
@@ -2550,6 +2588,7 @@ function runBuildCommand(parsed, deps) {
|
|
|
2550
2588
|
const debug = debugLevelOf(parsed.values.debug);
|
|
2551
2589
|
const editor = parsed.values.editor;
|
|
2552
2590
|
if (debug === void 0 && editor !== void 0) throw new Error("[game] build: --editor goes with --debug.");
|
|
2591
|
+
noteFullAlias(parsed, deps.ui);
|
|
2553
2592
|
const out = parsed.values.out ?? path.join(parsed.root, "dist", "web");
|
|
2554
2593
|
return runBuild({
|
|
2555
2594
|
root: parsed.root,
|
|
@@ -2955,12 +2994,12 @@ function systemRowsOf(settings) {
|
|
|
2955
2994
|
* @returns The command.
|
|
2956
2995
|
* @example
|
|
2957
2996
|
* ```ts
|
|
2958
|
-
* webBuildOf({ cwd: "/g", command: '"bun" "/g/bin/moku-game.mjs"' }, { level: "full", editor: "192.168.1.20:47600" }); // '"bun" "/g/bin/moku-game.mjs" build --debug
|
|
2997
|
+
* webBuildOf({ cwd: "/g", command: '"bun" "/g/bin/moku-game.mjs"' }, { level: "full", editor: "192.168.1.20:47600" }); // '"bun" "/g/bin/moku-game.mjs" build --debug --editor 192.168.1.20:47600'
|
|
2959
2998
|
* ```
|
|
2960
2999
|
*/
|
|
2961
3000
|
function webBuildOf(where, debug) {
|
|
2962
3001
|
if (debug === void 0) return `${where.command} build`;
|
|
2963
|
-
const level = debug.level === "full" ? "--debug
|
|
3002
|
+
const level = debug.level === "full" ? "--debug" : "--debug=read";
|
|
2964
3003
|
const editor = debug.editor === void 0 ? "" : ` --editor ${debug.editor}`;
|
|
2965
3004
|
return `${where.command} build ${level}${editor}`;
|
|
2966
3005
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { P as AnimApi, a as AudioApi, h as EffectsApi, r as UiApi } from "./types-
|
|
3
|
-
import { j as InputApi } from "./types-
|
|
4
|
-
import { t as HeadlessApp } from "./headless-
|
|
5
|
-
import { n as Command, r as ControlApp } from "./types-
|
|
1
|
+
import { Dt as DebugSwitches, I as Captured, Ir as Api, Jr as Time, Nr as StoreApi, S as ScenesApi, T as Api$1, Wr as FrameRate, Zn as Bookmark, Zt as Api$2, er as FlowState, jr as Snapshot } from "./types-BHgJ1F6f.mjs";
|
|
2
|
+
import { P as AnimApi, a as AudioApi, h as EffectsApi, r as UiApi } from "./types-fpFKYm6E.mjs";
|
|
3
|
+
import { j as InputApi } from "./types-Bm7DVtA_.mjs";
|
|
4
|
+
import { t as HeadlessApp } from "./headless-D6BrEwCf.mjs";
|
|
5
|
+
import { n as Command, r as ControlApp } from "./types-jiWJhLPE.mjs";
|
|
6
6
|
|
|
7
7
|
//#region src/plugins/flow/doors/commands.d.ts
|
|
8
8
|
/**
|
|
9
9
|
* Every command of the engine, keyed by its short name: what an editor lists as buttons and MCP
|
|
10
10
|
* tools. Frozen. Each runs on the dev page and on a debug page, by the profile `run` checks: a
|
|
11
|
-
* `--debug` page runs the read and cosmetic ones.
|
|
11
|
+
* `--debug` page runs every one, a `--debug=read` page the read and cosmetic ones.
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* ```ts
|
|
@@ -115,6 +115,7 @@ declare const commands: Readonly<{
|
|
|
115
115
|
nineSlice: "boolean?";
|
|
116
116
|
verifyFrames: "boolean?";
|
|
117
117
|
kept: "boolean?";
|
|
118
|
+
overdraw: "boolean?";
|
|
118
119
|
}, DebugSwitches, HeadlessApp & {
|
|
119
120
|
readonly log: import("@moku-labs/common/browser").LogApi;
|
|
120
121
|
} & {
|
package/dist/control.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as HeadlessApp } from "./headless-
|
|
2
|
-
import { i as InputArguments, n as Command, o as InputSchema, s as Ran } from "./types-
|
|
3
|
-
import { t as commands } from "./commands-
|
|
4
|
-
import { t as defineCommand } from "./define-
|
|
1
|
+
import { t as HeadlessApp } from "./headless-D6BrEwCf.mjs";
|
|
2
|
+
import { i as InputArguments, n as Command, o as InputSchema, s as Ran } from "./types-jiWJhLPE.mjs";
|
|
3
|
+
import { t as commands } from "./commands-C_GccOFq.mjs";
|
|
4
|
+
import { t as defineCommand } from "./define-DnO7ZLGl.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/plugins/flow/doors/dev.d.ts
|
|
7
7
|
/**
|
|
@@ -42,18 +42,18 @@ declare global {
|
|
|
42
42
|
var __MOKU_GAME_AGENT__: boolean | undefined;
|
|
43
43
|
/**
|
|
44
44
|
* The control flag: every /control command runs, the state-changing ones too (`route`, `cheat`, `raw`).
|
|
45
|
-
* `moku-game dev` and `moku-game build --debug
|
|
45
|
+
* `moku-game dev` and `moku-game build --debug` set it; `--debug=read` and `moku-game build` define it `false`.
|
|
46
46
|
*
|
|
47
47
|
* @example
|
|
48
48
|
* ```ts
|
|
49
|
-
* // The in-memory agent.ts of `moku-game build --debug
|
|
49
|
+
* // The in-memory agent.ts of `moku-game build --debug`.
|
|
50
50
|
* globalThis.__MOKU_GAME_CONTROL__ = true;
|
|
51
51
|
* ```
|
|
52
52
|
*/
|
|
53
53
|
var __MOKU_GAME_CONTROL__: boolean | undefined;
|
|
54
54
|
/**
|
|
55
|
-
* The id of the build the page came from: `"dev"` on the dev page, `"debug-20261014T153012Z"`
|
|
56
|
-
*
|
|
55
|
+
* The id of the build the page came from: `"dev"` on the dev page, `"debug-20261014T153012Z"` on a
|
|
56
|
+
* debug build of either profile, undefined on a release build.
|
|
57
57
|
*
|
|
58
58
|
* @example
|
|
59
59
|
* ```ts
|
|
@@ -86,6 +86,18 @@ declare global {
|
|
|
86
86
|
* ```
|
|
87
87
|
*/
|
|
88
88
|
var __MOKU_GAME_EDITOR__: string | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* The app id of a debug build, so the editor pairs a device stream with its project: `native.identifier` of
|
|
91
|
+
* `config.ts`, with `.debug` in the native debug app (`MOKU_NATIVE_PROFILE=debug`), which installs under that id.
|
|
92
|
+
* Undefined on a debug build of a game with no native section, on the dev page and on a release build.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* // moku-game native build android --debug, a game with native: { identifier: "com.mokulabs.timber" }
|
|
97
|
+
* globalThis.__MOKU_GAME_APP__; // "com.mokulabs.timber.debug"
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
var __MOKU_GAME_APP__: string | undefined;
|
|
89
101
|
/**
|
|
90
102
|
* The overlay channel of the page agent: the editor's page agent sets it when it starts and deletes it when it stops.
|
|
91
103
|
* `open()` shows the card; `open({ mode: "pill" })` the small pill; `toggle()` switches between hidden and the last
|
|
@@ -107,7 +119,7 @@ declare global {
|
|
|
107
119
|
} | undefined;
|
|
108
120
|
}
|
|
109
121
|
/**
|
|
110
|
-
* The error `run` throws on a `--debug` page for a command that changes the game: its `reason`
|
|
122
|
+
* The error `run` throws on a `--debug=read` page for a command that changes the game: its `reason`
|
|
111
123
|
* tells it apart from any other failure.
|
|
112
124
|
*
|
|
113
125
|
* @example
|
|
@@ -123,7 +135,7 @@ type ControlReadOnlyError = Error & {
|
|
|
123
135
|
/**
|
|
124
136
|
* The error a control command throws when its body runs outside the builds its guard allows. It
|
|
125
137
|
* carries `reason: "dev-only"`, so an editor tells a refusal by the body's guard apart from a
|
|
126
|
-
* failure, as `reason: "read-only"` tells the refusal of `run` on a `--debug` page.
|
|
138
|
+
* failure, as `reason: "read-only"` tells the refusal of `run` on a `--debug=read` page.
|
|
127
139
|
*
|
|
128
140
|
* @example
|
|
129
141
|
* ```ts
|
|
@@ -147,14 +159,14 @@ type ControlRefusedError = Error & {
|
|
|
147
159
|
*/
|
|
148
160
|
declare function controlRefused(): ControlRefusedError;
|
|
149
161
|
/**
|
|
150
|
-
* Builds the error `run` throws on a `--debug` page for a command whose effect is `route`,
|
|
162
|
+
* Builds the error `run` throws on a `--debug=read` page for a command whose effect is `route`,
|
|
151
163
|
* `cheat` or `raw`. It carries `reason: "read-only"`, so an editor tells it apart from a failure.
|
|
152
164
|
*
|
|
153
165
|
* @param id - The id of the refused command.
|
|
154
166
|
* @returns The error, ready to throw.
|
|
155
167
|
* @example
|
|
156
168
|
* ```ts
|
|
157
|
-
* // The editor on a --debug page.
|
|
169
|
+
* // The editor on a --debug=read page.
|
|
158
170
|
* try { await run(app, commands.tap, { key: "play" }); } catch (error) { Reflect.get(Object(error), "reason"); // "read-only" }
|
|
159
171
|
* ```
|
|
160
172
|
*/
|
|
@@ -162,17 +174,17 @@ declare function controlReadOnly(id: string): ControlReadOnlyError;
|
|
|
162
174
|
//#endregion
|
|
163
175
|
//#region src/plugins/flow/doors/run.d.ts
|
|
164
176
|
/**
|
|
165
|
-
* Runs a command in a dev build or a debug build. A debug build
|
|
166
|
-
*
|
|
177
|
+
* Runs a command in a dev build or a debug build. A `--debug` build and the dev page run every
|
|
178
|
+
* command; a `--debug=read` build runs the read and cosmetic ones only. A `cheat` or `raw`
|
|
167
179
|
* command taints the session and is journaled before it runs, so a failing one still counts.
|
|
168
180
|
*
|
|
169
181
|
* @param app - The app the command acts on.
|
|
170
182
|
* @param command - The command.
|
|
171
183
|
* @param input - Its input; left out when every field of its schema is optional.
|
|
172
184
|
* @returns The command's value and the envelope read after it.
|
|
173
|
-
* @throws {Error} Outside dev builds and debug builds (
|
|
174
|
-
* with `--debug=
|
|
175
|
-
* `raw` command on a `--debug` page, and whatever the command throws.
|
|
185
|
+
* @throws {Error} Outside dev builds and debug builds (every command with `--debug`; the read and
|
|
186
|
+
* cosmetic ones alone with `--debug=read`), the read-only refusal of `controlReadOnly` for a
|
|
187
|
+
* `route`, `cheat` or `raw` command on a `--debug=read` page, and whatever the command throws.
|
|
176
188
|
* @example
|
|
177
189
|
* ```ts
|
|
178
190
|
* // An e2e script: load the bug report, then tap Play.
|
|
@@ -180,7 +192,7 @@ declare function controlReadOnly(id: string): ControlReadOnlyError;
|
|
|
180
192
|
* const ran = await run(app, commands.answer, { intent: "play" });
|
|
181
193
|
* ran.value; // true
|
|
182
194
|
* ran.state; // { path: "board/awaitIntent", frame: 14, tainted: true }
|
|
183
|
-
* // On a --debug page: await run(app, commands.tap, { key: "play" }); // throws "[game] The command game.tap changes the game: …"
|
|
195
|
+
* // On a --debug=read page: await run(app, commands.tap, { key: "play" }); // throws "[game] The command game.tap changes the game: …"
|
|
184
196
|
* ```
|
|
185
197
|
*/
|
|
186
198
|
declare function run<S extends InputSchema, O, App extends HeadlessApp>(app: App, command: Command<S, O, App>, ...input: InputArguments<S>): Promise<Ran<O>>;
|
package/dist/control.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as controlRefused, t as controlReadOnly } from "./dev-
|
|
1
|
+
import { n as controlRefused, t as controlReadOnly } from "./dev-BNndV-hU.mjs";
|
|
2
2
|
import { s as defineCommand } from "./session-CeKgO2hy.mjs";
|
|
3
|
-
import { n as commands, t as run } from "./run-
|
|
3
|
+
import { n as commands, t as run } from "./run-C07NXds7.mjs";
|
|
4
4
|
export { commands, controlReadOnly, controlRefused, defineCommand, run };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as HeadlessApp } from "./headless-
|
|
2
|
-
import { c as Source, n as Command, o as InputSchema } from "./types-
|
|
1
|
+
import { t as HeadlessApp } from "./headless-D6BrEwCf.mjs";
|
|
2
|
+
import { c as Source, n as Command, o as InputSchema } from "./types-jiWJhLPE.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/plugins/flow/doors/define.d.ts
|
|
5
5
|
/**
|
|
@@ -33,7 +33,7 @@ function isAgent() {
|
|
|
33
33
|
* @returns True only when `__MOKU_GAME_CONTROL__` is exactly `true`.
|
|
34
34
|
* @example
|
|
35
35
|
* ```ts
|
|
36
|
-
* isControl(); // true on the page of moku-game build --debug
|
|
36
|
+
* isControl(); // true on the page of moku-game build --debug, false on a --debug=read page
|
|
37
37
|
* ```
|
|
38
38
|
*/
|
|
39
39
|
function isControl() {
|
|
@@ -54,19 +54,19 @@ function controlRefused() {
|
|
|
54
54
|
return Object.assign(/* @__PURE__ */ new Error("[game] Control commands run in dev builds only.\n Define __MOKU_GAME_DEV__ as true in the dev build."), { reason: "dev-only" });
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
|
-
* Builds the error `run` throws on a `--debug` page for a command whose effect is `route`,
|
|
57
|
+
* Builds the error `run` throws on a `--debug=read` page for a command whose effect is `route`,
|
|
58
58
|
* `cheat` or `raw`. It carries `reason: "read-only"`, so an editor tells it apart from a failure.
|
|
59
59
|
*
|
|
60
60
|
* @param id - The id of the refused command.
|
|
61
61
|
* @returns The error, ready to throw.
|
|
62
62
|
* @example
|
|
63
63
|
* ```ts
|
|
64
|
-
* // The editor on a --debug page.
|
|
64
|
+
* // The editor on a --debug=read page.
|
|
65
65
|
* try { await run(app, commands.tap, { key: "play" }); } catch (error) { Reflect.get(Object(error), "reason"); // "read-only" }
|
|
66
66
|
* ```
|
|
67
67
|
*/
|
|
68
68
|
function controlReadOnly(id) {
|
|
69
|
-
return Object.assign(/* @__PURE__ */ new Error(`[game] The command ${id} changes the game: this debug build runs read and cosmetic commands only.\n Build with moku-game build --debug
|
|
69
|
+
return Object.assign(/* @__PURE__ */ new Error(`[game] The command ${id} changes the game: this debug build runs read and cosmetic commands only.\n Build with moku-game build --debug to run it.`), { reason: "read-only" });
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
72
|
* Builds the error a door source or command throws when the opt-in plugin it uses is not
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fr as RngState, Hr as Api, Mn as Api$1, Sr as Json, er as FlowState, fr as Answer, rr as RouteStep, tr as JournalEntry } from "./types-BHgJ1F6f.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/plugins/flow/headless.d.ts
|
|
4
4
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { A as GlowValue, B as Target, C as BlurValue, D as FilterComponent, F as AnimPlayerValue, H as HapticKind, I as Config$10, K as defineAnimation, L as FramesValue, M as OutlineValue, N as UniformDeclaration, O as FilterSpec, P as AnimApi, Q as play, R as MotionKeyframe, S as AlphaValue, T as DisplacementValue, U as SfxDescriptor, W as Step, _ as State$12, a as AudioApi, b as EmitterDefinition, c as MusicDescriptor, ct as OverlayApi, d as State$11, f as VolumesFor, h as EffectsApi, j as NoiseValue, k as FilterValueOf, l as MusicOptions, m as Config$12, n as State$13, r as UiApi, s as Config$11, t as Config$13, w as ColorMatrixValue, x as EmitterValue, y as EmitterConfig, z as State$10 } from "./types-
|
|
3
|
-
import { A as Config$15, B as State$14, C as TextBind, D as TextValue, E as TextStyles, F as Config$14, G as IsFlags, H as TextKey, I as I18nApi, K as ResolvedStyle, L as IntlKit, M as State$15, P as Argument, R as Message, S as TextApi, T as TextStyleInput, U as TypedTr, Y as WhenFlags, _ as BindOptions, b as Point, g as BindField, j as InputApi, k as defineComponent, m as IntrinsicElementsFor, p as defineTokens, q as Style, s as PopupComponent, v as Config$16, x as State$16, y as CountdownValue, z as Part } from "./types-
|
|
1
|
+
import { $ as PassKind, Bn as TextStylesOf, Br as State$4, Bt as OverlayValue, C as State$7, Cr as Root, Dn as ProjectionSpec, E as Config$6, En as ProjectionMotion, Er as Patch, Fn as EmitterIdOf, Gr as RateChange, Gt as SpriteOptions, H as FrameRecord, Hn as defineFlow, Hr as Api$5, In as GameTypes, Ir as Api$3, It as HudPartValue, Jn as FeaturePlugin, Jt as TransformValue, Kr as State$8, Kt as SpriteValue, Ln as HudKeysOf, Lr as Config$4, Mn as Api$2, Mt as ViewportSize, N as State$6, Nn as BundlesOf, Nr as StoreApi, On as ReducedMotion, Pn as Config$3, Pr as RngApi, Qn as DefineNode, Qr as Require, Qt as Config$8, Rr as Events, Rt as NineSliceValue, S as ScenesApi, Sr as Json, T as Api$4, Tn as NumericFields, U as FrameRing, Ur as Config$7, Ut as ShapeValue, Xr as Config$9, Yn as FeatureTree, Yt as sprite, Zr as Events$1, Zt as Api$6, _ as DefineScene, _n as SystemFor, _r as State$2, a as Config$1, an as ComponentHandle, b as SceneDefinition, bn as DescriptionNode, br as Config$5, c as LoadBundles, cn as ComponentValue, cr as EffectOptions, en as State$9, f as State$1, fn as Mut, fr as Answer, g as AnySceneProjection, gn as SystemDefinition, hn as ResourceType, hr as Config$2, i as BundleSpec, ir as SceneIdOf, l as LoadReason, lr as GuideOptions, mn as QueryTerm, o as DefineBundles, or as Descriptor, p as Tier, pn as Narrowed, pr as Api$1, qn as FeatureDescription, qr as ThermalReading, r as BundleMap, sn as ComponentType, sr as Effect, t as Api, u as LoadResult, ur as Hint, vn as TagType, wr as State$5, x as SceneSpec, xn as Ease, y as LayerMap, zn as State$3, zr as PauseReason } from "./types-BHgJ1F6f.mjs";
|
|
2
|
+
import { A as GlowValue, B as Target, C as BlurValue, D as FilterComponent, F as AnimPlayerValue, H as HapticKind, I as Config$10, K as defineAnimation, L as FramesValue, M as OutlineValue, N as UniformDeclaration, O as FilterSpec, P as AnimApi, Q as play, R as MotionKeyframe, S as AlphaValue, T as DisplacementValue, U as SfxDescriptor, W as Step, _ as State$12, a as AudioApi, b as EmitterDefinition, c as MusicDescriptor, ct as OverlayApi, d as State$11, f as VolumesFor, h as EffectsApi, j as NoiseValue, k as FilterValueOf, l as MusicOptions, m as Config$12, n as State$13, r as UiApi, s as Config$11, t as Config$13, w as ColorMatrixValue, x as EmitterValue, y as EmitterConfig, z as State$10 } from "./types-fpFKYm6E.mjs";
|
|
3
|
+
import { A as Config$15, B as State$14, C as TextBind, D as TextValue, E as TextStyles, F as Config$14, G as IsFlags, H as TextKey, I as I18nApi, K as ResolvedStyle, L as IntlKit, M as State$15, P as Argument, R as Message, S as TextApi, T as TextStyleInput, U as TypedTr, Y as WhenFlags, _ as BindOptions, b as Point, g as BindField, j as InputApi, k as defineComponent, m as IntrinsicElementsFor, p as defineTokens, q as Style, s as PopupComponent, v as Config$16, x as State$16, y as CountdownValue, z as Part } from "./types-Bm7DVtA_.mjs";
|
|
4
4
|
import { Log } from "@moku-labs/common/browser";
|
|
5
5
|
import { PluginCtx } from "@moku-labs/core";
|
|
6
6
|
|
|
@@ -977,6 +977,18 @@ declare const Now: ResourceType<{
|
|
|
977
977
|
}>;
|
|
978
978
|
//#endregion
|
|
979
979
|
//#region src/plugins/renderer/monitor/ring.d.ts
|
|
980
|
+
/**
|
|
981
|
+
* The pass kinds by their index in the pass ring's `kind` column: 0 the canvas, 1 a texture, 2 a filter. A root export,
|
|
982
|
+
* so a reader of the ring names a pass's kind without building a record.
|
|
983
|
+
*
|
|
984
|
+
* @example
|
|
985
|
+
* ```ts
|
|
986
|
+
* // The editor's pass strip names the newest pass of a debug build from the ring.
|
|
987
|
+
* const { passes } = app.renderer.monitor.frames();
|
|
988
|
+
* PASS_KINDS[passes.kind[passes.newest] ?? 0]; // "filter"
|
|
989
|
+
* ```
|
|
990
|
+
*/
|
|
991
|
+
declare const PASS_KINDS: readonly PassKind[];
|
|
980
992
|
/**
|
|
981
993
|
* One slot of the ring as a plain record, `age` 0 the newest frame; `undefined` beyond the frames held. Allocates: for
|
|
982
994
|
* tests and tools, never per frame. A root export.
|
|
@@ -1918,4 +1930,4 @@ declare const screen: readonly [import("@moku-labs/core").PluginInstance<"world"
|
|
|
1918
1930
|
};
|
|
1919
1931
|
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"text", Config$16, State$16, TextApi, {}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"ui", Config$13, State$13, UiApi, {}> & Record<never, never>];
|
|
1920
1932
|
//#endregion
|
|
1921
|
-
export {
|
|
1933
|
+
export { defineEffect as $, Held as A, defineTextStyles as At, Traced as B, Animation as C, audioPlugin as Ct, load as D, Countdown as Dt, defineBundles as E, projection as Et, Pressed as F, Now as G, frameAt as H, Swipeable as I, component as J, Order as K, Tappable as L, Pointer as M, PointerOver as N, Draggable as O, Text as Ot, Pressable as P, tag as Q, Touchable as R, AnimPlayer as S, clockPlugin as St, defineScene as T, animPlugin as Tt, Exiting as U, PASS_KINDS as V, Layer as W, resource as X, mut as Y, system as Z, defineStyle as _, inputPlugin as _t, defineEmitter as a, worldPlugin as at, messageDuration as b, effectsPlugin as bt, Alpha as c, textPlugin as ct, Displacement as d, platformPlugin as dt, guide as et, Glow as f, BackResult as ft, resolve as g, lifecyclePlugin as gt, music as h, modelPlugin as ht, screen as i, flattenFeatures as it, Hovered as j, label as jt, DropTarget as k, bind as kt, Blur as l, scenesPlugin as lt, Outline as m, types_d_exports as mt, createPlugin as n, schedule as nt, Emitter as o, uiPlugin as ot, Noise as p, PlatformProvider as pt, Tree as q, defineGame as r, defineFeature as rt, defineFilter as s, timePlugin as st, createApp as t, hint as tt, ColorMatrix as u, rendererPlugin as ut, tr as v, i18nPlugin as vt, Frames as w, assetsPlugin as wt, defineMotion as x, debugPlugin as xt, messageArgument as y, flowPlugin as yt, Traceable as z };
|