@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/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 = [];
|
|
@@ -2086,6 +2154,7 @@ function useTheme() {
|
|
|
2086
2154
|
}
|
|
2087
2155
|
return context;
|
|
2088
2156
|
}
|
|
2157
|
+
var storeLog = createLogger("almadar:entity:store");
|
|
2089
2158
|
var store = /* @__PURE__ */ new Map();
|
|
2090
2159
|
var storeListeners = /* @__PURE__ */ new Set();
|
|
2091
2160
|
var watchCallbacks = /* @__PURE__ */ new Map();
|
|
@@ -2125,7 +2194,9 @@ function setAll(entityType, records) {
|
|
|
2125
2194
|
}
|
|
2126
2195
|
}
|
|
2127
2196
|
const prev = store.get(entityType);
|
|
2128
|
-
|
|
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 });
|
|
2129
2200
|
notifyListeners3(entityType, prev);
|
|
2130
2201
|
}
|
|
2131
2202
|
function upsertOne(entityType, record) {
|
|
@@ -2137,6 +2208,7 @@ function upsertOne(entityType, record) {
|
|
|
2137
2208
|
if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
|
|
2138
2209
|
snapshot.version++;
|
|
2139
2210
|
store.set(entityType, snapshot);
|
|
2211
|
+
storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
|
|
2140
2212
|
notifyListeners3(entityType, prev);
|
|
2141
2213
|
}
|
|
2142
2214
|
function addOne(entityType, record) {
|
|
@@ -2153,6 +2225,7 @@ function updateOne(entityType, id, changes) {
|
|
|
2153
2225
|
snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
|
|
2154
2226
|
snapshot.version++;
|
|
2155
2227
|
store.set(entityType, snapshot);
|
|
2228
|
+
storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
|
|
2156
2229
|
notifyListeners3(entityType, prev);
|
|
2157
2230
|
}
|
|
2158
2231
|
function removeOne(entityType, id) {
|
|
@@ -2166,6 +2239,7 @@ function removeOne(entityType, id) {
|
|
|
2166
2239
|
snapshot.entities.delete(id);
|
|
2167
2240
|
snapshot.version++;
|
|
2168
2241
|
store.set(entityType, snapshot);
|
|
2242
|
+
storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
|
|
2169
2243
|
notifyListeners3(entityType, prev);
|
|
2170
2244
|
}
|
|
2171
2245
|
function getSnapshot3(entityType) {
|
|
@@ -2214,6 +2288,8 @@ function useEntityStore() {
|
|
|
2214
2288
|
function EntityStoreProvider({ children }) {
|
|
2215
2289
|
return /* @__PURE__ */ jsx(EntityStoreContext.Provider, { value: contextValue, children });
|
|
2216
2290
|
}
|
|
2291
|
+
var busLog = createLogger("almadar:eventbus");
|
|
2292
|
+
var subLog2 = createLogger("almadar:eventbus:subscribe");
|
|
2217
2293
|
var EventBusContext2 = createContext(null);
|
|
2218
2294
|
function EventBusProvider({ children, debug: debug2 = false }) {
|
|
2219
2295
|
const listenersRef = useRef(/* @__PURE__ */ new Map());
|
|
@@ -2243,7 +2319,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2243
2319
|
timestamp: Date.now()
|
|
2244
2320
|
};
|
|
2245
2321
|
const listeners6 = listenersRef.current.get(type);
|
|
2246
|
-
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 });
|
|
2247
2324
|
if (debug2) {
|
|
2248
2325
|
if (listenerCount > 0) {
|
|
2249
2326
|
console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
|
|
@@ -2276,6 +2353,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2276
2353
|
}
|
|
2277
2354
|
const listeners6 = listenersRef.current.get(type);
|
|
2278
2355
|
listeners6.add(listener);
|
|
2356
|
+
subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
|
|
2279
2357
|
if (debug2) {
|
|
2280
2358
|
console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
|
|
2281
2359
|
}
|
|
@@ -2302,6 +2380,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
|
|
|
2302
2380
|
}, []);
|
|
2303
2381
|
const onAny = useCallback((listener) => {
|
|
2304
2382
|
anyListenersRef.current.add(listener);
|
|
2383
|
+
subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
|
|
2305
2384
|
if (debug2) {
|
|
2306
2385
|
console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
|
|
2307
2386
|
}
|
|
@@ -28446,7 +28525,7 @@ function getAllEvents(traits2) {
|
|
|
28446
28525
|
}
|
|
28447
28526
|
function EventDispatcherTab({ traits: traits2, schema }) {
|
|
28448
28527
|
const eventBus = useEventBus();
|
|
28449
|
-
const [
|
|
28528
|
+
const [log4, setLog] = React117.useState([]);
|
|
28450
28529
|
const prevStatesRef = React117.useRef(/* @__PURE__ */ new Map());
|
|
28451
28530
|
React117.useEffect(() => {
|
|
28452
28531
|
for (const trait of traits2) {
|
|
@@ -28510,9 +28589,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
|
|
|
28510
28589
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
|
|
28511
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)) })
|
|
28512
28591
|
] }),
|
|
28513
|
-
|
|
28592
|
+
log4.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
28514
28593
|
/* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
|
|
28515
|
-
/* @__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: [
|
|
28516
28595
|
/* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
|
|
28517
28596
|
" ",
|
|
28518
28597
|
/* @__PURE__ */ jsx("span", { className: "text-gray-500", children: entry.from }),
|
|
@@ -33051,6 +33130,7 @@ function UISlotRenderer({
|
|
|
33051
33130
|
return wrapped;
|
|
33052
33131
|
}
|
|
33053
33132
|
UISlotRenderer.displayName = "UISlotRenderer";
|
|
33133
|
+
var log3 = createLogger("almadar:verify");
|
|
33054
33134
|
var DISPATCH_SUFFIX = ":DISPATCH";
|
|
33055
33135
|
var SUCCESS_SUFFIX = ":SUCCESS";
|
|
33056
33136
|
var ERROR_SUFFIX = ":ERROR";
|
|
@@ -33096,6 +33176,7 @@ function VerificationProvider({
|
|
|
33096
33176
|
const unsub = eventBus.onAny((evt) => {
|
|
33097
33177
|
const parsed = parseLifecycleEvent(evt.type);
|
|
33098
33178
|
if (!parsed) return;
|
|
33179
|
+
log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
|
|
33099
33180
|
const payload = evt.payload ?? {};
|
|
33100
33181
|
if (parsed.kind === "dispatch") {
|
|
33101
33182
|
const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
|
|
@@ -33148,6 +33229,7 @@ function VerificationProvider({
|
|
|
33148
33229
|
},
|
|
33149
33230
|
timestamp: Date.now()
|
|
33150
33231
|
});
|
|
33232
|
+
log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
|
|
33151
33233
|
} else if (parsed.kind === "error" && parsed.event) {
|
|
33152
33234
|
const key = `${parsed.traitName}:${parsed.event}`;
|
|
33153
33235
|
const pending = pendingRef.current.get(key);
|
|
@@ -33177,6 +33259,7 @@ function VerificationProvider({
|
|
|
33177
33259
|
},
|
|
33178
33260
|
timestamp: Date.now()
|
|
33179
33261
|
});
|
|
33262
|
+
log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
|
|
33180
33263
|
}
|
|
33181
33264
|
});
|
|
33182
33265
|
registerCheck(
|