@almadar/shell-web 0.1.0 → 1.0.0
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/{ArbitraryClassCompiler-Mzabq-UB.d.ts → ArbitraryClassCompiler-CO_iASBn.d.ts} +99 -4
- package/dist/AvlGlyph-EPJKFEO3.js +6 -0
- package/dist/AvlStateMachine-RKZIKNGC.js +9 -0
- package/dist/AvlTransitionDetail-63SD6GZF.js +11 -0
- package/dist/AvlTransitionExplainer-ZBTLOM3T.js +12 -0
- package/dist/BehaviorView-YS5G4GNB.js +11 -0
- package/dist/{Canvas3DHost-_Y-5uLM_.d.ts → Canvas3DHost-BkZQB5l2.d.ts} +1 -1
- package/dist/{EventBusProvider-CVwjkV_2.d.ts → EventBusProvider-BFFHfN4O.d.ts} +12 -0
- package/dist/FlowCanvas-AUMTWMNG.js +26 -0
- package/dist/{GameAudioProvider-Cm9BnvmP.d.ts → GameAudioProvider-ceM_n0ey.d.ts} +4 -7
- package/dist/KernelEngineContext-CcxGYtlr.d.ts +33 -0
- package/dist/LayersPanel-M2LHWUFF.js +6 -0
- package/dist/ModuleCard-QHDGK5XK.js +7 -0
- package/dist/OrbInspector-QCPEPUPH.js +26 -0
- package/dist/{Select-mDZIwNqN.d.ts → Select-B-iDdnvE.d.ts} +16 -30
- package/dist/ServerBridge-Bqsj-lOU.d.ts +124 -0
- package/dist/UISlotRenderer-C7WWOK43.js +26 -0
- package/dist/auth/browser/index.js +1 -0
- package/dist/auth/react/index.d.ts +8 -1
- package/dist/auth/react/index.js +40 -2
- package/dist/avl/index.d.ts +89 -79
- package/dist/avl/index.js +38 -38
- package/dist/{avl-3d-context-BIRKWpaL.d.ts → avl-3d-context-BycmO6tG.d.ts} +9 -12
- package/dist/{chunk-GKIFONTE.js → chunk-3S54FWRC.js} +2 -2
- package/dist/{chunk-DYEKAA4L.js → chunk-3VZ36ZKO.js} +240 -252
- package/dist/{chunk-PC7K4SK7.js → chunk-4T3P43NS.js} +18 -269
- package/dist/{chunk-MBQAMMSE.js → chunk-4YXBKHHM.js} +269 -658
- package/dist/{chunk-YDNJLLG6.js → chunk-57DC34LY.js} +19 -10
- package/dist/{chunk-SJGJJKBY.js → chunk-AB3X7QTE.js} +6 -3
- package/dist/{chunk-AILY3XPS.js → chunk-AE7VCQB6.js} +5 -6
- package/dist/{chunk-FAJDTHWC.js → chunk-AGXD77SL.js} +2 -2
- package/dist/chunk-AU7O65OX.js +66 -0
- package/dist/{chunk-L677XGY3.js → chunk-CPLN6NBQ.js} +5 -5
- package/dist/{chunk-DZ42OJQC.js → chunk-DZBQA2OW.js} +1 -1
- package/dist/{chunk-2PY54Z44.js → chunk-E6KA4J6N.js} +5 -5
- package/dist/{chunk-DJ433ET5.js → chunk-GFXCPUMX.js} +11 -4
- package/dist/{chunk-FP3WIKTC.js → chunk-HH5KSMH5.js} +9 -1
- package/dist/{chunk-U6QRZASX.js → chunk-ILQXJ2AR.js} +1 -1
- package/dist/{chunk-B4BU77LT.js → chunk-ILZ7ORX7.js} +1 -1
- package/dist/{chunk-SGM3FASH.js → chunk-K4MOPSEL.js} +14 -12
- package/dist/{chunk-GYTPOFVC.js → chunk-LHP2TK7O.js} +7402 -6970
- package/dist/{chunk-VFF5OO47.js → chunk-PCR37T3U.js} +15 -38
- package/dist/{chunk-R5O5AUPI.js → chunk-PRXQGGCO.js} +93 -86
- package/dist/{chunk-42FY4RYA.js → chunk-REXYVBUO.js} +2 -2
- package/dist/{chunk-DLZF4PVE.js → chunk-ROICKAU7.js} +3 -3
- package/dist/{chunk-KVQS4GXU.js → chunk-SP5CDJ6K.js} +18 -8
- package/dist/{chunk-P4LNHAFI.js → chunk-TUPZWTRE.js} +2 -2
- package/dist/chunk-TXAUOLWZ.js +490 -0
- package/dist/{chunk-EQAMU2ZC.js → chunk-UTDC2NEA.js} +1 -1
- package/dist/{chunk-73SRAB4P.js → chunk-UU57VNS2.js} +2 -2
- package/dist/{chunk-DFNZUYX4.js → chunk-UXLE3IPR.js} +70 -27
- package/dist/{chunk-L2DEKY4J.js → chunk-VO2TTLS5.js} +3 -6
- package/dist/{chunk-TESBIVUA.js → chunk-X3DMMX27.js} +2 -2
- package/dist/components/index.d.ts +331 -125
- package/dist/components/index.js +28 -28
- package/dist/context/index.d.ts +2 -3
- package/dist/context/index.js +4 -3
- package/dist/core.d.ts +93 -17
- package/dist/core.js +2 -1
- package/dist/design-classes/index.cjs +3 -1
- package/dist/design-classes/index.js +3 -1
- package/dist/hooks/index.d.ts +40 -5
- package/dist/hooks/index.js +5 -4
- package/dist/index.d.ts +36 -114
- package/dist/index.js +174 -34
- package/dist/kernel-client-TZKGHJRY.js +516 -0
- package/dist/kernel-wire-wNdAPfhJ.d.ts +88 -0
- package/dist/lib/index.d.ts +3 -3
- package/dist/lib/index.js +5 -4
- package/dist/{paintDispatch-ChW5mVuK.d.ts → paintDispatch-CuJLsr9Y.d.ts} +5 -15
- package/dist/{prism-AIWGN2X5.js → prism-X5YWKXO5.js} +5 -3
- package/dist/providers/index.d.ts +42 -27
- package/dist/providers/index.js +22 -23
- package/dist/renderer/index.d.ts +0 -2
- package/dist/renderer/index.js +1 -0
- package/dist/runtime/index.d.ts +52 -253
- package/dist/runtime/index.js +21 -24
- package/dist/ssr/index.cjs +2643 -535
- package/dist/ssr/index.d.cts +0 -23
- package/dist/ssr/index.d.ts +0 -23
- package/dist/ssr/index.js +2639 -535
- package/dist/storage/browser/index.js +1 -0
- package/dist/test-support.d.ts +15 -8
- package/dist/test-support.js +91 -24
- package/dist/three/index.d.ts +6 -6
- package/dist/three/index.js +49 -37
- package/dist/{verificationRegistry-CabxhfTv.d.ts → verificationRegistry-CVrcxG1s.d.ts} +3 -3
- package/package.json +13 -9
- package/src/core/lib/band-shapes.json +7 -0
- package/src/core/locales/ar.json +18 -5
- package/src/core/locales/en.json +18 -5
- package/src/core/locales/sl.json +18 -5
- package/tailwind-preset.cjs +30 -1
- package/dist/AvlGlyph-JKJOAH23.js +0 -6
- package/dist/AvlStateMachine-PI4YGREK.js +0 -8
- package/dist/AvlTransitionDetail-ZH7V24UG.js +0 -12
- package/dist/AvlTransitionExplainer-ZSRT7L6Y.js +0 -13
- package/dist/BehaviorValueFrame-6RUJXT4A.js +0 -29
- package/dist/BehaviorValueFrame-SSEMEBTG.css +0 -1756
- package/dist/BehaviorView-RFEE5J6E.js +0 -10
- package/dist/FlowCanvas-STDC4OWK.js +0 -27
- package/dist/KernelEngineContext-BOCQoFwk.d.ts +0 -43
- package/dist/LayersPanel-BBQ54IVG.js +0 -7
- package/dist/ModuleCard-3TT2X7IW.js +0 -7
- package/dist/OrbInspector-K6T6O7GI.js +0 -27
- package/dist/ServerBridge-Cm1On51b.d.ts +0 -233
- package/dist/TraitValueFrame-2PJGLLVI.js +0 -28
- package/dist/TraitValueFrame-4G3KOUBR.css +0 -1756
- package/dist/UISlotRenderer-JKFSX24W.js +0 -27
- package/dist/UserContext-DqWeZkUZ.d.ts +0 -100
- package/dist/chunk-2QOH2HWM.js +0 -95
- package/dist/chunk-6P3MWXYE.js +0 -440
- package/dist/chunk-FIW6WN23.js +0 -508
- package/dist/chunk-GAR5TQ5B.js +0 -199
- package/dist/chunk-ZO6MXAS3.js +0 -69
- package/dist/kernel-client-ZH4PSMCN.js +0 -367
- package/dist/kernel-wire-B4S8pnP3.d.ts +0 -65
- package/dist/useKeyboardRouter-Dsq553Ur.d.ts +0 -42
package/dist/test-support.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { KernelServerClass, KernelModule } from '@almadar/shell-runtime/kernel/wire';
|
|
2
|
-
import { OrbitalSchema
|
|
2
|
+
import { OrbitalSchema } from '@almadar/core';
|
|
3
3
|
import { KernelEngineValue } from './providers/index.js';
|
|
4
4
|
import { KernelModule as KernelModule$1 } from './providers/index.js';
|
|
5
|
-
import { EventTransport } from '@almadar/shell-runtime
|
|
6
|
-
import './verification-C5pTeMJv.js';
|
|
5
|
+
import { EventTransport } from '@almadar/shell-runtime';
|
|
7
6
|
import 'react';
|
|
7
|
+
import '@almadar/shell-runtime/kernel/os-port';
|
|
8
|
+
import '@almadar/shell-browser/kv';
|
|
9
|
+
import './verification-C5pTeMJv.js';
|
|
8
10
|
|
|
9
11
|
/**
|
|
10
12
|
* A whole `KernelModule` around a scripted `Server`, for tests that drive the engine without the wasm. Every member a
|
|
@@ -13,15 +15,17 @@ import 'react';
|
|
|
13
15
|
declare function stubKernelModule(Server: KernelServerClass, overrides?: Partial<Omit<KernelModule, 'Server'>>): KernelModule;
|
|
14
16
|
|
|
15
17
|
declare const KERNEL_AVAILABLE: boolean;
|
|
18
|
+
/** The type-contract stamp every test program carries, typed from core's `OrbitalSchema` so a version bump there fails here. */
|
|
19
|
+
declare const TEST_TYPE_CONTRACT_VERSION: NonNullable<OrbitalSchema['typeContractVersion']>;
|
|
20
|
+
/** The stamp option a hook under test hands the kernel: the same version, as a program's stamp. */
|
|
21
|
+
declare const TEST_STAMP: Pick<OrbitalSchema, 'typeContractVersion'>;
|
|
16
22
|
/** The installed language as the bundle a browser host hands a kernel it opens over a local store. */
|
|
17
23
|
declare const TEST_LANGUAGE: string;
|
|
18
24
|
/** The shared kernel module, loaded once, with the render evaluator installed from it. */
|
|
19
25
|
declare function loadTestKernel(): Promise<KernelModule$1>;
|
|
20
|
-
/** The std mock-seed program as `orb` resolves it from the installed packages, the way a Node host does. */
|
|
21
|
-
declare function loadTestSeedProgram(): Promise<OrbitalSchema>;
|
|
22
26
|
declare const KERNEL_ENGINE: KernelEngineValue;
|
|
23
27
|
declare const ENGINES: ReadonlyArray<readonly [string, KernelEngineValue]>;
|
|
24
|
-
/** A client-build kernel instance of its own, as a browser loads it:
|
|
28
|
+
/** A client-build kernel instance of its own, as a browser loads it: initialised, with the language installed once, as the browser kernel loader does. */
|
|
25
29
|
declare function loadFreshClientKernel(): Promise<KernelModule$1>;
|
|
26
30
|
/** Load the WebAssembly and the adapter chunk before a timing-sensitive test: the first dispatch otherwise waits on both. */
|
|
27
31
|
declare function warmKernel(): Promise<void>;
|
|
@@ -30,6 +34,9 @@ declare function warmKernel(): Promise<void>;
|
|
|
30
34
|
* The hosted playground's stateless topology: the program is registered once, and every request runs on a fresh
|
|
31
35
|
* session of it (`KernelEngine.fork`) over the kernel's own memory store, the client carrying the circuit state on the leg.
|
|
32
36
|
*/
|
|
33
|
-
declare function statelessKernelTransport(schema: OrbitalSchema
|
|
37
|
+
declare function statelessKernelTransport(schema: OrbitalSchema): EventTransport;
|
|
38
|
+
|
|
39
|
+
/** A `.lolo` program (with any files beside it, such as `locales/en/<app>.json`) as the installed `orb` compiles it for a browser kernel: the stamp, `_metadata.protocols` and dispatch facts included. */
|
|
40
|
+
declare function clientProgram(source: string, files?: Readonly<Record<string, string>>): OrbitalSchema;
|
|
34
41
|
|
|
35
|
-
export { ENGINES, KERNEL_AVAILABLE, KERNEL_ENGINE, TEST_LANGUAGE, loadFreshClientKernel, loadTestKernel,
|
|
42
|
+
export { ENGINES, KERNEL_AVAILABLE, KERNEL_ENGINE, TEST_LANGUAGE, TEST_STAMP, TEST_TYPE_CONTRACT_VERSION, clientProgram, loadFreshClientKernel, loadTestKernel, statelessKernelTransport, stubKernelModule, warmKernel };
|
package/dist/test-support.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import { openLocalKernel, nativeMemoryPersistence } from './chunk-
|
|
1
|
+
"use client";
|
|
2
|
+
import { openLocalKernel, nativeMemoryPersistence } from './chunk-3VZ36ZKO.js';
|
|
3
3
|
import './chunk-G7DCAZ22.js';
|
|
4
|
-
import {
|
|
5
|
-
import { existsSync, readFileSync } from 'fs';
|
|
4
|
+
import { existsSync, readFileSync, mkdtempSync, writeFileSync, mkdirSync, rmSync } from 'fs';
|
|
6
5
|
import { createRequire } from 'module';
|
|
7
|
-
import { join } from 'path';
|
|
6
|
+
import { join, dirname } from 'path';
|
|
8
7
|
import { pathToFileURL } from 'url';
|
|
9
|
-
import {
|
|
8
|
+
import { installKernelEvaluator, parseOrbitalSchema } from '@almadar/core';
|
|
9
|
+
import { installNativeLanguages } from '@almadar/syntax';
|
|
10
10
|
import { readLanguageBundle } from '@almadar/core/language-data';
|
|
11
|
+
import { createInProcessTransport, evaluateOnKernel } from '@almadar/shell-runtime';
|
|
12
|
+
import { execFileSync } from 'child_process';
|
|
13
|
+
import { tmpdir } from 'os';
|
|
11
14
|
|
|
12
15
|
// src/test-support/stub-kernel-module.ts
|
|
13
16
|
function stubKernelModule(Server, overrides = {}) {
|
|
@@ -19,10 +22,12 @@ function stubKernelModule(Server, overrides = {}) {
|
|
|
19
22
|
osGlobMatches: () => false,
|
|
20
23
|
isPublicAddress: () => false,
|
|
21
24
|
osDeferringOps: () => "[]",
|
|
25
|
+
contractQueryWithoutProgram: () => "null",
|
|
22
26
|
osStreamOps: () => "[]",
|
|
23
27
|
osCompletionEvent: () => "null",
|
|
24
28
|
substrateCompletionEvent: () => "null",
|
|
25
29
|
tabUrlMatches: () => false,
|
|
30
|
+
parseEventRequest: unexpected("parseEventRequest"),
|
|
26
31
|
installLanguage: unexpected("installLanguage"),
|
|
27
32
|
evaluateMany: unexpected("evaluateMany"),
|
|
28
33
|
resolveValues: unexpected("resolveValues"),
|
|
@@ -33,6 +38,19 @@ function stubKernelModule(Server, overrides = {}) {
|
|
|
33
38
|
scopeRows: unexpected("scopeRows"),
|
|
34
39
|
checkMutationAccess: unexpected("checkMutationAccess"),
|
|
35
40
|
resolveRowBinding: unexpected("resolveRowBinding"),
|
|
41
|
+
eventWires: unexpected("eventWires"),
|
|
42
|
+
validatePacks: unexpected("validatePacks"),
|
|
43
|
+
expandFxLayer: unexpected("expandFxLayer"),
|
|
44
|
+
resolveFxView: unexpected("resolveFxView"),
|
|
45
|
+
fxLifecycle: unexpected("fxLifecycle"),
|
|
46
|
+
fxHash01: unexpected("fxHash01"),
|
|
47
|
+
skinWorldMatrices: unexpected("skinWorldMatrices"),
|
|
48
|
+
skinVertices: unexpected("skinVertices"),
|
|
49
|
+
skinComposeAffine: unexpected("skinComposeAffine"),
|
|
50
|
+
skinInvertAffine: unexpected("skinInvertAffine"),
|
|
51
|
+
skinApplyAffine: unexpected("skinApplyAffine"),
|
|
52
|
+
skinTriangleAffine: unexpected("skinTriangleAffine"),
|
|
53
|
+
skinVertexBounds: unexpected("skinVertexBounds"),
|
|
36
54
|
...overrides
|
|
37
55
|
};
|
|
38
56
|
}
|
|
@@ -61,22 +79,17 @@ async function load() {
|
|
|
61
79
|
glue.initSync({ module: readFileSync(files.wasm) });
|
|
62
80
|
glue.installLanguage(TEST_LANGUAGE);
|
|
63
81
|
installKernelEvaluator(glue);
|
|
82
|
+
installNativeLanguages();
|
|
64
83
|
return glue;
|
|
65
84
|
}
|
|
85
|
+
var TEST_TYPE_CONTRACT_VERSION = 1;
|
|
86
|
+
var TEST_STAMP = { typeContractVersion: TEST_TYPE_CONTRACT_VERSION };
|
|
66
87
|
var TEST_LANGUAGE = JSON.stringify(readLanguageBundle(process.cwd()));
|
|
67
88
|
var shared;
|
|
68
89
|
function loadTestKernel() {
|
|
69
90
|
return shared ??= load();
|
|
70
91
|
}
|
|
71
|
-
var
|
|
72
|
-
function loadTestSeedProgram() {
|
|
73
|
-
const run = (args) => execFileSync("orb", [...args], { cwd: process.cwd(), encoding: "utf8", maxBuffer: 512 * 1024 * 1024 });
|
|
74
|
-
const which = run(["behaviors", "which", "std/behaviors/std-mock-seed"]).trim().split("\n").pop() ?? "";
|
|
75
|
-
const match = WHICH_LINE.exec(which);
|
|
76
|
-
if (match === null) return Promise.reject(new Error(`std/behaviors/std-mock-seed is not installed: ${which}`));
|
|
77
|
-
return Promise.resolve(OrbitalSchemaSchema.parse(JSON.parse(run(["resolve", match[1]]))));
|
|
78
|
-
}
|
|
79
|
-
var KERNEL_ENGINE = { loadModule: () => loadTestKernel(), loadLanguage: () => Promise.resolve(TEST_LANGUAGE), loadSeedProgram: loadTestSeedProgram };
|
|
92
|
+
var KERNEL_ENGINE = { loadModule: () => loadTestKernel() };
|
|
80
93
|
var ENGINES = KERNEL_AVAILABLE ? [["kernel", KERNEL_ENGINE]] : [];
|
|
81
94
|
async function loadFreshClientKernel() {
|
|
82
95
|
const dir = process.env.ALMADAR_KERNEL_DIR;
|
|
@@ -86,29 +99,83 @@ async function loadFreshClientKernel() {
|
|
|
86
99
|
`${pathToFileURL(files.glue).href}?fresh=${Math.random()}`
|
|
87
100
|
);
|
|
88
101
|
glue.initSync({ module: readFileSync(files.wasm) });
|
|
102
|
+
glue.installLanguage(TEST_LANGUAGE);
|
|
89
103
|
installKernelEvaluator(glue);
|
|
104
|
+
installNativeLanguages();
|
|
90
105
|
return glue;
|
|
91
106
|
}
|
|
92
107
|
async function warmKernel() {
|
|
93
108
|
if (!KERNEL_AVAILABLE) return;
|
|
94
109
|
await KERNEL_ENGINE.loadModule();
|
|
95
|
-
await import('./kernel-client-
|
|
110
|
+
await import('./kernel-client-TZKGHJRY.js');
|
|
96
111
|
}
|
|
97
|
-
|
|
98
|
-
// src/test-support/stateless-kernel.ts
|
|
99
|
-
function statelessKernelTransport(schema, user = async () => void 0) {
|
|
112
|
+
function statelessKernelTransport(schema) {
|
|
100
113
|
let template;
|
|
101
114
|
return createInProcessTransport(async (orbital, request) => {
|
|
102
|
-
|
|
103
|
-
template ??= loadTestKernel().then((kernel) => openLocalKernel({ kernel, language: TEST_LANGUAGE, schema, persistence: nativeMemoryPersistence(kernel) }));
|
|
115
|
+
template ??= loadTestKernel().then((kernel) => openLocalKernel({ kernel, schema, persistence: nativeMemoryPersistence(kernel) }));
|
|
104
116
|
const engine = (await template).fork();
|
|
105
117
|
try {
|
|
106
|
-
engine.
|
|
107
|
-
return await (0, src_exports.evaluateOnKernel)({ engine, orbital }, request, viewer, request.locale);
|
|
118
|
+
return await evaluateOnKernel({ engine, orbital }, request, request.locale);
|
|
108
119
|
} finally {
|
|
109
120
|
engine.dispose();
|
|
110
121
|
}
|
|
111
122
|
}, { carriesCircuitState: true });
|
|
112
123
|
}
|
|
124
|
+
var lowered = /* @__PURE__ */ new Map();
|
|
125
|
+
var lockDir = join(tmpdir(), "almadar-client-program.lock");
|
|
126
|
+
function holderAlive() {
|
|
127
|
+
try {
|
|
128
|
+
process.kill(Number(readFileSync(join(lockDir, "pid"), "utf8")), 0);
|
|
129
|
+
return true;
|
|
130
|
+
} catch {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function compileExclusively(compile) {
|
|
135
|
+
const wait = new Int32Array(new SharedArrayBuffer(4));
|
|
136
|
+
for (; ; ) {
|
|
137
|
+
try {
|
|
138
|
+
mkdirSync(lockDir);
|
|
139
|
+
writeFileSync(join(lockDir, "pid"), String(process.pid));
|
|
140
|
+
break;
|
|
141
|
+
} catch (error) {
|
|
142
|
+
if (!(error instanceof Error) || !("code" in error) || error.code !== "EEXIST") throw error;
|
|
143
|
+
if (!holderAlive()) rmSync(lockDir, { recursive: true, force: true });
|
|
144
|
+
Atomics.wait(wait, 0, 0, 25);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
return compile();
|
|
149
|
+
} finally {
|
|
150
|
+
rmSync(lockDir, { recursive: true, force: true });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function clientProgram(source, files = {}) {
|
|
154
|
+
const bin = process.env.ORB_BIN;
|
|
155
|
+
if (bin === void 0 || bin === "") throw new Error("clientProgram: set ORB_BIN to the installed orb binary that lowers the test programs");
|
|
156
|
+
const key = JSON.stringify([source, files]);
|
|
157
|
+
const known = lowered.get(key);
|
|
158
|
+
if (known !== void 0) return structuredClone(known);
|
|
159
|
+
const dir = mkdtempSync(join(tmpdir(), "client-program-"));
|
|
160
|
+
try {
|
|
161
|
+
const file = join(dir, "program.lolo");
|
|
162
|
+
writeFileSync(file, source);
|
|
163
|
+
const served = join(dir, "out/packages/client/public");
|
|
164
|
+
for (const [path, text] of Object.entries(files)) {
|
|
165
|
+
for (const target of [join(dir, path), join(served, path)]) {
|
|
166
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
167
|
+
writeFileSync(target, text);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const schema = compileExclusively(() => {
|
|
171
|
+
execFileSync(bin, ["compile", file, "-o", join(dir, "out"), "--mode", "client"], { cwd: dir, stdio: "pipe" });
|
|
172
|
+
return parseOrbitalSchema(JSON.parse(readFileSync(join(served, "program.client.orb"), "utf8")));
|
|
173
|
+
});
|
|
174
|
+
lowered.set(key, schema);
|
|
175
|
+
return structuredClone(schema);
|
|
176
|
+
} finally {
|
|
177
|
+
rmSync(dir, { recursive: true, force: true });
|
|
178
|
+
}
|
|
179
|
+
}
|
|
113
180
|
|
|
114
|
-
export { ENGINES, KERNEL_AVAILABLE, KERNEL_ENGINE, TEST_LANGUAGE, loadFreshClientKernel, loadTestKernel,
|
|
181
|
+
export { ENGINES, KERNEL_AVAILABLE, KERNEL_ENGINE, TEST_LANGUAGE, TEST_STAMP, TEST_TYPE_CONTRACT_VERSION, clientProgram, loadFreshClientKernel, loadTestKernel, statelessKernelTransport, stubKernelModule, warmKernel };
|
package/dist/three/index.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { C as CanvasPointLightConfig } from '../Canvas3DHost-
|
|
1
|
+
import { C as CanvasPointLightConfig } from '../Canvas3DHost-BkZQB5l2.js';
|
|
2
2
|
import { IsometricTile, IsometricUnit, IsometricFeature } from '../components/index.js';
|
|
3
|
-
export { c as Canvas3DHost, d as Canvas3DHostHandle, e as Canvas3DHostProps, c as GameCanvas3D, U as UnitAnimationState } from '../Canvas3DHost-
|
|
3
|
+
export { c as Canvas3DHost, d as Canvas3DHostHandle, e as Canvas3DHostProps, c as GameCanvas3D, U as UnitAnimationState } from '../Canvas3DHost-BkZQB5l2.js';
|
|
4
4
|
import React__default, { Component, ReactNode, ErrorInfo } from 'react';
|
|
5
5
|
import * as THREE from 'three';
|
|
6
6
|
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
|
7
7
|
import { JsonObject, EventEmit, OrbitalSchema } from '@almadar/core';
|
|
8
8
|
import { ZoomLevel } from '../avl/index.js';
|
|
9
|
-
import { b as Avl3DModelOverrides } from '../avl-3d-context-
|
|
10
|
-
export { d as AVL_3D_COLORS, A as Avl3DConfig, a as Avl3DContext, C as CAMERA_POSITIONS, P as Position3D, e as arcCurve3D, f as fibonacciSpherePositions, g as goldenSpiralPositions, o as orbitRingPositions, s as selfLoopCurve3D, t as treeLayout3D, u as useAvl3DConfig } from '../avl-3d-context-
|
|
9
|
+
import { b as Avl3DModelOverrides } from '../avl-3d-context-BycmO6tG.js';
|
|
10
|
+
export { d as AVL_3D_COLORS, A as Avl3DConfig, a as Avl3DContext, C as CAMERA_POSITIONS, P as Position3D, e as arcCurve3D, f as fibonacciSpherePositions, g as goldenSpiralPositions, o as orbitRingPositions, s as selfLoopCurve3D, t as treeLayout3D, u as useAvl3DConfig } from '../avl-3d-context-BycmO6tG.js';
|
|
11
11
|
import { ApplicationLevelData, OrbitalLevelData, TraitLevelData, TransitionLevelData } from '../avl/index.js';
|
|
12
|
-
import '../paintDispatch-
|
|
12
|
+
import '../paintDispatch-CuJLsr9Y.js';
|
|
13
13
|
import '../fx-CmQjnHmT.js';
|
|
14
14
|
import 'lucide-react';
|
|
15
|
-
import '../EventBusProvider-
|
|
15
|
+
import '../EventBusProvider-BFFHfN4O.js';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Scene3D
|
package/dist/three/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { goldenSpiralPositions, forceDirectedPositions, Avl3DOrbitalNode, Avl3DCrossWire, Avl3DEntityCore, fibonacciSpherePositions, Avl3DLabel, Avl3DStateNode, Avl3DTransitionArc, Avl3DExprTree, AVL_3D_COLORS, zoomReducer, initialZoomState, CAMERA_POSITIONS, getBreadcrumbs, Avl3DTooltip } from '../chunk-GFXCPUMX.js';
|
|
3
|
+
export { AVL_3D_COLORS, CAMERA_POSITIONS, arcCurve3D, fibonacciSpherePositions, goldenSpiralPositions, orbitRingPositions, selfLoopCurve3D, treeLayout3D } from '../chunk-GFXCPUMX.js';
|
|
3
4
|
import { useAvl3DPalette, Avl3DContext } from '../chunk-EOWMARUB.js';
|
|
4
5
|
export { Avl3DContext, useAvl3DConfig } from '../chunk-EOWMARUB.js';
|
|
5
|
-
import { useOnScreen, useCanvasTheme, withSeries, resolveDrawableColors, markColor, applySceneMaterials, collectDrawnItems, buildHitIndex, withPreviewPosition, isValidScenePos, isAnimatedShape, applyShapeAnimation, expandFxLayer, isAnimatedGroup, applyMeshAnimation, spriteAssetState, SPRITE_FALLBACK_FILL, isAnimatedMesh, clampSegments, polyhedronBounds } from '../chunk-
|
|
6
|
-
import { parseTransitionLevel, parseTraitLevel, parseOrbitalLevel, parseApplicationLevel } from '../chunk-
|
|
7
|
-
import { AVL_INK, resolveThemeColor } from '../chunk-
|
|
8
|
-
import { keyMapCode, resolveKeyMapEvent } from '../chunk-
|
|
9
|
-
import '../chunk-
|
|
10
|
-
import { useEventBus, useTranslate, cn, useEmitEvent, isAtlasAsset, getAtlas, subRectFor, Box, HStack, Typography, pressableProps, useTheme, useThemeScope } from '../chunk-MBQAMMSE.js';
|
|
6
|
+
import { useOnScreen, useCanvasTheme, withSeries, resolveDrawableColors, markColor, applySceneMaterials, collectDrawnItems, buildHitIndex, withPreviewPosition, isValidScenePos, isAnimatedShape, applyShapeAnimation, expandFxLayer, isAnimatedGroup, applyMeshAnimation, spriteAssetState, SPRITE_FALLBACK_FILL, isAnimatedMesh, clampSegments, polyhedronBounds } from '../chunk-4T3P43NS.js';
|
|
7
|
+
import { parseTransitionLevel, parseTraitLevel, parseOrbitalLevel, parseApplicationLevel } from '../chunk-PCR37T3U.js';
|
|
8
|
+
import { AVL_INK, resolveThemeColor } from '../chunk-UXLE3IPR.js';
|
|
9
|
+
import { keyMapCode, resolveKeyMapEvent } from '../chunk-ILZ7ORX7.js';
|
|
10
|
+
import { usePrefersReducedMotion, useEventBus, useTranslate, cn, useEmitEvent, isAtlasAsset, getAtlas, subRectFor, Box, HStack, Typography, pressableProps, useTheme, useThemeScope } from '../chunk-4YXBKHHM.js';
|
|
11
11
|
import '../chunk-G7DCAZ22.js';
|
|
12
12
|
import React3, { createContext, forwardRef, useRef, useState, useMemo, useEffect, useCallback, useImperativeHandle, Component, useContext, useReducer, useLayoutEffect } from 'react';
|
|
13
13
|
import { Canvas, useThree, useFrame } from '@react-three/fiber';
|
|
@@ -46,12 +46,12 @@ function useGameCanvas3DEvents(options) {
|
|
|
46
46
|
(tile, event) => {
|
|
47
47
|
if (tileClickEvent) {
|
|
48
48
|
emit(tileClickEvent, {
|
|
49
|
-
tileId: tile.id,
|
|
49
|
+
...tile.id !== void 0 ? { tileId: tile.id } : {},
|
|
50
50
|
x: tile.x,
|
|
51
51
|
z: tile.z ?? tile.y ?? 0,
|
|
52
|
-
type: tile.type,
|
|
53
|
-
terrain: tile.terrain,
|
|
54
|
-
elevation: tile.elevation
|
|
52
|
+
...tile.type !== void 0 ? { type: tile.type } : {},
|
|
53
|
+
...tile.terrain !== void 0 ? { terrain: tile.terrain } : {},
|
|
54
|
+
...tile.elevation !== void 0 ? { elevation: tile.elevation } : {}
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
optionsRef.current.onTileClick?.(tile, event);
|
|
@@ -63,14 +63,14 @@ function useGameCanvas3DEvents(options) {
|
|
|
63
63
|
if (unitClickEvent) {
|
|
64
64
|
emit(unitClickEvent, {
|
|
65
65
|
unitId: unit.id,
|
|
66
|
-
x: unit.x,
|
|
66
|
+
...unit.x !== void 0 ? { x: unit.x } : {},
|
|
67
67
|
z: unit.z ?? unit.y ?? 0,
|
|
68
|
-
unitType: unit.unitType,
|
|
69
|
-
name: unit.name,
|
|
70
|
-
team: unit.team,
|
|
71
|
-
faction: unit.faction,
|
|
72
|
-
health: unit.health,
|
|
73
|
-
maxHealth: unit.maxHealth
|
|
68
|
+
...unit.unitType !== void 0 ? { unitType: unit.unitType } : {},
|
|
69
|
+
...unit.name !== void 0 ? { name: unit.name } : {},
|
|
70
|
+
...unit.team !== void 0 ? { team: unit.team } : {},
|
|
71
|
+
...unit.faction !== void 0 ? { faction: unit.faction } : {},
|
|
72
|
+
...unit.health !== void 0 ? { health: unit.health } : {},
|
|
73
|
+
...unit.maxHealth !== void 0 ? { maxHealth: unit.maxHealth } : {}
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
optionsRef.current.onUnitClick?.(unit, event);
|
|
@@ -81,11 +81,11 @@ function useGameCanvas3DEvents(options) {
|
|
|
81
81
|
(feature, event) => {
|
|
82
82
|
if (featureClickEvent) {
|
|
83
83
|
emit(featureClickEvent, {
|
|
84
|
-
featureId: feature.id,
|
|
84
|
+
...feature.id !== void 0 ? { featureId: feature.id } : {},
|
|
85
85
|
x: feature.x,
|
|
86
86
|
z: feature.z ?? feature.y ?? 0,
|
|
87
87
|
type: feature.type,
|
|
88
|
-
elevation: feature.elevation
|
|
88
|
+
...feature.elevation !== void 0 ? { elevation: feature.elevation } : {}
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
91
|
optionsRef.current.onFeatureClick?.(feature, event);
|
|
@@ -110,10 +110,10 @@ function useGameCanvas3DEvents(options) {
|
|
|
110
110
|
if (tile) {
|
|
111
111
|
if (tileHoverEvent) {
|
|
112
112
|
emit(tileHoverEvent, {
|
|
113
|
-
tileId: tile.id,
|
|
113
|
+
...tile.id !== void 0 ? { tileId: tile.id } : {},
|
|
114
114
|
x: tile.x,
|
|
115
115
|
z: tile.z ?? tile.y ?? 0,
|
|
116
|
-
type: tile.type
|
|
116
|
+
...tile.type !== void 0 ? { type: tile.type } : {}
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
} else {
|
|
@@ -406,10 +406,11 @@ function FollowCamera3D({
|
|
|
406
406
|
offset
|
|
407
407
|
}) {
|
|
408
408
|
const { camera } = useThree();
|
|
409
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
409
410
|
const look = useRef(new THREE5.Vector3(target[0], target[1], target[2]));
|
|
410
411
|
const goal = useRef(new THREE5.Vector3());
|
|
411
412
|
useFrame((_, delta) => {
|
|
412
|
-
const t = Math.min(1, delta * 5);
|
|
413
|
+
const t = reducedMotion ? 1 : Math.min(1, delta * 5);
|
|
413
414
|
goal.current.set(target[0] + offset[0], target[1] + offset[1], target[2] + offset[2]);
|
|
414
415
|
camera.position.lerp(goal.current, t);
|
|
415
416
|
look.current.lerp(goal.current.set(target[0], target[1], target[2]), t);
|
|
@@ -565,8 +566,9 @@ function ModelLoader({
|
|
|
565
566
|
action.fadeOut(0.15);
|
|
566
567
|
};
|
|
567
568
|
}, [mixer, clips, animation]);
|
|
569
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
568
570
|
useFrame((_, delta) => {
|
|
569
|
-
mixer?.update(delta);
|
|
571
|
+
if (!reducedMotion) mixer?.update(delta);
|
|
570
572
|
});
|
|
571
573
|
const normFactor = useMemo(() => {
|
|
572
574
|
if (!model) return 1;
|
|
@@ -818,8 +820,9 @@ function Shape3D({ node, projector, groupOpacity = 1 }) {
|
|
|
818
820
|
const animated = isAnimatedShape(node);
|
|
819
821
|
const validPos = isValidScenePos(node.position);
|
|
820
822
|
const world = validPos ? projector.toWorld(node.position) : [0, 0, 0];
|
|
823
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
821
824
|
useFrame(({ clock }) => {
|
|
822
|
-
if (!animated || !groupRef.current) return;
|
|
825
|
+
if (!animated || reducedMotion || !groupRef.current) return;
|
|
823
826
|
const view = applyShapeAnimation(node, clock.elapsedTime * 1e3);
|
|
824
827
|
groupRef.current.position.set(
|
|
825
828
|
world[0] + (view.offsetX ?? 0) * projector.cellSize,
|
|
@@ -1098,8 +1101,9 @@ function Mesh3D({
|
|
|
1098
1101
|
const g = geo?.geometry;
|
|
1099
1102
|
return () => g?.dispose();
|
|
1100
1103
|
}, [geo]);
|
|
1104
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
1101
1105
|
useFrame(({ clock }) => {
|
|
1102
|
-
if (!animated || !groupRef.current) return;
|
|
1106
|
+
if (!animated || reducedMotion || !groupRef.current) return;
|
|
1103
1107
|
const state = applyMeshAnimation(node, clock.elapsedTime * 1e3);
|
|
1104
1108
|
if (!state) return;
|
|
1105
1109
|
const [wx, wy, wz] = baseWorld;
|
|
@@ -1230,8 +1234,9 @@ function Group3D({
|
|
|
1230
1234
|
if (!node.bone || !boneStore || !boneObject) return;
|
|
1231
1235
|
return boneStore.register(node.bone, boneObject);
|
|
1232
1236
|
}, [node.bone, boneStore, boneObject]);
|
|
1237
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
1233
1238
|
useFrame(({ clock }) => {
|
|
1234
|
-
if (!animated || !ref.current) return;
|
|
1239
|
+
if (!animated || reducedMotion || !ref.current) return;
|
|
1235
1240
|
const state = applyMeshAnimation(node, clock.elapsedTime * 1e3);
|
|
1236
1241
|
if (!state) return;
|
|
1237
1242
|
const cell = projector.cellSize;
|
|
@@ -1260,12 +1265,13 @@ function FxLayer3D({
|
|
|
1260
1265
|
}) {
|
|
1261
1266
|
const [, setFrame] = useState(0);
|
|
1262
1267
|
const live = Array.isArray(node.items) && node.items.length > 0;
|
|
1268
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
1263
1269
|
useFrame(() => {
|
|
1264
|
-
if (live) setFrame((f) => (f + 1) % 1e6);
|
|
1270
|
+
if (live && !reducedMotion) setFrame((f) => (f + 1) % 1e6);
|
|
1265
1271
|
});
|
|
1266
1272
|
if (!live) return null;
|
|
1267
1273
|
const epochNow = typeof performance !== "undefined" ? performance.timeOrigin + performance.now() : 0;
|
|
1268
|
-
const children = expandFxLayer(node, epochNow, "3d",
|
|
1274
|
+
const children = expandFxLayer(node, epochNow, "3d", projector.cellSize, void 0);
|
|
1269
1275
|
return /* @__PURE__ */ jsx(Fragment, { children: children.map((c, i) => /* @__PURE__ */ jsx(Drawable3D, { node: c, projector, groupOpacity }, i)) });
|
|
1270
1276
|
}
|
|
1271
1277
|
var DEFAULT_GRID_CONFIG = {
|
|
@@ -1344,6 +1350,7 @@ var Canvas3DHost = forwardRef(
|
|
|
1344
1350
|
moveEvent
|
|
1345
1351
|
}, ref) => {
|
|
1346
1352
|
const containerRef = useRef(null);
|
|
1353
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
1347
1354
|
const onScreen = useOnScreen(containerRef);
|
|
1348
1355
|
const controlsRef = useRef(null);
|
|
1349
1356
|
const [internalError, setInternalError] = useState(null);
|
|
@@ -1767,7 +1774,7 @@ var Canvas3DHost = forwardRef(
|
|
|
1767
1774
|
ref: controlsRef,
|
|
1768
1775
|
enabled: controlsEnabled && !editable && cameraMode !== "follow" && cameraMode !== "chase",
|
|
1769
1776
|
target: cameraTarget,
|
|
1770
|
-
enableDamping:
|
|
1777
|
+
enableDamping: !reducedMotion,
|
|
1771
1778
|
dampingFactor: 0.05,
|
|
1772
1779
|
enableZoom: true,
|
|
1773
1780
|
enablePan: true,
|
|
@@ -1853,6 +1860,7 @@ var Camera3D = forwardRef(
|
|
|
1853
1860
|
return () => {
|
|
1854
1861
|
};
|
|
1855
1862
|
}, [mode, fov, zoom, viewport.aspect, set]);
|
|
1863
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
1856
1864
|
useFrame(() => {
|
|
1857
1865
|
if (onChange) {
|
|
1858
1866
|
onChange(camera);
|
|
@@ -1898,7 +1906,7 @@ var Camera3D = forwardRef(
|
|
|
1898
1906
|
minDistance,
|
|
1899
1907
|
maxDistance,
|
|
1900
1908
|
maxPolarAngle,
|
|
1901
|
-
enableDamping:
|
|
1909
|
+
enableDamping: !reducedMotion,
|
|
1902
1910
|
dampingFactor: 0.05
|
|
1903
1911
|
}
|
|
1904
1912
|
);
|
|
@@ -3010,8 +3018,9 @@ var Avl3DApplicationScene = ({
|
|
|
3010
3018
|
});
|
|
3011
3019
|
return map;
|
|
3012
3020
|
}, [data.orbitals, orbitalPositions]);
|
|
3021
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
3013
3022
|
useFrame((_, delta) => {
|
|
3014
|
-
if (!groupRef.current) return;
|
|
3023
|
+
if (!groupRef.current || reducedMotion) return;
|
|
3015
3024
|
groupRef.current.rotation.y += delta * 0.03;
|
|
3016
3025
|
});
|
|
3017
3026
|
return /* @__PURE__ */ jsxs("group", { ref: groupRef, children: [
|
|
@@ -3068,8 +3077,9 @@ function TraitOrbit({
|
|
|
3068
3077
|
const angleRef = useRef(Math.random() * Math.PI * 2);
|
|
3069
3078
|
const palette = useAvl3DPalette();
|
|
3070
3079
|
const { t } = useTranslate();
|
|
3080
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
3071
3081
|
useFrame((_, delta) => {
|
|
3072
|
-
angleRef.current += delta * speed;
|
|
3082
|
+
if (!reducedMotion) angleRef.current += delta * speed;
|
|
3073
3083
|
if (!groupRef.current) return;
|
|
3074
3084
|
const x = radius * Math.cos(angleRef.current);
|
|
3075
3085
|
const flatZ = radius * Math.sin(angleRef.current);
|
|
@@ -3589,20 +3599,21 @@ function CameraController({ targetPosition, targetLookAt, animated }) {
|
|
|
3589
3599
|
const targetPosVec = useRef(new THREE5.Vector3(...targetPosition));
|
|
3590
3600
|
const targetLookVec = useRef(new THREE5.Vector3(...targetLookAt));
|
|
3591
3601
|
const isAnimating = useRef(false);
|
|
3602
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
3592
3603
|
useEffect(() => {
|
|
3593
3604
|
const newTarget = new THREE5.Vector3(...targetPosition);
|
|
3594
3605
|
const newLookAt = new THREE5.Vector3(...targetLookAt);
|
|
3595
3606
|
if (!newTarget.equals(targetPosVec.current) || !newLookAt.equals(targetLookVec.current)) {
|
|
3596
3607
|
targetPosVec.current.copy(newTarget);
|
|
3597
3608
|
targetLookVec.current.copy(newLookAt);
|
|
3598
|
-
if (animated) {
|
|
3609
|
+
if (animated && !reducedMotion) {
|
|
3599
3610
|
isAnimating.current = true;
|
|
3600
3611
|
} else {
|
|
3601
3612
|
camera.position.copy(targetPosVec.current);
|
|
3602
3613
|
camera.lookAt(targetLookVec.current.x, targetLookVec.current.y, targetLookVec.current.z);
|
|
3603
3614
|
}
|
|
3604
3615
|
}
|
|
3605
|
-
}, [targetPosition, targetLookAt, animated, camera]);
|
|
3616
|
+
}, [targetPosition, targetLookAt, animated, reducedMotion, camera]);
|
|
3606
3617
|
useFrame((_, delta) => {
|
|
3607
3618
|
if (!isAnimating.current) return;
|
|
3608
3619
|
const speed = 3;
|
|
@@ -3620,10 +3631,11 @@ function CameraController({ targetPosition, targetLookAt, animated }) {
|
|
|
3620
3631
|
function SceneFade({ animating, children }) {
|
|
3621
3632
|
const groupRef = useRef(null);
|
|
3622
3633
|
const opacityRef = useRef(1);
|
|
3634
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
3623
3635
|
useFrame((_, delta) => {
|
|
3624
3636
|
if (!groupRef.current) return;
|
|
3625
3637
|
const target = animating ? 0 : 1;
|
|
3626
|
-
opacityRef.current = THREE5.MathUtils.damp(opacityRef.current, target, 5, delta);
|
|
3638
|
+
opacityRef.current = reducedMotion ? target : THREE5.MathUtils.damp(opacityRef.current, target, 5, delta);
|
|
3627
3639
|
groupRef.current.visible = opacityRef.current > 0.05;
|
|
3628
3640
|
const s = 0.9 + opacityRef.current * 0.1;
|
|
3629
3641
|
groupRef.current.scale.setScalar(s);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { D as DrawableNode } from './paintDispatch-
|
|
2
|
-
import { OrbitalVerificationAPI, TraitStateSnapshot, EventPayload, BusEvent, VerificationCheck, BridgeHealth, VerificationSnapshot, VerificationSummary, TransitionTrace,
|
|
1
|
+
import { D as DrawableNode } from './paintDispatch-CuJLsr9Y.js';
|
|
2
|
+
import { OrbitalVerificationAPI, TraitStateSnapshot, EventPayload, BusEvent, VerificationCheck, BridgeHealth, VerificationSnapshot, VerificationSummary, TransitionTrace, EventRequest, EventResponse, ServerResponseTrace, EffectTrace, CheckStatus, ServerEffectResult, AssetLoadStatus } from '@almadar/core';
|
|
3
3
|
import { EventTransport } from '@almadar/shell-runtime/client/EventTransport';
|
|
4
4
|
import './verification-C5pTeMJv.js';
|
|
5
5
|
|
|
@@ -46,7 +46,7 @@ declare function recordServerResponse(orbitalName: string, event: string, respon
|
|
|
46
46
|
/** A server response's `effectResults` as timeline traces, carrying each persist's real outcome (entity, action, resulting id, denied). */
|
|
47
47
|
declare function serverEffectTraces(results: readonly ServerEffectResult[] | undefined): EffectTrace[];
|
|
48
48
|
/** Record one answered server leg on the timeline as a `server:<orbital>` trace. */
|
|
49
|
-
declare function recordOrbitalResponse(orbitalName: string, request:
|
|
49
|
+
declare function recordOrbitalResponse(orbitalName: string, request: EventRequest, response: EventResponse): void;
|
|
50
50
|
/** `transport` with every answered post recorded on the verification timeline; the one place the circuit client's server responses are captured. */
|
|
51
51
|
declare function recordingTransport(transport: EventTransport): EventTransport;
|
|
52
52
|
declare function updateBridgeHealth(health: BridgeHealth): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@almadar/shell-web",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"orbRelease": {
|
|
5
|
+
"severity": "normal"
|
|
6
|
+
},
|
|
4
7
|
"description": "Almadar TS shell web renderer pack: the browser host ports of the kernel (transports, stores, client kernel, http/oauth/os ports) and the React render substrate (components, hooks, providers, preview runtime, themes, Tailwind preset) the generated web app and the TS host program import.",
|
|
5
8
|
"license": "BUSL-1.1",
|
|
6
9
|
"type": "module",
|
|
@@ -115,6 +118,7 @@
|
|
|
115
118
|
"dist",
|
|
116
119
|
"src/core/locales",
|
|
117
120
|
"src/core/tokens/native-tokens.json",
|
|
121
|
+
"src/core/lib/band-shapes.json",
|
|
118
122
|
"themes",
|
|
119
123
|
"index.css",
|
|
120
124
|
"tailwind-preset.cjs",
|
|
@@ -130,11 +134,11 @@
|
|
|
130
134
|
"access": "public"
|
|
131
135
|
},
|
|
132
136
|
"dependencies": {
|
|
133
|
-
"@almadar/core": "^
|
|
134
|
-
"@almadar/kernel": "^
|
|
135
|
-
"@almadar/logger": "^1.
|
|
136
|
-
"@almadar/std": "^
|
|
137
|
-
"@almadar/syntax": "^
|
|
137
|
+
"@almadar/core": "^11.1.0",
|
|
138
|
+
"@almadar/kernel": "^19.0.1",
|
|
139
|
+
"@almadar/logger": "^2.1.0",
|
|
140
|
+
"@almadar/std": "^17.0.0",
|
|
141
|
+
"@almadar/syntax": "^2.0.0",
|
|
138
142
|
"@dnd-kit/core": "^6.3.1",
|
|
139
143
|
"@dnd-kit/sortable": "^10.0.0",
|
|
140
144
|
"@dnd-kit/utilities": "^3.2.2",
|
|
@@ -162,11 +166,11 @@
|
|
|
162
166
|
"remark-math": "^6.0.0",
|
|
163
167
|
"tailwind-merge": "^2.2.0",
|
|
164
168
|
"zod": "^4.6.7",
|
|
165
|
-
"@almadar/shell-browser": "^
|
|
166
|
-
"@almadar/shell-runtime": "^
|
|
169
|
+
"@almadar/shell-browser": "^1.0.0",
|
|
170
|
+
"@almadar/shell-runtime": "^1.0.0"
|
|
167
171
|
},
|
|
168
172
|
"devDependencies": {
|
|
169
|
-
"@almadar/eslint-plugin": "^
|
|
173
|
+
"@almadar/eslint-plugin": "^3.0.0",
|
|
170
174
|
"@react-three/drei": "^10.7.7",
|
|
171
175
|
"@react-three/fiber": "^9.6.0",
|
|
172
176
|
"@react-three/postprocessing": "3.0.4",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"wave": "M0 60 C240 100 480 100 720 60 C960 20 1200 20 1440 60 V100 H0 Z",
|
|
3
|
+
"arc": "M0 100 Q720 0 1440 100 Z",
|
|
4
|
+
"tilt": "M0 100 L1440 0 V100 Z",
|
|
5
|
+
"step": "M0 100 V75 H360 V50 H720 V25 H1080 V0 H1440 V100 Z",
|
|
6
|
+
"scallop": "M0 100 V40 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 a60 40 0 0 1 120 0 V100 Z"
|
|
7
|
+
}
|
package/src/core/locales/ar.json
CHANGED
|
@@ -109,6 +109,9 @@
|
|
|
109
109
|
"aria.closeToast": "إغلاق التنبيه",
|
|
110
110
|
"aria.closeAlert": "إغلاق التنبيه",
|
|
111
111
|
"aria.removeFilter": "إزالة الفلتر",
|
|
112
|
+
"aria.chart": "مخطط",
|
|
113
|
+
"aria.graph": "مخطط شبكي",
|
|
114
|
+
"aria.pageNavigation": "التنقل بين الصفحات",
|
|
112
115
|
"aria.closeDrawer": "إغلاق اللوحة",
|
|
113
116
|
"aria.closePanel": "إغلاق اللوحة",
|
|
114
117
|
"aria.dockPanel": "اللوحة الجانبية",
|
|
@@ -323,6 +326,15 @@
|
|
|
323
326
|
"docSearch.placeholder": "البحث في الوثائق...",
|
|
324
327
|
"stateMachine.loading": "جارٍ تحميل آلة الحالة…",
|
|
325
328
|
"stateMachine.noStateMachine": "لا توجد آلة حالة لعرضها",
|
|
329
|
+
"stateMachine.background": "يعمل في الخلفية",
|
|
330
|
+
"stateMachine.linked": "مدارات أخرى تتحدث معها هذه الصفحة",
|
|
331
|
+
"stateMachine.guarded": "محروس: يعمل فقط عندما يتحقق شرطه",
|
|
332
|
+
"stateMachine.selfEvents": "{{state}}: {{count}} أحداث تبقى في هذه الحالة",
|
|
333
|
+
"stateMachine.boxLabel": "{{trait}}: {{state}} ({{count}} حالات)",
|
|
334
|
+
"stateMachine.boxLabelIdle": "{{trait}} ({{count}} حالات)",
|
|
335
|
+
"stateMachine.wireLabel": "{{from}} يرسل {{event}} إلى {{to}}",
|
|
336
|
+
"stateMachine.expand": "افتح {{trait}} في مكانه",
|
|
337
|
+
"stateMachine.collapse": "أغلق {{trait}}",
|
|
326
338
|
"avl.trigger": "المُشغِّل",
|
|
327
339
|
"avl.guard": "الحارس",
|
|
328
340
|
"avl.effects": "التأثيرات",
|
|
@@ -340,6 +352,8 @@
|
|
|
340
352
|
"avl.noTraitData": "لا توجد بيانات سمة",
|
|
341
353
|
"avl.computingLayout": "جارٍ حساب التخطيط...",
|
|
342
354
|
"avl.noStateMachine": "لا توجد آلة حالات",
|
|
355
|
+
"avl.layoutFailed": "تعذّر تحميل تخطيط آلة الحالات.",
|
|
356
|
+
"avl.pendingSourceState": "تم تحديد مصدر الانتقال",
|
|
343
357
|
"avl.listensFor": "يستمع إلى {{event}}",
|
|
344
358
|
"avl.emits": "يُصدر {{event}}",
|
|
345
359
|
"avl.pageLayout": "تخطيط الصفحة",
|
|
@@ -906,6 +920,7 @@
|
|
|
906
920
|
"gridPicker.all": "الكل",
|
|
907
921
|
"gridPicker.moreRefine": "+{{count}} أخرى — دقّق بحثك",
|
|
908
922
|
"graphCanvas.noNodes": "لا توجد عقد لعرضها.",
|
|
923
|
+
"graphCanvas.selectedNode": "المحدد: {{label}}",
|
|
909
924
|
"codeBlock.noCode": "لا يوجد كود لعرضه.",
|
|
910
925
|
"codeBlock.region": "الشيفرة البرمجية",
|
|
911
926
|
"fab.action": "إجراء",
|
|
@@ -948,10 +963,6 @@
|
|
|
948
963
|
"videoEmbed.notFound": "لم يتم العثور على الفيديو أو أنه خاص",
|
|
949
964
|
"videoEmbed.notEmbeddable": "مالك الفيديو لا يسمح بتضمينه",
|
|
950
965
|
"videoEmbed.noVideo": "لم يتم اختيار فيديو",
|
|
951
|
-
"themeToggle.switchToLight": "التبديل إلى الوضع الفاتح",
|
|
952
|
-
"themeToggle.switchToDark": "التبديل إلى الوضع الداكن",
|
|
953
|
-
"themeToggle.light": "فاتح",
|
|
954
|
-
"themeToggle.dark": "داكن",
|
|
955
966
|
"avatar.alt": "الصورة الرمزية",
|
|
956
967
|
"avatar.status": "الحالة: {{status}}",
|
|
957
968
|
"avatar.status.online": "متصل",
|
|
@@ -1259,5 +1270,7 @@
|
|
|
1259
1270
|
"debug.replayForward": "الخطوة التالية",
|
|
1260
1271
|
"debug.replayPlay": "تشغيل",
|
|
1261
1272
|
"debug.replayPause": "إيقاف مؤقت",
|
|
1262
|
-
"debug.replayStep": "{{step}} / {{total}}"
|
|
1273
|
+
"debug.replayStep": "{{step}} / {{total}}",
|
|
1274
|
+
"stateMachine.inspect": "فحص: اختر سمة من الصفحة",
|
|
1275
|
+
"stateMachine.inspectHint": "انقر جزءًا من الصفحة · Esc للإيقاف"
|
|
1263
1276
|
}
|