@directive-run/core 0.8.9 → 1.0.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/adapter-utils.d.cts +1 -1
- package/dist/adapter-utils.d.ts +1 -1
- package/dist/chunk-3H24Z7WM.cjs +16 -0
- package/dist/chunk-3H24Z7WM.cjs.map +1 -0
- package/dist/chunk-AUSBUCOL.cjs +3 -0
- package/dist/chunk-AUSBUCOL.cjs.map +1 -0
- package/dist/chunk-MPOV2REO.js +16 -0
- package/dist/chunk-MPOV2REO.js.map +1 -0
- package/dist/chunk-YWKFNZQV.js +3 -0
- package/dist/chunk-YWKFNZQV.js.map +1 -0
- package/dist/{helpers-50q7yhA9.d.ts → helpers-Bd_P3ZTY.d.ts} +54 -2
- package/dist/{helpers-B6SkcKCD.d.cts → helpers-CU3Il0tz.d.cts} +54 -2
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +16 -13
- package/dist/index.d.ts +16 -13
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internals.cjs +1 -1
- package/dist/internals.d.cts +7 -38
- package/dist/internals.d.ts +7 -38
- package/dist/internals.js +1 -1
- package/dist/plugins/index.cjs +2 -2
- package/dist/plugins/index.cjs.map +1 -1
- package/dist/plugins/index.d.cts +1 -1
- package/dist/plugins/index.d.ts +1 -1
- package/dist/plugins/index.js +2 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/{plugins-Bg_oq2sO.d.cts → plugins-O-3VHejK.d.cts} +148 -6
- package/dist/{plugins-Bg_oq2sO.d.ts → plugins-O-3VHejK.d.ts} +148 -6
- package/dist/system-AGVKMAYF.js +2 -0
- package/dist/{system-3H5V4HJZ.js.map → system-AGVKMAYF.js.map} +1 -1
- package/dist/system-QQYBNE7A.cjs +2 -0
- package/dist/{system-IJKVTF3C.cjs.map → system-QQYBNE7A.cjs.map} +1 -1
- package/dist/testing.cjs +1 -1
- package/dist/testing.d.cts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +1 -1
- package/dist/worker.cjs +1 -1
- package/dist/worker.d.cts +1 -1
- package/dist/worker.d.ts +1 -1
- package/dist/worker.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-CFSW3RP5.cjs +0 -16
- package/dist/chunk-CFSW3RP5.cjs.map +0 -1
- package/dist/chunk-ISYFVEHR.js +0 -3
- package/dist/chunk-ISYFVEHR.js.map +0 -1
- package/dist/chunk-L3SUAAPM.cjs +0 -3
- package/dist/chunk-L3SUAAPM.cjs.map +0 -1
- package/dist/chunk-LB6PNML4.js +0 -16
- package/dist/chunk-LB6PNML4.js.map +0 -1
- package/dist/system-3H5V4HJZ.js +0 -2
- package/dist/system-IJKVTF3C.cjs +0 -2
|
@@ -186,6 +186,46 @@ interface FactChange {
|
|
|
186
186
|
type: "set" | "delete";
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Definition Metadata - Optional annotations for debugging and devtools
|
|
191
|
+
*/
|
|
192
|
+
/**
|
|
193
|
+
* Optional metadata for module, fact, event, constraint, resolver, effect, and derivation definitions.
|
|
194
|
+
*
|
|
195
|
+
* Meta is purely informational — it is never read during the reconciliation
|
|
196
|
+
* hot path. It surfaces in `system.inspect()`, `system.explain()`, and the
|
|
197
|
+
* devtools plugin to provide human-readable context for debugging.
|
|
198
|
+
*
|
|
199
|
+
* **Note:** Meta values are string literals that survive minification and ship
|
|
200
|
+
* in production bundles. Avoid putting internal API paths or sensitive business
|
|
201
|
+
* logic in meta fields.
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* constraints: {
|
|
206
|
+
* needsLogin: {
|
|
207
|
+
* when: (facts) => !facts.user,
|
|
208
|
+
* require: { type: "LOGIN" },
|
|
209
|
+
* meta: { label: "Requires Auth", category: "auth" },
|
|
210
|
+
* },
|
|
211
|
+
* },
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
interface DefinitionMeta {
|
|
215
|
+
/** Human-readable name shown in inspect(), explain(), and devtools. */
|
|
216
|
+
label?: string;
|
|
217
|
+
/** Longer explanation. Shown in explain() causal chains and devtools tooltips. */
|
|
218
|
+
description?: string;
|
|
219
|
+
/** Grouping key for devtools filtering. Suggested: "auth", "data", "ui", "logging", "lifecycle". */
|
|
220
|
+
category?: string;
|
|
221
|
+
/** CSS hex color for devtools visualization (e.g., "#f59e0b"). */
|
|
222
|
+
color?: string;
|
|
223
|
+
/** Multi-dimensional labels for filtering. Use alongside category for fine-grained grouping. */
|
|
224
|
+
tags?: string[];
|
|
225
|
+
/** Extensible — plugins can read custom keys without core releases. */
|
|
226
|
+
[key: string]: unknown;
|
|
227
|
+
}
|
|
228
|
+
|
|
189
229
|
/**
|
|
190
230
|
* Requirement Types - Type definitions for requirements and constraints
|
|
191
231
|
*/
|
|
@@ -260,6 +300,8 @@ interface ConstraintDef<S extends Schema, R extends Requirement = Requirement> {
|
|
|
260
300
|
* bypass auto-tracking overhead.
|
|
261
301
|
*/
|
|
262
302
|
deps?: string[];
|
|
303
|
+
/** Optional metadata for debugging and devtools (never read on hot path). */
|
|
304
|
+
meta?: DefinitionMeta;
|
|
263
305
|
}
|
|
264
306
|
/** Map of constraint definitions (generic) */
|
|
265
307
|
type ConstraintsDef<S extends Schema> = Record<string, ConstraintDef<S, Requirement>>;
|
|
@@ -344,6 +386,8 @@ interface EffectDef<S extends Schema> {
|
|
|
344
386
|
run(facts: Facts<S>, prev: InferSchema<S> | null): void | EffectCleanup | Promise<void | EffectCleanup>;
|
|
345
387
|
/** Optional explicit dependencies for optimization */
|
|
346
388
|
deps?: Array<keyof InferSchema<S>>;
|
|
389
|
+
/** Optional metadata for debugging and devtools (never read on hot path). */
|
|
390
|
+
meta?: DefinitionMeta;
|
|
347
391
|
}
|
|
348
392
|
/** Map of effect definitions */
|
|
349
393
|
type EffectsDef<S extends Schema> = Record<string, EffectDef<S>>;
|
|
@@ -491,6 +535,8 @@ interface ResolverDef<S extends Schema, R extends Requirement = Requirement> {
|
|
|
491
535
|
* ```
|
|
492
536
|
*/
|
|
493
537
|
resolveBatchWithResults?: (reqs: R[], ctx: ResolverContext<S>) => Promise<BatchResolveResults>;
|
|
538
|
+
/** Optional metadata for debugging and devtools (never read on hot path). */
|
|
539
|
+
meta?: DefinitionMeta;
|
|
494
540
|
}
|
|
495
541
|
/** Map of resolver definitions */
|
|
496
542
|
type ResolversDef<S extends Schema> = Record<string, ResolverDef<S, Requirement>>;
|
|
@@ -747,6 +793,8 @@ interface NamespacedSystem<Modules extends ModulesMap> {
|
|
|
747
793
|
readonly effects: EffectsControl;
|
|
748
794
|
/** Runtime control for resolvers (dynamic CRUD) */
|
|
749
795
|
readonly resolvers: ResolversControl;
|
|
796
|
+
/** O(1) metadata queries for constraints, resolvers, effects, derivations. */
|
|
797
|
+
readonly meta: MetaAccessor;
|
|
750
798
|
/** Per-run trace entries (null if trace is not enabled) */
|
|
751
799
|
readonly trace: TraceEntry[] | null;
|
|
752
800
|
/** Initialize facts and derivations without starting reconciliation. Safe for SSR. */
|
|
@@ -984,6 +1032,8 @@ interface SingleModuleSystem<S extends ModuleSchema> {
|
|
|
984
1032
|
readonly effects: EffectsControl<S>;
|
|
985
1033
|
/** Runtime control for resolvers (register/assign/unregister/call) */
|
|
986
1034
|
readonly resolvers: ResolversControl<S>;
|
|
1035
|
+
/** O(1) metadata queries for constraints, resolvers, effects, derivations. */
|
|
1036
|
+
readonly meta: MetaAccessor;
|
|
987
1037
|
/** Per-run trace entries (null if trace is not enabled) */
|
|
988
1038
|
readonly trace: TraceEntry[] | null;
|
|
989
1039
|
/** Initialize facts and derivations without starting reconciliation. Safe for SSR. */
|
|
@@ -1191,7 +1241,10 @@ type TypedDerivationFn<M extends ModuleSchema, K extends keyof GetDerivationsSch
|
|
|
1191
1241
|
* Each derivation key must match schema.derivations and return the declared type.
|
|
1192
1242
|
*/
|
|
1193
1243
|
type TypedDerivationsDef<M extends ModuleSchema> = {
|
|
1194
|
-
[K in keyof GetDerivationsSchema<M>]: TypedDerivationFn<M, K
|
|
1244
|
+
[K in keyof GetDerivationsSchema<M>]: TypedDerivationFn<M, K> | {
|
|
1245
|
+
compute: TypedDerivationFn<M, K>;
|
|
1246
|
+
meta?: DefinitionMeta;
|
|
1247
|
+
};
|
|
1195
1248
|
};
|
|
1196
1249
|
/**
|
|
1197
1250
|
* Event handler function with typed facts and payload.
|
|
@@ -1203,7 +1256,10 @@ type TypedEventHandlerFn<M extends ModuleSchema, K extends keyof GetEventsSchema
|
|
|
1203
1256
|
* Each event key must match schema.events with the correct payload type.
|
|
1204
1257
|
*/
|
|
1205
1258
|
type TypedEventsDef<M extends ModuleSchema> = {
|
|
1206
|
-
[K in keyof GetEventsSchema<M>]: TypedEventHandlerFn<M, K
|
|
1259
|
+
[K in keyof GetEventsSchema<M>]: TypedEventHandlerFn<M, K> | {
|
|
1260
|
+
handler: TypedEventHandlerFn<M, K>;
|
|
1261
|
+
meta?: DefinitionMeta;
|
|
1262
|
+
};
|
|
1207
1263
|
};
|
|
1208
1264
|
/**
|
|
1209
1265
|
* Requirement output from a constraint.
|
|
@@ -1237,6 +1293,8 @@ interface TypedConstraintDef<M extends ModuleSchema> {
|
|
|
1237
1293
|
* Required for async constraints to enable dependency tracking.
|
|
1238
1294
|
*/
|
|
1239
1295
|
deps?: string[];
|
|
1296
|
+
/** Optional metadata for debugging and devtools (never read on hot path). */
|
|
1297
|
+
meta?: DefinitionMeta;
|
|
1240
1298
|
}
|
|
1241
1299
|
/**
|
|
1242
1300
|
* Typed constraints definition using the module schema.
|
|
@@ -1275,6 +1333,8 @@ interface CrossModuleConstraintDef<M extends ModuleSchema, Deps extends CrossMod
|
|
|
1275
1333
|
* Required for async constraints to enable dependency tracking.
|
|
1276
1334
|
*/
|
|
1277
1335
|
deps?: string[];
|
|
1336
|
+
/** Optional metadata for debugging and devtools (never read on hot path). */
|
|
1337
|
+
meta?: DefinitionMeta;
|
|
1278
1338
|
}
|
|
1279
1339
|
/**
|
|
1280
1340
|
* Cross-module constraints definition.
|
|
@@ -1293,6 +1353,8 @@ interface CrossModuleEffectDef<M extends ModuleSchema, Deps extends CrossModuleD
|
|
|
1293
1353
|
run: (facts: CrossModuleFactsWithSelf<M, Deps>, prev: CrossModuleFactsWithSelf<M, Deps> | undefined) => void | EffectCleanup | Promise<void | EffectCleanup>;
|
|
1294
1354
|
/** Optional dependency keys to filter when effect runs */
|
|
1295
1355
|
deps?: string[];
|
|
1356
|
+
/** Optional metadata for debugging and devtools (never read on hot path). */
|
|
1357
|
+
meta?: DefinitionMeta;
|
|
1296
1358
|
}
|
|
1297
1359
|
/**
|
|
1298
1360
|
* Cross-module effects definition.
|
|
@@ -1311,7 +1373,10 @@ type CrossModuleDerivationFn<M extends ModuleSchema, Deps extends CrossModuleDep
|
|
|
1311
1373
|
* Cross-module derivations definition.
|
|
1312
1374
|
*/
|
|
1313
1375
|
type CrossModuleDerivationsDef<M extends ModuleSchema, Deps extends CrossModuleDeps> = {
|
|
1314
|
-
[K in keyof GetDerivationsSchema<M>]: CrossModuleDerivationFn<M, Deps, K
|
|
1376
|
+
[K in keyof GetDerivationsSchema<M>]: CrossModuleDerivationFn<M, Deps, K> | {
|
|
1377
|
+
compute: CrossModuleDerivationFn<M, Deps, K>;
|
|
1378
|
+
meta?: DefinitionMeta;
|
|
1379
|
+
};
|
|
1315
1380
|
};
|
|
1316
1381
|
/**
|
|
1317
1382
|
* Resolver context with typed facts.
|
|
@@ -1348,6 +1413,8 @@ interface TypedResolverDef<M extends ModuleSchema, T extends keyof GetRequiremen
|
|
|
1348
1413
|
resolveBatch?: (reqs: ExtractRequirement<M, T>[], ctx: TypedResolverContext<M>) => Promise<void>;
|
|
1349
1414
|
/** Resolve batched requirements with per-item success/failure results. Return a `BatchResolveResults` array in the same order as the input. Failed items can be individually retried. */
|
|
1350
1415
|
resolveBatchWithResults?: (reqs: ExtractRequirement<M, T>[], ctx: TypedResolverContext<M>) => Promise<BatchResolveResults>;
|
|
1416
|
+
/** Optional metadata for debugging and devtools (never read on hot path). */
|
|
1417
|
+
meta?: DefinitionMeta;
|
|
1351
1418
|
}
|
|
1352
1419
|
/**
|
|
1353
1420
|
* Union of all typed resolver definitions for all requirement types.
|
|
@@ -1375,6 +1442,8 @@ interface ModuleDef<M extends ModuleSchema = ModuleSchema> {
|
|
|
1375
1442
|
constraints?: TypedConstraintsDef<M>;
|
|
1376
1443
|
resolvers?: TypedResolversDef<M>;
|
|
1377
1444
|
hooks?: ModuleHooks<M>;
|
|
1445
|
+
/** Optional metadata for debugging and devtools (never read on hot path). */
|
|
1446
|
+
meta?: DefinitionMeta;
|
|
1378
1447
|
/**
|
|
1379
1448
|
* History configuration for this module.
|
|
1380
1449
|
* Controls which events create snapshots for undo/redo.
|
|
@@ -1500,6 +1569,7 @@ interface TraceEntry {
|
|
|
1500
1569
|
key: string;
|
|
1501
1570
|
oldValue: unknown;
|
|
1502
1571
|
newValue: unknown;
|
|
1572
|
+
meta?: DefinitionMeta;
|
|
1503
1573
|
}>;
|
|
1504
1574
|
/** Derivations recomputed during this run, with tracked dependencies and values */
|
|
1505
1575
|
derivationsRecomputed: Array<{
|
|
@@ -1507,12 +1577,14 @@ interface TraceEntry {
|
|
|
1507
1577
|
deps: string[];
|
|
1508
1578
|
oldValue: unknown;
|
|
1509
1579
|
newValue: unknown;
|
|
1580
|
+
meta?: DefinitionMeta;
|
|
1510
1581
|
}>;
|
|
1511
1582
|
/** Constraints that evaluated to active, with tracked dependencies */
|
|
1512
1583
|
constraintsHit: Array<{
|
|
1513
1584
|
id: string;
|
|
1514
1585
|
priority: number;
|
|
1515
1586
|
deps: string[];
|
|
1587
|
+
meta?: DefinitionMeta;
|
|
1516
1588
|
}>;
|
|
1517
1589
|
/** Requirements added from constraint diff */
|
|
1518
1590
|
requirementsAdded: Array<{
|
|
@@ -1530,28 +1602,33 @@ interface TraceEntry {
|
|
|
1530
1602
|
resolversStarted: Array<{
|
|
1531
1603
|
resolver: string;
|
|
1532
1604
|
requirementId: string;
|
|
1605
|
+
meta?: DefinitionMeta;
|
|
1533
1606
|
}>;
|
|
1534
1607
|
/** Resolvers that completed (async — populated after reconcile) */
|
|
1535
1608
|
resolversCompleted: Array<{
|
|
1536
1609
|
resolver: string;
|
|
1537
1610
|
requirementId: string;
|
|
1538
1611
|
duration: number;
|
|
1612
|
+
meta?: DefinitionMeta;
|
|
1539
1613
|
}>;
|
|
1540
1614
|
/** Resolvers that errored (async — populated after reconcile) */
|
|
1541
1615
|
resolversErrored: Array<{
|
|
1542
1616
|
resolver: string;
|
|
1543
1617
|
requirementId: string;
|
|
1544
1618
|
error: string;
|
|
1619
|
+
meta?: DefinitionMeta;
|
|
1545
1620
|
}>;
|
|
1546
1621
|
/** Effects that ran, with their triggering fact keys */
|
|
1547
1622
|
effectsRun: Array<{
|
|
1548
1623
|
id: string;
|
|
1549
1624
|
triggeredBy: string[];
|
|
1625
|
+
meta?: DefinitionMeta;
|
|
1550
1626
|
}>;
|
|
1551
1627
|
/** Effect errors */
|
|
1552
1628
|
effectErrors: Array<{
|
|
1553
1629
|
id: string;
|
|
1554
1630
|
error: string;
|
|
1631
|
+
meta?: DefinitionMeta;
|
|
1555
1632
|
}>;
|
|
1556
1633
|
/** Human-readable causal chain summary (populated when run settles) */
|
|
1557
1634
|
causalChain?: string;
|
|
@@ -1566,6 +1643,16 @@ interface SystemInspection {
|
|
|
1566
1643
|
resolverId: string;
|
|
1567
1644
|
startedAt: number;
|
|
1568
1645
|
}>;
|
|
1646
|
+
/** All fact/schema field keys with optional metadata */
|
|
1647
|
+
facts: Array<{
|
|
1648
|
+
key: string;
|
|
1649
|
+
meta?: DefinitionMeta;
|
|
1650
|
+
}>;
|
|
1651
|
+
/** All event names with optional metadata */
|
|
1652
|
+
events: Array<{
|
|
1653
|
+
name: string;
|
|
1654
|
+
meta?: DefinitionMeta;
|
|
1655
|
+
}>;
|
|
1569
1656
|
constraints: Array<{
|
|
1570
1657
|
id: string;
|
|
1571
1658
|
active: boolean;
|
|
@@ -1573,12 +1660,29 @@ interface SystemInspection {
|
|
|
1573
1660
|
priority: number;
|
|
1574
1661
|
hitCount: number;
|
|
1575
1662
|
lastActiveAt: number | null;
|
|
1663
|
+
meta?: DefinitionMeta;
|
|
1576
1664
|
}>;
|
|
1577
1665
|
resolvers: Record<string, ResolverStatus>;
|
|
1578
1666
|
/** All defined resolver names and their requirement types */
|
|
1579
1667
|
resolverDefs: Array<{
|
|
1580
1668
|
id: string;
|
|
1581
1669
|
requirement: string;
|
|
1670
|
+
meta?: DefinitionMeta;
|
|
1671
|
+
}>;
|
|
1672
|
+
/** All defined effect names with optional metadata */
|
|
1673
|
+
effects: Array<{
|
|
1674
|
+
id: string;
|
|
1675
|
+
meta?: DefinitionMeta;
|
|
1676
|
+
}>;
|
|
1677
|
+
/** All defined derivation names with optional metadata */
|
|
1678
|
+
derivations: Array<{
|
|
1679
|
+
id: string;
|
|
1680
|
+
meta?: DefinitionMeta;
|
|
1681
|
+
}>;
|
|
1682
|
+
/** All registered modules with optional metadata */
|
|
1683
|
+
modules: Array<{
|
|
1684
|
+
id: string;
|
|
1685
|
+
meta?: DefinitionMeta;
|
|
1582
1686
|
}>;
|
|
1583
1687
|
/** Whether trace is enabled on this system */
|
|
1584
1688
|
traceEnabled: boolean;
|
|
@@ -1739,13 +1843,19 @@ interface DerivationsControl<M extends ModuleSchema = ModuleSchema> {
|
|
|
1739
1843
|
* @throws If a derivation with this ID already exists (use `assign` to override)
|
|
1740
1844
|
* @remarks During reconciliation, the registration is deferred and applied after the current cycle completes.
|
|
1741
1845
|
*/
|
|
1742
|
-
register(id: string, fn: (facts: Readonly<InferSchema<M["facts"]>>, derived: Readonly<InferDerivations<M>>) => unknown)
|
|
1846
|
+
register(id: string, fn: ((facts: Readonly<InferSchema<M["facts"]>>, derived: Readonly<InferDerivations<M>>) => unknown) | {
|
|
1847
|
+
compute: (facts: Readonly<InferSchema<M["facts"]>>, derived: Readonly<InferDerivations<M>>) => unknown;
|
|
1848
|
+
meta?: DefinitionMeta;
|
|
1849
|
+
}): void;
|
|
1743
1850
|
/**
|
|
1744
1851
|
* Override an existing derivation (static or dynamic).
|
|
1745
1852
|
* @throws If no derivation with this ID exists (use `register` to create)
|
|
1746
1853
|
* @remarks During reconciliation, the assignment is deferred and applied after the current cycle completes.
|
|
1747
1854
|
*/
|
|
1748
|
-
assign(id: string, fn: (facts: Readonly<InferSchema<M["facts"]>>, derived: Readonly<InferDerivations<M>>) => unknown)
|
|
1855
|
+
assign(id: string, fn: ((facts: Readonly<InferSchema<M["facts"]>>, derived: Readonly<InferDerivations<M>>) => unknown) | {
|
|
1856
|
+
compute: (facts: Readonly<InferSchema<M["facts"]>>, derived: Readonly<InferDerivations<M>>) => unknown;
|
|
1857
|
+
meta?: DefinitionMeta;
|
|
1858
|
+
}): void;
|
|
1749
1859
|
/**
|
|
1750
1860
|
* Remove a dynamically registered derivation.
|
|
1751
1861
|
* Static (module-defined) derivations cannot be unregistered — logs a dev warning and no-ops.
|
|
@@ -1818,11 +1928,13 @@ interface DynamicConstraintDef<M extends ModuleSchema = ModuleSchema> {
|
|
|
1818
1928
|
timeout?: number;
|
|
1819
1929
|
after?: string[];
|
|
1820
1930
|
deps?: string[];
|
|
1931
|
+
meta?: DefinitionMeta;
|
|
1821
1932
|
}
|
|
1822
1933
|
/** Effect definition for dynamic registration — typed facts */
|
|
1823
1934
|
interface DynamicEffectDef<M extends ModuleSchema = ModuleSchema> {
|
|
1824
1935
|
run: (facts: Readonly<InferSchema<M["facts"]>>, prev: InferSchema<M["facts"]> | null) => void | (() => void) | Promise<void | (() => void)>;
|
|
1825
1936
|
deps?: Array<string & keyof InferSchema<M["facts"]>>;
|
|
1937
|
+
meta?: DefinitionMeta;
|
|
1826
1938
|
}
|
|
1827
1939
|
/** Resolver definition for dynamic registration — typed context.facts, relaxed requirement */
|
|
1828
1940
|
interface DynamicResolverDef<M extends ModuleSchema = ModuleSchema> {
|
|
@@ -1850,6 +1962,34 @@ interface DynamicResolverDef<M extends ModuleSchema = ModuleSchema> {
|
|
|
1850
1962
|
signal: AbortSignal;
|
|
1851
1963
|
snapshot: () => InferSchema<M["facts"]>;
|
|
1852
1964
|
}) => Promise<void>;
|
|
1965
|
+
meta?: DefinitionMeta;
|
|
1966
|
+
}
|
|
1967
|
+
/** Result from bulk meta queries (byCategory, byTag). */
|
|
1968
|
+
interface MetaMatch {
|
|
1969
|
+
type: "module" | "fact" | "event" | "constraint" | "resolver" | "effect" | "derivation";
|
|
1970
|
+
id: string;
|
|
1971
|
+
meta: DefinitionMeta;
|
|
1972
|
+
}
|
|
1973
|
+
/** O(1) accessor for definition metadata. */
|
|
1974
|
+
interface MetaAccessor {
|
|
1975
|
+
/** Get metadata for a module by ID. */
|
|
1976
|
+
module(id: string): DefinitionMeta | undefined;
|
|
1977
|
+
/** Get metadata for a fact/schema field by key. */
|
|
1978
|
+
fact(key: string): DefinitionMeta | undefined;
|
|
1979
|
+
/** Get metadata for an event by name. */
|
|
1980
|
+
event(name: string): DefinitionMeta | undefined;
|
|
1981
|
+
/** Get metadata for a constraint by ID. */
|
|
1982
|
+
constraint(id: string): DefinitionMeta | undefined;
|
|
1983
|
+
/** Get metadata for a resolver by ID. */
|
|
1984
|
+
resolver(id: string): DefinitionMeta | undefined;
|
|
1985
|
+
/** Get metadata for an effect by ID. */
|
|
1986
|
+
effect(id: string): DefinitionMeta | undefined;
|
|
1987
|
+
/** Get metadata for a derivation by ID. */
|
|
1988
|
+
derivation(id: string): DefinitionMeta | undefined;
|
|
1989
|
+
/** Find all definitions matching a category across all types. */
|
|
1990
|
+
byCategory(category: string): MetaMatch[];
|
|
1991
|
+
/** Find all definitions matching a tag across all types. */
|
|
1992
|
+
byTag(tag: string): MetaMatch[];
|
|
1853
1993
|
}
|
|
1854
1994
|
interface System<M extends ModuleSchema = ModuleSchema> {
|
|
1855
1995
|
readonly facts: Facts<M["facts"]>;
|
|
@@ -1859,6 +1999,8 @@ interface System<M extends ModuleSchema = ModuleSchema> {
|
|
|
1859
1999
|
readonly constraints: ConstraintsControl<M>;
|
|
1860
2000
|
readonly effects: EffectsControl<M>;
|
|
1861
2001
|
readonly resolvers: ResolversControl<M>;
|
|
2002
|
+
/** O(1) metadata queries for constraints, resolvers, effects, derivations. */
|
|
2003
|
+
readonly meta: MetaAccessor;
|
|
1862
2004
|
/** Per-run trace entries (null if trace is not enabled) */
|
|
1863
2005
|
readonly trace: TraceEntry[] | null;
|
|
1864
2006
|
/** Initialize facts and derivations without starting reconciliation. Safe for SSR. */
|
|
@@ -2238,4 +2380,4 @@ interface Plugin<M extends ModuleSchema = ModuleSchema> {
|
|
|
2238
2380
|
onTraceComplete?: (entry: TraceEntry) => void;
|
|
2239
2381
|
}
|
|
2240
2382
|
|
|
2241
|
-
export {
|
|
2383
|
+
export { type SystemMode as $, type AnySystem as A, type BatchConfig as B, type CrossModuleDeps as C, type DefinitionMeta as D, type EffectsDef as E, type Facts as F, type InferFacts as G, type HistoryAPI as H, type InferDerivations as I, type InferRequirementTypes as J, type InferRequirements as K, type InferSchemaType as L, type ModuleSchema as M, type NamespacedSystem as N, type InferSelectorState as O, type Plugin as P, type MetaAccessor as Q, type RequirementWithId as R, type SchemaType as S, type TypedDerivationsDef as T, type MetaMatch as U, type RetryPolicy as V, type Schema as W, type Snapshot as X, type System as Y, type SystemConfig as Z, type SystemInspection as _, type TypedEventsDef as a, type SystemSnapshot as a0, type TraceEntry as a1, isNamespacedSystem as a2, isSingleModuleSystem as a3, type FactsStore as a4, type ConstraintsDef as a5, type ConstraintState as a6, type ResolversDef as a7, type ResolverStatus as a8, type FactChange as a9, type FlexibleEventHandler as aA, type HistoryConfig as aB, type InferEventPayloadFromSchema as aC, type InferRequirementPayloadFromSchema as aD, type InferSchema as aE, type MutableNamespacedFacts as aF, type NamespacedDerivations as aG, type NamespacedEventsAccessor as aH, type NamespacedFacts as aI, type ObservableKeys as aJ, type RequirementExplanation as aK, type RequirementOutput as aL, type RequirementPayloadSchema$1 as aM, type RequirementsSchema as aN, type ResolverContext as aO, type ResolversControl as aP, type SnapshotMeta as aQ, type SystemEvent as aR, type TraceConfig as aS, type TypedConstraintDef as aT, type TypedResolverContext as aU, type TypedResolverDef as aV, type UnionEvents as aW, type RequirementOutput$1 as aX, type ReconcileResult as aa, type RecoveryStrategy as ab, type ErrorSource as ac, type RetryLaterConfig as ad, type BatchItemResult as ae, type BatchResolveResults as af, type ConstraintsControl as ag, type CrossModuleConstraintDef as ah, type CrossModuleDerivationFn as ai, type CrossModuleEffectDef as aj, type CrossModuleFactsWithSelf as ak, type DerivationKeys as al, type DerivationReturnType as am, type DerivationsControl as an, type DerivationsSchema as ao, type DeriveAccessor as ap, type DispatchEventsFromSchema as aq, type EffectCleanup as ar, type EffectsControl as as, type EventPayloadSchema as at, type EventsAccessor as au, type EventsAccessorFromSchema as av, type EventsDef as aw, type EventsSchema as ax, type FactKeys as ay, type FactReturnType as az, type TypedConstraintsDef as b, type TypedResolversDef as c, type ModuleHooks as d, type CrossModuleDerivationsDef as e, type CrossModuleEffectsDef as f, type CrossModuleConstraintsDef as g, type ModuleDef as h, type CreateSystemOptionsSingle as i, type SingleModuleSystem as j, type ModulesMap as k, type CreateSystemOptionsNamed as l, type TraceOption as m, type ErrorBoundaryConfig as n, type Requirement as o, type RequirementKeyFn as p, DirectiveError as q, type DistributableSnapshot as r, type DistributableSnapshotOptions as s, type DynamicConstraintDef as t, type DynamicEffectDef as u, type DynamicResolverDef as v, type FactsSnapshot as w, type HistoryOption as x, type HistoryState as y, type InferEvents as z };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"system-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"system-AGVKMAYF.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunk3H24Z7WM_cjs=require('./chunk-3H24Z7WM.cjs');require('./chunk-AUSBUCOL.cjs'),require('./chunk-ER6QUYTL.cjs'),require('./chunk-BEJ6ICA7.cjs');Object.defineProperty(exports,"createSystem",{enumerable:true,get:function(){return chunk3H24Z7WM_cjs.a}});//# sourceMappingURL=system-QQYBNE7A.cjs.map
|
|
2
|
+
//# sourceMappingURL=system-QQYBNE7A.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"system-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"system-QQYBNE7A.cjs"}
|
package/dist/testing.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunk3H24Z7WM_cjs=require('./chunk-3H24Z7WM.cjs');require('./chunk-AUSBUCOL.cjs'),require('./chunk-ER6QUYTL.cjs'),require('./chunk-BEJ6ICA7.cjs');async function S(){for(let t=0;t<10;t++)await Promise.resolve();}async function D(t,r,n={}){let{totalTime:a=5e3,stepSize:c=10,maxIterations:l=1e3}=n,d=0,h=0;for(;d<a&&h<l;){if(await S(),t.inspect().inflight.length===0){await S();return}r(c),d+=c,h++;}let g=t.inspect();if(g.inflight.length>0){let v=g.inflight.map(y=>y.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${a}ms. ${g.inflight.length} resolvers still inflight: ${v}`)}}function T(){let t=0,r=[];return {async advance(n){let a=t+n;for(;r.length>0&&r[0].time<=a;){let c=r.shift();t=c.time,c.callback(),await Promise.resolve();}t=a;},async next(){if(r.length===0)return;let n=r.shift();t=n.time,n.callback(),await Promise.resolve();},async runAll(){for(;r.length>0;)await this.next();},now(){return t},reset(){t=0,r.length=0;}}}function k(t){let r=typeof t=="string"?{requirement:(a=>a.type===t)}:t,n=r.calls??[];return {requirement:r.requirement??(a=>true),async resolve(a,c){if(n.push(a),r.delay&&await new Promise(l=>setTimeout(l,r.delay)),r.error)throw typeof r.error=="string"?new Error(r.error):r.error;r.resolve&&await r.resolve(a,c);}}}function E(t){let r=[],n=[];return {...{get calls(){return r},get pending(){return n},resolve(l){let d=n.shift();d&&d.resolve(l);},reject(l){let d=n.shift();d&&d.reject(l);},resolveAll(l){for(;n.length>0;)this.resolve(l);},rejectAll(l){for(;n.length>0;)this.reject(l);},reset(){r.length=0,n.length=0;}},handler:(l,d)=>(r.push(l),new Promise((h,g)=>{n.push({requirement:l,resolve:v=>h(v),reject:g});}))}}function C(t){return "module"in t?x(t):M(t)}function x(t){let r=[],n=new Map,a=[],c=[],l={};if(t.mocks?.resolvers)for(let[o,e]of Object.entries(t.mocks.resolvers)){let s=[];n.set(o,s),l[o]=k({...e,calls:s});}let d={...t.module,resolvers:{...t.module.resolvers,...l}},g=chunk3H24Z7WM_cjs.a({...t,module:d,plugins:[{name:"__test-tracking__",onFactSet:(o,e,s)=>{c.push({key:o,fullKey:o,namespace:void 0,previousValue:s,newValue:e,timestamp:Date.now()});},onRequirementCreated:o=>{a.push(o);}},...t.plugins??[]]}),v=g.dispatch.bind(g);return g.dispatch=o=>{r.push(o),v(o);},{...g,eventHistory:r,resolverCalls:n,get allRequirements(){return a},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(o=5e3){let e=Date.now(),s=async()=>{await new Promise(m=>setTimeout(m,0));let i=g.inspect();if(i.inflight.length>0){if(Date.now()-e>o){let m=i.inflight.map(u=>u.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${o}ms. ${i.inflight.length} resolvers still inflight: ${m}`)}return await new Promise(m=>setTimeout(m,10)),s()}};return s()},assertRequirement(o){if(!a.some(s=>s.requirement.type===o))throw new Error(`[Directive] Expected requirement of type "${o}" but none found`)},assertResolverCalled(o,e){let s=n.get(o)??[];if(e!==void 0){if(s.length!==e)throw new Error(`[Directive] Expected resolver "${o}" to be called ${e} times but was called ${s.length} times`)}else if(s.length===0)throw new Error(`[Directive] Expected resolver "${o}" to be called but it was not`)},assertFactSet(o,e){let s=c.filter(i=>i.key===o);if(s.length===0)throw new Error(`[Directive] Expected fact "${o}" to be set but it was not`);if(e!==void 0&&!s.some(m=>m.newValue===e)){let m=s.map(u=>JSON.stringify(u.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${o}" to be set to ${JSON.stringify(e)} but got: ${m}`)}},assertFactChanges(o,e){let s=c.filter(i=>i.key===o);if(s.length!==e)throw new Error(`[Directive] Expected fact "${o}" to change ${e} times but it changed ${s.length} times`)}}}function M(t){let r=[],n=new Map,a=[],c=[],l={};if(t.mocks?.resolvers)for(let[e,s]of Object.entries(t.mocks.resolvers)){let i=[];n.set(e,i),l[e]=k({...s,calls:i});}let d={};for(let[e,s]of Object.entries(t.modules))d[e]={...s,resolvers:{...s.resolvers,...l}};let h=new Set(Object.keys(t.modules)),v=chunk3H24Z7WM_cjs.a({...t,modules:d,plugins:[{name:"__test-tracking__",onFactSet:(e,s,i)=>{let u=e.indexOf("::"),f,p;if(u>0){let R=e.substring(0,u);h.has(R)?(f=R,p=e.substring(u+2)):p=e;}else p=e;c.push({key:p,fullKey:e,namespace:f,previousValue:i,newValue:s,timestamp:Date.now()});},onRequirementCreated:e=>{a.push(e);}},...t.plugins??[]]}),y=v.dispatch.bind(v);return v.dispatch=e=>{r.push(e),y(e);},{...v,eventHistory:r,resolverCalls:n,get allRequirements(){return a},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(e=5e3){let s=Date.now(),i=async()=>{await new Promise(u=>setTimeout(u,0));let m=v.inspect();if(m.inflight.length>0){if(Date.now()-s>e){let u=m.inflight.map(f=>f.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${e}ms. ${m.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),i()}};return i()},assertRequirement(e){if(!a.some(i=>i.requirement.type===e))throw new Error(`[Directive] Expected requirement of type "${e}" but none found`)},assertResolverCalled(e,s){let i=n.get(e)??[];if(s!==void 0){if(i.length!==s)throw new Error(`[Directive] Expected resolver "${e}" to be called ${s} times but was called ${i.length} times`)}else if(i.length===0)throw new Error(`[Directive] Expected resolver "${e}" to be called but it was not`)},assertFactSet(e,s){let i=c.filter(m=>m.key===e);if(i.length===0)throw new Error(`[Directive] Expected fact "${e}" to be set but it was not`);if(s!==void 0&&!i.some(u=>u.newValue===s)){let u=i.map(f=>JSON.stringify(f.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${e}" to be set to ${JSON.stringify(s)} but got: ${u}`)}},assertFactChanges(e,s){let i=c.filter(m=>m.key===e);if(i.length!==s)throw new Error(`[Directive] Expected fact "${e}" to change ${s} times but it changed ${i.length} times`)}}}function $(t,r,n){if(!b(t,r,n))throw new Error(`[Directive] Expected ${r} "${n}" to be dynamic, but it is not.`)}function P(t,r,n){if(b(t,r,n))throw new Error(`[Directive] Expected ${r} "${n}" to NOT be dynamic, but it is.`)}function b(t,r,n){switch(r){case "constraint":return t.constraints.isDynamic(n);case "resolver":return t.resolvers.isDynamic(n);case "derivation":return t.derive.isDynamic(n);case "effect":return t.effects.isDynamic(n)}}exports.assertDynamic=$;exports.assertNotDynamic=P;exports.createFakeTimers=T;exports.createMockResolver=k;exports.createTestSystem=C;exports.flushMicrotasks=S;exports.mockResolver=E;exports.settleWithFakeTimers=D;//# sourceMappingURL=testing.cjs.map
|
|
2
2
|
//# sourceMappingURL=testing.cjs.map
|
package/dist/testing.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { k as ModulesMap, l as CreateSystemOptionsNamed, o as Requirement, M as ModuleSchema, i as CreateSystemOptionsSingle, N as NamespacedSystem, R as RequirementWithId, j as SingleModuleSystem,
|
|
1
|
+
import { k as ModulesMap, l as CreateSystemOptionsNamed, o as Requirement, M as ModuleSchema, i as CreateSystemOptionsSingle, N as NamespacedSystem, R as RequirementWithId, j as SingleModuleSystem, _ as SystemInspection } from './plugins-O-3VHejK.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Testing Utilities - Helpers for testing Directive systems
|
package/dist/testing.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { k as ModulesMap, l as CreateSystemOptionsNamed, o as Requirement, M as ModuleSchema, i as CreateSystemOptionsSingle, N as NamespacedSystem, R as RequirementWithId, j as SingleModuleSystem,
|
|
1
|
+
import { k as ModulesMap, l as CreateSystemOptionsNamed, o as Requirement, M as ModuleSchema, i as CreateSystemOptionsSingle, N as NamespacedSystem, R as RequirementWithId, j as SingleModuleSystem, _ as SystemInspection } from './plugins-O-3VHejK.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Testing Utilities - Helpers for testing Directive systems
|
package/dist/testing.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a}from'./chunk-
|
|
1
|
+
import {a}from'./chunk-MPOV2REO.js';import'./chunk-YWKFNZQV.js';import'./chunk-EFBBEXDA.js';import'./chunk-4CMO5OVZ.js';async function S(){for(let t=0;t<10;t++)await Promise.resolve();}async function D(t,r,n={}){let{totalTime:a=5e3,stepSize:c=10,maxIterations:l=1e3}=n,d=0,h=0;for(;d<a&&h<l;){if(await S(),t.inspect().inflight.length===0){await S();return}r(c),d+=c,h++;}let g=t.inspect();if(g.inflight.length>0){let v=g.inflight.map(y=>y.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${a}ms. ${g.inflight.length} resolvers still inflight: ${v}`)}}function T(){let t=0,r=[];return {async advance(n){let a=t+n;for(;r.length>0&&r[0].time<=a;){let c=r.shift();t=c.time,c.callback(),await Promise.resolve();}t=a;},async next(){if(r.length===0)return;let n=r.shift();t=n.time,n.callback(),await Promise.resolve();},async runAll(){for(;r.length>0;)await this.next();},now(){return t},reset(){t=0,r.length=0;}}}function k(t){let r=typeof t=="string"?{requirement:(a=>a.type===t)}:t,n=r.calls??[];return {requirement:r.requirement??(a=>true),async resolve(a,c){if(n.push(a),r.delay&&await new Promise(l=>setTimeout(l,r.delay)),r.error)throw typeof r.error=="string"?new Error(r.error):r.error;r.resolve&&await r.resolve(a,c);}}}function E(t){let r=[],n=[];return {...{get calls(){return r},get pending(){return n},resolve(l){let d=n.shift();d&&d.resolve(l);},reject(l){let d=n.shift();d&&d.reject(l);},resolveAll(l){for(;n.length>0;)this.resolve(l);},rejectAll(l){for(;n.length>0;)this.reject(l);},reset(){r.length=0,n.length=0;}},handler:(l,d)=>(r.push(l),new Promise((h,g)=>{n.push({requirement:l,resolve:v=>h(v),reject:g});}))}}function C(t){return "module"in t?x(t):M(t)}function x(t){let r=[],n=new Map,a$1=[],c=[],l={};if(t.mocks?.resolvers)for(let[o,e]of Object.entries(t.mocks.resolvers)){let s=[];n.set(o,s),l[o]=k({...e,calls:s});}let d={...t.module,resolvers:{...t.module.resolvers,...l}},g=a({...t,module:d,plugins:[{name:"__test-tracking__",onFactSet:(o,e,s)=>{c.push({key:o,fullKey:o,namespace:void 0,previousValue:s,newValue:e,timestamp:Date.now()});},onRequirementCreated:o=>{a$1.push(o);}},...t.plugins??[]]}),v=g.dispatch.bind(g);return g.dispatch=o=>{r.push(o),v(o);},{...g,eventHistory:r,resolverCalls:n,get allRequirements(){return a$1},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(o=5e3){let e=Date.now(),s=async()=>{await new Promise(m=>setTimeout(m,0));let i=g.inspect();if(i.inflight.length>0){if(Date.now()-e>o){let m=i.inflight.map(u=>u.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${o}ms. ${i.inflight.length} resolvers still inflight: ${m}`)}return await new Promise(m=>setTimeout(m,10)),s()}};return s()},assertRequirement(o){if(!a$1.some(s=>s.requirement.type===o))throw new Error(`[Directive] Expected requirement of type "${o}" but none found`)},assertResolverCalled(o,e){let s=n.get(o)??[];if(e!==void 0){if(s.length!==e)throw new Error(`[Directive] Expected resolver "${o}" to be called ${e} times but was called ${s.length} times`)}else if(s.length===0)throw new Error(`[Directive] Expected resolver "${o}" to be called but it was not`)},assertFactSet(o,e){let s=c.filter(i=>i.key===o);if(s.length===0)throw new Error(`[Directive] Expected fact "${o}" to be set but it was not`);if(e!==void 0&&!s.some(m=>m.newValue===e)){let m=s.map(u=>JSON.stringify(u.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${o}" to be set to ${JSON.stringify(e)} but got: ${m}`)}},assertFactChanges(o,e){let s=c.filter(i=>i.key===o);if(s.length!==e)throw new Error(`[Directive] Expected fact "${o}" to change ${e} times but it changed ${s.length} times`)}}}function M(t){let r=[],n=new Map,a$1=[],c=[],l={};if(t.mocks?.resolvers)for(let[e,s]of Object.entries(t.mocks.resolvers)){let i=[];n.set(e,i),l[e]=k({...s,calls:i});}let d={};for(let[e,s]of Object.entries(t.modules))d[e]={...s,resolvers:{...s.resolvers,...l}};let h=new Set(Object.keys(t.modules)),v=a({...t,modules:d,plugins:[{name:"__test-tracking__",onFactSet:(e,s,i)=>{let u=e.indexOf("::"),f,p;if(u>0){let R=e.substring(0,u);h.has(R)?(f=R,p=e.substring(u+2)):p=e;}else p=e;c.push({key:p,fullKey:e,namespace:f,previousValue:i,newValue:s,timestamp:Date.now()});},onRequirementCreated:e=>{a$1.push(e);}},...t.plugins??[]]}),y=v.dispatch.bind(v);return v.dispatch=e=>{r.push(e),y(e);},{...v,eventHistory:r,resolverCalls:n,get allRequirements(){return a$1},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(e=5e3){let s=Date.now(),i=async()=>{await new Promise(u=>setTimeout(u,0));let m=v.inspect();if(m.inflight.length>0){if(Date.now()-s>e){let u=m.inflight.map(f=>f.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${e}ms. ${m.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),i()}};return i()},assertRequirement(e){if(!a$1.some(i=>i.requirement.type===e))throw new Error(`[Directive] Expected requirement of type "${e}" but none found`)},assertResolverCalled(e,s){let i=n.get(e)??[];if(s!==void 0){if(i.length!==s)throw new Error(`[Directive] Expected resolver "${e}" to be called ${s} times but was called ${i.length} times`)}else if(i.length===0)throw new Error(`[Directive] Expected resolver "${e}" to be called but it was not`)},assertFactSet(e,s){let i=c.filter(m=>m.key===e);if(i.length===0)throw new Error(`[Directive] Expected fact "${e}" to be set but it was not`);if(s!==void 0&&!i.some(u=>u.newValue===s)){let u=i.map(f=>JSON.stringify(f.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${e}" to be set to ${JSON.stringify(s)} but got: ${u}`)}},assertFactChanges(e,s){let i=c.filter(m=>m.key===e);if(i.length!==s)throw new Error(`[Directive] Expected fact "${e}" to change ${s} times but it changed ${i.length} times`)}}}function $(t,r,n){if(!b(t,r,n))throw new Error(`[Directive] Expected ${r} "${n}" to be dynamic, but it is not.`)}function P(t,r,n){if(b(t,r,n))throw new Error(`[Directive] Expected ${r} "${n}" to NOT be dynamic, but it is.`)}function b(t,r,n){switch(r){case "constraint":return t.constraints.isDynamic(n);case "resolver":return t.resolvers.isDynamic(n);case "derivation":return t.derive.isDynamic(n);case "effect":return t.effects.isDynamic(n)}}export{$ as assertDynamic,P as assertNotDynamic,T as createFakeTimers,k as createMockResolver,C as createTestSystem,S as flushMicrotasks,E as mockResolver,D as settleWithFakeTimers};//# sourceMappingURL=testing.js.map
|
|
2
2
|
//# sourceMappingURL=testing.js.map
|
package/dist/worker.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';function _(o){let{worker:c,onFactChange:l,onDerivationChange:y,onRequirementCreated:E,onRequirementMet:a,onError:r}=o,s=new Map,u=0,t=null,i=null,d=null,T=null;function g(e){return e?.(),null}function R(e,n){let S=s.get(e);S&&(S.resolve(n),s.delete(e));}function M(){t=g(t);}function m(){i=g(i);}function I(){d=g(d);}function b(){T=g(T);}function h(e){l?.(e.key,e.value,e.prev);}function O(e){y?.(e.key,e.value);}function W(e){E?.(e.requirement);}function C(e){a?.(e.requirementId,e.resolverId);}function P(e){r?.(e.error,e.source);}function D(e){R(e.requestId,e.snapshot);}function w(e){R(e.requestId,e.inspection);}function q(e){let n=s.get(e.requestId);n&&(e.success?n.resolve(void 0):n.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let n=e.data;switch(n.type){case "READY":return M();case "STARTED":return m();case "STOPPED":return I();case "DESTROYED":return b();case "FACT_CHANGED":return h(n);case "DERIVATION_CHANGED":return O(n);case "REQUIREMENT_CREATED":return W(n);case "REQUIREMENT_MET":return C(n);case "ERROR":return P(n);case "SNAPSHOT_RESULT":return D(n);case "INSPECT_RESULT":return w(n);case "SETTLE_RESULT":return q(n)}},c.onerror=e=>{r?.(e.message,"worker");};function p(e){c.postMessage(e);}function k(e){return new Promise((n,S)=>{s.set(e.requestId,{resolve:n,reject:S}),p(e);})}return {init(e){return new Promise(n=>{t=n,p({type:"INIT",config:e});})},start(){return new Promise(e=>{i=e,p({type:"START"});})},stop(){return new Promise(e=>{d=e,p({type:"STOP"});})},destroy(){return new Promise(e=>{T=e,p({type:"DESTROY"});})},setFact(e,n){p({type:"SET_FACT",key:e,value:n});},setFacts(e){p({type:"SET_FACTS",facts:e});},dispatch(e){p({type:"DISPATCH",event:e});},getSnapshot(e){let n=`snapshot-${++u}`;return k({type:"GET_SNAPSHOT",options:e,requestId:n})},inspect(){let e=`inspect-${++u}`;return k({type:"INSPECT",requestId:e})},settle(e){let n=`settle-${++u}`;return k({type:"SETTLE",timeout:e,requestId:n})},terminate(){c.terminate();}}}var v=null;function f(){return v||(v=new Map),v}function N(o,c){f().set(o,c);}function x(){let o=null;async function c(t){let i=await A(t.config);return postMessage({type:"READY"}),i}function l(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function E(t){t.destroy(),postMessage({type:"DESTROYED"});}function a(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function r(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function u(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":l(o);break;case "STOP":y(o);break;case "DESTROY":E(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":a(o,t);break;case "INSPECT":r(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await u(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function A(o){let{createSystem:c}=await import('./system-
|
|
1
|
+
'use strict';function _(o){let{worker:c,onFactChange:l,onDerivationChange:y,onRequirementCreated:E,onRequirementMet:a,onError:r}=o,s=new Map,u=0,t=null,i=null,d=null,T=null;function g(e){return e?.(),null}function R(e,n){let S=s.get(e);S&&(S.resolve(n),s.delete(e));}function M(){t=g(t);}function m(){i=g(i);}function I(){d=g(d);}function b(){T=g(T);}function h(e){l?.(e.key,e.value,e.prev);}function O(e){y?.(e.key,e.value);}function W(e){E?.(e.requirement);}function C(e){a?.(e.requirementId,e.resolverId);}function P(e){r?.(e.error,e.source);}function D(e){R(e.requestId,e.snapshot);}function w(e){R(e.requestId,e.inspection);}function q(e){let n=s.get(e.requestId);n&&(e.success?n.resolve(void 0):n.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let n=e.data;switch(n.type){case "READY":return M();case "STARTED":return m();case "STOPPED":return I();case "DESTROYED":return b();case "FACT_CHANGED":return h(n);case "DERIVATION_CHANGED":return O(n);case "REQUIREMENT_CREATED":return W(n);case "REQUIREMENT_MET":return C(n);case "ERROR":return P(n);case "SNAPSHOT_RESULT":return D(n);case "INSPECT_RESULT":return w(n);case "SETTLE_RESULT":return q(n)}},c.onerror=e=>{r?.(e.message,"worker");};function p(e){c.postMessage(e);}function k(e){return new Promise((n,S)=>{s.set(e.requestId,{resolve:n,reject:S}),p(e);})}return {init(e){return new Promise(n=>{t=n,p({type:"INIT",config:e});})},start(){return new Promise(e=>{i=e,p({type:"START"});})},stop(){return new Promise(e=>{d=e,p({type:"STOP"});})},destroy(){return new Promise(e=>{T=e,p({type:"DESTROY"});})},setFact(e,n){p({type:"SET_FACT",key:e,value:n});},setFacts(e){p({type:"SET_FACTS",facts:e});},dispatch(e){p({type:"DISPATCH",event:e});},getSnapshot(e){let n=`snapshot-${++u}`;return k({type:"GET_SNAPSHOT",options:e,requestId:n})},inspect(){let e=`inspect-${++u}`;return k({type:"INSPECT",requestId:e})},settle(e){let n=`settle-${++u}`;return k({type:"SETTLE",timeout:e,requestId:n})},terminate(){c.terminate();}}}var v=null;function f(){return v||(v=new Map),v}function N(o,c){f().set(o,c);}function x(){let o=null;async function c(t){let i=await A(t.config);return postMessage({type:"READY"}),i}function l(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function E(t){t.destroy(),postMessage({type:"DESTROYED"});}function a(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function r(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function u(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":l(o);break;case "STOP":y(o);break;case "DESTROY":E(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":a(o,t);break;case "INSPECT":r(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await u(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function A(o){let{createSystem:c}=await import('./system-QQYBNE7A.cjs'),l=f(),y={};for(let r of o.moduleNames){let s=l.get(r);if(!s)throw new Error(`[Directive Worker] Module "${r}" not registered. Call registerWorkerModule('${r}', module) before handling messages.`);y[r]=s;}let a=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(r,s,u)=>{postMessage({type:"FACT_CHANGED",key:r,value:s,prev:u});},onDerivationCompute:(r,s)=>{postMessage({type:"DERIVATION_CHANGED",key:r,value:s});},onRequirementCreated:r=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...r.requirement,id:r.id}});},onRequirementMet:(r,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:r.id,resolverId:s});}}],history:o.history});return {start:()=>a.start(),stop:()=>a.stop(),destroy:()=>a.destroy(),setFact:(r,s)=>{a.facts[r]=s;},setFacts:r=>{let s=a.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[u,t]of Object.entries(r))s[u]=t;});else for(let[u,t]of Object.entries(r))s[u]=t;},dispatch:r=>{a.dispatch(r);},getSnapshot:r=>a.getDistributableSnapshot(r),inspect:()=>a.inspect(),settle:r=>a.settle(r)}}exports.createWorkerClient=_;exports.getWorkerModuleRegistry=f;exports.handleWorkerMessages=x;exports.registerWorkerModule=N;//# sourceMappingURL=worker.cjs.map
|
|
2
2
|
//# sourceMappingURL=worker.cjs.map
|
package/dist/worker.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as ModuleSchema,
|
|
1
|
+
import { M as ModuleSchema, s as DistributableSnapshotOptions, r as DistributableSnapshot, _ as SystemInspection, o as Requirement } from './plugins-O-3VHejK.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Web Worker Adapter - Run Directive engine off the main thread
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as ModuleSchema,
|
|
1
|
+
import { M as ModuleSchema, s as DistributableSnapshotOptions, r as DistributableSnapshot, _ as SystemInspection, o as Requirement } from './plugins-O-3VHejK.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Web Worker Adapter - Run Directive engine off the main thread
|
package/dist/worker.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function _(o){let{worker:c,onFactChange:l,onDerivationChange:y,onRequirementCreated:E,onRequirementMet:a,onError:r}=o,s=new Map,u=0,t=null,i=null,d=null,T=null;function g(e){return e?.(),null}function R(e,n){let S=s.get(e);S&&(S.resolve(n),s.delete(e));}function M(){t=g(t);}function m(){i=g(i);}function I(){d=g(d);}function b(){T=g(T);}function h(e){l?.(e.key,e.value,e.prev);}function O(e){y?.(e.key,e.value);}function W(e){E?.(e.requirement);}function C(e){a?.(e.requirementId,e.resolverId);}function P(e){r?.(e.error,e.source);}function D(e){R(e.requestId,e.snapshot);}function w(e){R(e.requestId,e.inspection);}function q(e){let n=s.get(e.requestId);n&&(e.success?n.resolve(void 0):n.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let n=e.data;switch(n.type){case "READY":return M();case "STARTED":return m();case "STOPPED":return I();case "DESTROYED":return b();case "FACT_CHANGED":return h(n);case "DERIVATION_CHANGED":return O(n);case "REQUIREMENT_CREATED":return W(n);case "REQUIREMENT_MET":return C(n);case "ERROR":return P(n);case "SNAPSHOT_RESULT":return D(n);case "INSPECT_RESULT":return w(n);case "SETTLE_RESULT":return q(n)}},c.onerror=e=>{r?.(e.message,"worker");};function p(e){c.postMessage(e);}function k(e){return new Promise((n,S)=>{s.set(e.requestId,{resolve:n,reject:S}),p(e);})}return {init(e){return new Promise(n=>{t=n,p({type:"INIT",config:e});})},start(){return new Promise(e=>{i=e,p({type:"START"});})},stop(){return new Promise(e=>{d=e,p({type:"STOP"});})},destroy(){return new Promise(e=>{T=e,p({type:"DESTROY"});})},setFact(e,n){p({type:"SET_FACT",key:e,value:n});},setFacts(e){p({type:"SET_FACTS",facts:e});},dispatch(e){p({type:"DISPATCH",event:e});},getSnapshot(e){let n=`snapshot-${++u}`;return k({type:"GET_SNAPSHOT",options:e,requestId:n})},inspect(){let e=`inspect-${++u}`;return k({type:"INSPECT",requestId:e})},settle(e){let n=`settle-${++u}`;return k({type:"SETTLE",timeout:e,requestId:n})},terminate(){c.terminate();}}}var v=null;function f(){return v||(v=new Map),v}function N(o,c){f().set(o,c);}function x(){let o=null;async function c(t){let i=await A(t.config);return postMessage({type:"READY"}),i}function l(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function E(t){t.destroy(),postMessage({type:"DESTROYED"});}function a(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function r(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function u(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":l(o);break;case "STOP":y(o);break;case "DESTROY":E(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":a(o,t);break;case "INSPECT":r(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await u(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function A(o){let{createSystem:c}=await import('./system-
|
|
1
|
+
function _(o){let{worker:c,onFactChange:l,onDerivationChange:y,onRequirementCreated:E,onRequirementMet:a,onError:r}=o,s=new Map,u=0,t=null,i=null,d=null,T=null;function g(e){return e?.(),null}function R(e,n){let S=s.get(e);S&&(S.resolve(n),s.delete(e));}function M(){t=g(t);}function m(){i=g(i);}function I(){d=g(d);}function b(){T=g(T);}function h(e){l?.(e.key,e.value,e.prev);}function O(e){y?.(e.key,e.value);}function W(e){E?.(e.requirement);}function C(e){a?.(e.requirementId,e.resolverId);}function P(e){r?.(e.error,e.source);}function D(e){R(e.requestId,e.snapshot);}function w(e){R(e.requestId,e.inspection);}function q(e){let n=s.get(e.requestId);n&&(e.success?n.resolve(void 0):n.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let n=e.data;switch(n.type){case "READY":return M();case "STARTED":return m();case "STOPPED":return I();case "DESTROYED":return b();case "FACT_CHANGED":return h(n);case "DERIVATION_CHANGED":return O(n);case "REQUIREMENT_CREATED":return W(n);case "REQUIREMENT_MET":return C(n);case "ERROR":return P(n);case "SNAPSHOT_RESULT":return D(n);case "INSPECT_RESULT":return w(n);case "SETTLE_RESULT":return q(n)}},c.onerror=e=>{r?.(e.message,"worker");};function p(e){c.postMessage(e);}function k(e){return new Promise((n,S)=>{s.set(e.requestId,{resolve:n,reject:S}),p(e);})}return {init(e){return new Promise(n=>{t=n,p({type:"INIT",config:e});})},start(){return new Promise(e=>{i=e,p({type:"START"});})},stop(){return new Promise(e=>{d=e,p({type:"STOP"});})},destroy(){return new Promise(e=>{T=e,p({type:"DESTROY"});})},setFact(e,n){p({type:"SET_FACT",key:e,value:n});},setFacts(e){p({type:"SET_FACTS",facts:e});},dispatch(e){p({type:"DISPATCH",event:e});},getSnapshot(e){let n=`snapshot-${++u}`;return k({type:"GET_SNAPSHOT",options:e,requestId:n})},inspect(){let e=`inspect-${++u}`;return k({type:"INSPECT",requestId:e})},settle(e){let n=`settle-${++u}`;return k({type:"SETTLE",timeout:e,requestId:n})},terminate(){c.terminate();}}}var v=null;function f(){return v||(v=new Map),v}function N(o,c){f().set(o,c);}function x(){let o=null;async function c(t){let i=await A(t.config);return postMessage({type:"READY"}),i}function l(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function E(t){t.destroy(),postMessage({type:"DESTROYED"});}function a(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function r(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function u(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":l(o);break;case "STOP":y(o);break;case "DESTROY":E(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":a(o,t);break;case "INSPECT":r(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await u(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function A(o){let{createSystem:c}=await import('./system-AGVKMAYF.js'),l=f(),y={};for(let r of o.moduleNames){let s=l.get(r);if(!s)throw new Error(`[Directive Worker] Module "${r}" not registered. Call registerWorkerModule('${r}', module) before handling messages.`);y[r]=s;}let a=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(r,s,u)=>{postMessage({type:"FACT_CHANGED",key:r,value:s,prev:u});},onDerivationCompute:(r,s)=>{postMessage({type:"DERIVATION_CHANGED",key:r,value:s});},onRequirementCreated:r=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...r.requirement,id:r.id}});},onRequirementMet:(r,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:r.id,resolverId:s});}}],history:o.history});return {start:()=>a.start(),stop:()=>a.stop(),destroy:()=>a.destroy(),setFact:(r,s)=>{a.facts[r]=s;},setFacts:r=>{let s=a.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[u,t]of Object.entries(r))s[u]=t;});else for(let[u,t]of Object.entries(r))s[u]=t;},dispatch:r=>{a.dispatch(r);},getSnapshot:r=>a.getDistributableSnapshot(r),inspect:()=>a.inspect(),settle:r=>a.settle(r)}}export{_ as createWorkerClient,f as getWorkerModuleRegistry,x as handleWorkerMessages,N as registerWorkerModule};//# sourceMappingURL=worker.js.map
|
|
2
2
|
//# sourceMappingURL=worker.js.map
|
package/package.json
CHANGED
package/dist/chunk-CFSW3RP5.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkL3SUAAPM_cjs=require('./chunk-L3SUAAPM.cjs'),chunkER6QUYTL_cjs=require('./chunk-ER6QUYTL.cjs'),chunkBEJ6ICA7_cjs=require('./chunk-BEJ6ICA7.cjs');var f="::";function R(n){return new Proxy({},{get(e,t){if(typeof t!="symbol"&&!chunkER6QUYTL_cjs.k.has(t))return n.get(t)},set(e,t,o){return typeof t=="symbol"||chunkER6QUYTL_cjs.k.has(t)?false:n.set?n.set(t,o):false},has(e,t){return typeof t=="symbol"||chunkER6QUYTL_cjs.k.has(t)?false:n.has?n.has(t):false},deleteProperty(e,t){return typeof t=="symbol"||chunkER6QUYTL_cjs.k.has(t)?false:n.delete?n.delete(t):false},ownKeys(){return n.ownKeys?n.ownKeys():[]},getOwnPropertyDescriptor(e,t){if(typeof t!="symbol"&&n.has&&typeof t=="string"&&n.has(t))return {configurable:true,enumerable:true}},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}})}var q=new WeakMap,I=new WeakMap,H=new WeakMap,V=new WeakMap,W=new WeakMap,z=new WeakMap;function S(n,e){let t=q.get(n);if(t){let r=t.get(e);if(r)return r}else t=new Map,q.set(n,t);let o=R({get:r=>r==="$store"||r==="$snapshot"?n[r]:n[`${e}${f}${r}`],set:(r,a)=>(n[`${e}${f}${r}`]=a,true),has:r=>`${e}${f}${r}`in n,delete:r=>(delete n[`${e}${f}${r}`],true)});return t.set(e,o),o}function U(n,e,t){let o=I.get(n);if(o)return o;let r=R({get:a=>{if(Object.hasOwn(e,a))return S(n,a)},has:a=>Object.hasOwn(e,a),ownKeys:()=>t()});return I.set(n,r),r}function G(n,e,t){let o=`${e}|${t.join(",")}`,r=W.get(n);if(r){let i=r.get(o);if(i)return i}else r=new Map,W.set(n,r);let a=new Set(t),u=["self",...t],y=R({get:i=>{if(i==="self")return S(n,e);if(a.has(i))return S(n,i);process.env.NODE_ENV!=="production"&&console.warn(`[Directive] Module "${e}" accessed undeclared cross-module property "${i}". Add it to crossModuleDeps or use "facts.self.${i}" for own module facts.`);},has:i=>i==="self"||a.has(i),ownKeys:()=>u});return r.set(o,y),y}function A(n,e){let t=V.get(n);if(t){let r=t.get(e);if(r)return r}else t=new Map,V.set(n,t);let o=R({get:r=>n[`${e}${f}${r}`],has:r=>`${e}${f}${r}`in n});return t.set(e,o),o}function L(n,e,t){let o=H.get(n);if(o)return o;let r=R({get:a=>{if(Object.hasOwn(e,a))return A(n,a)},has:a=>Object.hasOwn(e,a),ownKeys:()=>t()});return H.set(n,r),r}function Z(n,e,t){let o=z.get(n);return o||(o=new Map,z.set(n,o)),R({get:r=>{if(!Object.hasOwn(e,r))return;let a=o.get(r);if(a)return a;let u=R({get:y=>i=>{n.dispatch({type:`${r}${f}${y}`,...i});}});return o.set(r,u),u},has:r=>Object.hasOwn(e,r),ownKeys:()=>t()})}function v(n){if(n.includes(".")){let[e,...t]=n.split(".");return `${e}${f}${t.join(f)}`}return n}function F(n){let e={};for(let[t,o]of Object.entries(n)){let r=t.indexOf(f);if(r>0){let a=t.slice(0,r),u=t.slice(r+f.length);e[a]||(e[a]={}),e[a][u]=o;}else e._root||(e._root={}),e._root[t]=o;}return e}function O(n,e,t,o){return t?G(n,e,o):S(n,e)}function M(n,e){return `${n}${f}${e}`}function $(n){return Object.keys(n).length>0?n:void 0}function te(n,e){let t={};for(let[o,r]of Object.entries(n.schema.facts))t[M(e,o)]=r;return t}function re(n,e){if(n.init)return t=>{let o=S(t,e);n.init(o);}}function se(n,e,t,o){if(!n.derive)return;let r={};for(let[a,u]of Object.entries(n.derive))r[M(e,a)]=(y,i)=>{let k=O(y,e,t,o),g=A(i,e);return u(k,g)};return $(r)}function oe(n,e){if(!n.events)return;let t={};for(let[o,r]of Object.entries(n.events))t[M(e,o)]=(a,u)=>{let y=S(a,e);r(y,u);};return $(t)}function ie(n,e,t,o){if(!n.constraints)return;let r={};for(let[a,u]of Object.entries(n.constraints)){let y=u;r[M(e,a)]={...y,deps:y.deps?.map(i=>M(e,i)),after:y.after?.map(i=>i.includes(f)?i:M(e,i)),when:i=>{let k=O(i,e,t,o);return y.when(k)},require:typeof y.require=="function"?i=>{let k=O(i,e,t,o);return y.require(k)}:y.require};}return $(r)}function ae(n,e,t,o){if(!n.resolvers)return;let r={};for(let[u,y]of Object.entries(n.resolvers)){let k=function(g){return {facts:O(g.facts,e,t,o),signal:g.signal}};let i=y;r[M(e,u)]={...i,...i.resolve&&{resolve:async(g,d)=>{await i.resolve(g,k(d));}},...i.resolveBatch&&{resolveBatch:async(g,d)=>{await i.resolveBatch(g,k(d));}},...i.resolveBatchWithResults&&{resolveBatchWithResults:async(g,d)=>i.resolveBatchWithResults(g,k(d))}};}return $(r)}function ce(n,e,t,o){if(!n.effects)return;let r={};for(let[a,u]of Object.entries(n.effects)){let y=u;r[M(e,a)]={...y,run:(i,k)=>{let g=O(i,e,t,o),d=k?O(k,e,t,o):void 0;return y.run(g,d)},deps:y.deps?.map(i=>M(e,i))};}return $(r)}function ue(n,e,t){return {snapshotEvents:t&&!t.has(e)?[]:n.history?.snapshotEvents?.map(o=>M(e,o))}}function T(n){let{mod:e,namespace:t,snapshotModulesSet:o}=n,r=!!(e.crossModuleDeps&&Object.keys(e.crossModuleDeps).length>0),a=r?Object.keys(e.crossModuleDeps):[];return {id:e.id,schema:te(e,t),requirements:e.schema.requirements??{},init:re(e,t),derive:se(e,t,r,a),events:oe(e,t),effects:ce(e,t,r,a),constraints:ie(e,t,r,a),resolvers:ae(e,t,r,a),hooks:e.hooks,history:ue(e,t,o)}}function de(n){let e=Object.keys(n),t=new Set(e),o=new Set,r=new Set,a=[],u=[];function y(i){if(o.has(i))return;if(r.has(i)){let g=u.indexOf(i),d=[...u.slice(g),i].join(" \u2192 ");throw new Error(`[Directive] Circular dependency detected: ${d}. Modules cannot have circular crossModuleDeps. Break the cycle by removing one of the cross-module references.`)}r.add(i),u.push(i);let k=n[i];if(k?.crossModuleDeps)for(let g of Object.keys(k.crossModuleDeps))t.has(g)&&y(g);u.pop(),r.delete(i),o.add(i),a.push(i);}for(let i of e)y(i);return a}function J(n,e){let t=[];for(let o of Object.keys(e.schema.facts))t.push(`${n}${f}${o}`);if(e.schema.derivations)for(let o of Object.keys(e.schema.derivations))t.push(`${n}${f}${o}`);return t}function be(n){if("module"in n){if(!n.module)throw new Error("[Directive] createSystem requires a module. Got: "+typeof n.module);return fe(n)}let e=n;if(Array.isArray(e.modules))throw new Error(`[Directive] createSystem expects modules as an object, not an array.
|
|
2
|
-
|
|
3
|
-
Instead of:
|
|
4
|
-
createSystem({ modules: [authModule, dataModule] })
|
|
5
|
-
|
|
6
|
-
Use:
|
|
7
|
-
createSystem({ modules: { auth: authModule, data: dataModule } })
|
|
8
|
-
|
|
9
|
-
Or for a single module:
|
|
10
|
-
createSystem({ module: counterModule })`);let t=e.modules;if(t&&typeof t=="object"&&"id"in t&&"schema"in t)throw new Error(`[Directive] A single module was passed to \`modules:\`. For a single module, use \`module:\` instead:
|
|
11
|
-
|
|
12
|
-
createSystem({ module: myModule })
|
|
13
|
-
|
|
14
|
-
For multiple modules, wrap in an object:
|
|
15
|
-
createSystem({ modules: { myName: myModule } })`);return le(e)}function le(n){let e=n.modules,t=new Set(Object.keys(e)),o=typeof n.history=="object"?n.history:null,r=o?.snapshotModules?new Set(o.snapshotModules):null;if(n.tickMs!==void 0&&n.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(process.env.NODE_ENV!=="production"){for(let[s,c]of Object.entries(e))if(c.crossModuleDeps)for(let l of Object.keys(c.crossModuleDeps))l===s?console.warn(`[Directive] Module "${s}" references itself in crossModuleDeps. Use "facts.self" to access own module's facts instead.`):t.has(l)||console.warn(`[Directive] Module "${s}" declares crossModuleDeps.${l}, but no module with namespace "${l}" exists in the system. Available modules: ${[...t].join(", ")}`);}if(process.env.NODE_ENV!=="production"&&o?.snapshotModules)for(let s of o.snapshotModules)t.has(s)||console.warn(`[Directive] history.snapshotModules entry "${s}" doesn't match any module. Available modules: ${[...t].join(", ")}`);let a,u=n.initOrder??"auto";if(Array.isArray(u)){let s=u,c=Object.keys(e).filter(l=>!s.includes(l));if(c.length>0)throw new Error(`[Directive] initOrder is missing modules: ${c.join(", ")}. All modules must be included in the explicit order.`);a=s;}else u==="declaration"?a=Object.keys(e):a=de(e);let{history:y,trace:i,errorBoundary:k}=Q(n);for(let s of Object.keys(e)){if(s.includes(f))throw new Error(`[Directive] Module name "${s}" contains the reserved separator "${f}". Module names cannot contain "${f}".`);let c=e[s];if(c){for(let l of Object.keys(c.schema.facts))if(l.includes(f))throw new Error(`[Directive] Schema key "${l}" in module "${s}" contains the reserved separator "${f}". Schema keys cannot contain "${f}".`)}}let g={names:null};function d(){return g.names===null&&(g.names=Object.keys(e)),g.names}let w=a.map(s=>{let c=e[s];return c?T({mod:c,namespace:s,snapshotModulesSet:r}):null}).filter(s=>s!==null);process.env.NODE_ENV!=="production"&&n.tickMs&&n.tickMs>0&&(w.some(c=>c.events&&Object.keys(c.events).some(l=>l.endsWith(`${f}tick`)))||console.warn(`[Directive] tickMs is set to ${n.tickMs}ms but no module defines a "tick" event handler.`));let D=null,h=null;function _(s){for(let[c,l]of Object.entries(s)){if(chunkER6QUYTL_cjs.k.has(c)){process.env.NODE_ENV!=="production"&&console.warn(`[Directive] initialFacts/hydrate contains blocked namespace "${c}". Skipping.`);continue}if(!t.has(c)){process.env.NODE_ENV!=="production"&&console.warn(`[Directive] initialFacts/hydrate contains unknown namespace "${c}". Available modules: ${[...t].join(", ")}`);continue}if(l&&typeof l=="object"&&!chunkBEJ6ICA7_cjs.c(l))throw new Error(`[Directive] initialFacts/hydrate for namespace "${c}" contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.`);for(let[p,b]of Object.entries(l))chunkER6QUYTL_cjs.k.has(p)||(h.facts[`${c}${f}${p}`]=b);}}h=chunkL3SUAAPM_cjs.y({modules:w,plugins:n.plugins,history:y,trace:i,errorBoundary:k,tickMs:n.tickMs,cloud:n.cloud,onAfterModuleInit:()=>{n.initialFacts&&_(n.initialFacts),D&&(_(D),D=null);}});let x=new Map;for(let s of Object.keys(e)){let c=e[s];c&&x.set(s,J(s,c));}let B=U(h.facts,e,d),ee=L(h.derive,e,d),ne=Z(h,e,d),E=null,j=n.tickMs,N={_mode:"namespaced",facts:B,history:h.history,derive:ee,events:ne,constraints:h.constraints,effects:h.effects,resolvers:h.resolvers,async hydrate(s){if(h.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let c=await s();c&&typeof c=="object"&&(D=c);},initialize(){h.initialize();},start(){if(h.start(),j&&j>0){let s;for(let c of w)if(c?.events&&(s=Object.keys(c.events).find(l=>l.endsWith(`${f}tick`)),s))break;if(s){let c=s;E=setInterval(()=>{h.dispatch({type:c});},j);}}},stop(){E&&(clearInterval(E),E=null),h.stop();},destroy(){this.stop(),h.destroy();},dispatch(s){h.dispatch(s);},read(s){return h.read(v(s))},subscribe(s,c){let l=[];for(let p of s)if(p.endsWith(".*")){let b=p.slice(0,-2),K=x.get(b);K?l.push(...K):process.env.NODE_ENV!=="production"&&console.warn(`[Directive] subscribe wildcard "${p}" \u2014 namespace "${b}" not found.`);}else l.push(v(p));return h.subscribe(l,c)},subscribeModule(s,c){let l=x.get(s);return !l||l.length===0?(process.env.NODE_ENV!=="production"&&console.warn(`[Directive] subscribeModule("${s}") \u2014 namespace not found. Available: ${[...x.keys()].join(", ")}`),()=>{}):h.subscribe(l,c)},watch(s,c,l){return h.watch(v(s),c,l)},when(s,c){return h.when(()=>s(B),c)},getDistributableSnapshot(s){let c={...s,includeDerivations:s?.includeDerivations?.map(v),excludeDerivations:s?.excludeDerivations?.map(v),includeFacts:s?.includeFacts?.map(v)},l=h.getDistributableSnapshot(c);return {...l,data:F(l.data)}},watchDistributableSnapshot(s,c){let l={...s,includeDerivations:s?.includeDerivations?.map(v),excludeDerivations:s?.excludeDerivations?.map(v),includeFacts:s?.includeFacts?.map(v)};return h.watchDistributableSnapshot(l,p=>{c({...p,data:F(p.data)});})},registerModule(s,c){if(t.has(s))throw new Error(`[Directive] Module namespace "${s}" already exists. Cannot register a duplicate namespace.`);if(s.includes(f))throw new Error(`[Directive] Module name "${s}" contains the reserved separator "${f}".`);if(chunkER6QUYTL_cjs.k.has(s))throw new Error(`[Directive] Module name "${s}" is a blocked property.`);for(let b of Object.keys(c.schema.facts))if(b.includes(f))throw new Error(`[Directive] Schema key "${b}" in module "${s}" contains the reserved separator "${f}".`);let l=c,p=T({mod:l,namespace:s,snapshotModulesSet:r});t.add(s),e[s]=l,g.names=null,x.set(s,J(s,l)),h.registerModule(p);}};return X(N,h),Y(N),N}function Q(n){let e=n.history,t=n.trace,o=n.errorBoundary;if(n.zeroConfig){let r=process.env.NODE_ENV!=="production";e=e??r,o={onConstraintError:"skip",onResolverError:"skip",onEffectError:"skip",onDerivationError:"skip",...n.errorBoundary};}return {history:e,trace:t,errorBoundary:o}}function X(n,e){Object.defineProperties(n,{trace:{get(){return e.trace},enumerable:true,configurable:true},isRunning:{get(){return e.isRunning},enumerable:true,configurable:true},isSettled:{get(){return e.isSettled},enumerable:true,configurable:true},isInitialized:{get(){return e.isInitialized},enumerable:true,configurable:true},isReady:{get(){return e.isReady},enumerable:true,configurable:true}}),n.whenReady=e.whenReady.bind(e),n.batch=e.batch.bind(e),n.onSettledChange=e.onSettledChange.bind(e),n.onHistoryChange=e.onHistoryChange.bind(e),n.inspect=e.inspect.bind(e),n.settle=e.settle.bind(e),n.explain=e.explain.bind(e),n.getSnapshot=e.getSnapshot.bind(e),n.restore=e.restore.bind(e);let t=["dispatch","read","subscribe","watch","when","getDistributableSnapshot","watchDistributableSnapshot"];for(let o of t)o in n||(n[o]=e[o].bind(e));}function Y(n){process.env.NODE_ENV!=="production"&&process.env.NODE_ENV!=="test"&&setTimeout(()=>{!n.isRunning&&!n.isInitialized&&console.warn("[Directive] System created but start() was never called. Constraints, resolvers, and effects will not run until you call system.start().");},0);}function fe(n){let e=n.module;if(!e)throw new Error("[Directive] createSystem requires a module. Got: "+typeof e);if(n.tickMs!==void 0&&n.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(n.initialFacts&&!chunkBEJ6ICA7_cjs.c(n.initialFacts))throw new Error("[Directive] initialFacts contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.");process.env.NODE_ENV!=="production"&&(e.crossModuleDeps&&Object.keys(e.crossModuleDeps).length>0&&console.warn("[Directive] Single module mode ignores crossModuleDeps. Use multiple modules if cross-module access is needed: createSystem({ modules: { ... } })"),n.tickMs&&n.tickMs>0&&(e.events&&"tick"in e.events||console.warn(`[Directive] tickMs is set to ${n.tickMs}ms but module has no "tick" event handler.`)),(typeof n.history=="object"?n.history:null)?.snapshotModules&&console.warn("[Directive] history.snapshotModules has no effect in single-module mode. Use history.snapshotEvents on the module definition instead, or switch to createSystem({ modules: { ... } }) for multi-module filtering."));let{history:t,trace:o,errorBoundary:r}=Q(n),a=null,u=null;u=chunkL3SUAAPM_cjs.y({modules:[{id:e.id,schema:e.schema.facts,requirements:e.schema.requirements,init:e.init,derive:e.derive,events:e.events,effects:e.effects,constraints:e.constraints,resolvers:e.resolvers,hooks:e.hooks,history:e.history}],plugins:n.plugins,history:t,trace:o,errorBoundary:r,tickMs:n.tickMs,cloud:n.cloud,onAfterModuleInit:()=>{if(n.initialFacts)for(let[d,w]of Object.entries(n.initialFacts))chunkER6QUYTL_cjs.k.has(d)||(u.facts[d]=w);if(a){if(!chunkBEJ6ICA7_cjs.c(a))process.env.NODE_ENV!=="production"&&console.warn("[Directive] hydrate() data contains potentially dangerous keys. Skipping.");else for(let[d,w]of Object.entries(a))chunkER6QUYTL_cjs.k.has(d)||(u.facts[d]=w);a=null;}}});let y=new Proxy({},{get(d,w){if(typeof w!="symbol"&&!chunkER6QUYTL_cjs.k.has(w))return D=>{u.dispatch({type:w,...D});}},has(d,w){return typeof w=="symbol"||chunkER6QUYTL_cjs.k.has(w)?false:e.events?w in e.events:false},ownKeys(){return e.events?Object.keys(e.events):[]},getOwnPropertyDescriptor(d,w){if(typeof w!="symbol"&&!chunkER6QUYTL_cjs.k.has(w)&&e.events&&w in e.events)return {configurable:true,enumerable:true}},set(){return false},deleteProperty(){return false},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}}),i=null,k=n.tickMs,g={_mode:"single",facts:u.facts,history:u.history,derive:u.derive,events:y,constraints:u.constraints,effects:u.effects,resolvers:u.resolvers,async hydrate(d){if(u.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let w=await d();w&&typeof w=="object"&&(a=w);},initialize(){u.initialize();},start(){u.start(),k&&k>0&&e.events&&"tick"in e.events&&(i=setInterval(()=>{u.dispatch({type:"tick"});},k));},stop(){i&&(clearInterval(i),i=null),u.stop();},destroy(){this.stop(),u.destroy();},registerModule(d){u.registerModule({id:d.id,schema:d.schema.facts,requirements:d.schema.requirements,init:d.init,derive:d.derive,events:d.events,effects:d.effects,constraints:d.constraints,resolvers:d.resolvers,hooks:d.hooks,history:d.history});}};return X(g,u),Y(g),g}exports.a=be;//# sourceMappingURL=chunk-CFSW3RP5.cjs.map
|
|
16
|
-
//# sourceMappingURL=chunk-CFSW3RP5.cjs.map
|