@spine-event-engine/core 2.0.0-snapshot.10

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.
Files changed (37) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +190 -0
  3. package/REFERENCE.md +98 -0
  4. package/dist/codegen/index.d.ts +6 -0
  5. package/dist/codegen/index.d.ts.map +1 -0
  6. package/dist/codegen/index.js +18 -0
  7. package/dist/codegen/index.js.map +1 -0
  8. package/dist/entity/entity-column.d.ts +158 -0
  9. package/dist/entity/entity-column.d.ts.map +1 -0
  10. package/dist/entity/entity-column.js +303 -0
  11. package/dist/entity/entity-column.js.map +1 -0
  12. package/dist/index.d.ts +683 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +1185 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/internal/subscription-lifecycle.d.ts +6 -0
  17. package/dist/internal/subscription-lifecycle.d.ts.map +1 -0
  18. package/dist/internal/subscription-lifecycle.js +19 -0
  19. package/dist/internal/subscription-lifecycle.js.map +1 -0
  20. package/dist/query/entity-field-classification.d.ts +20 -0
  21. package/dist/query/entity-field-classification.d.ts.map +1 -0
  22. package/dist/query/entity-field-classification.js +62 -0
  23. package/dist/query/entity-field-classification.js.map +1 -0
  24. package/dist/query/entity-query.d.ts +278 -0
  25. package/dist/query/entity-query.d.ts.map +1 -0
  26. package/dist/query/entity-query.js +500 -0
  27. package/dist/query/entity-query.js.map +1 -0
  28. package/dist/spi/entity-query-plan.d.ts +7 -0
  29. package/dist/spi/entity-query-plan.d.ts.map +1 -0
  30. package/dist/spi/entity-query-plan.js +15 -0
  31. package/dist/spi/entity-query-plan.js.map +1 -0
  32. package/dist/spi/subscription-lifecycle.d.ts +5 -0
  33. package/dist/spi/subscription-lifecycle.d.ts.map +1 -0
  34. package/dist/spi/subscription-lifecycle.js +18 -0
  35. package/dist/spi/subscription-lifecycle.js.map +1 -0
  36. package/dist/tsconfig.tsbuildinfo +1 -0
  37. package/package.json +44 -0
