@almadar/ui 2.46.0 → 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 +103 -7
- package/dist/avl/index.js +102 -7
- package/dist/components/atoms/Box.d.ts +4 -0
- package/dist/components/index.cjs +85 -11
- package/dist/components/index.js +84 -11
- package/dist/components/organisms/game/three/index.cjs +67 -0
- package/dist/components/organisms/game/three/index.js +66 -0
- package/dist/docs/index.cjs +67 -0
- package/dist/docs/index.d.cts +4 -0
- package/dist/docs/index.js +66 -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 +67 -0
- package/dist/marketing/index.d.cts +4 -0
- package/dist/marketing/index.js +66 -0
- package/dist/providers/index.cjs +86 -2
- package/dist/providers/index.js +85 -2
- package/dist/runtime/index.cjs +91 -5
- package/dist/runtime/index.js +90 -5
- package/package.json +1 -1
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 = [];
|
|
@@ -1703,6 +1772,7 @@ var Box = React117__namespace.default.forwardRef(
|
|
|
1703
1772
|
action,
|
|
1704
1773
|
actionPayload,
|
|
1705
1774
|
hoverEvent,
|
|
1775
|
+
maxWidth,
|
|
1706
1776
|
onClick,
|
|
1707
1777
|
onMouseEnter,
|
|
1708
1778
|
onMouseLeave,
|
|
@@ -1767,6 +1837,7 @@ var Box = React117__namespace.default.forwardRef(
|
|
|
1767
1837
|
onClick: isClickable ? handleClick : void 0,
|
|
1768
1838
|
onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
|
|
1769
1839
|
onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
|
|
1840
|
+
style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
|
|
1770
1841
|
...rest,
|
|
1771
1842
|
children
|
|
1772
1843
|
}
|
|
@@ -2130,6 +2201,7 @@ function useTheme() {
|
|
|
2130
2201
|
}
|
|
2131
2202
|
return context;
|
|
2132
2203
|
}
|
|
2204
|
+
var storeLog = createLogger("almadar:entity:store");
|
|
2133
2205
|
var store = /* @__PURE__ */ new Map();
|
|
2134
2206
|
var storeListeners = /* @__PURE__ */ new Set();
|
|
2135
2207
|
var watchCallbacks = /* @__PURE__ */ new Map();
|
|
@@ -2169,7 +2241,9 @@ function setAll(entityType, records) {
|
|
|
2169
2241
|
}
|
|
2170
2242
|
}
|
|
2171
2243
|
const prev = store.get(entityType);
|
|
2172
|
-
|
|
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 });
|
|
2173
2247
|
notifyListeners3(entityType, prev);
|
|
2174
2248
|
}
|
|
2175
2249
|
function upsertOne(entityType, record) {
|
|
@@ -2181,6 +2255,7 @@ function upsertOne(entityType, record) {
|
|
|
2181
2255
|
if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
|
|
2182
2256
|
snapshot.version++;
|
|
2183
2257
|
store.set(entityType, snapshot);
|
|
2258
|
+
storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
|
|
2184
2259
|
notifyListeners3(entityType, prev);
|
|
2185
2260
|
}
|
|
2186
2261
|
function addOne(entityType, record) {
|
|
@@ -2197,6 +2272,7 @@ function updateOne(entityType, id, changes) {
|
|
|
2197
2272
|
snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
|
|
2198
2273
|
snapshot.version++;
|
|
2199
2274
|
store.set(entityType, snapshot);
|
|
2275
|
+
storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
|
|
2200
2276
|
notifyListeners3(entityType, prev);
|
|
2201
2277
|
}
|
|
2202
2278
|
function removeOne(entityType, id) {
|
|
@@ -2210,6 +2286,7 @@ function removeOne(entityType, id) {
|
|
|
2210
2286
|
snapshot.entities.delete(id);
|
|
2211
2287
|
snapshot.version++;
|
|
2212
2288
|
store.set(entityType, snapshot);
|
|
2289
|
+
storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
|
|
2213
2290
|
notifyListeners3(entityType, prev);
|
|
2214
2291
|
}
|
|
2215
2292
|
function getSnapshot3(entityType) {
|
|
@@ -2258,6 +2335,8 @@ function useEntityStore() {
|
|
|
2258
2335
|
function EntityStoreProvider({ children }) {
|
|
2259
2336
|
return /* @__PURE__ */ jsxRuntime.jsx(EntityStoreContext.Provider, { value: contextValue, children });
|
|
2260
2337
|
}
|
|
2338
|
+
var busLog = createLogger("almadar:eventbus");
|
|
2339
|
+
var subLog2 = createLogger("almadar:eventbus:subscribe");
|
|
2261
2340
|
var EventBusContext2 = React117.createContext(null);
|
|
2262
2341
|
function EventBusProvider({ children, debug: debug2 = false }) {
|
|
2263
2342
|
const listenersRef = React117.useRef(/* @__PURE__ */ new Map());
|
|
@@ -2287,7 +2366,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2287
2366
|
timestamp: Date.now()
|
|
2288
2367
|
};
|
|
2289
2368
|
const listeners6 = listenersRef.current.get(type);
|
|
2290
|
-
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 });
|
|
2291
2371
|
if (debug2) {
|
|
2292
2372
|
if (listenerCount > 0) {
|
|
2293
2373
|
console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
|
|
@@ -2320,6 +2400,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2320
2400
|
}
|
|
2321
2401
|
const listeners6 = listenersRef.current.get(type);
|
|
2322
2402
|
listeners6.add(listener);
|
|
2403
|
+
subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
|
|
2323
2404
|
if (debug2) {
|
|
2324
2405
|
console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
|
|
2325
2406
|
}
|
|
@@ -2346,6 +2427,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2346
2427
|
}, []);
|
|
2347
2428
|
const onAny = React117.useCallback((listener) => {
|
|
2348
2429
|
anyListenersRef.current.add(listener);
|
|
2430
|
+
subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
|
|
2349
2431
|
if (debug2) {
|
|
2350
2432
|
console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
|
|
2351
2433
|
}
|
|
@@ -28490,7 +28572,7 @@ function getAllEvents(traits2) {
|
|
|
28490
28572
|
}
|
|
28491
28573
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
28492
28574
|
const eventBus = useEventBus();
|
|
28493
|
-
const [
|
|
28575
|
+
const [log4, setLog] = React117__namespace.useState([]);
|
|
28494
28576
|
const prevStatesRef = React117__namespace.useRef(/* @__PURE__ */ new Map());
|
|
28495
28577
|
React117__namespace.useEffect(() => {
|
|
28496
28578
|
for (const trait of traits2) {
|
|
@@ -28554,9 +28636,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
28554
28636
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
|
|
28555
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)) })
|
|
28556
28638
|
] }),
|
|
28557
|
-
|
|
28639
|
+
log4.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
28558
28640
|
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
|
|
28559
|
-
/* @__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: [
|
|
28560
28642
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
28561
28643
|
" ",
|
|
28562
28644
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
|
|
@@ -33095,6 +33177,7 @@ function UISlotRenderer({
|
|
|
33095
33177
|
return wrapped;
|
|
33096
33178
|
}
|
|
33097
33179
|
UISlotRenderer.displayName = "UISlotRenderer";
|
|
33180
|
+
var log3 = createLogger("almadar:verify");
|
|
33098
33181
|
var DISPATCH_SUFFIX = ":DISPATCH";
|
|
33099
33182
|
var SUCCESS_SUFFIX = ":SUCCESS";
|
|
33100
33183
|
var ERROR_SUFFIX = ":ERROR";
|
|
@@ -33140,6 +33223,7 @@ function VerificationProvider({
|
|
|
33140
33223
|
const unsub = eventBus.onAny((evt) => {
|
|
33141
33224
|
const parsed = parseLifecycleEvent(evt.type);
|
|
33142
33225
|
if (!parsed) return;
|
|
33226
|
+
log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
|
|
33143
33227
|
const payload = evt.payload ?? {};
|
|
33144
33228
|
if (parsed.kind === "dispatch") {
|
|
33145
33229
|
const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
|
|
@@ -33192,6 +33276,7 @@ function VerificationProvider({
|
|
|
33192
33276
|
},
|
|
33193
33277
|
timestamp: Date.now()
|
|
33194
33278
|
});
|
|
33279
|
+
log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
|
|
33195
33280
|
} else if (parsed.kind === "error" && parsed.event) {
|
|
33196
33281
|
const key = `${parsed.traitName}:${parsed.event}`;
|
|
33197
33282
|
const pending = pendingRef.current.get(key);
|
|
@@ -33221,6 +33306,7 @@ function VerificationProvider({
|
|
|
33221
33306
|
},
|
|
33222
33307
|
timestamp: Date.now()
|
|
33223
33308
|
});
|
|
33309
|
+
log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
|
|
33224
33310
|
}
|
|
33225
33311
|
});
|
|
33226
33312
|
registerCheck(
|
package/dist/runtime/index.js
CHANGED
|
@@ -44,6 +44,67 @@ import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graph
|
|
|
44
44
|
var __defProp = Object.defineProperty;
|
|
45
45
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
46
46
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
47
|
+
|
|
48
|
+
// lib/logger.ts
|
|
49
|
+
var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
|
|
50
|
+
var ENV = typeof process !== "undefined" && process.env ? process.env : {};
|
|
51
|
+
var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
|
|
52
|
+
function getViteEnv(key) {
|
|
53
|
+
try {
|
|
54
|
+
const meta = import.meta;
|
|
55
|
+
return meta?.env?.[key];
|
|
56
|
+
} catch {
|
|
57
|
+
return void 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function envGet(key, viteKey) {
|
|
61
|
+
return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
|
|
62
|
+
}
|
|
63
|
+
var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
|
|
64
|
+
var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
|
|
65
|
+
var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
|
|
66
|
+
var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
|
|
67
|
+
function matchesNamespace(namespace) {
|
|
68
|
+
if (DEBUG_FILTER.length === 0) return true;
|
|
69
|
+
return DEBUG_FILTER.some((pattern) => {
|
|
70
|
+
if (pattern === "*" || pattern === "almadar:*") return true;
|
|
71
|
+
if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
|
|
72
|
+
return namespace === pattern;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function createLogger(namespace) {
|
|
76
|
+
const nsAllowed = matchesNamespace(namespace);
|
|
77
|
+
const log4 = (level, message, data, correlationId) => {
|
|
78
|
+
if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
|
|
79
|
+
if (level === "DEBUG" && !nsAllowed) return;
|
|
80
|
+
const prefix = `[${namespace}]`;
|
|
81
|
+
const logData = correlationId ? { ...data, cid: correlationId } : data;
|
|
82
|
+
switch (level) {
|
|
83
|
+
case "DEBUG":
|
|
84
|
+
console.debug(prefix, message, logData ?? "");
|
|
85
|
+
break;
|
|
86
|
+
case "INFO":
|
|
87
|
+
console.info(prefix, message, logData ?? "");
|
|
88
|
+
break;
|
|
89
|
+
case "WARN":
|
|
90
|
+
console.warn(prefix, message, logData ?? "");
|
|
91
|
+
break;
|
|
92
|
+
case "ERROR":
|
|
93
|
+
console.error(prefix, message, logData ?? "");
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
|
|
99
|
+
info: (msg, data, cid) => log4("INFO", msg, data, cid),
|
|
100
|
+
warn: (msg, data, cid) => log4("WARN", msg, data, cid),
|
|
101
|
+
error: (msg, data, cid) => log4("ERROR", msg, data, cid)
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// hooks/useEventBus.ts
|
|
106
|
+
var log = createLogger("almadar:eventbus");
|
|
107
|
+
var subLog = createLogger("almadar:eventbus:subscribe");
|
|
47
108
|
function setGlobalEventBus(bus) {
|
|
48
109
|
if (typeof window !== "undefined") {
|
|
49
110
|
window.__kflowEventBus = bus;
|
|
@@ -65,6 +126,7 @@ var fallbackEventBus = {
|
|
|
65
126
|
timestamp: Date.now()
|
|
66
127
|
};
|
|
67
128
|
const handlers = fallbackListeners.get(type);
|
|
129
|
+
log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
|
|
68
130
|
if (handlers) {
|
|
69
131
|
handlers.forEach((handler) => {
|
|
70
132
|
try {
|
|
@@ -87,6 +149,7 @@ var fallbackEventBus = {
|
|
|
87
149
|
fallbackListeners.set(type, /* @__PURE__ */ new Set());
|
|
88
150
|
}
|
|
89
151
|
fallbackListeners.get(type).add(listener);
|
|
152
|
+
subLog.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
|
|
90
153
|
return () => {
|
|
91
154
|
const handlers = fallbackListeners.get(type);
|
|
92
155
|
if (handlers) {
|
|
@@ -110,6 +173,7 @@ var fallbackEventBus = {
|
|
|
110
173
|
},
|
|
111
174
|
onAny: (listener) => {
|
|
112
175
|
fallbackAnyListeners.add(listener);
|
|
176
|
+
subLog.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
|
|
113
177
|
return () => {
|
|
114
178
|
fallbackAnyListeners.delete(listener);
|
|
115
179
|
};
|
|
@@ -768,6 +832,7 @@ function subscribeToTraitChanges(listener) {
|
|
|
768
832
|
}
|
|
769
833
|
|
|
770
834
|
// lib/verificationRegistry.ts
|
|
835
|
+
var log2 = createLogger("almadar:bridge");
|
|
771
836
|
var MAX_TRANSITIONS = 500;
|
|
772
837
|
function getState() {
|
|
773
838
|
if (typeof window !== "undefined") {
|
|
@@ -800,6 +865,7 @@ function recordTransition(trace) {
|
|
|
800
865
|
...trace,
|
|
801
866
|
id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
|
|
802
867
|
};
|
|
868
|
+
log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
|
|
803
869
|
getState().transitions.push(entry);
|
|
804
870
|
if (getState().transitions.length > MAX_TRANSITIONS) {
|
|
805
871
|
getState().transitions.shift();
|
|
@@ -931,10 +997,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
|
|
|
931
997
|
}
|
|
932
998
|
function bindEventBus(eventBus) {
|
|
933
999
|
if (typeof window === "undefined") return;
|
|
1000
|
+
log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
|
|
934
1001
|
exposeOnWindow();
|
|
935
1002
|
if (window.__orbitalVerification) {
|
|
936
1003
|
window.__orbitalVerification.sendEvent = (event, payload) => {
|
|
937
1004
|
const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
|
|
1005
|
+
log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
|
|
938
1006
|
eventBus.emit(prefixed, payload);
|
|
939
1007
|
};
|
|
940
1008
|
const eventLog = [];
|
|
@@ -1657,6 +1725,7 @@ var Box = React117__default.forwardRef(
|
|
|
1657
1725
|
action,
|
|
1658
1726
|
actionPayload,
|
|
1659
1727
|
hoverEvent,
|
|
1728
|
+
maxWidth,
|
|
1660
1729
|
onClick,
|
|
1661
1730
|
onMouseEnter,
|
|
1662
1731
|
onMouseLeave,
|
|
@@ -1721,6 +1790,7 @@ var Box = React117__default.forwardRef(
|
|
|
1721
1790
|
onClick: isClickable ? handleClick : void 0,
|
|
1722
1791
|
onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
|
|
1723
1792
|
onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
|
|
1793
|
+
style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
|
|
1724
1794
|
...rest,
|
|
1725
1795
|
children
|
|
1726
1796
|
}
|
|
@@ -2084,6 +2154,7 @@ function useTheme() {
|
|
|
2084
2154
|
}
|
|
2085
2155
|
return context;
|
|
2086
2156
|
}
|
|
2157
|
+
var storeLog = createLogger("almadar:entity:store");
|
|
2087
2158
|
var store = /* @__PURE__ */ new Map();
|
|
2088
2159
|
var storeListeners = /* @__PURE__ */ new Set();
|
|
2089
2160
|
var watchCallbacks = /* @__PURE__ */ new Map();
|
|
@@ -2123,7 +2194,9 @@ function setAll(entityType, records) {
|
|
|
2123
2194
|
}
|
|
2124
2195
|
}
|
|
2125
2196
|
const prev = store.get(entityType);
|
|
2126
|
-
|
|
2197
|
+
const newVersion = (prev?.version ?? 0) + 1;
|
|
2198
|
+
store.set(entityType, { entities, ids, version: newVersion });
|
|
2199
|
+
storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
|
|
2127
2200
|
notifyListeners3(entityType, prev);
|
|
2128
2201
|
}
|
|
2129
2202
|
function upsertOne(entityType, record) {
|
|
@@ -2135,6 +2208,7 @@ function upsertOne(entityType, record) {
|
|
|
2135
2208
|
if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
|
|
2136
2209
|
snapshot.version++;
|
|
2137
2210
|
store.set(entityType, snapshot);
|
|
2211
|
+
storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
|
|
2138
2212
|
notifyListeners3(entityType, prev);
|
|
2139
2213
|
}
|
|
2140
2214
|
function addOne(entityType, record) {
|
|
@@ -2151,6 +2225,7 @@ function updateOne(entityType, id, changes) {
|
|
|
2151
2225
|
snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
|
|
2152
2226
|
snapshot.version++;
|
|
2153
2227
|
store.set(entityType, snapshot);
|
|
2228
|
+
storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
|
|
2154
2229
|
notifyListeners3(entityType, prev);
|
|
2155
2230
|
}
|
|
2156
2231
|
function removeOne(entityType, id) {
|
|
@@ -2164,6 +2239,7 @@ function removeOne(entityType, id) {
|
|
|
2164
2239
|
snapshot.entities.delete(id);
|
|
2165
2240
|
snapshot.version++;
|
|
2166
2241
|
store.set(entityType, snapshot);
|
|
2242
|
+
storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
|
|
2167
2243
|
notifyListeners3(entityType, prev);
|
|
2168
2244
|
}
|
|
2169
2245
|
function getSnapshot3(entityType) {
|
|
@@ -2212,6 +2288,8 @@ function useEntityStore() {
|
|
|
2212
2288
|
function EntityStoreProvider({ children }) {
|
|
2213
2289
|
return /* @__PURE__ */ jsx(EntityStoreContext.Provider, { value: contextValue, children });
|
|
2214
2290
|
}
|
|
2291
|
+
var busLog = createLogger("almadar:eventbus");
|
|
2292
|
+
var subLog2 = createLogger("almadar:eventbus:subscribe");
|
|
2215
2293
|
var EventBusContext2 = createContext(null);
|
|
2216
2294
|
function EventBusProvider({ children, debug: debug2 = false }) {
|
|
2217
2295
|
const listenersRef = useRef(/* @__PURE__ */ new Map());
|
|
@@ -2241,7 +2319,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2241
2319
|
timestamp: Date.now()
|
|
2242
2320
|
};
|
|
2243
2321
|
const listeners6 = listenersRef.current.get(type);
|
|
2244
|
-
const listenerCount = listeners6?.size ?? 0;
|
|
2322
|
+
const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
|
|
2323
|
+
busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
|
|
2245
2324
|
if (debug2) {
|
|
2246
2325
|
if (listenerCount > 0) {
|
|
2247
2326
|
console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
|
|
@@ -2274,6 +2353,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2274
2353
|
}
|
|
2275
2354
|
const listeners6 = listenersRef.current.get(type);
|
|
2276
2355
|
listeners6.add(listener);
|
|
2356
|
+
subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
|
|
2277
2357
|
if (debug2) {
|
|
2278
2358
|
console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
|
|
2279
2359
|
}
|
|
@@ -2300,6 +2380,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2300
2380
|
}, []);
|
|
2301
2381
|
const onAny = useCallback((listener) => {
|
|
2302
2382
|
anyListenersRef.current.add(listener);
|
|
2383
|
+
subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
|
|
2303
2384
|
if (debug2) {
|
|
2304
2385
|
console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
|
|
2305
2386
|
}
|
|
@@ -28444,7 +28525,7 @@ function getAllEvents(traits2) {
|
|
|
28444
28525
|
}
|
|
28445
28526
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
28446
28527
|
const eventBus = useEventBus();
|
|
28447
|
-
const [
|
|
28528
|
+
const [log4, setLog] = React117.useState([]);
|
|
28448
28529
|
const prevStatesRef = React117.useRef(/* @__PURE__ */ new Map());
|
|
28449
28530
|
React117.useEffect(() => {
|
|
28450
28531
|
for (const trait of traits2) {
|
|
@@ -28508,9 +28589,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
28508
28589
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
|
|
28509
28590
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
|
|
28510
28591
|
] }),
|
|
28511
|
-
|
|
28592
|
+
log4.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
28512
28593
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
|
|
28513
|
-
/* @__PURE__ */ jsx(Stack, { gap: "xs", children:
|
|
28594
|
+
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: log4.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
|
|
28514
28595
|
/* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
28515
28596
|
" ",
|
|
28516
28597
|
/* @__PURE__ */ jsx("span", { className: "text-gray-500", children: entry.from }),
|
|
@@ -33049,6 +33130,7 @@ function UISlotRenderer({
|
|
|
33049
33130
|
return wrapped;
|
|
33050
33131
|
}
|
|
33051
33132
|
UISlotRenderer.displayName = "UISlotRenderer";
|
|
33133
|
+
var log3 = createLogger("almadar:verify");
|
|
33052
33134
|
var DISPATCH_SUFFIX = ":DISPATCH";
|
|
33053
33135
|
var SUCCESS_SUFFIX = ":SUCCESS";
|
|
33054
33136
|
var ERROR_SUFFIX = ":ERROR";
|
|
@@ -33094,6 +33176,7 @@ function VerificationProvider({
|
|
|
33094
33176
|
const unsub = eventBus.onAny((evt) => {
|
|
33095
33177
|
const parsed = parseLifecycleEvent(evt.type);
|
|
33096
33178
|
if (!parsed) return;
|
|
33179
|
+
log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
|
|
33097
33180
|
const payload = evt.payload ?? {};
|
|
33098
33181
|
if (parsed.kind === "dispatch") {
|
|
33099
33182
|
const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
|
|
@@ -33146,6 +33229,7 @@ function VerificationProvider({
|
|
|
33146
33229
|
},
|
|
33147
33230
|
timestamp: Date.now()
|
|
33148
33231
|
});
|
|
33232
|
+
log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
|
|
33149
33233
|
} else if (parsed.kind === "error" && parsed.event) {
|
|
33150
33234
|
const key = `${parsed.traitName}:${parsed.event}`;
|
|
33151
33235
|
const pending = pendingRef.current.get(key);
|
|
@@ -33175,6 +33259,7 @@ function VerificationProvider({
|
|
|
33175
33259
|
},
|
|
33176
33260
|
timestamp: Date.now()
|
|
33177
33261
|
});
|
|
33262
|
+
log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
|
|
33178
33263
|
}
|
|
33179
33264
|
});
|
|
33180
33265
|
registerCheck(
|