@almadar/ui 2.46.1 → 2.47.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/avl/index.cjs +101 -7
- package/dist/avl/index.js +100 -7
- package/dist/components/index.cjs +83 -11
- package/dist/components/index.js +82 -11
- package/dist/components/organisms/game/three/index.cjs +65 -0
- package/dist/components/organisms/game/three/index.js +64 -0
- package/dist/docs/index.cjs +65 -0
- package/dist/docs/index.js +64 -0
- package/dist/hooks/index.cjs +72 -7
- package/dist/hooks/index.js +71 -7
- package/dist/lib/index.cjs +68 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +66 -1
- package/dist/lib/logger.d.ts +16 -0
- package/dist/marketing/index.cjs +65 -0
- package/dist/marketing/index.js +64 -0
- package/dist/providers/index.cjs +84 -2
- package/dist/providers/index.js +83 -2
- package/dist/runtime/index.cjs +89 -5
- package/dist/runtime/index.js +88 -5
- package/package.json +1 -1
package/dist/providers/index.js
CHANGED
|
@@ -271,6 +271,64 @@ var ThemeProvider = ({
|
|
|
271
271
|
);
|
|
272
272
|
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: contextValue2, children });
|
|
273
273
|
};
|
|
274
|
+
|
|
275
|
+
// lib/logger.ts
|
|
276
|
+
var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
|
|
277
|
+
var ENV = typeof process !== "undefined" && process.env ? process.env : {};
|
|
278
|
+
var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
|
|
279
|
+
function getViteEnv(key) {
|
|
280
|
+
try {
|
|
281
|
+
const meta = import.meta;
|
|
282
|
+
return meta?.env?.[key];
|
|
283
|
+
} catch {
|
|
284
|
+
return void 0;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
function envGet(key, viteKey) {
|
|
288
|
+
return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
|
|
289
|
+
}
|
|
290
|
+
var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
|
|
291
|
+
var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
|
|
292
|
+
var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
|
|
293
|
+
var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
|
|
294
|
+
function matchesNamespace(namespace) {
|
|
295
|
+
if (DEBUG_FILTER.length === 0) return true;
|
|
296
|
+
return DEBUG_FILTER.some((pattern) => {
|
|
297
|
+
if (pattern === "*" || pattern === "almadar:*") return true;
|
|
298
|
+
if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
|
|
299
|
+
return namespace === pattern;
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
function createLogger(namespace) {
|
|
303
|
+
const nsAllowed = matchesNamespace(namespace);
|
|
304
|
+
const log4 = (level, message, data, correlationId) => {
|
|
305
|
+
if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
|
|
306
|
+
if (level === "DEBUG" && !nsAllowed) return;
|
|
307
|
+
const prefix = `[${namespace}]`;
|
|
308
|
+
const logData = correlationId ? { ...data, cid: correlationId } : data;
|
|
309
|
+
switch (level) {
|
|
310
|
+
case "DEBUG":
|
|
311
|
+
console.debug(prefix, message, logData ?? "");
|
|
312
|
+
break;
|
|
313
|
+
case "INFO":
|
|
314
|
+
console.info(prefix, message, logData ?? "");
|
|
315
|
+
break;
|
|
316
|
+
case "WARN":
|
|
317
|
+
console.warn(prefix, message, logData ?? "");
|
|
318
|
+
break;
|
|
319
|
+
case "ERROR":
|
|
320
|
+
console.error(prefix, message, logData ?? "");
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
return {
|
|
325
|
+
debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
|
|
326
|
+
info: (msg, data, cid) => log4("INFO", msg, data, cid),
|
|
327
|
+
warn: (msg, data, cid) => log4("WARN", msg, data, cid),
|
|
328
|
+
error: (msg, data, cid) => log4("ERROR", msg, data, cid)
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
var storeLog = createLogger("almadar:entity:store");
|
|
274
332
|
var store = /* @__PURE__ */ new Map();
|
|
275
333
|
var storeListeners = /* @__PURE__ */ new Set();
|
|
276
334
|
var watchCallbacks = /* @__PURE__ */ new Map();
|
|
@@ -310,7 +368,9 @@ function setAll(entityType, records) {
|
|
|
310
368
|
}
|
|
311
369
|
}
|
|
312
370
|
const prev = store.get(entityType);
|
|
313
|
-
|
|
371
|
+
const newVersion = (prev?.version ?? 0) + 1;
|
|
372
|
+
store.set(entityType, { entities, ids, version: newVersion });
|
|
373
|
+
storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
|
|
314
374
|
notifyListeners(entityType, prev);
|
|
315
375
|
}
|
|
316
376
|
function upsertOne(entityType, record) {
|
|
@@ -322,6 +382,7 @@ function upsertOne(entityType, record) {
|
|
|
322
382
|
if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
|
|
323
383
|
snapshot.version++;
|
|
324
384
|
store.set(entityType, snapshot);
|
|
385
|
+
storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
|
|
325
386
|
notifyListeners(entityType, prev);
|
|
326
387
|
}
|
|
327
388
|
function addOne(entityType, record) {
|
|
@@ -338,6 +399,7 @@ function updateOne(entityType, id, changes) {
|
|
|
338
399
|
snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
|
|
339
400
|
snapshot.version++;
|
|
340
401
|
store.set(entityType, snapshot);
|
|
402
|
+
storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
|
|
341
403
|
notifyListeners(entityType, prev);
|
|
342
404
|
}
|
|
343
405
|
function removeOne(entityType, id) {
|
|
@@ -351,6 +413,7 @@ function removeOne(entityType, id) {
|
|
|
351
413
|
snapshot.entities.delete(id);
|
|
352
414
|
snapshot.version++;
|
|
353
415
|
store.set(entityType, snapshot);
|
|
416
|
+
storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
|
|
354
417
|
notifyListeners(entityType, prev);
|
|
355
418
|
}
|
|
356
419
|
function getSnapshot(entityType) {
|
|
@@ -433,6 +496,8 @@ function useEntityStore() {
|
|
|
433
496
|
function EntityStoreProvider({ children }) {
|
|
434
497
|
return /* @__PURE__ */ jsx(EntityStoreContext.Provider, { value: contextValue, children });
|
|
435
498
|
}
|
|
499
|
+
var log = createLogger("almadar:eventbus");
|
|
500
|
+
var subLog = createLogger("almadar:eventbus:subscribe");
|
|
436
501
|
function setGlobalEventBus(bus) {
|
|
437
502
|
if (typeof window !== "undefined") {
|
|
438
503
|
window.__kflowEventBus = bus;
|
|
@@ -454,6 +519,7 @@ var fallbackEventBus = {
|
|
|
454
519
|
timestamp: Date.now()
|
|
455
520
|
};
|
|
456
521
|
const handlers = fallbackListeners.get(type);
|
|
522
|
+
log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
|
|
457
523
|
if (handlers) {
|
|
458
524
|
handlers.forEach((handler) => {
|
|
459
525
|
try {
|
|
@@ -476,6 +542,7 @@ var fallbackEventBus = {
|
|
|
476
542
|
fallbackListeners.set(type, /* @__PURE__ */ new Set());
|
|
477
543
|
}
|
|
478
544
|
fallbackListeners.get(type).add(listener);
|
|
545
|
+
subLog.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
|
|
479
546
|
return () => {
|
|
480
547
|
const handlers = fallbackListeners.get(type);
|
|
481
548
|
if (handlers) {
|
|
@@ -499,6 +566,7 @@ var fallbackEventBus = {
|
|
|
499
566
|
},
|
|
500
567
|
onAny: (listener) => {
|
|
501
568
|
fallbackAnyListeners.add(listener);
|
|
569
|
+
subLog.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
|
|
502
570
|
return () => {
|
|
503
571
|
fallbackAnyListeners.delete(listener);
|
|
504
572
|
};
|
|
@@ -508,6 +576,8 @@ function useEventBus() {
|
|
|
508
576
|
const context = useContext(EventBusContext);
|
|
509
577
|
return context ?? getGlobalEventBus() ?? fallbackEventBus;
|
|
510
578
|
}
|
|
579
|
+
var busLog = createLogger("almadar:eventbus");
|
|
580
|
+
var subLog2 = createLogger("almadar:eventbus:subscribe");
|
|
511
581
|
var EventBusContext2 = createContext(null);
|
|
512
582
|
function EventBusProvider({ children, debug: debug2 = false }) {
|
|
513
583
|
const listenersRef = useRef(/* @__PURE__ */ new Map());
|
|
@@ -537,7 +607,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
537
607
|
timestamp: Date.now()
|
|
538
608
|
};
|
|
539
609
|
const listeners6 = listenersRef.current.get(type);
|
|
540
|
-
const listenerCount = listeners6?.size ?? 0;
|
|
610
|
+
const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
|
|
611
|
+
busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
|
|
541
612
|
if (debug2) {
|
|
542
613
|
if (listenerCount > 0) {
|
|
543
614
|
console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
|
|
@@ -570,6 +641,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
570
641
|
}
|
|
571
642
|
const listeners6 = listenersRef.current.get(type);
|
|
572
643
|
listeners6.add(listener);
|
|
644
|
+
subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
|
|
573
645
|
if (debug2) {
|
|
574
646
|
console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
|
|
575
647
|
}
|
|
@@ -596,6 +668,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
596
668
|
}, []);
|
|
597
669
|
const onAny = useCallback((listener) => {
|
|
598
670
|
anyListenersRef.current.add(listener);
|
|
671
|
+
subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
|
|
599
672
|
if (debug2) {
|
|
600
673
|
console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
|
|
601
674
|
}
|
|
@@ -3080,6 +3153,7 @@ var defaultIcon = L.icon({
|
|
|
3080
3153
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
3081
3154
|
|
|
3082
3155
|
// lib/verificationRegistry.ts
|
|
3156
|
+
var log2 = createLogger("almadar:bridge");
|
|
3083
3157
|
var MAX_TRANSITIONS = 500;
|
|
3084
3158
|
function getState() {
|
|
3085
3159
|
if (typeof window !== "undefined") {
|
|
@@ -3112,6 +3186,7 @@ function recordTransition(trace) {
|
|
|
3112
3186
|
...trace,
|
|
3113
3187
|
id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
|
|
3114
3188
|
};
|
|
3189
|
+
log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
|
|
3115
3190
|
getState().transitions.push(entry);
|
|
3116
3191
|
if (getState().transitions.length > MAX_TRANSITIONS) {
|
|
3117
3192
|
getState().transitions.shift();
|
|
@@ -3213,10 +3288,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
|
|
|
3213
3288
|
}
|
|
3214
3289
|
function bindEventBus(eventBus) {
|
|
3215
3290
|
if (typeof window === "undefined") return;
|
|
3291
|
+
log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
|
|
3216
3292
|
exposeOnWindow();
|
|
3217
3293
|
if (window.__orbitalVerification) {
|
|
3218
3294
|
window.__orbitalVerification.sendEvent = (event, payload) => {
|
|
3219
3295
|
const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
|
|
3296
|
+
log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
|
|
3220
3297
|
eventBus.emit(prefixed, payload);
|
|
3221
3298
|
};
|
|
3222
3299
|
const eventLog = [];
|
|
@@ -3677,6 +3754,7 @@ function SuspenseConfigProvider({
|
|
|
3677
3754
|
);
|
|
3678
3755
|
}
|
|
3679
3756
|
SuspenseConfigProvider.displayName = "SuspenseConfigProvider";
|
|
3757
|
+
var log3 = createLogger("almadar:verify");
|
|
3680
3758
|
var DISPATCH_SUFFIX = ":DISPATCH";
|
|
3681
3759
|
var SUCCESS_SUFFIX = ":SUCCESS";
|
|
3682
3760
|
var ERROR_SUFFIX = ":ERROR";
|
|
@@ -3722,6 +3800,7 @@ function VerificationProvider({
|
|
|
3722
3800
|
const unsub = eventBus.onAny((evt) => {
|
|
3723
3801
|
const parsed = parseLifecycleEvent(evt.type);
|
|
3724
3802
|
if (!parsed) return;
|
|
3803
|
+
log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
|
|
3725
3804
|
const payload = evt.payload ?? {};
|
|
3726
3805
|
if (parsed.kind === "dispatch") {
|
|
3727
3806
|
const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
|
|
@@ -3774,6 +3853,7 @@ function VerificationProvider({
|
|
|
3774
3853
|
},
|
|
3775
3854
|
timestamp: Date.now()
|
|
3776
3855
|
});
|
|
3856
|
+
log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
|
|
3777
3857
|
} else if (parsed.kind === "error" && parsed.event) {
|
|
3778
3858
|
const key = `${parsed.traitName}:${parsed.event}`;
|
|
3779
3859
|
const pending = pendingRef.current.get(key);
|
|
@@ -3803,6 +3883,7 @@ function VerificationProvider({
|
|
|
3803
3883
|
},
|
|
3804
3884
|
timestamp: Date.now()
|
|
3805
3885
|
});
|
|
3886
|
+
log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
|
|
3806
3887
|
}
|
|
3807
3888
|
});
|
|
3808
3889
|
registerCheck(
|
package/dist/runtime/index.cjs
CHANGED
|
@@ -41,6 +41,7 @@ var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml')
|
|
|
41
41
|
var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go');
|
|
42
42
|
var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql');
|
|
43
43
|
|
|
44
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
44
45
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
45
46
|
|
|
46
47
|
function _interopNamespace(e) {
|
|
@@ -90,6 +91,67 @@ var langGraphql__default = /*#__PURE__*/_interopDefault(langGraphql);
|
|
|
90
91
|
var __defProp = Object.defineProperty;
|
|
91
92
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
92
93
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
94
|
+
|
|
95
|
+
// lib/logger.ts
|
|
96
|
+
var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
|
|
97
|
+
var ENV = typeof process !== "undefined" && process.env ? process.env : {};
|
|
98
|
+
var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
|
|
99
|
+
function getViteEnv(key) {
|
|
100
|
+
try {
|
|
101
|
+
const meta = ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)) });
|
|
102
|
+
return meta?.env?.[key];
|
|
103
|
+
} catch {
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function envGet(key, viteKey) {
|
|
108
|
+
return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
|
|
109
|
+
}
|
|
110
|
+
var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
|
|
111
|
+
var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
|
|
112
|
+
var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
|
|
113
|
+
var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
|
|
114
|
+
function matchesNamespace(namespace) {
|
|
115
|
+
if (DEBUG_FILTER.length === 0) return true;
|
|
116
|
+
return DEBUG_FILTER.some((pattern) => {
|
|
117
|
+
if (pattern === "*" || pattern === "almadar:*") return true;
|
|
118
|
+
if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
|
|
119
|
+
return namespace === pattern;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function createLogger(namespace) {
|
|
123
|
+
const nsAllowed = matchesNamespace(namespace);
|
|
124
|
+
const log4 = (level, message, data, correlationId) => {
|
|
125
|
+
if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
|
|
126
|
+
if (level === "DEBUG" && !nsAllowed) return;
|
|
127
|
+
const prefix = `[${namespace}]`;
|
|
128
|
+
const logData = correlationId ? { ...data, cid: correlationId } : data;
|
|
129
|
+
switch (level) {
|
|
130
|
+
case "DEBUG":
|
|
131
|
+
console.debug(prefix, message, logData ?? "");
|
|
132
|
+
break;
|
|
133
|
+
case "INFO":
|
|
134
|
+
console.info(prefix, message, logData ?? "");
|
|
135
|
+
break;
|
|
136
|
+
case "WARN":
|
|
137
|
+
console.warn(prefix, message, logData ?? "");
|
|
138
|
+
break;
|
|
139
|
+
case "ERROR":
|
|
140
|
+
console.error(prefix, message, logData ?? "");
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
return {
|
|
145
|
+
debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
|
|
146
|
+
info: (msg, data, cid) => log4("INFO", msg, data, cid),
|
|
147
|
+
warn: (msg, data, cid) => log4("WARN", msg, data, cid),
|
|
148
|
+
error: (msg, data, cid) => log4("ERROR", msg, data, cid)
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// hooks/useEventBus.ts
|
|
153
|
+
var log = createLogger("almadar:eventbus");
|
|
154
|
+
var subLog = createLogger("almadar:eventbus:subscribe");
|
|
93
155
|
function setGlobalEventBus(bus) {
|
|
94
156
|
if (typeof window !== "undefined") {
|
|
95
157
|
window.__kflowEventBus = bus;
|
|
@@ -111,6 +173,7 @@ var fallbackEventBus = {
|
|
|
111
173
|
timestamp: Date.now()
|
|
112
174
|
};
|
|
113
175
|
const handlers = fallbackListeners.get(type);
|
|
176
|
+
log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
|
|
114
177
|
if (handlers) {
|
|
115
178
|
handlers.forEach((handler) => {
|
|
116
179
|
try {
|
|
@@ -133,6 +196,7 @@ var fallbackEventBus = {
|
|
|
133
196
|
fallbackListeners.set(type, /* @__PURE__ */ new Set());
|
|
134
197
|
}
|
|
135
198
|
fallbackListeners.get(type).add(listener);
|
|
199
|
+
subLog.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
|
|
136
200
|
return () => {
|
|
137
201
|
const handlers = fallbackListeners.get(type);
|
|
138
202
|
if (handlers) {
|
|
@@ -156,6 +220,7 @@ var fallbackEventBus = {
|
|
|
156
220
|
},
|
|
157
221
|
onAny: (listener) => {
|
|
158
222
|
fallbackAnyListeners.add(listener);
|
|
223
|
+
subLog.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
|
|
159
224
|
return () => {
|
|
160
225
|
fallbackAnyListeners.delete(listener);
|
|
161
226
|
};
|
|
@@ -814,6 +879,7 @@ function subscribeToTraitChanges(listener) {
|
|
|
814
879
|
}
|
|
815
880
|
|
|
816
881
|
// lib/verificationRegistry.ts
|
|
882
|
+
var log2 = createLogger("almadar:bridge");
|
|
817
883
|
var MAX_TRANSITIONS = 500;
|
|
818
884
|
function getState() {
|
|
819
885
|
if (typeof window !== "undefined") {
|
|
@@ -846,6 +912,7 @@ function recordTransition(trace) {
|
|
|
846
912
|
...trace,
|
|
847
913
|
id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
|
|
848
914
|
};
|
|
915
|
+
log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
|
|
849
916
|
getState().transitions.push(entry);
|
|
850
917
|
if (getState().transitions.length > MAX_TRANSITIONS) {
|
|
851
918
|
getState().transitions.shift();
|
|
@@ -977,10 +1044,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
|
|
|
977
1044
|
}
|
|
978
1045
|
function bindEventBus(eventBus) {
|
|
979
1046
|
if (typeof window === "undefined") return;
|
|
1047
|
+
log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
|
|
980
1048
|
exposeOnWindow();
|
|
981
1049
|
if (window.__orbitalVerification) {
|
|
982
1050
|
window.__orbitalVerification.sendEvent = (event, payload) => {
|
|
983
1051
|
const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
|
|
1052
|
+
log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
|
|
984
1053
|
eventBus.emit(prefixed, payload);
|
|
985
1054
|
};
|
|
986
1055
|
const eventLog = [];
|
|
@@ -2132,6 +2201,7 @@ function useTheme() {
|
|
|
2132
2201
|
}
|
|
2133
2202
|
return context;
|
|
2134
2203
|
}
|
|
2204
|
+
var storeLog = createLogger("almadar:entity:store");
|
|
2135
2205
|
var store = /* @__PURE__ */ new Map();
|
|
2136
2206
|
var storeListeners = /* @__PURE__ */ new Set();
|
|
2137
2207
|
var watchCallbacks = /* @__PURE__ */ new Map();
|
|
@@ -2171,7 +2241,9 @@ function setAll(entityType, records) {
|
|
|
2171
2241
|
}
|
|
2172
2242
|
}
|
|
2173
2243
|
const prev = store.get(entityType);
|
|
2174
|
-
|
|
2244
|
+
const newVersion = (prev?.version ?? 0) + 1;
|
|
2245
|
+
store.set(entityType, { entities, ids, version: newVersion });
|
|
2246
|
+
storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
|
|
2175
2247
|
notifyListeners3(entityType, prev);
|
|
2176
2248
|
}
|
|
2177
2249
|
function upsertOne(entityType, record) {
|
|
@@ -2183,6 +2255,7 @@ function upsertOne(entityType, record) {
|
|
|
2183
2255
|
if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
|
|
2184
2256
|
snapshot.version++;
|
|
2185
2257
|
store.set(entityType, snapshot);
|
|
2258
|
+
storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
|
|
2186
2259
|
notifyListeners3(entityType, prev);
|
|
2187
2260
|
}
|
|
2188
2261
|
function addOne(entityType, record) {
|
|
@@ -2199,6 +2272,7 @@ function updateOne(entityType, id, changes) {
|
|
|
2199
2272
|
snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
|
|
2200
2273
|
snapshot.version++;
|
|
2201
2274
|
store.set(entityType, snapshot);
|
|
2275
|
+
storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
|
|
2202
2276
|
notifyListeners3(entityType, prev);
|
|
2203
2277
|
}
|
|
2204
2278
|
function removeOne(entityType, id) {
|
|
@@ -2212,6 +2286,7 @@ function removeOne(entityType, id) {
|
|
|
2212
2286
|
snapshot.entities.delete(id);
|
|
2213
2287
|
snapshot.version++;
|
|
2214
2288
|
store.set(entityType, snapshot);
|
|
2289
|
+
storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
|
|
2215
2290
|
notifyListeners3(entityType, prev);
|
|
2216
2291
|
}
|
|
2217
2292
|
function getSnapshot3(entityType) {
|
|
@@ -2260,6 +2335,8 @@ function useEntityStore() {
|
|
|
2260
2335
|
function EntityStoreProvider({ children }) {
|
|
2261
2336
|
return /* @__PURE__ */ jsxRuntime.jsx(EntityStoreContext.Provider, { value: contextValue, children });
|
|
2262
2337
|
}
|
|
2338
|
+
var busLog = createLogger("almadar:eventbus");
|
|
2339
|
+
var subLog2 = createLogger("almadar:eventbus:subscribe");
|
|
2263
2340
|
var EventBusContext2 = React117.createContext(null);
|
|
2264
2341
|
function EventBusProvider({ children, debug: debug2 = false }) {
|
|
2265
2342
|
const listenersRef = React117.useRef(/* @__PURE__ */ new Map());
|
|
@@ -2289,7 +2366,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2289
2366
|
timestamp: Date.now()
|
|
2290
2367
|
};
|
|
2291
2368
|
const listeners6 = listenersRef.current.get(type);
|
|
2292
|
-
const listenerCount = listeners6?.size ?? 0;
|
|
2369
|
+
const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
|
|
2370
|
+
busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
|
|
2293
2371
|
if (debug2) {
|
|
2294
2372
|
if (listenerCount > 0) {
|
|
2295
2373
|
console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
|
|
@@ -2322,6 +2400,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2322
2400
|
}
|
|
2323
2401
|
const listeners6 = listenersRef.current.get(type);
|
|
2324
2402
|
listeners6.add(listener);
|
|
2403
|
+
subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
|
|
2325
2404
|
if (debug2) {
|
|
2326
2405
|
console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
|
|
2327
2406
|
}
|
|
@@ -2348,6 +2427,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2348
2427
|
}, []);
|
|
2349
2428
|
const onAny = React117.useCallback((listener) => {
|
|
2350
2429
|
anyListenersRef.current.add(listener);
|
|
2430
|
+
subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
|
|
2351
2431
|
if (debug2) {
|
|
2352
2432
|
console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
|
|
2353
2433
|
}
|
|
@@ -28492,7 +28572,7 @@ function getAllEvents(traits2) {
|
|
|
28492
28572
|
}
|
|
28493
28573
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
28494
28574
|
const eventBus = useEventBus();
|
|
28495
|
-
const [
|
|
28575
|
+
const [log4, setLog] = React117__namespace.useState([]);
|
|
28496
28576
|
const prevStatesRef = React117__namespace.useRef(/* @__PURE__ */ new Map());
|
|
28497
28577
|
React117__namespace.useEffect(() => {
|
|
28498
28578
|
for (const trait of traits2) {
|
|
@@ -28556,9 +28636,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
28556
28636
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
|
|
28557
28637
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
28558
28638
|
] }),
|
|
28559
|
-
|
|
28639
|
+
log4.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
28560
28640
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
|
|
28561
|
-
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children:
|
|
28641
|
+
/* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log4.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
28562
28642
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
28563
28643
|
" ",
|
|
28564
28644
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
|
|
@@ -33097,6 +33177,7 @@ function UISlotRenderer({
|
|
|
33097
33177
|
return wrapped;
|
|
33098
33178
|
}
|
|
33099
33179
|
UISlotRenderer.displayName = "UISlotRenderer";
|
|
33180
|
+
var log3 = createLogger("almadar:verify");
|
|
33100
33181
|
var DISPATCH_SUFFIX = ":DISPATCH";
|
|
33101
33182
|
var SUCCESS_SUFFIX = ":SUCCESS";
|
|
33102
33183
|
var ERROR_SUFFIX = ":ERROR";
|
|
@@ -33142,6 +33223,7 @@ function VerificationProvider({
|
|
|
33142
33223
|
const unsub = eventBus.onAny((evt) => {
|
|
33143
33224
|
const parsed = parseLifecycleEvent(evt.type);
|
|
33144
33225
|
if (!parsed) return;
|
|
33226
|
+
log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
|
|
33145
33227
|
const payload = evt.payload ?? {};
|
|
33146
33228
|
if (parsed.kind === "dispatch") {
|
|
33147
33229
|
const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
|
|
@@ -33194,6 +33276,7 @@ function VerificationProvider({
|
|
|
33194
33276
|
},
|
|
33195
33277
|
timestamp: Date.now()
|
|
33196
33278
|
});
|
|
33279
|
+
log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
|
|
33197
33280
|
} else if (parsed.kind === "error" && parsed.event) {
|
|
33198
33281
|
const key = `${parsed.traitName}:${parsed.event}`;
|
|
33199
33282
|
const pending = pendingRef.current.get(key);
|
|
@@ -33223,6 +33306,7 @@ function VerificationProvider({
|
|
|
33223
33306
|
},
|
|
33224
33307
|
timestamp: Date.now()
|
|
33225
33308
|
});
|
|
33309
|
+
log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
|
|
33226
33310
|
}
|
|
33227
33311
|
});
|
|
33228
33312
|
registerCheck(
|