@@ -0,0 +1,500 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { clone, create, getOption, hasOption, ScalarType, toBinary, } from "@bufbuild/protobuf";
15
+ import { BoolValueSchema, AnySchema, BytesValueSchema, DoubleValueSchema, FloatValueSchema, Int32ValueSchema, Int64ValueSchema, StringValueSchema, UInt32ValueSchema, UInt64ValueSchema, } from "@bufbuild/protobuf/wkt";
16
+ import { ActorContextSchema, VersionSchema, type_url_prefix, } from "@spine-event-engine/proto";
17
+ import { CompositeFilterSchema, CompositeFilter_CompositeOperator, FilterSchema, Filter_Operator, IdFilterSchema, OrderBySchema, OrderBy_Direction, QueryIdSchema, QuerySchema, ResponseFormatSchema, TargetFiltersSchema, TargetSchema, } from "@spine-event-engine/proto/client";
18
+ import { EntityColumn, } from "../entity/entity-column.js";
19
+ const maximumPredicateDepth = 64;
20
+ const maximumPredicateNodes = 10_000;
21
+ const maximumEntityQueryIds = 1_000;
22
+ /**
23
+ * Builds a typed Entity query for the frozen Spine wire contract.
24
+ */
25
+ export class EntityQueryBuilder {
26
+ #schema;
27
+ #context;
28
+ #columns;
29
+ #ids = [];
30
+ #predicates = [];
31
+ #mask = [];
32
+ #order = [];
33
+ #limit;
34
+ /**
35
+ * Creates a builder for one Entity query.
36
+ *
37
+ * @param input Schema, registered columns, and actor context for the query.
38
+ */
39
+ constructor(input) {
40
+ this.#schema = input.schema;
41
+ this.#columns = input.columns;
42
+ this.#context = clone(ActorContextSchema, input.context);
43
+ }
44
+ /**
45
+ * Adds Entity IDs to the query target.
46
+ *
47
+ * @param ids Entity IDs to include.
48
+ * @returns This builder.
49
+ */
50
+ byId(...ids) {
51
+ if (ids.length === 0 || ids.some((id) => id === undefined)) {
52
+ throw new TypeError("Entity query ID filter must not be empty.");
53
+ }
54
+ if (this.#ids.length + ids.length > maximumEntityQueryIds) {
55
+ throw new TypeError(`Entity query ID filter may contain at most ${String(maximumEntityQueryIds)} identifiers.`);
56
+ }
57
+ this.#ids.push(...ids);
58
+ return this;
59
+ }
60
+ /**
61
+ * Adds a typed predicate. Repeated calls are combined with `ALL`.
62
+ *
63
+ * @param predicate Predicate owned by this builder's registered columns.
64
+ * @returns This builder.
65
+ */
66
+ where(predicate) {
67
+ if (this.#predicates.length >= maximumPredicateNodes) {
68
+ throw new TypeError(`Entity query predicate exceeds maximum node count ${String(maximumPredicateNodes)}.`);
69
+ }
70
+ this.#predicates.push(predicate);
71
+ return this;
72
+ }
73
+ /**
74
+ * Adds top-level state fields returned by the server.
75
+ *
76
+ * @param paths Generated property names of state fields.
77
+ * @returns This builder.
78
+ */
79
+ mask(...paths) {
80
+ for (const path of paths) {
81
+ const field = EntityQueryWire.findField(this.#schema, path);
82
+ if (field === undefined) {
83
+ throw new TypeError(`Entity query mask path "${path}" is not a state field.`);
84
+ }
85
+ this.#mask.push(field.name);
86
+ }
87
+ return this;
88
+ }
89
+ /**
90
+ * Adds one ordering clause in caller order.
91
+ *
92
+ * @param column Ordered column owned by this builder's Entity schema.
93
+ * @param direction Sort direction, ascending by default.
94
+ * @returns This builder.
95
+ */
96
+ orderBy(column, direction = "asc") {
97
+ EntityQueryWire.requireOwnedColumn(this.#schema, this.#columns, column);
98
+ this.#order.push({ column, direction });
99
+ return this;
100
+ }
101
+ /**
102
+ * Sets a positive result limit that requires ordering.
103
+ *
104
+ * @param value Positive maximum number of returned entities.
105
+ * @returns This builder.
106
+ */
107
+ limit(value) {
108
+ if (!Number.isSafeInteger(value) || value <= 0) {
109
+ throw new TypeError("Entity query limit must be a positive integer.");
110
+ }
111
+ this.#limit = value;
112
+ return this;
113
+ }
114
+ /**
115
+ * Builds the `spine.client.Query` message.
116
+ *
117
+ * @returns The wire query message.
118
+ */
119
+ build() {
120
+ if (this.#limit !== undefined && this.#order.length === 0) {
121
+ throw new TypeError("Entity query limit requires ordering.");
122
+ }
123
+ const filters = this.#filters();
124
+ const format = this.#format();
125
+ return create(QuerySchema, {
126
+ id: create(QueryIdSchema, { value: EntityQueryWire.nextId() }),
127
+ target: create(TargetSchema, {
128
+ type: EntityQueryWire.typeUrl(this.#schema),
129
+ criterion: filters === undefined
130
+ ? { case: "includeAll", value: true }
131
+ : { case: "filters", value: filters },
132
+ }),
133
+ context: clone(ActorContextSchema, this.#context),
134
+ ...(format === undefined ? {} : { format }),
135
+ });
136
+ }
137
+ /**
138
+ * Builds the storage-neutral execution plan for this typed query.
139
+ *
140
+ * @returns An immutable plan equivalent to {@link build}'s wire query.
141
+ */
142
+ buildPlan() {
143
+ if (this.#limit !== undefined && this.#order.length === 0) {
144
+ throw new TypeError("Entity query limit requires ordering.");
145
+ }
146
+ const predicates = EntityQueryCompiler.compilePlanGroups(this.#predicates, this.#schema, this.#columns);
147
+ const all = [
148
+ ...(this.#ids.length === 0
149
+ ? []
150
+ : [Object.freeze({ kind: "ids", ids: Object.freeze([...this.#ids]) })]),
151
+ ...predicates,
152
+ ];
153
+ const predicate = all.length === 0
154
+ ? undefined
155
+ : all.length === 1
156
+ ? all[0]
157
+ : Object.freeze({ kind: "all", predicates: Object.freeze(all) });
158
+ return Object.freeze({
159
+ ...(predicate === undefined ? {} : { predicate }),
160
+ ...(this.#mask.length === 0
161
+ ? {}
162
+ : { mask: Object.freeze({ paths: Object.freeze([...this.#mask]) }) }),
163
+ ...(this.#order.length === 0
164
+ ? {}
165
+ : {
166
+ order: Object.freeze(this.#order.map(({ column, direction }) => Object.freeze({ column: column.name, direction }))),
167
+ }),
168
+ ...(this.#limit === undefined ? {} : { limit: this.#limit }),
169
+ });
170
+ }
171
+ #filters() {
172
+ const idField = this.#schema.fields[0];
173
+ if (this.#ids.length > 0 && idField === undefined) {
174
+ throw new TypeError("Entity query target has no ID field.");
175
+ }
176
+ const predicates = EntityQueryCompiler.compileGroups(this.#predicates, this.#schema, this.#columns);
177
+ if (this.#ids.length === 0 && predicates.length === 0)
178
+ return undefined;
179
+ return create(TargetFiltersSchema, {
180
+ ...(this.#ids.length === 0
181
+ ? {}
182
+ : {
183
+ idFilter: create(IdFilterSchema, {
184
+ id: this.#ids.map((id) => EntityQueryWire.packField(idField, id)),
185
+ }),
186
+ }),
187
+ filter: [...predicates],
188
+ });
189
+ }
190
+ #format() {
191
+ if (this.#mask.length === 0 && this.#order.length === 0 && this.#limit === undefined) {
192
+ return undefined;
193
+ }
194
+ return create(ResponseFormatSchema, {
195
+ ...(this.#mask.length === 0 ? {} : { fieldMask: { paths: [...this.#mask] } }),
196
+ orderBy: this.#order.map(({ column, direction }) => create(OrderBySchema, {
197
+ column: column.name,
198
+ direction: direction === "desc" ? OrderBy_Direction.DESCENDING : OrderBy_Direction.ASCENDING,
199
+ })),
200
+ limit: this.#limit ?? 0,
201
+ });
202
+ }
203
+ }
204
+ /**
205
+ * Creates typed predicates and builders for Entity queries.
206
+ */
207
+ export const EntityQuery = Object.freeze({
208
+ eq(column, value) {
209
+ return EntityQueryCompiler.comparison(column, "equal", value);
210
+ },
211
+ gt(column, value) {
212
+ return EntityQueryCompiler.comparison(column, "greaterThan", value);
213
+ },
214
+ lt(column, value) {
215
+ return EntityQueryCompiler.comparison(column, "lessThan", value);
216
+ },
217
+ ge(column, value) {
218
+ return EntityQueryCompiler.comparison(column, "greaterOrEqual", value);
219
+ },
220
+ le(column, value) {
221
+ return EntityQueryCompiler.comparison(column, "lessOrEqual", value);
222
+ },
223
+ all(first, ...rest) {
224
+ return EntityQueryCompiler.group("all", first, rest);
225
+ },
226
+ either(first, ...rest) {
227
+ return EntityQueryCompiler.group("either", first, rest);
228
+ },
229
+ select(input) {
230
+ return new EntityQueryBuilder(input);
231
+ },
232
+ });
233
+ /**
234
+ * Internal compiler for predicates, descriptors, and wire query messages.
235
+ */
236
+ const EntityQueryCompiler = Object.freeze({
237
+ compilePlanGroups(roots, schema, columns) {
238
+ // Reuse the iterative wire traversal as the single validation boundary. The
239
+ // storage plan has the same predicate graph but must not recurse before
240
+ // cycle, depth, and breadth limits have been checked.
241
+ EntityQueryCompiler.compileGroups(roots, schema, columns);
242
+ return roots.map((predicate) => EntityQueryCompiler.compilePlanPredicate(predicate, schema, columns));
243
+ },
244
+ compilePlanPredicate(value, schema, columns) {
245
+ const predicate = EntityQueryWire.requirePredicate(value);
246
+ if (predicate.kind === "comparison") {
247
+ EntityQueryWire.requireOwnedColumn(schema, columns, predicate.column);
248
+ EntityQueryWire.requireValue(predicate.column, predicate.value);
249
+ return Object.freeze({
250
+ kind: "comparison",
251
+ column: predicate.column.name,
252
+ operator: predicate.operator,
253
+ value: predicate.value,
254
+ });
255
+ }
256
+ if (predicate.predicates.length === 0) {
257
+ throw new TypeError(`${predicate.kind.toUpperCase()} predicate must not be empty.`);
258
+ }
259
+ return Object.freeze({
260
+ kind: predicate.kind,
261
+ predicates: Object.freeze(predicate.predicates.map((child) => EntityQueryCompiler.compilePlanPredicate(child, schema, columns))),
262
+ });
263
+ },
264
+ comparison(column, operator, value) {
265
+ if (!column.operators.includes(operator)) {
266
+ throw new TypeError(`Entity column "${column.name}" does not support ${operator}.`);
267
+ }
268
+ EntityQueryWire.requireValue(column, value);
269
+ return Object.freeze({ kind: "comparison", column, operator, value });
270
+ },
271
+ group(kind, first, rest) {
272
+ return Object.freeze({
273
+ kind,
274
+ predicates: Object.freeze([first, ...rest]),
275
+ });
276
+ },
277
+ compileGroups(roots, schema, columns) {
278
+ const compiled = new WeakMap();
279
+ const seen = new WeakSet();
280
+ const pending = [];
281
+ let scheduled = 0;
282
+ for (let index = roots.length - 1; index >= 0; index -= 1) {
283
+ pending.push({ predicate: roots[index], depth: 0, expanded: false });
284
+ scheduled += 1;
285
+ }
286
+ while (pending.length > 0) {
287
+ const current = pending.pop();
288
+ if (current === undefined)
289
+ break;
290
+ const predicate = EntityQueryWire.requirePredicate(current.predicate);
291
+ if (current.expanded) {
292
+ if (predicate.kind === "comparison") {
293
+ throw new TypeError("Entity query predicate compilation state is invalid.");
294
+ }
295
+ const simple = [];
296
+ const nested = [];
297
+ for (const child of predicate.predicates) {
298
+ const childResult = compiled.get(child);
299
+ if (childResult === undefined)
300
+ throw new TypeError("Entity query predicate is incomplete.");
301
+ if (childResult.kind === "comparison")
302
+ simple.push(childResult.filter);
303
+ else
304
+ nested.push(childResult.filter);
305
+ }
306
+ compiled.set(predicate, {
307
+ kind: "group",
308
+ filter: create(CompositeFilterSchema, {
309
+ operator: predicate.kind === "either"
310
+ ? CompositeFilter_CompositeOperator.EITHER
311
+ : CompositeFilter_CompositeOperator.ALL,
312
+ filter: simple,
313
+ compositeFilter: nested,
314
+ }),
315
+ });
316
+ continue;
317
+ }
318
+ if (seen.has(predicate))
319
+ throw new TypeError("Entity query predicate must not contain cycles.");
320
+ seen.add(predicate);
321
+ if (current.depth > maximumPredicateDepth) {
322
+ throw new TypeError(`Entity query predicate exceeds maximum depth ${String(maximumPredicateDepth)}.`);
323
+ }
324
+ if (predicate.kind === "comparison") {
325
+ EntityQueryWire.requireOwnedColumn(schema, columns, predicate.column);
326
+ compiled.set(predicate, {
327
+ kind: "comparison",
328
+ filter: EntityQueryWire.compileComparison(predicate),
329
+ });
330
+ continue;
331
+ }
332
+ if (predicate.predicates.length === 0) {
333
+ throw new TypeError(`${predicate.kind.toUpperCase()} predicate must not be empty.`);
334
+ }
335
+ if (scheduled + predicate.predicates.length > maximumPredicateNodes) {
336
+ throw new TypeError(`Entity query predicate exceeds maximum node count ${String(maximumPredicateNodes)}.`);
337
+ }
338
+ scheduled += predicate.predicates.length;
339
+ pending.push({ ...current, expanded: true });
340
+ for (let index = predicate.predicates.length - 1; index >= 0; index -= 1) {
341
+ if (!Object.hasOwn(predicate.predicates, index)) {
342
+ throw new TypeError("Entity query predicate entries must be defined.");
343
+ }
344
+ pending.push({
345
+ predicate: predicate.predicates[index],
346
+ depth: current.depth + 1,
347
+ expanded: false,
348
+ });
349
+ }
350
+ }
351
+ return roots.map((root) => {
352
+ const result = compiled.get(root);
353
+ if (result === undefined)
354
+ throw new TypeError("Entity query predicate is incomplete.");
355
+ return result.kind === "group"
356
+ ? result.filter
357
+ : create(CompositeFilterSchema, {
358
+ operator: CompositeFilter_CompositeOperator.ALL,
359
+ filter: [result.filter],
360
+ });
361
+ });
362
+ },
363
+ });
364
+ /**
365
+ * Validates and compiles Entity query details.
366
+ */
367
+ const EntityQueryWire = Object.freeze({
368
+ requirePredicate(value) {
369
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
370
+ throw new TypeError("Entity query predicate must be an object.");
371
+ }
372
+ const predicate = value;
373
+ if (predicate.kind === "comparison") {
374
+ if (!(predicate.column instanceof EntityColumn)) {
375
+ throw new TypeError("Entity query comparison column is required.");
376
+ }
377
+ return predicate;
378
+ }
379
+ if (predicate.kind !== "all" && predicate.kind !== "either") {
380
+ throw new TypeError("Entity query predicate kind must be recognized.");
381
+ }
382
+ if (!Array.isArray(predicate.predicates)) {
383
+ throw new TypeError(`${predicate.kind.toUpperCase()} predicate predicates must be an array.`);
384
+ }
385
+ return predicate;
386
+ },
387
+ compileComparison(predicate) {
388
+ return create(FilterSchema, {
389
+ fieldPath: { fieldName: [predicate.column.name] },
390
+ value: EntityQueryWire.packColumn(predicate.column, predicate.value),
391
+ operator: EntityQueryWire.wireOperator(predicate.operator),
392
+ });
393
+ },
394
+ wireOperator(operator) {
395
+ switch (operator) {
396
+ case "equal":
397
+ return Filter_Operator.EQUAL;
398
+ case "greaterThan":
399
+ return Filter_Operator.GREATER_THAN;
400
+ case "lessThan":
401
+ return Filter_Operator.LESS_THAN;
402
+ case "greaterOrEqual":
403
+ return Filter_Operator.GREATER_OR_EQUAL;
404
+ case "lessOrEqual":
405
+ return Filter_Operator.LESS_OR_EQUAL;
406
+ default:
407
+ throw new TypeError("Entity query comparison operator is not recognized.");
408
+ }
409
+ },
410
+ packColumn(column, value) {
411
+ if (column.source === "system") {
412
+ if (column.name === "version")
413
+ return EntityQueryWire.packMessage(VersionSchema, value);
414
+ return EntityQueryWire.packMessage(BoolValueSchema, create(BoolValueSchema, { value: value }));
415
+ }
416
+ if (column.descriptor === undefined) {
417
+ throw new TypeError("Entity query application column descriptor is required.");
418
+ }
419
+ return EntityQueryWire.packField(column.descriptor, value);
420
+ },
421
+ packField(field, value) {
422
+ if (field === undefined)
423
+ throw new TypeError("Entity query field descriptor is required.");
424
+ if (field.fieldKind === "message") {
425
+ return EntityQueryWire.packMessage(field.message, value);
426
+ }
427
+ if (field.fieldKind === "enum") {
428
+ return EntityQueryWire.packMessage(Int32ValueSchema, create(Int32ValueSchema, { value: value }));
429
+ }
430
+ if (field.fieldKind !== "scalar")
431
+ throw new TypeError("Entity query field kind is unsupported.");
432
+ const schema = EntityQueryWire.scalarSchema(field.scalar);
433
+ return EntityQueryWire.packMessage(schema, create(schema, { value }));
434
+ },
435
+ scalarSchema(scalar) {
436
+ switch (scalar) {
437
+ case ScalarType.BOOL:
438
+ return BoolValueSchema;
439
+ case ScalarType.BYTES:
440
+ return BytesValueSchema;
441
+ case ScalarType.DOUBLE:
442
+ return DoubleValueSchema;
443
+ case ScalarType.FLOAT:
444
+ return FloatValueSchema;
445
+ case ScalarType.INT64:
446
+ case ScalarType.SFIXED64:
447
+ case ScalarType.SINT64:
448
+ return Int64ValueSchema;
449
+ case ScalarType.UINT64:
450
+ case ScalarType.FIXED64:
451
+ return UInt64ValueSchema;
452
+ case ScalarType.UINT32:
453
+ case ScalarType.FIXED32:
454
+ return UInt32ValueSchema;
455
+ case ScalarType.STRING:
456
+ return StringValueSchema;
457
+ default:
458
+ return Int32ValueSchema;
459
+ }
460
+ },
461
+ requireOwnedColumn(schema, columns, column) {
462
+ if (column.schema !== schema ||
463
+ !Object.values(columns).some((candidate) => candidate === column)) {
464
+ throw new TypeError("Entity query column does not belong to the selected target.");
465
+ }
466
+ },
467
+ requireValue(column, value) {
468
+ const valid = value !== undefined &&
469
+ (column.valueKind === "message"
470
+ ? typeof value === "object" &&
471
+ value !== null &&
472
+ Reflect.get(value, "$typeName") === column.messageType
473
+ : column.valueKind === "bytes"
474
+ ? value instanceof Uint8Array
475
+ : column.valueKind === "enum" || column.valueKind === "number"
476
+ ? typeof value === "number" && Number.isFinite(value)
477
+ : typeof value === column.valueKind);
478
+ if (!valid)
479
+ throw new TypeError(`Entity query value for "${column.name}" has the wrong type.`);
480
+ },
481
+ findField(schema, name) {
482
+ return schema.fields.find((field) => field.name === name || field.localName === name);
483
+ },
484
+ nextId() {
485
+ return `query-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
486
+ },
487
+ typeUrl(schema) {
488
+ const prefix = hasOption(schema.file, type_url_prefix)
489
+ ? getOption(schema.file, type_url_prefix)
490
+ : "type.googleapis.com";
491
+ return `${prefix.replace(/\/+$/u, "")}/${schema.typeName}`;
492
+ },
493
+ packMessage(schema, value) {
494
+ return create(AnySchema, {
495
+ typeUrl: EntityQueryWire.typeUrl(schema),
496
+ value: toBinary(schema, value, { writeUnknownFields: false }),
497
+ });
498
+ },
499
+ });
500
+ //# sourceMappingURL=entity-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query.js","sourceRoot":"","sources":["../../src/query/entity-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Server-facing execution-plan bridge for the typed Entity query builder.
3
+ *
4
+ * @internal
5
+ */
6
+ export type { EntityQueryPlan, EntityQueryPlanPredicate } from "../query/entity-query.js";
7
+ //# sourceMappingURL=entity-query-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query-plan.d.ts","sourceRoot":"","sources":["../../src/spi/entity-query-plan.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=entity-query-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query-plan.js","sourceRoot":"","sources":["../../src/spi/entity-query-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Exports subscription-lifecycle timing shared by framework integrations.
3
+ */
4
+ export { SUBSCRIPTION_ACTIVATION_HANDSHAKE_MS } from "../internal/subscription-lifecycle.js";
5
+ //# sourceMappingURL=subscription-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-lifecycle.d.ts","sourceRoot":"","sources":["../../src/spi/subscription-lifecycle.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ /**
15
+ * Exports subscription-lifecycle timing shared by framework integrations.
16
+ */
17
+ export { SUBSCRIPTION_ACTIVATION_HANDSHAKE_MS } from "../internal/subscription-lifecycle.js";
18
+ //# sourceMappingURL=subscription-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-lifecycle.js","sourceRoot":"","sources":["../../src/spi/subscription-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC"}