@sadhaka/loom-engine 0.20.0 → 0.20.1
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/director/zone/mock-zone-bridge.d.ts.map +1 -1
- package/dist/director/zone/mock-zone-bridge.js +8 -0
- package/dist/director/zone/mock-zone-bridge.js.map +1 -1
- package/dist/director/zone/sse-zone-bridge.d.ts +5 -0
- package/dist/director/zone/sse-zone-bridge.d.ts.map +1 -1
- package/dist/director/zone/sse-zone-bridge.js +69 -6
- package/dist/director/zone/sse-zone-bridge.js.map +1 -1
- package/dist/director/zone/zone-event-bridge.d.ts +4 -0
- package/dist/director/zone/zone-event-bridge.d.ts.map +1 -1
- package/dist/director/zone/zone-event-bridge.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-zone-bridge.d.ts","sourceRoot":"","sources":["../../../src/director/zone/mock-zone-bridge.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,cAAe,YAAW,gBAAgB;IACrD,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"mock-zone-bridge.d.ts","sourceRoot":"","sources":["../../../src/director/zone/mock-zone-bridge.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,cAAe,YAAW,gBAAgB;IACrD,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAoBzB;IAEF,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,qBAAqB;IAI/B,WAAW,IAAI,OAAO;IAItB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIpC,UAAU,IAAI,SAAS,EAAE;IAOzB,KAAK,IAAI,QAAQ,CAAC,oBAAoB,CAAC;IAuBvC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAavC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQ1C,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI;IAQlD,aAAa,IAAI,IAAI;IAKrB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAM5C,OAAO,IAAI,MAAM;CAGlB"}
|
|
@@ -22,6 +22,10 @@ export class MockZoneBridge {
|
|
|
22
22
|
outOfOrderEvents: 0,
|
|
23
23
|
serverDropsP1: 0,
|
|
24
24
|
serverDropsP2: 0,
|
|
25
|
+
lastConnectedAtMs: 0,
|
|
26
|
+
lastDisconnectedAtMs: 0,
|
|
27
|
+
totalConnectsCount: 0,
|
|
28
|
+
totalDisconnectsCount: 0,
|
|
25
29
|
};
|
|
26
30
|
start() {
|
|
27
31
|
this.statusValue = 'connected';
|
|
@@ -56,6 +60,10 @@ export class MockZoneBridge {
|
|
|
56
60
|
serverDropsP1: this.statsValue.serverDropsP1,
|
|
57
61
|
serverDropsP2: this.statsValue.serverDropsP2,
|
|
58
62
|
lastEventIdByZone: new Map(this.lastEventIdByZone),
|
|
63
|
+
lastConnectedAtMs: this.statsValue.lastConnectedAtMs,
|
|
64
|
+
lastDisconnectedAtMs: this.statsValue.lastDisconnectedAtMs,
|
|
65
|
+
totalConnectsCount: this.statsValue.totalConnectsCount,
|
|
66
|
+
totalDisconnectsCount: this.statsValue.totalDisconnectsCount,
|
|
59
67
|
};
|
|
60
68
|
}
|
|
61
69
|
// ----- Mock-only injection helpers -----
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-zone-bridge.js","sourceRoot":"","sources":["../../../src/director/zone/mock-zone-bridge.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,SAAS;AACT,EAAE;AACF,uEAAuE;AACvE,qEAAqE;AACrE,mEAAmE;AACnE,EAAE;AACF,kEAAkE;AAClE,sEAAsE;AACtE,gEAAgE;AAChE,sEAAsE;AACtE,sEAAsE;AACtE,2CAA2C;AAG3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAOjE,MAAM,OAAO,cAAc;IACjB,KAAK,GAAgB,EAAE,CAAC;IACxB,WAAW,GAA0B,MAAM,CAAC;IACnC,iBAAiB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACnD,UAAU,
|
|
1
|
+
{"version":3,"file":"mock-zone-bridge.js","sourceRoot":"","sources":["../../../src/director/zone/mock-zone-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export interface SSEZoneBridgeOptions {
|
|
|
15
15
|
currentZone: () => string;
|
|
16
16
|
eventName?: string;
|
|
17
17
|
filterAtReceive?: boolean;
|
|
18
|
+
nowFn?: () => number;
|
|
19
|
+
statusEventTarget?: EventTarget | null;
|
|
18
20
|
}
|
|
19
21
|
export declare class SSEZoneBridge implements IZoneEventBridge {
|
|
20
22
|
private readonly es;
|
|
@@ -22,12 +24,15 @@ export declare class SSEZoneBridge implements IZoneEventBridge {
|
|
|
22
24
|
private readonly currentZone;
|
|
23
25
|
private readonly eventName;
|
|
24
26
|
private readonly filterAtReceive;
|
|
27
|
+
private readonly nowFn;
|
|
28
|
+
private readonly statusEventTarget;
|
|
25
29
|
private listener;
|
|
26
30
|
private queue;
|
|
27
31
|
private statusValue;
|
|
28
32
|
private readonly lastEventIdByZone;
|
|
29
33
|
private readonly statsValue;
|
|
30
34
|
constructor(opts: SSEZoneBridgeOptions);
|
|
35
|
+
private transitionTo;
|
|
31
36
|
start(): void;
|
|
32
37
|
stop(): void;
|
|
33
38
|
status(): ZoneEventBridgeStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-zone-bridge.d.ts","sourceRoot":"","sources":["../../../src/director/zone/sse-zone-bridge.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAC5C,IAAI,CAAC;IACR,mBAAmB,CAAC,CAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAC5C,IAAI,CAAC;CAGT;AAED,MAAM,WAAW,oBAAoB;IAInC,WAAW,EAAE,wBAAwB,CAAC;IAItC,WAAW,EAAE,MAAM,CAAC;IAMpB,WAAW,EAAE,MAAM,MAAM,CAAC;IAG1B,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,eAAe,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"sse-zone-bridge.d.ts","sourceRoot":"","sources":["../../../src/director/zone/sse-zone-bridge.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAC5C,IAAI,CAAC;IACR,mBAAmB,CAAC,CAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAC5C,IAAI,CAAC;CAGT;AAED,MAAM,WAAW,oBAAoB;IAInC,WAAW,EAAE,wBAAwB,CAAC;IAItC,WAAW,EAAE,MAAM,CAAC;IAMpB,WAAW,EAAE,MAAM,MAAM,CAAC;IAG1B,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,eAAe,CAAC,EAAE,OAAO,CAAC;IAI1B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IAGrB,iBAAiB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACxC;AAUD,qBAAa,aAAc,YAAW,gBAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAA2B;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IAEvD,OAAO,CAAC,QAAQ,CAAsD;IACtE,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAoBzB;gBAEU,IAAI,EAAE,oBAAoB;IAmCtC,OAAO,CAAC,YAAY;IAwBpB,KAAK,IAAI,IAAI;IAeb,IAAI,IAAI,IAAI;IAQZ,MAAM,IAAI,qBAAqB;IAe/B,WAAW,IAAI,OAAO;IAItB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIpC,UAAU,IAAI,SAAS,EAAE;IAOzB,KAAK,IAAI,QAAQ,CAAC,oBAAoB,CAAC;IAiBvC,OAAO,CAAC,SAAS;CA6BlB"}
|
|
@@ -30,12 +30,16 @@ import { parseZoneEnvelopeJson } from './zone-event-envelope.js';
|
|
|
30
30
|
// pulling DOM types into the engine's strict Node test config.
|
|
31
31
|
const ES_OPEN = 1;
|
|
32
32
|
const ES_CLOSED = 2;
|
|
33
|
+
// 0.20.1 - status CustomEvent dispatch type (parallel to director).
|
|
34
|
+
const STATUS_EVENT_TYPE = 'arpg:zone-bridge-status';
|
|
33
35
|
export class SSEZoneBridge {
|
|
34
36
|
es;
|
|
35
37
|
characterId;
|
|
36
38
|
currentZone;
|
|
37
39
|
eventName;
|
|
38
40
|
filterAtReceive;
|
|
41
|
+
nowFn;
|
|
42
|
+
statusEventTarget;
|
|
39
43
|
listener = null;
|
|
40
44
|
queue = [];
|
|
41
45
|
statusValue = 'idle';
|
|
@@ -46,6 +50,10 @@ export class SSEZoneBridge {
|
|
|
46
50
|
outOfOrderEvents: 0,
|
|
47
51
|
serverDropsP1: 0,
|
|
48
52
|
serverDropsP2: 0,
|
|
53
|
+
lastConnectedAtMs: 0,
|
|
54
|
+
lastDisconnectedAtMs: 0,
|
|
55
|
+
totalConnectsCount: 0,
|
|
56
|
+
totalDisconnectsCount: 0,
|
|
49
57
|
};
|
|
50
58
|
constructor(opts) {
|
|
51
59
|
this.es = opts.eventSource;
|
|
@@ -53,10 +61,61 @@ export class SSEZoneBridge {
|
|
|
53
61
|
this.currentZone = opts.currentZone;
|
|
54
62
|
this.eventName = opts.eventName ?? 'zone.event';
|
|
55
63
|
this.filterAtReceive = opts.filterAtReceive ?? false;
|
|
64
|
+
this.nowFn = opts.nowFn !== undefined
|
|
65
|
+
? opts.nowFn
|
|
66
|
+
: (typeof Date !== 'undefined' && typeof Date.now === 'function'
|
|
67
|
+
? Date.now : () => 0);
|
|
68
|
+
if (opts.statusEventTarget === null) {
|
|
69
|
+
this.statusEventTarget = null;
|
|
70
|
+
}
|
|
71
|
+
else if (opts.statusEventTarget !== undefined) {
|
|
72
|
+
this.statusEventTarget = opts.statusEventTarget;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Default to globalThis (browser window). null in headless tests
|
|
76
|
+
// that did not pass an EventTarget - fall back gracefully.
|
|
77
|
+
let defaultTarget = null;
|
|
78
|
+
try {
|
|
79
|
+
const g = globalThis;
|
|
80
|
+
if (g && g.window)
|
|
81
|
+
defaultTarget = g.window;
|
|
82
|
+
else if (typeof globalThis !== 'undefined' && globalThis.addEventListener) {
|
|
83
|
+
defaultTarget = globalThis;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch { /* ignore */ }
|
|
87
|
+
this.statusEventTarget = defaultTarget;
|
|
88
|
+
}
|
|
56
89
|
// characterId is currently used for diagnostics only - reserved
|
|
57
90
|
// for future emitter_id-based UX hooks (e.g. local-cause cues).
|
|
58
91
|
void this.characterId;
|
|
59
92
|
}
|
|
93
|
+
// 0.20.1 - transition to a new status, dispatching the
|
|
94
|
+
// arpg:zone-bridge-status CustomEvent + bumping connection-timing
|
|
95
|
+
// counters. Idempotent (no-op if status already matches).
|
|
96
|
+
transitionTo(next) {
|
|
97
|
+
const prev = this.statusValue;
|
|
98
|
+
if (prev === next)
|
|
99
|
+
return;
|
|
100
|
+
this.statusValue = next;
|
|
101
|
+
// Bump timing counters on connect / disconnect transitions.
|
|
102
|
+
if (next === 'connected') {
|
|
103
|
+
this.statsValue.lastConnectedAtMs = this.nowFn();
|
|
104
|
+
this.statsValue.totalConnectsCount += 1;
|
|
105
|
+
}
|
|
106
|
+
else if (prev === 'connected'
|
|
107
|
+
&& (next === 'closed' || next === 'reconnecting'
|
|
108
|
+
|| next === 'snapshot-required')) {
|
|
109
|
+
this.statsValue.lastDisconnectedAtMs = this.nowFn();
|
|
110
|
+
this.statsValue.totalDisconnectsCount += 1;
|
|
111
|
+
}
|
|
112
|
+
if (this.statusEventTarget) {
|
|
113
|
+
try {
|
|
114
|
+
this.statusEventTarget.dispatchEvent(new CustomEvent(STATUS_EVENT_TYPE, { detail: { from: prev, to: next, characterId: this.characterId } }));
|
|
115
|
+
}
|
|
116
|
+
catch { /* ignore */ }
|
|
117
|
+
}
|
|
118
|
+
}
|
|
60
119
|
start() {
|
|
61
120
|
if (this.listener)
|
|
62
121
|
return;
|
|
@@ -65,17 +124,17 @@ export class SSEZoneBridge {
|
|
|
65
124
|
// The presence EventSource owns connect lifecycle. We mirror its
|
|
66
125
|
// current readyState so consumers can reason about isConnected().
|
|
67
126
|
if (this.es.readyState === ES_OPEN) {
|
|
68
|
-
this.
|
|
127
|
+
this.transitionTo('connected');
|
|
69
128
|
}
|
|
70
129
|
else if (this.es.readyState === ES_CLOSED) {
|
|
71
|
-
this.
|
|
130
|
+
this.transitionTo('closed');
|
|
72
131
|
}
|
|
73
132
|
else {
|
|
74
|
-
this.
|
|
133
|
+
this.transitionTo('connecting');
|
|
75
134
|
}
|
|
76
135
|
}
|
|
77
136
|
stop() {
|
|
78
|
-
this.
|
|
137
|
+
this.transitionTo('closed');
|
|
79
138
|
if (this.listener && this.es.removeEventListener) {
|
|
80
139
|
this.es.removeEventListener(this.eventName, this.listener);
|
|
81
140
|
}
|
|
@@ -87,11 +146,11 @@ export class SSEZoneBridge {
|
|
|
87
146
|
if (this.listener) {
|
|
88
147
|
if (this.es.readyState === ES_OPEN) {
|
|
89
148
|
if (this.statusValue === 'connecting' || this.statusValue === 'reconnecting') {
|
|
90
|
-
this.
|
|
149
|
+
this.transitionTo('connected');
|
|
91
150
|
}
|
|
92
151
|
}
|
|
93
152
|
else if (this.es.readyState === ES_CLOSED) {
|
|
94
|
-
this.
|
|
153
|
+
this.transitionTo('closed');
|
|
95
154
|
}
|
|
96
155
|
}
|
|
97
156
|
return this.statusValue;
|
|
@@ -117,6 +176,10 @@ export class SSEZoneBridge {
|
|
|
117
176
|
serverDropsP1: this.statsValue.serverDropsP1,
|
|
118
177
|
serverDropsP2: this.statsValue.serverDropsP2,
|
|
119
178
|
lastEventIdByZone: new Map(this.lastEventIdByZone),
|
|
179
|
+
lastConnectedAtMs: this.statsValue.lastConnectedAtMs,
|
|
180
|
+
lastDisconnectedAtMs: this.statsValue.lastDisconnectedAtMs,
|
|
181
|
+
totalConnectsCount: this.statsValue.totalConnectsCount,
|
|
182
|
+
totalDisconnectsCount: this.statsValue.totalDisconnectsCount,
|
|
120
183
|
};
|
|
121
184
|
}
|
|
122
185
|
// ----- Internal -----
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-zone-bridge.js","sourceRoot":"","sources":["../../../src/director/zone/sse-zone-bridge.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,kEAAkE;AAClE,EAAE;AACF,+DAA+D;AAC/D,oEAAoE;AACpE,sEAAsE;AACtE,kEAAkE;AAClE,sEAAsE;AACtE,gDAAgD;AAChD,EAAE;AACF,wBAAwB;AACxB,sBAAsB;AACtB,mCAAmC;AACnC,EAAE;AACF,+DAA+D;AAC/D,gEAAgE;AAChE,sEAAsE;AACtE,qEAAqE;AACrE,sEAAsE;AACtE,qEAAqE;AACrE,oEAAoE;AACpE,iEAAiE;AACjE,UAAU;AACV,EAAE;AACF,qEAAqE;AACrE,kEAAkE;AAClE,8DAA8D;AAG9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sse-zone-bridge.js","sourceRoot":"","sources":["../../../src/director/zone/sse-zone-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@ export interface ZoneEventBridgeStats {
|
|
|
7
7
|
serverDropsP1: number;
|
|
8
8
|
serverDropsP2: number;
|
|
9
9
|
lastEventIdByZone: ReadonlyMap<string, number>;
|
|
10
|
+
lastConnectedAtMs: number;
|
|
11
|
+
lastDisconnectedAtMs: number;
|
|
12
|
+
totalConnectsCount: number;
|
|
13
|
+
totalDisconnectsCount: number;
|
|
10
14
|
}
|
|
11
15
|
export interface IZoneEventBridge {
|
|
12
16
|
start(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zone-event-bridge.d.ts","sourceRoot":"","sources":["../../../src/director/zone/zone-event-bridge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN,YAAY,GACZ,WAAW,GACX,cAAc,GACd,mBAAmB,GACnB,QAAQ,CAAC;AAEb,MAAM,WAAW,oBAAoB;IAEnC,cAAc,EAAE,MAAM,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IAEnB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IAGtB,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"zone-event-bridge.d.ts","sourceRoot":"","sources":["../../../src/director/zone/zone-event-bridge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN,YAAY,GACZ,WAAW,GACX,cAAc,GACd,mBAAmB,GACnB,QAAQ,CAAC;AAEb,MAAM,WAAW,oBAAoB;IAEnC,cAAc,EAAE,MAAM,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IAEnB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IAGtB,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAK/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,IAAI,qBAAqB,CAAC;IAChC,WAAW,IAAI,OAAO,CAAC;IAEvB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC,UAAU,IAAI,SAAS,EAAE,CAAC;IAC1B,KAAK,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC;CACzC;AAGD,eAAO,MAAM,0BAA0B,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zone-event-bridge.js","sourceRoot":"","sources":["../../../src/director/zone/zone-event-bridge.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,4BAA4B;AAC5B,kEAAkE;AAClE,6DAA6D;AAC7D,2DAA2D;AAC3D,+DAA+D;AAC/D,oEAAoE;AACpE,EAAE;AACF,6DAA6D;AAC7D,uEAAuE;AACvE,uEAAuE;AACvE,mBAAmB;AACnB,EAAE;AACF,+CAA+C;AAC/C,uDAAuD;AACvD,oEAAoE;AACpE,oCAAoC;AACpC,iEAAiE;AACjE,sEAAsE;AACtE,gDAAgD;
|
|
1
|
+
{"version":3,"file":"zone-event-bridge.js","sourceRoot":"","sources":["../../../src/director/zone/zone-event-bridge.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,4BAA4B;AAC5B,kEAAkE;AAClE,6DAA6D;AAC7D,2DAA2D;AAC3D,+DAA+D;AAC/D,oEAAoE;AACpE,EAAE;AACF,6DAA6D;AAC7D,uEAAuE;AACvE,uEAAuE;AACvE,mBAAmB;AACnB,EAAE;AACF,+CAA+C;AAC/C,uDAAuD;AACvD,oEAAoE;AACpE,oCAAoC;AACpC,iEAAiE;AACjE,sEAAsE;AACtE,gDAAgD;AAgDhD,iBAAiB;AACjB,MAAM,CAAC,MAAM,0BAA0B,GAAG,mBAAmB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LOOM_ENGINE_VERSION = "0.20.
|
|
1
|
+
export declare const LOOM_ENGINE_VERSION = "0.20.1";
|
|
2
2
|
export type { Vec2, Vec3, Rect } from './util/math.js';
|
|
3
3
|
export { vec2, vec3, rect, clamp, lerp, smoothstep, approxEq, rectContains, rectIntersects, visibleInView, } from './util/math.js';
|
|
4
4
|
export type { ColorRGBA } from './util/color.js';
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// the previous suffix `-perf-9-1` lingered after package.json was
|
|
9
9
|
// bumped to 0.10.0, surfacing as a drift bug in
|
|
10
10
|
// engine.LOOM_ENGINE_VERSION-based diagnostics.
|
|
11
|
-
export const LOOM_ENGINE_VERSION = '0.20.
|
|
11
|
+
export const LOOM_ENGINE_VERSION = '0.20.1';
|
|
12
12
|
export { vec2, vec3, rect, clamp, lerp, smoothstep, approxEq, rectContains, rectIntersects, visibleInView, } from './util/math.js';
|
|
13
13
|
export { rgba, hexToRgba, rgbaToHexString, rgbaToCssString, colorLerp, COLOR_WHITE, COLOR_BLACK, COLOR_TRANSPARENT, COLOR_KNOT_STR, COLOR_KNOT_DEX, COLOR_KNOT_INT, COLOR_KNOT_CENTER, } from './util/color.js';
|
|
14
14
|
export { EntityAllocator, NULL_ENTITY, entityIndex, entityGeneration, makeEntity, } from './entity.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sadhaka/loom-engine",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.1",
|
|
4
4
|
"description": "Browser-first 2D / 2.5D game engine. Canvas2D, ECS, render-graph stages, Director-bridge SSE integration. Built from scratch in TypeScript for TheWorldTable.ai.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"build:all": "npm run build && npm run build:demos",
|
|
48
48
|
"watch": "tsc --watch",
|
|
49
49
|
"clean": "rm -rf dist demo/*.js demo/*.js.map demo/*/main.js demo/*/main.js.map",
|
|
50
|
-
"test": "tsx --test tests/smoke.test.ts tests/world.test.ts tests/asset-loader.test.ts tests/animation.test.ts tests/vfx.test.ts tests/audio-input.test.ts tests/director.test.ts tests/combat.test.ts tests/projectile.test.ts tests/arpg.test.ts tests/snapshot-recovery.test.ts tests/touch-input.test.ts tests/webgl2-device.test.ts tests/multiplayer.test.ts tests/zone-event-envelope.test.ts tests/mock-zone-bridge.test.ts tests/zone-event-system.test.ts tests/zone-state-resource.test.ts tests/ai-plugin-registry.test.ts tests/ai-plugin-error-isolation.test.ts tests/mock-ai-plugin.test.ts tests/plugin-context.test.ts tests/spatial-audio-bus.test.ts tests/audio-listener-resource.test.ts tests/spatial-audio-system.test.ts tests/spatial-falloff-math.test.ts tests/audio-asset-cache.test.ts tests/audio-asset-loader.test.ts tests/cue-catalog.test.ts tests/music-director.test.ts tests/cue-stop-all.test.ts tests/zone-audio-system.test.ts tests/zone-boss-entity-resource.test.ts tests/zone-boss-entity-system.test.ts tests/headless-tick-harness.test.ts tests/trace-replay/replay.test.ts tests/entropy.test.ts tests/fuzzer/fuzzer.test.ts tests/zone-event-system-determinism.test.ts tests/no-nondeterminism.test.ts tests/replay-snapshot.test.ts tests/determinism-smoke.test.ts tests/plugins/client-registry.test.ts tests/plugins/example-hud-plugin.test.ts tests/director/sse-director-bridge-networking.test.ts",
|
|
50
|
+
"test": "tsx --test tests/smoke.test.ts tests/world.test.ts tests/asset-loader.test.ts tests/animation.test.ts tests/vfx.test.ts tests/audio-input.test.ts tests/director.test.ts tests/combat.test.ts tests/projectile.test.ts tests/arpg.test.ts tests/snapshot-recovery.test.ts tests/touch-input.test.ts tests/webgl2-device.test.ts tests/multiplayer.test.ts tests/zone-event-envelope.test.ts tests/mock-zone-bridge.test.ts tests/zone-event-system.test.ts tests/zone-state-resource.test.ts tests/ai-plugin-registry.test.ts tests/ai-plugin-error-isolation.test.ts tests/mock-ai-plugin.test.ts tests/plugin-context.test.ts tests/spatial-audio-bus.test.ts tests/audio-listener-resource.test.ts tests/spatial-audio-system.test.ts tests/spatial-falloff-math.test.ts tests/audio-asset-cache.test.ts tests/audio-asset-loader.test.ts tests/cue-catalog.test.ts tests/music-director.test.ts tests/cue-stop-all.test.ts tests/zone-audio-system.test.ts tests/zone-boss-entity-resource.test.ts tests/zone-boss-entity-system.test.ts tests/headless-tick-harness.test.ts tests/trace-replay/replay.test.ts tests/entropy.test.ts tests/fuzzer/fuzzer.test.ts tests/zone-event-system-determinism.test.ts tests/no-nondeterminism.test.ts tests/replay-snapshot.test.ts tests/determinism-smoke.test.ts tests/plugins/client-registry.test.ts tests/plugins/example-hud-plugin.test.ts tests/director/sse-director-bridge-networking.test.ts tests/director/sse-zone-bridge-networking.test.ts",
|
|
51
51
|
"bench": "npm run build && node --expose-gc --import=tsx tools/perf-bench.ts",
|
|
52
52
|
"bench:fast": "npm run build && node --expose-gc --import=tsx tools/perf-bench.ts --no-write",
|
|
53
53
|
"bench:browser": "npm run build && tsc -p tools/tsconfig.bench.json",
|