@almadar/shell-web 0.1.0 → 1.1.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-PIXU6QH5.js +5 -0
- package/dist/AvlStateMachine-CKGMECMG.js +8 -0
- package/dist/AvlTransitionDetail-QZX6G5KJ.js +10 -0
- package/dist/AvlTransitionExplainer-26WLEIC6.js +11 -0
- package/dist/BehaviorView-JLZ4PKWY.js +10 -0
- package/dist/{EventBusProvider-CVwjkV_2.d.ts → EventBusProvider-BFFHfN4O.d.ts} +12 -0
- package/dist/{FileTree-BCFnBEuQ.d.ts → FileTree-B3GDAjaQ.d.ts} +131 -4
- package/dist/FlowCanvas-RPII4V24.js +23 -0
- package/dist/{BehaviorValueFrame-SSEMEBTG.css → FlowCanvas-VWUPMBKB.css} +189 -191
- package/dist/{GameAudioProvider-Cm9BnvmP.d.ts → GameAudioProvider-D7wo5ryN.d.ts} +5 -8
- package/dist/KernelEngineContext-CPeWQMAz.d.ts +46 -0
- package/dist/LayersPanel-M2LHWUFF.js +6 -0
- package/dist/ModuleCard-NJD6JQGD.js +6 -0
- package/dist/OrbInspector-OWWKPOBF.js +23 -0
- package/dist/{TraitValueFrame-4G3KOUBR.css → OrbInspector-VMTMZHNQ.css} +189 -191
- package/dist/{Select-mDZIwNqN.d.ts → Select-C2Uq6t86.d.ts} +17 -31
- package/dist/ServerBridge-Bqsj-lOU.d.ts +124 -0
- package/dist/{FlowCanvas-3JRMNJLV.css → UISlotRenderer-BIS6KT7T.css} +189 -191
- package/dist/UISlotRenderer-PY7FIJXN.js +23 -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.css +189 -191
- package/dist/avl/index.d.ts +107 -85
- package/dist/avl/index.js +170 -39
- package/dist/{chunk-P4LNHAFI.js → chunk-2WGR4TDJ.js} +465 -36
- package/dist/{chunk-GKIFONTE.js → chunk-3S54FWRC.js} +2 -2
- package/dist/{chunk-KVQS4GXU.js → chunk-4YJ53G7S.js} +18 -8
- package/dist/{chunk-MBQAMMSE.js → chunk-4YXBKHHM.js} +269 -658
- package/dist/{chunk-YDNJLLG6.js → chunk-57DC34LY.js} +19 -10
- package/dist/{chunk-FP3WIKTC.js → chunk-7N6ZPHQ5.js} +9 -1
- package/dist/{chunk-AILY3XPS.js → chunk-AE7VCQB6.js} +5 -6
- package/dist/{chunk-L677XGY3.js → chunk-AGVSO4WY.js} +4 -5
- package/dist/{chunk-FAJDTHWC.js → chunk-AGXD77SL.js} +2 -2
- package/dist/chunk-AU7O65OX.js +66 -0
- package/dist/{chunk-DFNZUYX4.js → chunk-FAKU5F62.js} +273 -29
- package/dist/{chunk-U6QRZASX.js → chunk-ILQXJ2AR.js} +1 -1
- package/dist/chunk-M74BCDBQ.js +490 -0
- package/dist/{chunk-GYTPOFVC.js → chunk-MS4K3K2R.js} +12095 -13329
- package/dist/{chunk-SGM3FASH.js → chunk-OWNG4JZI.js} +13 -12
- package/dist/{chunk-VFF5OO47.js → chunk-PCR37T3U.js} +15 -38
- package/dist/{chunk-SJGJJKBY.js → chunk-PRLHKBXG.js} +5 -3
- package/dist/{chunk-R5O5AUPI.js → chunk-PRXQGGCO.js} +93 -86
- package/dist/{chunk-42FY4RYA.js → chunk-REXYVBUO.js} +2 -2
- package/dist/{chunk-EQAMU2ZC.js → chunk-UTDC2NEA.js} +1 -1
- package/dist/{chunk-73SRAB4P.js → chunk-UU57VNS2.js} +2 -2
- package/dist/{chunk-TESBIVUA.js → chunk-VHC2M26B.js} +2 -2
- package/dist/{chunk-L2DEKY4J.js → chunk-VO2TTLS5.js} +3 -6
- package/dist/{chunk-2PY54Z44.js → chunk-VUIACGDU.js} +4 -5
- package/dist/{chunk-DLZF4PVE.js → chunk-YYIHRIDH.js} +3 -3
- package/dist/{chunk-DYEKAA4L.js → chunk-ZDRDJKYB.js} +243 -252
- package/dist/components/index.css +189 -191
- package/dist/components/index.d.ts +739 -289
- package/dist/components/index.js +25 -28
- package/dist/context/index.d.ts +2 -3
- package/dist/context/index.js +4 -3
- package/dist/core.d.ts +95 -19
- package/dist/core.js +2 -1
- package/dist/design-classes/index.cjs +3 -1
- package/dist/design-classes/index.js +3 -1
- package/dist/{fx-CmQjnHmT.d.ts → fx-Br8zjvu9.d.ts} +6 -6
- package/dist/hooks/index.d.ts +40 -5
- package/dist/hooks/index.js +5 -4
- package/dist/index.d.ts +40 -114
- package/dist/index.js +174 -34
- package/dist/kernel-client-JW6OH5FX.js +537 -0
- package/dist/kernel-wire-DGAySGhX.d.ts +95 -0
- package/dist/lib/index.d.ts +3 -4
- package/dist/lib/index.js +4 -4
- package/dist/{prism-AIWGN2X5.js → prism-X5YWKXO5.js} +5 -3
- package/dist/providers/index.css +189 -191
- package/dist/providers/index.d.ts +41 -28
- package/dist/providers/index.js +19 -24
- package/dist/renderer/index.d.ts +0 -2
- package/dist/renderer/index.js +1 -0
- package/dist/runtime/index.css +189 -191
- package/dist/runtime/index.d.ts +57 -253
- package/dist/runtime/index.js +18 -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/{paintDispatch-ChW5mVuK.d.ts → verificationRegistry-oopV1J1n.d.ts} +132 -30
- package/package.json +14 -38
- 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/BehaviorView-RFEE5J6E.js +0 -10
- package/dist/Canvas3DHost-_Y-5uLM_.d.ts +0 -552
- 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/OrbInspector-MHLJ6OEE.css +0 -1756
- package/dist/ServerBridge-Cm1On51b.d.ts +0 -233
- package/dist/TraitValueFrame-2PJGLLVI.js +0 -28
- package/dist/UISlotRenderer-JKFSX24W.js +0 -27
- package/dist/UISlotRenderer-KVFO6J7R.css +0 -1756
- package/dist/UserContext-DqWeZkUZ.d.ts +0 -100
- package/dist/avl-3d-context-BIRKWpaL.d.ts +0 -204
- package/dist/avl-schema-parser-CtJxJ9KU.d.ts +0 -132
- package/dist/avl-zoom-state-CKMVuBFg.d.ts +0 -17
- package/dist/chunk-2QOH2HWM.js +0 -95
- package/dist/chunk-6P3MWXYE.js +0 -440
- package/dist/chunk-B4BU77LT.js +0 -432
- package/dist/chunk-DJ433ET5.js +0 -1327
- package/dist/chunk-DZ42OJQC.js +0 -176
- package/dist/chunk-EOWMARUB.js +0 -16
- package/dist/chunk-FIW6WN23.js +0 -508
- package/dist/chunk-GAR5TQ5B.js +0 -199
- package/dist/chunk-PC7K4SK7.js +0 -1384
- 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/three/index.css +0 -503
- package/dist/three/index.d.ts +0 -1185
- package/dist/three/index.js +0 -3896
- package/dist/useKeyboardRouter-Dsq553Ur.d.ts +0 -42
- package/dist/verificationRegistry-CabxhfTv.d.ts +0 -122
|
@@ -3,24 +3,13 @@ import { NativeMemoryPersistenceAdapter } from '@almadar/shell-runtime/persisten
|
|
|
3
3
|
import * as local_store_transport_star from '@almadar/shell-runtime/runtime/evaluation/local-store-transport';
|
|
4
4
|
import { openLocalKernel as openLocalKernel$1 } from '@almadar/shell-runtime/runtime/evaluation/local-store-transport';
|
|
5
5
|
import { readPageFacts } from '@almadar/shell-browser/page-facts';
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { instancesForLocale, orbitalInlineEntities, storesRowsInBrowser, isRoutePage, tickEventKey, isJsonObject } from '@almadar/core';
|
|
7
|
+
import { createLogger, isLogLevelEnabled } from '@almadar/logger';
|
|
8
|
+
import { HostAskError, consentFromRedirect, performHostAnswer, hostAskReturn } from '@almadar/shell-runtime/kernel/host';
|
|
9
9
|
import { dispatchDeclaredInput } from '@almadar/shell-runtime/client/declared-input-dispatch';
|
|
10
10
|
import { IndexedDbPersistence } from '@almadar/shell-browser/storage';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
import * as TickScheduler_star from '@almadar/shell-runtime/runtime/time/TickScheduler';
|
|
14
|
-
import { createLogger, isLogLevelEnabled } from '@almadar/logger';
|
|
15
|
-
import * as cron_star from '@almadar/shell-runtime/runtime/time/cron';
|
|
16
|
-
import * as duration_star from '@almadar/shell-runtime/runtime/time/duration';
|
|
17
|
-
import * as composition_star from '@almadar/shell-runtime/runtime/effects/composition/index';
|
|
18
|
-
import * as types_star from '@almadar/shell-runtime/runtime/types';
|
|
19
|
-
import * as routing_star from '@almadar/shell-runtime/runtime/events/identity/routing';
|
|
20
|
-
import * as listen_targets_star from '@almadar/shell-runtime/runtime/traits/listen-targets';
|
|
21
|
-
import * as OrbitalTraitParsing_star from '@almadar/shell-runtime/runtime/traits/OrbitalTraitParsing';
|
|
22
|
-
import * as mockStoreSeed_star from '@almadar/shell-runtime/runtime/entities/mockStoreSeed';
|
|
23
|
-
import * as residence_transport_star from '@almadar/shell-runtime/runtime/evaluation/residence-transport';
|
|
11
|
+
export { eventRouteKey } from '@almadar/shell-runtime/runtime/events/identity/routing';
|
|
12
|
+
export { createResidenceTransport } from '@almadar/shell-runtime/runtime/evaluation/residence-transport';
|
|
24
13
|
|
|
25
14
|
function hasMemoryStore(kernel) {
|
|
26
15
|
return "MemoryStore" in kernel;
|
|
@@ -36,281 +25,334 @@ __export(local_store_transport_exports, {
|
|
|
36
25
|
openLocalKernel: () => openLocalKernel
|
|
37
26
|
});
|
|
38
27
|
__reExport(local_store_transport_exports, local_store_transport_star);
|
|
39
|
-
|
|
40
|
-
|
|
28
|
+
var POLL_MS = 250;
|
|
29
|
+
function consentByPopup(env) {
|
|
30
|
+
return async (request) => {
|
|
31
|
+
const popup = env.open(request.authorizeUrl);
|
|
32
|
+
if (popup === null) throw new HostAskError("unavailable", "the browser blocked the consent window");
|
|
33
|
+
for (; ; ) {
|
|
34
|
+
if (popup.closed) throw new HostAskError("cancelled", "the viewer closed the consent window");
|
|
35
|
+
let href;
|
|
36
|
+
try {
|
|
37
|
+
href = popup.location.href;
|
|
38
|
+
} catch {
|
|
39
|
+
href = void 0;
|
|
40
|
+
}
|
|
41
|
+
if (href !== void 0 && href !== "about:blank" && new URL(href).origin === env.origin) {
|
|
42
|
+
popup.close();
|
|
43
|
+
return consentFromRedirect(href);
|
|
44
|
+
}
|
|
45
|
+
await env.wait(POLL_MS);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function browserConsentEnv(win) {
|
|
50
|
+
return {
|
|
51
|
+
origin: win.location.origin,
|
|
52
|
+
open: (url) => win.open(url, "almadar-consent", "popup,width=520,height=720"),
|
|
53
|
+
wait: (ms) => new Promise((resolve) => win.setTimeout(resolve, ms))
|
|
54
|
+
};
|
|
41
55
|
}
|
|
42
56
|
|
|
43
|
-
// src/
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
opened ??= openLocalKernel({
|
|
54
|
-
kernel: seeding.kernel,
|
|
55
|
-
language: seeding.language,
|
|
56
|
-
schema: program,
|
|
57
|
-
persistence: nativeMemoryPersistence(seeding.kernel)
|
|
58
|
-
});
|
|
59
|
-
return opened.evaluate(orbital, request, scope);
|
|
60
|
-
}
|
|
57
|
+
// src/lib/host-actions.ts
|
|
58
|
+
var log = createLogger("almadar:ui:host-actions");
|
|
59
|
+
var audioHost;
|
|
60
|
+
var signOutHost;
|
|
61
|
+
var signInHost;
|
|
62
|
+
var consentHost;
|
|
63
|
+
function registerHostAudio(host) {
|
|
64
|
+
audioHost = host;
|
|
65
|
+
return () => {
|
|
66
|
+
if (audioHost === host) audioHost = void 0;
|
|
61
67
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
}
|
|
69
|
+
function registerHostSignOut(host) {
|
|
70
|
+
signOutHost = host;
|
|
71
|
+
return () => {
|
|
72
|
+
if (signOutHost === host) signOutHost = void 0;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function registerHostSignIn(host) {
|
|
76
|
+
signInHost = host;
|
|
77
|
+
return () => {
|
|
78
|
+
if (signInHost === host) signInHost = void 0;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function registerHostConsent(host) {
|
|
82
|
+
consentHost = host;
|
|
83
|
+
return () => {
|
|
84
|
+
if (consentHost === host) consentHost = void 0;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
var webHostActions = {
|
|
88
|
+
get audio() {
|
|
89
|
+
return audioHost;
|
|
90
|
+
},
|
|
91
|
+
get signOut() {
|
|
92
|
+
return signOutHost;
|
|
93
|
+
},
|
|
94
|
+
get signIn() {
|
|
95
|
+
return signInHost;
|
|
96
|
+
},
|
|
97
|
+
get consent() {
|
|
98
|
+
return consentHost ?? (typeof window === "undefined" ? void 0 : consentByPopup(browserConsentEnv(window)));
|
|
66
99
|
}
|
|
100
|
+
};
|
|
101
|
+
var traceStreams = /* @__PURE__ */ new Map();
|
|
102
|
+
function streamTrace(args, completion, dispatch, source) {
|
|
103
|
+
const { key, onMessage, failure, trait } = completion;
|
|
104
|
+
if (key === void 0 || onMessage === void 0) return;
|
|
105
|
+
const refuse = (error) => {
|
|
106
|
+
log.error("trace stream refused", { trait, key, error });
|
|
107
|
+
if (failure !== void 0 && dispatch !== void 0) void dispatch(trait, failure, { error, key, ...completion.entityId !== void 0 ? { entityId: completion.entityId } : {} });
|
|
108
|
+
};
|
|
109
|
+
const options = args[0];
|
|
110
|
+
const named = options !== void 0 && options !== null && isJsonObject(options) ? options["traits"] : void 0;
|
|
111
|
+
const traits = Array.isArray(named) ? named.flatMap((t) => typeof t === "string" ? [t] : []) : [];
|
|
112
|
+
if (traits.length === 0) return refuse("program/live trace: name the traits it observes in `traits`");
|
|
113
|
+
if (source === void 0 || dispatch === void 0) return refuse("program/live trace: this host has no kernel trace to stream");
|
|
114
|
+
if (traceStreams.has(key)) return refuse(`key ${key} already has a stream open`);
|
|
115
|
+
traceStreams.set(key, source(traits, (item) => {
|
|
116
|
+
void dispatch(trait, onMessage, { ...item, key, ...completion.entityId !== void 0 ? { entityId: completion.entityId } : {} }).catch((error) => log.error("trace item return failed", { trait, key, error: error.message }));
|
|
117
|
+
}));
|
|
67
118
|
}
|
|
68
|
-
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
119
|
+
function cancelStreams(args) {
|
|
120
|
+
const named = args[0];
|
|
121
|
+
const keys = typeof named === "string" ? [named] : Array.isArray(named) ? named.flatMap((k) => typeof k === "string" ? [k] : []) : [];
|
|
122
|
+
for (const key of keys) {
|
|
123
|
+
traceStreams.get(key)?.();
|
|
124
|
+
traceStreams.delete(key);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async function answerHostAsk(op, args, completion, dispatch, trace) {
|
|
128
|
+
if (op === "cancel-call") return cancelStreams(args);
|
|
129
|
+
if (op === "program/live" && completion?.onMessage !== void 0) return streamTrace(args, completion, dispatch, trace);
|
|
130
|
+
const outcome = await performHostAnswer(webHostActions, op, args);
|
|
131
|
+
if ("error" in outcome) log.error("host-ask refused", { op, error: outcome.error, kind: outcome.kind });
|
|
132
|
+
if (completion === void 0) return;
|
|
133
|
+
const returned = hostAskReturn(completion, outcome);
|
|
134
|
+
if (returned === void 0) return;
|
|
135
|
+
if (dispatch === void 0) {
|
|
136
|
+
log.error("host-ask has no dispatch to return its answer to", { op, trait: returned.trait, event: returned.event });
|
|
137
|
+
return;
|
|
75
138
|
}
|
|
139
|
+
await dispatch(returned.trait, returned.event, returned.entityId !== void 0 ? { ...returned.payload, entityId: returned.entityId } : returned.payload);
|
|
76
140
|
}
|
|
77
141
|
|
|
78
|
-
// src/runtime/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
142
|
+
// src/runtime/evaluation/local-store-transport.ts
|
|
143
|
+
function openLocalKernel(options) {
|
|
144
|
+
return openLocalKernel$1({ ...options, pageFacts: options.pageFacts ?? readPageFacts, hostActions: options.hostActions ?? webHostActions });
|
|
145
|
+
}
|
|
146
|
+
async function persistedMemory(kernel, database, entities, locale) {
|
|
147
|
+
const memory = nativeMemoryPersistence(kernel);
|
|
148
|
+
const firstVisit = (await database.changes()).length === 0;
|
|
149
|
+
for (const entity of entities) {
|
|
150
|
+
if (firstVisit) {
|
|
151
|
+
for (const row of instancesForLocale(entity, locale)) await database.create(entity.name, row);
|
|
152
|
+
}
|
|
153
|
+
for (const row of await database.list(entity.name)) {
|
|
154
|
+
await memory.writeWhere({ kind: "upsert", entityType: entity.name, data: row });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const keep = async (entityType, row) => {
|
|
158
|
+
await database.create(entityType, row);
|
|
159
|
+
};
|
|
160
|
+
const mirror = async (op, outcome) => {
|
|
161
|
+
if (outcome.kind === "created") await keep(op.entityType, outcome.row);
|
|
162
|
+
else if (outcome.kind === "updated") {
|
|
163
|
+
if (op.kind === "rekey") await database.delete(op.entityType, op.id);
|
|
164
|
+
await keep(op.entityType, outcome.row);
|
|
165
|
+
} else if (outcome.kind === "deleted" && op.kind !== "create" && op.kind !== "upsert") await database.delete(op.entityType, op.id);
|
|
166
|
+
};
|
|
167
|
+
return {
|
|
168
|
+
getById: (entityType, id) => memory.getById(entityType, id),
|
|
169
|
+
list: (entityType) => memory.list(entityType),
|
|
170
|
+
queryPage: (entityType, query) => memory.queryPage(entityType, query),
|
|
171
|
+
queryIds: (entityType, query) => memory.queryIds(entityType, query),
|
|
172
|
+
queryCapabilities: (entityType) => memory.queryCapabilities(entityType),
|
|
173
|
+
writeCapabilities: (entityType) => memory.writeCapabilities(entityType),
|
|
174
|
+
bindCollection: (entityType, collection) => memory.bindCollection(entityType, collection),
|
|
175
|
+
async create(entityType, data) {
|
|
176
|
+
const { id } = await memory.create(entityType, data);
|
|
177
|
+
const row = await memory.getById(entityType, id);
|
|
178
|
+
if (row !== null) await keep(entityType, row);
|
|
179
|
+
return { id };
|
|
180
|
+
},
|
|
181
|
+
async update(entityType, id, data) {
|
|
182
|
+
await memory.update(entityType, id, data);
|
|
183
|
+
const row = await memory.getById(entityType, id);
|
|
184
|
+
if (row !== null) await keep(entityType, row);
|
|
185
|
+
},
|
|
186
|
+
async delete(entityType, id) {
|
|
187
|
+
await memory.delete(entityType, id);
|
|
188
|
+
await database.delete(entityType, id);
|
|
189
|
+
},
|
|
190
|
+
async writeWhere(op) {
|
|
191
|
+
const outcome = await memory.writeWhere(op);
|
|
192
|
+
await mirror(op, outcome);
|
|
193
|
+
return outcome;
|
|
194
|
+
},
|
|
195
|
+
async writeBatch(batch) {
|
|
196
|
+
const outcomes = await memory.writeBatch(batch);
|
|
197
|
+
for (const [index, op] of batch.ops.entries()) {
|
|
198
|
+
const outcome = outcomes[index];
|
|
199
|
+
if (outcome !== void 0) await mirror(op, outcome);
|
|
200
|
+
}
|
|
201
|
+
return outcomes;
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
}
|
|
99
205
|
function browserStoreName(appName, locale) {
|
|
100
206
|
return locale !== void 0 ? `almadar:${appName}:${locale}` : `almadar:${appName}`;
|
|
101
207
|
}
|
|
102
|
-
async function openBrowserStore(databaseName, orbitals,
|
|
208
|
+
async function openBrowserStore(databaseName, orbitals, factory) {
|
|
103
209
|
const entities = orbitals.flatMap(orbitalInlineEntities).filter(storesRowsInBrowser);
|
|
104
210
|
if (entities.length === 0) return null;
|
|
105
|
-
|
|
211
|
+
return IndexedDbPersistence.open({
|
|
106
212
|
databaseName,
|
|
107
213
|
entityTypes: entities.map((e) => e.name),
|
|
108
214
|
...factory !== void 0 ? { factory } : {}
|
|
109
215
|
});
|
|
110
|
-
|
|
111
|
-
|
|
216
|
+
}
|
|
217
|
+
function browserEntities(orbitals) {
|
|
218
|
+
return orbitals.flatMap(orbitalInlineEntities).filter(storesRowsInBrowser);
|
|
112
219
|
}
|
|
113
220
|
async function openBrowserStoreTransport(options) {
|
|
114
|
-
const stored = await openBrowserStore(options.databaseName, options.schema.orbitals,
|
|
221
|
+
const stored = await openBrowserStore(options.databaseName, options.schema.orbitals, options.factory);
|
|
115
222
|
if (stored === null && options.callService === void 0) {
|
|
116
223
|
throw new Error(`openBrowserStoreTransport: schema "${options.schema.name}" declares no browser-stored entity`);
|
|
117
224
|
}
|
|
118
225
|
const memory = nativeMemoryPersistence(options.kernel);
|
|
119
|
-
const persistence = (0, local_store_transport_exports.localStorePersistence)(options.schema, stored
|
|
226
|
+
const persistence = (0, local_store_transport_exports.localStorePersistence)(options.schema, stored === null ? memory : await persistedMemory(options.kernel, stored, browserEntities(options.schema.orbitals), options.locale), memory);
|
|
120
227
|
return (0, local_store_transport_exports.createLocalStoreTransport)({
|
|
121
228
|
kernelEngine: openLocalKernel({
|
|
122
229
|
kernel: options.kernel,
|
|
123
|
-
language: options.language,
|
|
124
230
|
schema: options.schema,
|
|
125
231
|
persistence,
|
|
126
232
|
...options.callService !== void 0 ? { callService: options.callService } : {},
|
|
127
|
-
...options.
|
|
128
|
-
...options.
|
|
129
|
-
|
|
233
|
+
...options.secretPorts !== void 0 ? { secretPorts: options.secretPorts } : {},
|
|
234
|
+
...options.os !== void 0 ? { os: options.os } : {},
|
|
235
|
+
...options.gpu !== void 0 ? { gpu: options.gpu } : {}
|
|
236
|
+
}),
|
|
237
|
+
...options.locale !== void 0 ? { locale: () => options.locale } : {}
|
|
130
238
|
});
|
|
131
239
|
}
|
|
132
|
-
function openBundledBrowserStore(
|
|
133
|
-
const schema = parseOrbitalSchema(bundled);
|
|
240
|
+
function openBundledBrowserStore(schema, kernel, locale, callService, secretPorts, os) {
|
|
134
241
|
return openBrowserStoreTransport({
|
|
135
242
|
databaseName: browserStoreName(schema.name, locale),
|
|
136
243
|
schema,
|
|
137
|
-
kernel,
|
|
138
|
-
language,
|
|
139
|
-
loadSeedProgram,
|
|
140
244
|
...locale !== void 0 ? { locale } : {},
|
|
245
|
+
kernel,
|
|
141
246
|
...callService !== void 0 ? { callService } : {},
|
|
142
|
-
...
|
|
143
|
-
...
|
|
247
|
+
...secretPorts !== void 0 ? { secretPorts } : {},
|
|
248
|
+
...os !== void 0 ? { os } : {}
|
|
144
249
|
});
|
|
145
250
|
}
|
|
146
251
|
var tickLog = createLogger("almadar:runtime:browser-host:ticks");
|
|
147
252
|
var queueLog = createLogger("almadar:runtime:browser-host:queue");
|
|
148
|
-
|
|
149
|
-
for (const entry of traitIndex.byName.values()) {
|
|
150
|
-
for (const tick of entry.irTrait.ticks ?? []) {
|
|
151
|
-
if (tick.interval === "frame") {
|
|
152
|
-
throw new Error(`openBrowserHost has no frame clock; ${entry.orbitalName}.${entry.traitDef.name} tick '${tick.name}' runs every frame`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
253
|
+
var TICK_PASS_MS = 16;
|
|
157
254
|
async function openBrowserHost(options) {
|
|
158
|
-
const browserStore = await openBrowserStore(options.databaseName, options.schema.orbitals,
|
|
255
|
+
const browserStore = await openBrowserStore(options.databaseName, options.schema.orbitals, options.factory);
|
|
159
256
|
const memory = nativeMemoryPersistence(options.kernel);
|
|
160
|
-
const persistence = (0, local_store_transport_exports.localStorePersistence)(options.schema, browserStore
|
|
161
|
-
const traitIndex = (0, trait_index_exports.buildTraitIndex)(options.schema.orbitals);
|
|
162
|
-
refuseUnhostedTicks(traitIndex);
|
|
257
|
+
const persistence = (0, local_store_transport_exports.localStorePersistence)(options.schema, browserStore === null ? memory : await persistedMemory(options.kernel, browserStore, browserEntities(options.schema.orbitals), options.locale), memory);
|
|
163
258
|
const { schema } = options;
|
|
164
259
|
let transport;
|
|
165
260
|
const listeners = /* @__PURE__ */ new Set();
|
|
166
|
-
|
|
167
|
-
const lane = [];
|
|
168
|
-
let pumping = false;
|
|
169
|
-
let running;
|
|
170
|
-
const pump = async () => {
|
|
171
|
-
if (pumping) return;
|
|
172
|
-
pumping = true;
|
|
173
|
-
for (let grant = lane.shift(); grant !== void 0; grant = lane.shift()) {
|
|
174
|
-
await new Promise(grant);
|
|
175
|
-
}
|
|
176
|
-
pumping = false;
|
|
177
|
-
};
|
|
178
|
-
const take = (turn) => new Promise((taken) => {
|
|
179
|
-
queueLog.debug("queue:wait", { turn: turn.id, running: running?.id });
|
|
180
|
-
turn.lane.push((free) => {
|
|
181
|
-
turn.held = true;
|
|
182
|
-
running = turn;
|
|
183
|
-
queueLog.debug("queue:take", { turn: turn.id });
|
|
184
|
-
turn.release = () => {
|
|
185
|
-
queueLog.debug("queue:release", { turn: turn.id });
|
|
186
|
-
turn.held = false;
|
|
187
|
-
if (running === turn) running = void 0;
|
|
188
|
-
free();
|
|
189
|
-
};
|
|
190
|
-
taken();
|
|
191
|
-
});
|
|
192
|
-
void pump();
|
|
193
|
-
});
|
|
194
|
-
const enqueue = async (lane2, work) => {
|
|
195
|
-
const turn = { id: ++turns, lane: lane2, held: false, done: false, release: () => void 0 };
|
|
196
|
-
await take(turn);
|
|
197
|
-
try {
|
|
198
|
-
return await work();
|
|
199
|
-
} finally {
|
|
200
|
-
turn.done = true;
|
|
201
|
-
if (turn.held) turn.release();
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
|
-
const serially = (work) => enqueue(lane, work);
|
|
205
|
-
const outsideEventQueue = async (work) => {
|
|
206
|
-
const turn = running;
|
|
207
|
-
queueLog.debug("queue:outside", { turn: turn?.id, held: turn?.held });
|
|
208
|
-
if (turn === void 0 || !turn.held) return work();
|
|
209
|
-
turn.release();
|
|
210
|
-
try {
|
|
211
|
-
return await work();
|
|
212
|
-
} finally {
|
|
213
|
-
await take(turn);
|
|
214
|
-
}
|
|
215
|
-
};
|
|
216
|
-
const servicePorts = (caller, user, message) => {
|
|
217
|
-
const lentBy = running;
|
|
261
|
+
const servicePorts = (caller, user, message, assertReentry) => {
|
|
218
262
|
return {
|
|
219
263
|
caller,
|
|
220
|
-
inputs: () =>
|
|
221
|
-
readableEntities: () =>
|
|
264
|
+
inputs: () => kernelEngine.externalInputs(),
|
|
265
|
+
readableEntities: () => kernelEngine.readableEntities(),
|
|
222
266
|
dispatchInput: (orbital, request) => {
|
|
223
267
|
const host = transport;
|
|
224
268
|
if (!host) return Promise.reject(new Error("openBrowserHost: the host is not open yet"));
|
|
225
|
-
|
|
226
|
-
return dispatchDeclaredInput(
|
|
227
|
-
const response = await send(o, r);
|
|
269
|
+
assertReentry?.();
|
|
270
|
+
return dispatchDeclaredInput(kernelEngine, orbital, request, async (o, r) => {
|
|
271
|
+
const response = await host.send(o, r);
|
|
228
272
|
for (const listener of listeners) listener(o, r, response);
|
|
229
273
|
return response;
|
|
230
274
|
});
|
|
231
275
|
},
|
|
232
|
-
read: async (entity) =>
|
|
276
|
+
read: async (entity) => kernelEngine.readRows(entity, await persistence.list(entity), user),
|
|
233
277
|
message
|
|
234
278
|
};
|
|
235
279
|
};
|
|
236
280
|
let deferred;
|
|
237
281
|
const kernelEngine = openLocalKernel({
|
|
238
282
|
kernel: options.kernel,
|
|
239
|
-
language: options.language,
|
|
240
283
|
schema,
|
|
241
284
|
persistence,
|
|
242
285
|
callService: options.callService,
|
|
243
286
|
servicePorts,
|
|
244
287
|
deferCallOutcome: () => deferred,
|
|
245
|
-
...options.
|
|
288
|
+
...options.secretPorts !== void 0 ? { secretPorts: options.secretPorts } : {},
|
|
246
289
|
...options.onDevice !== void 0 ? { onDevice: options.onDevice } : {},
|
|
247
|
-
...options.tabs !== void 0 ? { tabs: options.tabs } : {}
|
|
290
|
+
...options.tabs !== void 0 ? { tabs: options.tabs } : {},
|
|
291
|
+
...options.os !== void 0 ? { os: options.os } : {},
|
|
292
|
+
...options.gpu !== void 0 ? { gpu: options.gpu } : {}
|
|
248
293
|
});
|
|
249
|
-
const local = (0, local_store_transport_exports.createLocalStoreTransport)({ kernelEngine
|
|
294
|
+
const local = (0, local_store_transport_exports.createLocalStoreTransport)({ kernelEngine });
|
|
250
295
|
transport = local;
|
|
251
296
|
deferred = (call) => {
|
|
252
297
|
const request = {
|
|
253
298
|
event: call.event,
|
|
254
299
|
...call.payload !== void 0 ? { payload: call.payload } : {},
|
|
300
|
+
...call.heldPayload !== void 0 ? { heldPayload: call.heldPayload } : {},
|
|
255
301
|
targetTrait: call.traitName,
|
|
256
302
|
...call.entityId !== void 0 ? { entityId: call.entityId } : {},
|
|
257
303
|
...call.originClientId !== void 0 ? { clientId: call.originClientId } : {},
|
|
258
|
-
...call.user !== void 0 ? { user: call.user } : {},
|
|
259
304
|
...call.locale !== void 0 ? { locale: call.locale } : {}
|
|
260
305
|
};
|
|
261
|
-
void
|
|
262
|
-
const response = await local.send(call.orbital, request);
|
|
306
|
+
void local.send(call.orbital, request).then((response) => {
|
|
263
307
|
for (const listener of listeners) listener(call.orbital, request, response);
|
|
264
308
|
}).catch((error) => {
|
|
265
309
|
queueLog.error("deferred-outcome:failed", { orbital: call.orbital, event: call.event, trait: call.traitName, error: error.message });
|
|
266
310
|
});
|
|
267
311
|
};
|
|
268
|
-
const
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
let firing = false;
|
|
273
|
-
const fire = () => {
|
|
274
|
-
if (firing) return;
|
|
275
|
-
firing = true;
|
|
276
|
-
const request = {
|
|
277
|
-
event: tickEventKey(tick.name),
|
|
278
|
-
runTick: { trait: entry.traitDef.name, tick: tick.name },
|
|
279
|
-
targetTrait: entry.traitDef.name,
|
|
280
|
-
tick: tick.name
|
|
281
|
-
};
|
|
282
|
-
void serially(async () => {
|
|
283
|
-
const response = await local.send(entry.orbitalName, request);
|
|
284
|
-
if (response.transitioned) for (const listener of listeners) listener(entry.orbitalName, request, response);
|
|
285
|
-
}).catch((error) => {
|
|
286
|
-
tickLog.error("tick:failed", { orbital: entry.orbitalName, trait: entry.traitDef.name, tick: tick.name, error: error.message });
|
|
287
|
-
}).finally(() => {
|
|
288
|
-
firing = false;
|
|
289
|
-
});
|
|
290
|
-
};
|
|
291
|
-
tickHandles.push(
|
|
292
|
-
typeof tick.interval === "string" && (0, cron_exports.isValidCronExpression)(tick.interval) ? scheduler.addCron(tick.interval, fire) : scheduler.add(typeof tick.interval === "number" ? tick.interval : (0, duration_exports.parseDurationString)(tick.interval), fire)
|
|
293
|
-
);
|
|
312
|
+
const runnable = /* @__PURE__ */ new Map();
|
|
313
|
+
for (const trait of kernelEngine.programSurface().traits) {
|
|
314
|
+
for (const tick of trait.ticks) {
|
|
315
|
+
runnable.set(`${trait.name}::${tick.name}`, { orbitalName: trait.orbital, traitName: trait.name, tickName: tick.name });
|
|
294
316
|
}
|
|
295
317
|
}
|
|
318
|
+
const firing = /* @__PURE__ */ new Set();
|
|
319
|
+
const fire = (key, tick) => {
|
|
320
|
+
if (firing.has(key)) return;
|
|
321
|
+
firing.add(key);
|
|
322
|
+
const request = {
|
|
323
|
+
event: tickEventKey(tick.tickName),
|
|
324
|
+
runTick: { trait: tick.traitName, tick: tick.tickName },
|
|
325
|
+
targetTrait: tick.traitName,
|
|
326
|
+
tick: tick.tickName
|
|
327
|
+
};
|
|
328
|
+
void local.send(tick.orbitalName, request).then((response) => {
|
|
329
|
+
if (response.transitioned) for (const listener of listeners) listener(tick.orbitalName, request, response);
|
|
330
|
+
}).catch((error) => {
|
|
331
|
+
tickLog.error("tick:failed", { orbital: tick.orbitalName, trait: tick.traitName, tick: tick.tickName, error: error.message });
|
|
332
|
+
}).finally(() => {
|
|
333
|
+
firing.delete(key);
|
|
334
|
+
});
|
|
335
|
+
};
|
|
336
|
+
const timer = runnable.size === 0 ? void 0 : setInterval(() => {
|
|
337
|
+
for (const due of Object.values(kernelEngine.tickPass(performance.now())).flat()) {
|
|
338
|
+
const key = `${due.trait}::${due.tick}`;
|
|
339
|
+
const tick = runnable.get(key);
|
|
340
|
+
if (tick !== void 0) fire(key, tick);
|
|
341
|
+
}
|
|
342
|
+
}, TICK_PASS_MS);
|
|
296
343
|
return {
|
|
297
344
|
...local,
|
|
298
|
-
send: (orbitalName, request) => serially(() => local.send(orbitalName, request)),
|
|
299
345
|
onInputDispatched(listener) {
|
|
300
346
|
listeners.add(listener);
|
|
301
347
|
return () => listeners.delete(listener);
|
|
302
348
|
},
|
|
303
349
|
routeMounts: (routePath) => kernelEngine.routeMounts(routePath),
|
|
304
350
|
close() {
|
|
305
|
-
|
|
351
|
+
if (timer !== void 0) clearInterval(timer);
|
|
306
352
|
}
|
|
307
353
|
};
|
|
308
354
|
}
|
|
309
355
|
|
|
310
|
-
// src/runtime/effects/composition/index.ts
|
|
311
|
-
var composition_exports = {};
|
|
312
|
-
__reExport(composition_exports, composition_star);
|
|
313
|
-
|
|
314
356
|
// src/runtime/ui/contract-errors.ts
|
|
315
357
|
var RendererContractViolationError = class extends Error {
|
|
316
358
|
constructor(message) {
|
|
@@ -447,20 +489,6 @@ function buildOrbitalsByTrait(schema, resolvedPages = []) {
|
|
|
447
489
|
return map;
|
|
448
490
|
}
|
|
449
491
|
|
|
450
|
-
// src/runtime/ui/traitLinkedEntities.ts
|
|
451
|
-
function buildTraitLinkedEntities(ir) {
|
|
452
|
-
const map = /* @__PURE__ */ new Map();
|
|
453
|
-
for (const page of ir.pages.values()) {
|
|
454
|
-
for (const binding of page.traits) {
|
|
455
|
-
if (binding.linkedEntity) map.set(binding.trait.name, binding.linkedEntity);
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
for (const trait of ir.traits.values()) {
|
|
459
|
-
if (trait.linkedEntity && !map.has(trait.name)) map.set(trait.name, trait.linkedEntity);
|
|
460
|
-
}
|
|
461
|
-
return map;
|
|
462
|
-
}
|
|
463
|
-
|
|
464
492
|
// src/runtime/ui/embedded-traits.ts
|
|
465
493
|
var TRAIT_BINDING_PREFIX = "@trait.";
|
|
466
494
|
function collectTraitRefsFromValue(value, into) {
|
|
@@ -499,19 +527,6 @@ function collectTraitRefsFromEffects(effects, into) {
|
|
|
499
527
|
}
|
|
500
528
|
}
|
|
501
529
|
}
|
|
502
|
-
function collectTraitRefsFromResolvedTrait(trait) {
|
|
503
|
-
const out = /* @__PURE__ */ new Set();
|
|
504
|
-
for (const transition of trait.transitions ?? []) {
|
|
505
|
-
collectTraitRefsFromEffects(transition.effects, out);
|
|
506
|
-
}
|
|
507
|
-
for (const tick of trait.ticks ?? []) {
|
|
508
|
-
collectTraitRefsFromEffects(tick.effects, out);
|
|
509
|
-
}
|
|
510
|
-
for (const field of Object.values(trait.config ?? {})) {
|
|
511
|
-
if (field.default !== void 0) collectTraitRefsFromValue(field.default, out);
|
|
512
|
-
}
|
|
513
|
-
return out;
|
|
514
|
-
}
|
|
515
530
|
function collectEmbeddedTraits(schema) {
|
|
516
531
|
const out = /* @__PURE__ */ new Set();
|
|
517
532
|
if (!schema?.orbitals) return out;
|
|
@@ -545,7 +560,7 @@ function collectEmbeddedTraits(schema) {
|
|
|
545
560
|
return out;
|
|
546
561
|
}
|
|
547
562
|
var PERF_NAMESPACE = "almadar:perf:canvas";
|
|
548
|
-
var
|
|
563
|
+
var log2 = createLogger(PERF_NAMESPACE);
|
|
549
564
|
var RING_SIZE = 50;
|
|
550
565
|
var ring = [];
|
|
551
566
|
var writeIdx = 0;
|
|
@@ -604,7 +619,7 @@ function perfEnd(name, startToken, detail) {
|
|
|
604
619
|
}
|
|
605
620
|
push({ name, durationMs, ts: endTs, detail });
|
|
606
621
|
aggregate(name, durationMs);
|
|
607
|
-
if (isVerbose())
|
|
622
|
+
if (isVerbose()) log2.debug(name, () => ({ durationMs, ...detail ?? {} }));
|
|
608
623
|
}
|
|
609
624
|
function perfTime(name, fn, detail) {
|
|
610
625
|
const t = perfStart(name);
|
|
@@ -651,7 +666,7 @@ function dumpSummary() {
|
|
|
651
666
|
avgMs: Math.round(b.totalMs / b.count * 100) / 100,
|
|
652
667
|
maxMs: Math.round(b.maxMs * 10) / 10
|
|
653
668
|
})).sort((a, b) => b.totalMs - a.totalMs);
|
|
654
|
-
|
|
669
|
+
log2.warn("[PROFILE] summary", { phases: JSON.stringify(rows) });
|
|
655
670
|
buckets.clear();
|
|
656
671
|
}
|
|
657
672
|
function getPerfSnapshot() {
|
|
@@ -684,7 +699,7 @@ var perfStore = {
|
|
|
684
699
|
subscribe,
|
|
685
700
|
getSnapshot
|
|
686
701
|
};
|
|
687
|
-
var
|
|
702
|
+
var log3 = createLogger("almadar:runtime:verify");
|
|
688
703
|
var MAX_EVENT_LOG = 200;
|
|
689
704
|
var EMPTY_SUMMARY = {
|
|
690
705
|
totalChecks: 0,
|
|
@@ -726,7 +741,7 @@ function bindEventBus(eventBus) {
|
|
|
726
741
|
if (!api) return;
|
|
727
742
|
api.sendEvent = (event, payload, traitScope) => {
|
|
728
743
|
const prefixed = event.startsWith("UI:") ? event : traitScope ? `UI:${traitScope}.${event}` : `UI:${event}`;
|
|
729
|
-
|
|
744
|
+
log3.debug("sendEvent", {
|
|
730
745
|
event: prefixed,
|
|
731
746
|
traitScope,
|
|
732
747
|
payloadKeys: payload ? Object.keys(payload) : []
|
|
@@ -760,28 +775,4 @@ function bindTraitStateGetter(getter) {
|
|
|
760
775
|
api.getTraitState = getter;
|
|
761
776
|
}
|
|
762
777
|
|
|
763
|
-
|
|
764
|
-
var types_exports = {};
|
|
765
|
-
__reExport(types_exports, types_star);
|
|
766
|
-
|
|
767
|
-
// src/runtime/events/identity/routing.ts
|
|
768
|
-
var routing_exports = {};
|
|
769
|
-
__reExport(routing_exports, routing_star);
|
|
770
|
-
|
|
771
|
-
// src/runtime/traits/listen-targets.ts
|
|
772
|
-
var listen_targets_exports = {};
|
|
773
|
-
__reExport(listen_targets_exports, listen_targets_star);
|
|
774
|
-
|
|
775
|
-
// src/runtime/traits/OrbitalTraitParsing.ts
|
|
776
|
-
var OrbitalTraitParsing_exports = {};
|
|
777
|
-
__reExport(OrbitalTraitParsing_exports, OrbitalTraitParsing_star);
|
|
778
|
-
|
|
779
|
-
// src/runtime/entities/mockStoreSeed.ts
|
|
780
|
-
var mockStoreSeed_exports = {};
|
|
781
|
-
__reExport(mockStoreSeed_exports, mockStoreSeed_star);
|
|
782
|
-
|
|
783
|
-
// src/runtime/evaluation/residence-transport.ts
|
|
784
|
-
var residence_transport_exports = {};
|
|
785
|
-
__reExport(residence_transport_exports, residence_transport_star);
|
|
786
|
-
|
|
787
|
-
export { OrbitalTraitParsing_exports, PERF_NAMESPACE, RendererContractViolationError, TickScheduler_exports, aggregateSlotContent, assertIsMultiSourceSlotManager, assertIsSlotManager, bindEventBus, bindTraitStateGetter, browserStoreName, buildOrbitalsByTrait, buildTraitLinkedEntities, clearPerf, collectEmbeddedTraits, collectTraitRefsFromResolvedTrait, composition_exports, createSlotSetter, cron_exports, duration_exports, ensureVerificationApi, getOrbitalVerification, listen_targets_exports, local_store_transport_exports, mockStoreSeed_exports, nativeMemoryPersistence, openBrowserHost, openBrowserStore, openBrowserStoreTransport, openBundledBrowserStore, openLocalKernel, perfEnd, perfGauge, perfStart, perfStore, perfTime, perfTimeAsync, pushPerfEntry, residence_transport_exports, routing_exports, seedBrowserStore_exports, std_mock_seed_exports, trait_index_exports, types_exports, validateSlotContent, withBrowserSeeder, withForkedSeeder, wrapCallbackForEvent };
|
|
778
|
+
export { PERF_NAMESPACE, RendererContractViolationError, aggregateSlotContent, answerHostAsk, assertIsMultiSourceSlotManager, assertIsSlotManager, bindEventBus, bindTraitStateGetter, browserStoreName, buildOrbitalsByTrait, clearPerf, collectEmbeddedTraits, createSlotSetter, ensureVerificationApi, getOrbitalVerification, local_store_transport_exports, nativeMemoryPersistence, openBrowserHost, openBrowserStore, openBrowserStoreTransport, openBundledBrowserStore, openLocalKernel, perfEnd, perfGauge, perfStart, perfStore, perfTime, perfTimeAsync, persistedMemory, pushPerfEntry, registerHostAudio, registerHostConsent, registerHostSignIn, registerHostSignOut, validateSlotContent, webHostActions, wrapCallbackForEvent };
|