@wovin/core 0.1.36 → 0.2.2
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/README.md +0 -12
- package/dist/applog/applog-helpers.d.ts +12 -12
- package/dist/applog/applog-helpers.d.ts.map +1 -1
- package/dist/applog/applog-utils.d.ts +40 -6
- package/dist/applog/applog-utils.d.ts.map +1 -1
- package/dist/applog/datom-types.d.ts +67 -12
- package/dist/applog/datom-types.d.ts.map +1 -1
- package/dist/applog.d.ts +3 -3
- package/dist/applog.d.ts.map +1 -1
- package/dist/{applog.min.js → applog.js} +12 -7
- package/dist/blockstore.d.ts +1 -1
- package/dist/blockstore.d.ts.map +1 -1
- package/dist/{blockstore.min.js → blockstore.js} +1 -3
- package/dist/{blockstore.min.js.map → blockstore.js.map} +1 -1
- package/dist/chunk-22WDFLXO.js +138 -0
- package/dist/chunk-22WDFLXO.js.map +1 -0
- package/dist/chunk-3SUFNJEZ.js +1026 -0
- package/dist/chunk-3SUFNJEZ.js.map +1 -0
- package/dist/chunk-6ALNRM3J.js +435 -0
- package/dist/chunk-6ALNRM3J.js.map +1 -0
- package/dist/chunk-7Z5YDQKK.js +1 -0
- package/dist/{chunk-KXMTKPF4.min.js → chunk-BLF5MAWU.js} +8 -8
- package/dist/chunk-BLF5MAWU.js.map +1 -0
- package/dist/chunk-E46VTKTZ.js +1 -0
- package/dist/{chunk-H3VQJP56.min.js → chunk-HUIQ54TT.js} +9 -9
- package/dist/chunk-HUIQ54TT.js.map +1 -0
- package/dist/{chunk-BRC7LSM6.min.js → chunk-OC6Z6CQW.js} +5 -5
- package/dist/chunk-OC6Z6CQW.js.map +1 -0
- package/dist/chunk-SHUHRHOT.js +1923 -0
- package/dist/chunk-SHUHRHOT.js.map +1 -0
- package/dist/{chunk-QPGEBDMJ.min.js → chunk-YDAKBU6Q.js} +1 -1
- package/dist/chunk-YDAKBU6Q.js.map +1 -0
- package/dist/chunk-ZAADLBSB.js +36 -0
- package/dist/chunk-ZAADLBSB.js.map +1 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/{index.min.js → index.js} +81 -46
- package/dist/ipfs/car.d.ts +11 -11
- package/dist/ipfs/car.d.ts.map +1 -1
- package/dist/ipfs/ipfs-utils.d.ts +2 -2
- package/dist/ipfs/ipfs-utils.d.ts.map +1 -1
- package/dist/ipfs.d.ts +3 -3
- package/dist/ipfs.d.ts.map +1 -1
- package/dist/{ipfs.min.js → ipfs.js} +7 -10
- package/dist/ipns.d.ts +1 -1
- package/dist/ipns.d.ts.map +1 -1
- package/dist/ipns.js +64 -0
- package/dist/ipns.js.map +1 -0
- package/dist/pubsub/pub-pull.d.ts +3 -3
- package/dist/pubsub/pub-pull.d.ts.map +1 -1
- package/dist/pubsub/pubsub-types.d.ts +3 -3
- package/dist/pubsub/pubsub-types.d.ts.map +1 -1
- package/dist/pubsub/snap-push.d.ts +4 -4
- package/dist/pubsub/snap-push.d.ts.map +1 -1
- package/dist/pubsub/ucan.d.ts +1 -1
- package/dist/pubsub/ucan.d.ts.map +1 -1
- package/dist/pubsub.d.ts +4 -4
- package/dist/pubsub.d.ts.map +1 -1
- package/dist/{pubsub.min.js → pubsub.js} +7 -10
- package/dist/query/attr-helpers.d.ts +5 -0
- package/dist/query/attr-helpers.d.ts.map +1 -0
- package/dist/query/basic.d.ts +87 -23
- package/dist/query/basic.d.ts.map +1 -1
- package/dist/query/divergences.d.ts +5 -5
- package/dist/query/divergences.d.ts.map +1 -1
- package/dist/query/entity-collection.d.ts +19 -0
- package/dist/query/entity-collection.d.ts.map +1 -0
- package/dist/query/matchers.d.ts +12 -1
- package/dist/query/matchers.d.ts.map +1 -1
- package/dist/query/memoized.d.ts +66 -0
- package/dist/query/memoized.d.ts.map +1 -0
- package/dist/query/situations.d.ts +2 -1
- package/dist/query/situations.d.ts.map +1 -1
- package/dist/query/subscribable.d.ts +111 -0
- package/dist/query/subscribable.d.ts.map +1 -0
- package/dist/query/types.d.ts +54 -14
- package/dist/query/types.d.ts.map +1 -1
- package/dist/query.d.ts +9 -5
- package/dist/query.d.ts.map +1 -1
- package/dist/{query.min.js → query.js} +55 -34
- package/dist/retrieve/index.d.ts +1 -1
- package/dist/retrieve/index.d.ts.map +1 -1
- package/dist/retrieve/update-thread.d.ts +3 -3
- package/dist/retrieve/update-thread.d.ts.map +1 -1
- package/dist/retrieve.d.ts +1 -1
- package/dist/retrieve.d.ts.map +1 -1
- package/dist/retrieve.js +14 -0
- package/dist/thread/basic.d.ts +15 -19
- package/dist/thread/basic.d.ts.map +1 -1
- package/dist/thread/filters.d.ts +8 -10
- package/dist/thread/filters.d.ts.map +1 -1
- package/dist/thread/indexes.d.ts +57 -0
- package/dist/thread/indexes.d.ts.map +1 -0
- package/dist/thread/mapped.d.ts +40 -11
- package/dist/thread/mapped.d.ts.map +1 -1
- package/dist/thread/utils.d.ts +5 -5
- package/dist/thread/utils.d.ts.map +1 -1
- package/dist/thread/writeable.d.ts +2 -2
- package/dist/thread/writeable.d.ts.map +1 -1
- package/dist/thread.d.ts +6 -5
- package/dist/thread.d.ts.map +1 -1
- package/dist/{thread.min.js → thread.js} +9 -6
- package/dist/types/typescript-utils.d.ts +6 -5
- package/dist/types/typescript-utils.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/{types.min.js → types.js} +3 -4
- package/dist/utils/debug-name.d.ts +13 -0
- package/dist/utils/debug-name.d.ts.map +1 -0
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +9 -0
- package/package.json +32 -23
- package/src/applog/applog-helpers.ts +155 -0
- package/src/applog/applog-utils.test.ts +108 -0
- package/src/applog/applog-utils.ts +551 -0
- package/src/applog/datom-types.ts +167 -0
- package/src/applog/object-values.test.ts +106 -0
- package/src/applog.ts +3 -0
- package/src/blockstore/index.ts +36 -0
- package/src/blockstore.ts +1 -0
- package/src/index.ts +8 -0
- package/src/ipfs/car.ts +291 -0
- package/src/ipfs/fetch-snapshot-chain.ts +135 -0
- package/src/ipfs/ipfs-utils.ts +132 -0
- package/src/ipfs.ts +3 -0
- package/src/ipns/ipns-record.ts +115 -0
- package/src/ipns.ts +1 -0
- package/src/pubsub/UCAN Specs Overview.md +217 -0
- package/src/pubsub/connector.ts +9 -0
- package/src/pubsub/pub-pull.ts +31 -0
- package/src/pubsub/pubsub-types.ts +90 -0
- package/src/pubsub/snap-push.ts +278 -0
- package/src/pubsub/ucan-example.ts +61 -0
- package/src/pubsub/ucan.ts +56 -0
- package/src/pubsub.ts +4 -0
- package/src/query/attr-helpers.ts +5 -0
- package/src/query/basic.ts +1245 -0
- package/src/query/divergences.ts +50 -0
- package/src/query/entity-collection.ts +132 -0
- package/src/query/liveFilterAndMap.test.ts +102 -0
- package/src/query/matchers.ts +30 -0
- package/src/query/memoized.test.ts +151 -0
- package/src/query/memoized.ts +180 -0
- package/src/query/query-steps.ts +4 -0
- package/src/query/query.test.ts +538 -0
- package/src/query/situations.ts +261 -0
- package/src/query/subscribable.test.ts +245 -0
- package/src/query/subscribable.ts +234 -0
- package/src/query/types.ts +155 -0
- package/src/query/withoutDeleted.test.ts +204 -0
- package/src/query.ts +9 -0
- package/src/retrieve/index.ts +1 -0
- package/src/retrieve/update-thread.ts +248 -0
- package/src/retrieve.ts +1 -0
- package/src/test/perf/query.1m.perf.test.ts +94 -0
- package/src/test/perf/query.perf.test.ts +389 -0
- package/src/test/perf/query.realdata.perf.test.ts +182 -0
- package/src/thread/basic.ts +209 -0
- package/src/thread/filters.ts +227 -0
- package/src/thread/indexes.ts +256 -0
- package/src/thread/joinThreads.test.ts +304 -0
- package/src/thread/mapped.ts +226 -0
- package/src/thread/utils.ts +144 -0
- package/src/thread/writeable.ts +163 -0
- package/src/thread.ts +6 -0
- package/src/types/typescript-utils.ts +64 -0
- package/src/types.ts +1 -0
- package/src/utils/debug-name.ts +54 -0
- package/src/utils.ts +4 -0
- package/dist/chunk-2Y2PYHGR.min.js +0 -65
- package/dist/chunk-2Y2PYHGR.min.js.map +0 -1
- package/dist/chunk-5MMGBK2U.min.js +0 -1
- package/dist/chunk-7IDQIMQO.min.js +0 -1
- package/dist/chunk-BRC7LSM6.min.js.map +0 -1
- package/dist/chunk-COXXILXC.min.js +0 -512
- package/dist/chunk-COXXILXC.min.js.map +0 -1
- package/dist/chunk-GDX2OO7L.min.js +0 -9080
- package/dist/chunk-GDX2OO7L.min.js.map +0 -1
- package/dist/chunk-H3VQJP56.min.js.map +0 -1
- package/dist/chunk-HYMC7W6S.min.js +0 -1549
- package/dist/chunk-HYMC7W6S.min.js.map +0 -1
- package/dist/chunk-KEHU7HGZ.min.js +0 -5216
- package/dist/chunk-KEHU7HGZ.min.js.map +0 -1
- package/dist/chunk-KXMTKPF4.min.js.map +0 -1
- package/dist/chunk-PHITDXZT.min.js +0 -36
- package/dist/chunk-QO2KMGDN.min.js +0 -3771
- package/dist/chunk-QO2KMGDN.min.js.map +0 -1
- package/dist/chunk-QPGEBDMJ.min.js.map +0 -1
- package/dist/chunk-WXLCBTHX.min.js +0 -1606
- package/dist/chunk-WXLCBTHX.min.js.map +0 -1
- package/dist/ipns.min.js +0 -6419
- package/dist/ipns.min.js.map +0 -1
- package/dist/mobx/mobx-utils.d.ts +0 -82
- package/dist/mobx/mobx-utils.d.ts.map +0 -1
- package/dist/mobx.d.ts +0 -2
- package/dist/mobx.d.ts.map +0 -1
- package/dist/mobx.min.js +0 -141
- package/dist/retrieve.min.js +0 -17
- package/dist/types.min.js.map +0 -1
- package/dist/utils.min.js +0 -10
- package/dist/utils.min.js.map +0 -1
- /package/dist/{applog.min.js.map → applog.js.map} +0 -0
- /package/dist/{chunk-5MMGBK2U.min.js.map → chunk-7Z5YDQKK.js.map} +0 -0
- /package/dist/{chunk-7IDQIMQO.min.js.map → chunk-E46VTKTZ.js.map} +0 -0
- /package/dist/{chunk-PHITDXZT.min.js.map → index.js.map} +0 -0
- /package/dist/{index.min.js.map → ipfs.js.map} +0 -0
- /package/dist/{ipfs.min.js.map → pubsub.js.map} +0 -0
- /package/dist/{mobx.min.js.map → query.js.map} +0 -0
- /package/dist/{pubsub.min.js.map → retrieve.js.map} +0 -0
- /package/dist/{query.min.js.map → thread.js.map} +0 -0
- /package/dist/{retrieve.min.js.map → types.js.map} +0 -0
- /package/dist/{thread.min.js.map → utils.js.map} +0 -0
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
integratePub,
|
|
4
4
|
isShare,
|
|
5
5
|
isSubscription
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OC6Z6CQW.js";
|
|
7
7
|
import {
|
|
8
8
|
chunkApplogs,
|
|
9
9
|
encodeSnapshotApplogsAsCar,
|
|
@@ -11,14 +11,11 @@ import {
|
|
|
11
11
|
isSnapBlockChunks,
|
|
12
12
|
prepareSnapshotForPush,
|
|
13
13
|
unchunkApplogsBlock
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-QO2KMGDN.min.js";
|
|
20
|
-
import "./chunk-KEHU7HGZ.min.js";
|
|
21
|
-
import "./chunk-PHITDXZT.min.js";
|
|
14
|
+
} from "./chunk-6ALNRM3J.js";
|
|
15
|
+
import "./chunk-YDAKBU6Q.js";
|
|
16
|
+
import "./chunk-3SUFNJEZ.js";
|
|
17
|
+
import "./chunk-SHUHRHOT.js";
|
|
18
|
+
import "./chunk-ZAADLBSB.js";
|
|
22
19
|
export {
|
|
23
20
|
agentToShortHash,
|
|
24
21
|
chunkApplogs,
|
|
@@ -31,4 +28,4 @@ export {
|
|
|
31
28
|
prepareSnapshotForPush,
|
|
32
29
|
unchunkApplogsBlock
|
|
33
30
|
};
|
|
34
|
-
//# sourceMappingURL=pubsub.
|
|
31
|
+
//# sourceMappingURL=pubsub.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Strip everything up to and including the first `/` */
|
|
2
|
+
export type StripFirstPrefix<S extends string> = S extends `${string}/${infer Rest}` ? Rest : S;
|
|
3
|
+
/** Strip a specific prefix `P/` from attribute string */
|
|
4
|
+
export type StripExplicitPrefix<S extends string, P extends string> = S extends `${P}/${infer Rest}` ? Rest : S;
|
|
5
|
+
//# sourceMappingURL=attr-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attr-helpers.d.ts","sourceRoot":"","sources":["../../src/query/attr-helpers.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,CAAA;AAE/F,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,CAAA"}
|
package/dist/query/basic.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Thread } from '../thread/basic';
|
|
3
|
-
import { ThreadOnlyCurrent } from '../thread/filters';
|
|
4
|
-
import { MappedThread } from '../thread/mapped';
|
|
5
|
-
import {
|
|
1
|
+
import { Applog, ApplogValue, DatalogQueryPattern, EntityID, SearchContext } from '../applog/datom-types.ts';
|
|
2
|
+
import { Thread } from '../thread/basic.ts';
|
|
3
|
+
import { ThreadOnlyCurrent } from '../thread/filters.ts';
|
|
4
|
+
import { MappedThread } from '../thread/mapped.ts';
|
|
5
|
+
import { SubscribableArrayImpl, SubscribableImpl } from './subscribable.ts';
|
|
6
|
+
import { LiveQueryResult, QueryNode, QueryResult } from './types.ts';
|
|
6
7
|
/**
|
|
7
8
|
* Keep only the latest logs for each en&at (= last write wins)
|
|
8
9
|
*/
|
|
@@ -11,33 +12,87 @@ export declare const lastWriteWins: (thread: Thread, { inverseToOnlyReturnFirstL
|
|
|
11
12
|
tolerateAlreadyFiltered?: boolean;
|
|
12
13
|
}) => ThreadOnlyCurrent;
|
|
13
14
|
/**
|
|
14
|
-
* Remove all applogs for entities that have an applog
|
|
15
|
-
*
|
|
15
|
+
* Remove all applogs for entities that have an applog `{ at: 'isDeleted' | 'relation/isDeleted' | 'block/isDeleted', vl: true }`.
|
|
16
|
+
*
|
|
17
|
+
* Emits synthetic `removed` events for the entity's pre-existing applogs when an
|
|
18
|
+
* entity becomes deleted (and synthetic `added` events for un-deletion).
|
|
19
|
+
*
|
|
20
|
+
* Un-deletion: canonical input is appending `{ at: 'isDeleted', vl: false }`. Requires
|
|
21
|
+
* `lastWriteWins` upstream — without it, the `vl: true` log isn't superseded so we
|
|
22
|
+
* can't observe a transition. Soft-warned at runtime.
|
|
16
23
|
*/
|
|
17
24
|
export declare const withoutDeleted: (thread: Thread) => MappedThread;
|
|
25
|
+
/**
|
|
26
|
+
* One-off query — returns a plain snapshot. No subscriptions, no stale-data risk.
|
|
27
|
+
*/
|
|
18
28
|
export declare const query: (threadOrLogs: Thread | Applog[], patternOrPatterns: DatalogQueryPattern | DatalogQueryPattern[], startVariables?: SearchContext, opts?: {
|
|
19
29
|
debug?: boolean;
|
|
20
30
|
}) => QueryResult;
|
|
21
|
-
|
|
31
|
+
/**
|
|
32
|
+
* One-off query step — pure filtering via makeFilter, no subscriptions.
|
|
33
|
+
*/
|
|
34
|
+
export declare function queryStepOnce(thread: Thread, prevNodes: readonly QueryNode[] | null, pattern: DatalogQueryPattern, opts?: {
|
|
22
35
|
debug?: boolean;
|
|
23
|
-
})
|
|
36
|
+
}): QueryResult;
|
|
37
|
+
/**
|
|
38
|
+
* Live query — eagerly activated, always up-to-date.
|
|
39
|
+
* Returns LiveQueryResult with subscribe + dispose.
|
|
40
|
+
*/
|
|
41
|
+
export declare const liveQuery: (threadOrLogs: Thread | Applog[], patternOrPatterns: DatalogQueryPattern | DatalogQueryPattern[], startVariables?: SearchContext, opts?: {
|
|
42
|
+
debug?: boolean;
|
|
43
|
+
}) => LiveQueryResult;
|
|
44
|
+
export declare const liveQueryStep: (thread: Thread, nodeSet: LiveQueryResult | null, pattern: DatalogQueryPattern, opts?: {
|
|
45
|
+
debug?: boolean;
|
|
46
|
+
}) => LiveQueryResult;
|
|
24
47
|
export declare const queryNot: (thread: Thread, startNodes: QueryResult, patternOrPatterns: DatalogQueryPattern | DatalogQueryPattern[], opts?: {
|
|
25
48
|
debug?: boolean;
|
|
26
49
|
}) => QueryResult;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
export declare const
|
|
50
|
+
/** Live variant: queryNot with incremental updates.
|
|
51
|
+
* - Thread additions: O(new_applogs × included_nodes) — only checks new applogs
|
|
52
|
+
* - Thread removals/resets: full recompute (rare for append-mostly logs)
|
|
53
|
+
* - Upstream node additions: O(new_nodes × applogs)
|
|
54
|
+
* - Upstream node removals: removed from output
|
|
55
|
+
*/
|
|
56
|
+
export declare const liveQueryNot: (thread: Thread, upstream: LiveQueryResult, patternOrPatterns: DatalogQueryPattern | DatalogQueryPattern[], opts?: {
|
|
57
|
+
debug?: boolean;
|
|
58
|
+
}) => LiveQueryResult;
|
|
59
|
+
/** One-off: filter thread by pattern, map to values. Returns plain array. */
|
|
60
|
+
export declare const filterAndMap: <R>(thread: Thread, pattern: DatalogQueryPattern, mapper: (keyof Applog) | (Partial<{ [key in keyof Applog]: string; }>) | ((applog: Applog) => R)) => R[];
|
|
61
|
+
/** Live variant: returns SubscribableArray that updates when thread changes. */
|
|
62
|
+
export declare const liveFilterAndMap: <R>(thread: Thread, pattern: DatalogQueryPattern, mapper: (keyof Applog) | (Partial<{ [key in keyof Applog]: string; }>) | ((applog: Applog) => R)) => SubscribableArrayImpl<R>;
|
|
63
|
+
/** One-off: query and map results. Returns plain array. */
|
|
64
|
+
export declare const queryAndMap: <R>(threadOrLogs: Thread | Applog[], patternOrPatterns: Parameters<typeof query>[1], mapDef: string | (Partial<{ [key in keyof SearchContext]: string; }>) | ((record: SearchContext) => R), variables?: SearchContext) => any[];
|
|
65
|
+
/** Live variant: query and map results, returns SubscribableArray that updates reactively. */
|
|
66
|
+
export declare const liveQueryAndMap: <R>(thread: Thread, patternOrPatterns: Parameters<typeof liveQuery>[1], mapDef: string | (Partial<{ [key in keyof SearchContext]: string; }>) | ((record: SearchContext) => R)) => SubscribableArrayImpl<R>;
|
|
67
|
+
/** One-off: query entity attributes. Returns Record or null. Requires current-state thread (LWW). */
|
|
68
|
+
export declare const queryEntity: (thread: Thread, name: string, entityID: EntityID, attributes: readonly string[]) => {
|
|
69
|
+
[k: string]: import("../applog.ts").JsonValue;
|
|
70
|
+
};
|
|
71
|
+
/** Live variant: returns Subscribable that updates when entity attributes change. Requires current-state thread (LWW). */
|
|
72
|
+
export declare const liveQueryEntity: (thread: Thread, name: string, entityID: EntityID, attributes: readonly string[]) => SubscribableImpl<Record<string, import("../applog.ts").JsonValue>>;
|
|
73
|
+
/** Live single-attribute query. Requires current-state thread (LWW). Returns Subscribable<T | null>. */
|
|
74
|
+
export declare const liveEntityAt: <T extends ApplogValue>(thread: Thread, entityID: EntityID, at: string) => SubscribableImpl<T>;
|
|
75
|
+
export declare const agentsOfThread: (thread: Thread) => Map<string, number>;
|
|
76
|
+
export declare const entityOverlap: (threadA: Thread, threadB: Thread) => string[];
|
|
34
77
|
export declare const entityOverlapMap: (threadA: Thread, threadB: Thread, threadAName?: string, threadBName?: string) => void;
|
|
35
|
-
export declare const entityOverlapCount: (threadA: Thread, threadB: Thread) =>
|
|
36
|
-
|
|
37
|
-
export declare const
|
|
38
|
-
export declare const
|
|
39
|
-
|
|
40
|
-
|
|
78
|
+
export declare const entityOverlapCount: (threadA: Thread, threadB: Thread) => number;
|
|
79
|
+
/** Live variant: entity overlap count as Subscribable<number>. */
|
|
80
|
+
export declare const liveEntityOverlapCount: (threadA: Thread, threadB: Thread) => SubscribableImpl<number>;
|
|
81
|
+
export declare const querySingle: (threadOrLogs: Thread | Applog[], patternOrPatterns: Parameters<typeof query>[1], variables?: SearchContext) => Applog;
|
|
82
|
+
export declare const querySingleAndMap: <MAP extends (keyof Applog | (Partial<{ [key in keyof Applog]: string; }>))>(threadOrLogs: Thread | Applog[], patternOrPatterns: Parameters<typeof query>[1], mapDef: MAP, variables?: SearchContext) => any;
|
|
83
|
+
/** Live variant: querySingle returning Subscribable<Applog | null>. */
|
|
84
|
+
export declare const liveQuerySingle: (thread: Thread, patternOrPatterns: Parameters<typeof liveQuery>[1]) => SubscribableImpl<Applog>;
|
|
85
|
+
/** Live variant: querySingleAndMap returning Subscribable<T | undefined>. */
|
|
86
|
+
export declare const liveQuerySingleAndMap: <MAP extends (keyof Applog | (Partial<{ [key in keyof Applog]: string; }>))>(thread: Thread, patternOrPatterns: Parameters<typeof liveQuery>[1], mapDef: MAP) => SubscribableImpl<any>;
|
|
87
|
+
/** Create a single-applog mapper function from a mapDef */
|
|
88
|
+
export declare function makeApplogMapper<R>(mapDef: (keyof Applog) | (Partial<{
|
|
89
|
+
[key in keyof Applog]: string;
|
|
90
|
+
}>) | ((applog: Applog) => R)): (applog: Applog) => R;
|
|
91
|
+
/** Map an array of applogs using a mapDef */
|
|
92
|
+
export declare function mapApplogsWith<R>(applogs: readonly Applog[], mapDef: (keyof Applog) | (Partial<{
|
|
93
|
+
[key in keyof Applog]: string;
|
|
94
|
+
}>) | ((applog: Applog) => R)): R[];
|
|
95
|
+
export declare const mapThreadWith: <R>(thread: Thread, mapDef: (keyof Applog) | (Partial<{ [key in keyof Applog]: string; }>) | ((applog: Applog) => R)) => R[];
|
|
41
96
|
export declare const mapQueryResultWith: <R>(queryResult: QueryResult, mapDef: string | (Partial<{ [key in keyof SearchContext]: string; }>) | ((record: SearchContext) => R)) => any[];
|
|
42
97
|
/**
|
|
43
98
|
* Map Applog to custom named record, e.g.:
|
|
@@ -46,10 +101,19 @@ export declare const mapQueryResultWith: <R>(queryResult: QueryResult, mapDef: s
|
|
|
46
101
|
*/
|
|
47
102
|
export declare function createObjMapper<FROM extends string, TO extends string>(applogFieldMap: Partial<{
|
|
48
103
|
[key in FROM]: TO;
|
|
49
|
-
}>): (applog: { [key_1 in FROM]: any; }) => Partial<{ [key in TO]:
|
|
104
|
+
}>): (applog: { [key_1 in FROM]: any; }) => Partial<{ [key in TO]: import("../applog.ts").JsonValue; }>;
|
|
50
105
|
export declare function startsWith(str: string): (value: any) => any;
|
|
51
106
|
export declare function prefixAttrs(prefix: string, attrs: readonly string[]): string[];
|
|
52
107
|
export declare function prefixAt(prefix: string, attr: string): string;
|
|
108
|
+
/** Inverse of prefixAt — strips everything up to and including the first `/` */
|
|
109
|
+
export declare function stripAtPrefix(attr: string): string;
|
|
110
|
+
/** Create a key mapper from an explicit attribute→key record */
|
|
111
|
+
export declare function mapAttributes<A extends string>(mapping: Record<A, string>): (attr: A) => string;
|
|
112
|
+
/** Resolve key mapping options to a concrete mapper function */
|
|
113
|
+
export declare function resolveKeyMapper(opts?: {
|
|
114
|
+
stripAtPrefix?: true | string;
|
|
115
|
+
mapKeys?: (attr: string) => string;
|
|
116
|
+
}): (attr: string) => string;
|
|
53
117
|
export declare function threadFromMaybeArray(threadOrLogs: Thread | Applog[], name?: string): Thread;
|
|
54
118
|
export declare function withTimeout<R>(timeoutMilliseconds: number, func: () => R): R;
|
|
55
119
|
export declare function throwOnTimeout(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/query/basic.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/query/basic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Applog } from '../applog/datom-types';
|
|
2
|
-
import { Thread } from '../thread/basic';
|
|
3
|
-
import { ThreadInMemory } from '../thread/writeable';
|
|
1
|
+
import { Applog } from '../applog/datom-types.ts';
|
|
2
|
+
import { Thread } from '../thread/basic.ts';
|
|
3
|
+
import { ThreadInMemory } from '../thread/writeable.ts';
|
|
4
4
|
export interface DivergenceLeaf {
|
|
5
5
|
log: Applog;
|
|
6
6
|
thread: Thread;
|
|
7
7
|
}
|
|
8
|
-
export declare const queryDivergencesByPrev: (sourceThread: Thread) =>
|
|
8
|
+
export declare const queryDivergencesByPrev: (sourceThread: Thread) => {
|
|
9
9
|
log: Applog;
|
|
10
10
|
thread: ThreadInMemory;
|
|
11
|
-
}
|
|
11
|
+
}[];
|
|
12
12
|
//# sourceMappingURL=divergences.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"divergences.d.ts","sourceRoot":"","sources":["../../src/query/divergences.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"divergences.d.ts","sourceRoot":"","sources":["../../src/query/divergences.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAa,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAKvD,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,sBAAsB,iBACpB,MAAM;;;GAiCnB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ApplogValue, DatalogQueryPattern, EntityID } from '../applog/datom-types.ts';
|
|
2
|
+
import { Thread } from '../thread/basic.ts';
|
|
3
|
+
import type { Subscribable } from './subscribable.ts';
|
|
4
|
+
import type { StripExplicitPrefix, StripFirstPrefix } from './attr-helpers.ts';
|
|
5
|
+
export declare function liveEntityCollection<A extends string>(thread: Thread, discoveryPattern: DatalogQueryPattern, liveAttributes: readonly A[]): Subscribable<ReadonlyMap<EntityID, Record<A, ApplogValue | null>>>;
|
|
6
|
+
export declare function liveEntityCollection<A extends string>(thread: Thread, discoveryPattern: DatalogQueryPattern, liveAttributes: readonly A[], opts: {
|
|
7
|
+
stripAtPrefix: true;
|
|
8
|
+
}): Subscribable<ReadonlyMap<EntityID, Record<StripFirstPrefix<A>, ApplogValue | null>>>;
|
|
9
|
+
export declare function liveEntityCollection<A extends string, P extends string>(thread: Thread, discoveryPattern: DatalogQueryPattern, liveAttributes: readonly A[], opts: {
|
|
10
|
+
stripAtPrefix: P;
|
|
11
|
+
}): Subscribable<ReadonlyMap<EntityID, Record<StripExplicitPrefix<A, P>, ApplogValue | null>>>;
|
|
12
|
+
export declare function liveEntityCollection<A extends string>(thread: Thread, discoveryPattern: DatalogQueryPattern, liveAttributes: readonly A[], opts: {
|
|
13
|
+
mapKeys: (attr: A) => string;
|
|
14
|
+
}): Subscribable<ReadonlyMap<EntityID, Record<string, ApplogValue | null>>>;
|
|
15
|
+
export declare function liveEntityCollection<A extends string>(thread: Thread, discoveryPattern: DatalogQueryPattern, liveAttributes: readonly A[], opts: {
|
|
16
|
+
stripAtPrefix?: true | string;
|
|
17
|
+
mapKeys?: (attr: A) => string;
|
|
18
|
+
}): Subscribable<ReadonlyMap<EntityID, Record<string, ApplogValue | null>>>;
|
|
19
|
+
//# sourceMappingURL=entity-collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-collection.d.ts","sourceRoot":"","sources":["../../src/query/entity-collection.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAC7F,OAAO,EAAe,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAMxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAI9E,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACpD,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,GACjF,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACrE,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACpD,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,EACnF,IAAI,EAAE;IAAE,aAAa,EAAE,IAAI,CAAA;CAAE,GAC3B,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACvF,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,EACnF,IAAI,EAAE;IAAE,aAAa,EAAE,CAAC,CAAA;CAAE,GACxB,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAC7F,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACpD,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,EACnF,IAAI,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;CAAE,GACpC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAC1E,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACpD,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,EACnF,IAAI,EAAE;IAAE,aAAa,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;CAAE,GACpE,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/query/matchers.d.ts
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import { DatomPart } from '../applog/datom-types';
|
|
1
|
+
import { ApplogValue, DatomPart } from '../applog/datom-types.ts';
|
|
2
2
|
export declare function includes(str: string): (vl: DatomPart) => boolean;
|
|
3
3
|
export declare function includedIn(arr: string[]): (vl: DatomPart) => boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Set-membership matcher: matches when the field equals any of `vals`. Use this instead of a
|
|
6
|
+
* bare array in a query pattern — bare arrays are rejected by the matcher (a bare array is
|
|
7
|
+
* ambiguous now that `vl` can hold a literal array value).
|
|
8
|
+
*
|
|
9
|
+
* Returns a `Set`, which the matcher engine checks via `.has` (O(1)). Members must be
|
|
10
|
+
* primitives: `Set.has` is referential, so object/array members would silently never match —
|
|
11
|
+
* we throw rather than fail silently. For object membership, use a predicate matcher, e.g.
|
|
12
|
+
* `(v) => members.some(m => isEqual(v, m))`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function anyOf<T extends ApplogValue>(...vals: T[]): ReadonlySet<T>;
|
|
4
15
|
//# sourceMappingURL=matchers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/query/matchers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/query/matchers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEjE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,IAC3B,IAAI,SAAS,aACrB;AACD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAC/B,IAAI,SAAS,aACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAUzE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memoizedFn — Simple argument memoization without MobX.
|
|
3
|
+
*
|
|
4
|
+
* Replaces computedFnDeepCompare for query functions.
|
|
5
|
+
* With lazy subscribe (SubscribableArray), there's no urgency to clean up
|
|
6
|
+
* cached entries — unsubscribed entries are just plain arrays in memory.
|
|
7
|
+
*
|
|
8
|
+
* refCountedMemoizedFn — Ref-counted memoization for reactive results.
|
|
9
|
+
* Returns a wrapper that increments a ref count on each call and decrements
|
|
10
|
+
* on dispose(). When refCount hits 0, the entry is cleaned up (with optional
|
|
11
|
+
* grace period).
|
|
12
|
+
*/
|
|
13
|
+
interface MemoizedFnOptions {
|
|
14
|
+
argsEqual?: (a: any[], b: any[]) => boolean;
|
|
15
|
+
argsDebugName?: (...args: any[]) => string;
|
|
16
|
+
/** Max cache entries. Oldest evicted when exceeded. Default: unlimited. */
|
|
17
|
+
maxSize?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function memoizedFn<T extends (...args: any[]) => any>(name: string, fn: T, opts?: MemoizedFnOptions): T;
|
|
20
|
+
/** A result wrapper returned by refCountedMemoizedFn. Call release() when done. */
|
|
21
|
+
export interface RefCounted<T> {
|
|
22
|
+
readonly value: T;
|
|
23
|
+
/** Decrement ref count. When it reaches 0, the cache entry is cleaned up. */
|
|
24
|
+
release(): void;
|
|
25
|
+
}
|
|
26
|
+
interface RefCountedOptions<T extends (...args: any[]) => any> {
|
|
27
|
+
argsEqual?: (a: any[], b: any[]) => boolean;
|
|
28
|
+
argsDebugName?: (...args: any[]) => string;
|
|
29
|
+
/**
|
|
30
|
+
* Called when the last reference is released and the entry is evicted.
|
|
31
|
+
* Use to tear down subscriptions, dispose SubscribableArrays, etc.
|
|
32
|
+
*/
|
|
33
|
+
onCleanup?: (result: ReturnType<T>, ...args: Parameters<T>) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Grace period in ms before actually cleaning up after refCount hits 0.
|
|
36
|
+
* If someone re-acquires within this window, the entry is reused.
|
|
37
|
+
* Default: 0 (immediate cleanup).
|
|
38
|
+
*/
|
|
39
|
+
gracePeriodMs?: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates a memoized function whose results are ref-counted.
|
|
43
|
+
*
|
|
44
|
+
* Currently unused — doesn't fit liveQuery's recursive multi-step structure
|
|
45
|
+
* (API break, cache loss on pattern change without grace period).
|
|
46
|
+
* See todo/2026-04-17_ciao-mobx/memoized-cache-cleanup.md for full analysis.
|
|
47
|
+
*
|
|
48
|
+
* Each call returns `RefCounted<ReturnType<fn>>`. Multiple calls with the same
|
|
49
|
+
* args return the same cached result with an incremented ref count.
|
|
50
|
+
* When all holders call `release()`, the cache entry is cleaned up
|
|
51
|
+
* (subject to optional grace period).
|
|
52
|
+
*
|
|
53
|
+
* Usage:
|
|
54
|
+
* ```
|
|
55
|
+
* const getFiltered = refCountedMemoizedFn('rollingFilter', (thread, pattern) => {
|
|
56
|
+
* // ... expensive setup, returns MappedThread
|
|
57
|
+
* }, { onCleanup: (result) => result.dispose() })
|
|
58
|
+
*
|
|
59
|
+
* const ref = getFiltered(myThread, myPattern)
|
|
60
|
+
* // use ref.value (the MappedThread)
|
|
61
|
+
* ref.release() // decrement; when last holder releases, onCleanup fires
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function refCountedMemoizedFn<T extends (...args: any[]) => any>(name: string, fn: T, opts?: RefCountedOptions<T>): (...args: Parameters<T>) => RefCounted<ReturnType<T>>;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=memoized.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoized.d.ts","sourceRoot":"","sources":["../../src/query/memoized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAyBH,UAAU,iBAAiB;IAC1B,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAA;IAC3C,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAA;IAC1C,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC3D,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,EACL,IAAI,CAAC,EAAE,iBAAiB,GACtB,CAAC,CAkBH;AAMD,mFAAmF;AACnF,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,6EAA6E;IAC7E,OAAO,IAAI,IAAI,CAAA;CACf;AAED,UAAU,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG;IAC5D,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAA;IAC3C,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAA;IAC1C;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IACnE;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AASD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrE,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,EACL,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACzB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAmDvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"situations.d.ts","sourceRoot":"","sources":["../../src/query/situations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"situations.d.ts","sourceRoot":"","sources":["../../src/query/situations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAMlC;;;;;;;;;GASG;AACH,UAAU,SAAS;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAA;IACxD,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,iBAAiB,EAAE,UAAU,EAAE,CAAA;IAC/B,QAAQ,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC7B,CAAA;CACD;AAED,UAAU,yBAAyB;IAClC,MAAM,EAAE,GAAG,CAAA;IACX,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,UAAU,CAAC,EAAE,UAAU,CAAA;CACvB;AAED,UAAU,UAAU;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,eAAe,EAAE,eAAe,CAAA;CAChC;AAED,UAAU,eAAe;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,eAAe;IACxB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,UAAU,gBAAgB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,QAAA,MAAM,cAAc;;;;;;CAMV,CAAA;AACV,UAAU,UAAU;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,MAAM,EAAE,CAAA;CACzB;AA2ED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,GAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;CACpB,GACJ,yBAAyB,CAqC3B;AAkBD;;GAEG;AACH,wBAAgB,eAAe,CAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GACf,UAAU,CAmCZ"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Push-based subscribable primitives for the query system.
|
|
3
|
+
*
|
|
4
|
+
* Two primitives:
|
|
5
|
+
* - Subscribable<T> — any value + "changed" notifications
|
|
6
|
+
* - SubscribableArray<T> — array + incremental delta events (added/removed)
|
|
7
|
+
*
|
|
8
|
+
* Key property: **lazy subscribe** — upstream subscriptions only activate
|
|
9
|
+
* when the first subscriber attaches, and deactivate when the last leaves.
|
|
10
|
+
* This means one-off reads (.value / .items) have zero subscription overhead.
|
|
11
|
+
*/
|
|
12
|
+
export type Unsubscribe = () => void;
|
|
13
|
+
export interface Subscribable<T> {
|
|
14
|
+
/** Current value — plain read, no side effects */
|
|
15
|
+
readonly value: T;
|
|
16
|
+
/**
|
|
17
|
+
* Subscribe to change notifications.
|
|
18
|
+
* - First call activates upstream subscriptions (lazy).
|
|
19
|
+
* - Callback does NOT fire immediately — read .value for current state.
|
|
20
|
+
* - Callback fires whenever .value changes.
|
|
21
|
+
* - Last unsubscribe deactivates upstream.
|
|
22
|
+
*/
|
|
23
|
+
subscribe(cb: () => void, type?: 'derived' | 'reaction'): Unsubscribe;
|
|
24
|
+
/** Tear down all internal subscriptions */
|
|
25
|
+
dispose(): void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Implementation of Subscribable<T> with lazy upstream activation.
|
|
29
|
+
*/
|
|
30
|
+
export declare class SubscribableImpl<T> implements Subscribable<T> {
|
|
31
|
+
private _value;
|
|
32
|
+
private _derivedSubscribers;
|
|
33
|
+
private _subscribers;
|
|
34
|
+
private _upstreamActive;
|
|
35
|
+
private _activateUpstream;
|
|
36
|
+
private _deactivateUpstream;
|
|
37
|
+
private _equals;
|
|
38
|
+
constructor(initialValue: T, activateUpstream?: () => Unsubscribe, opts?: {
|
|
39
|
+
equals?: false | ((a: T, b: T) => boolean);
|
|
40
|
+
});
|
|
41
|
+
get value(): T;
|
|
42
|
+
subscribe(cb: () => void, type?: 'derived' | 'reaction'): Unsubscribe;
|
|
43
|
+
/** Update value and notify subscribers (skips if equals check passes) */
|
|
44
|
+
_set(value: T): void;
|
|
45
|
+
private _notify;
|
|
46
|
+
dispose(): void;
|
|
47
|
+
}
|
|
48
|
+
/** Delta events — mirrors ThreadEvent shape */
|
|
49
|
+
export type ArrayEvent<T> = {
|
|
50
|
+
init: readonly T[];
|
|
51
|
+
} | {
|
|
52
|
+
added: readonly T[];
|
|
53
|
+
removed: readonly T[] | null;
|
|
54
|
+
};
|
|
55
|
+
/** Type guard for init events. Same logic as thread's isInitEvent. */
|
|
56
|
+
export declare function isArrayInitEvent<T>(event: ArrayEvent<T>): event is {
|
|
57
|
+
init: readonly T[];
|
|
58
|
+
};
|
|
59
|
+
export interface SubscribableArray<T> {
|
|
60
|
+
/**
|
|
61
|
+
* Current snapshot — plain readonly array.
|
|
62
|
+
*
|
|
63
|
+
* NOTE: only stays current while at least one subscriber is active
|
|
64
|
+
* (upstream is lazily activated on first `.subscribe()`). With no
|
|
65
|
+
* subscribers this returns the initial snapshot from construction
|
|
66
|
+
* and does NOT reflect later mutations. Tests/consumers that want
|
|
67
|
+
* to observe updates must hold a subscription (`subscribe(() => {})`
|
|
68
|
+
* is enough).
|
|
69
|
+
*/
|
|
70
|
+
readonly items: readonly T[];
|
|
71
|
+
/** Length shortcut */
|
|
72
|
+
readonly length: number;
|
|
73
|
+
/**
|
|
74
|
+
* Subscribe to delta events.
|
|
75
|
+
* - First call activates upstream subscriptions (lazy).
|
|
76
|
+
* - No init event on subscribe — read .items for current state.
|
|
77
|
+
* - Receives `{ init }` only on genuine resets (triggerRemap).
|
|
78
|
+
* - Last unsubscribe deactivates upstream.
|
|
79
|
+
*/
|
|
80
|
+
subscribe(cb: (event: ArrayEvent<T>) => void, type?: 'derived' | 'reaction'): Unsubscribe;
|
|
81
|
+
/** Tear down all internal subscriptions */
|
|
82
|
+
dispose(): void;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Implementation of SubscribableArray with lazy upstream activation.
|
|
86
|
+
*
|
|
87
|
+
* Constructor takes initial items (computed synchronously at query time)
|
|
88
|
+
* and an optional activation function that sets up upstream subscriptions.
|
|
89
|
+
* The activation function is only called on first `.subscribe()`.
|
|
90
|
+
*/
|
|
91
|
+
export declare class SubscribableArrayImpl<T> implements SubscribableArray<T> {
|
|
92
|
+
private _items;
|
|
93
|
+
private _derivedSubscribers;
|
|
94
|
+
private _subscribers;
|
|
95
|
+
private _upstreamActive;
|
|
96
|
+
private _activateUpstream;
|
|
97
|
+
private _deactivateUpstream;
|
|
98
|
+
constructor(initialItems: T[], activateUpstream?: () => Unsubscribe);
|
|
99
|
+
get items(): readonly T[];
|
|
100
|
+
get length(): number;
|
|
101
|
+
subscribe(cb: (event: ArrayEvent<T>) => void, type?: 'derived' | 'reaction'): Unsubscribe;
|
|
102
|
+
/** Push items and notify subscribers */
|
|
103
|
+
_push(...items: T[]): void;
|
|
104
|
+
/** Remove items and notify subscribers */
|
|
105
|
+
_remove(items: readonly T[]): void;
|
|
106
|
+
/** Full reset — replace all items */
|
|
107
|
+
_reset(items: T[]): void;
|
|
108
|
+
private _notify;
|
|
109
|
+
dispose(): void;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=subscribable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribable.d.ts","sourceRoot":"","sources":["../../src/query/subscribable.ts"],"names":[],"mappings":"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"}
|
package/dist/query/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SearchContext } from '../applog/datom-types';
|
|
2
|
-
import type { Thread } from '../thread/basic';
|
|
3
|
-
import {
|
|
1
|
+
import { SearchContext } from '../applog/datom-types.ts';
|
|
2
|
+
import type { Thread } from '../thread/basic.ts';
|
|
3
|
+
import { ArrayEvent, SubscribableArray, Unsubscribe } from './subscribable.ts';
|
|
4
4
|
export declare class QueryNode {
|
|
5
5
|
readonly logsOfThisNode: Thread;
|
|
6
6
|
readonly variables: SearchContext;
|
|
@@ -10,21 +10,61 @@ export declare class QueryNode {
|
|
|
10
10
|
get threadOfTrail(): Thread;
|
|
11
11
|
get trailLogs(): any;
|
|
12
12
|
}
|
|
13
|
+
/** Shared interface for query results (one-off and live) */
|
|
14
|
+
export interface IQueryResult {
|
|
15
|
+
readonly nodes: readonly QueryNode[];
|
|
16
|
+
readonly size: number;
|
|
17
|
+
readonly isEmpty: boolean;
|
|
18
|
+
readonly records: readonly SearchContext[];
|
|
19
|
+
readonly leafNodeLogs: readonly import('../applog/datom-types').Applog[];
|
|
20
|
+
readonly leafNodeThread: Thread;
|
|
21
|
+
readonly threadOfAllTrails: Thread;
|
|
22
|
+
readonly thread: Thread;
|
|
23
|
+
readonly allApplogs: readonly import('../applog/datom-types').Applog[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* One-off query result — plain frozen snapshot.
|
|
27
|
+
* No subscribe method. No stale-data risk.
|
|
28
|
+
*/
|
|
29
|
+
export declare class QueryResult implements IQueryResult {
|
|
30
|
+
readonly nodes: readonly QueryNode[];
|
|
31
|
+
constructor(nodes: readonly QueryNode[]);
|
|
32
|
+
get size(): number;
|
|
33
|
+
get isEmpty(): boolean;
|
|
34
|
+
get untrackedSize(): number;
|
|
35
|
+
get records(): readonly SearchContext[];
|
|
36
|
+
get leafNodeThread(): import("../thread.ts").MappedThread;
|
|
37
|
+
get leafNodeLogSet(): (readonly import("../applog.ts").Applog[])[];
|
|
38
|
+
get leafNodeLogs(): import("../applog.ts").Applog[];
|
|
39
|
+
get threadOfAllTrails(): import("../thread.ts").MappedThread;
|
|
40
|
+
get thread(): import("../thread.ts").MappedThread;
|
|
41
|
+
get allApplogs(): readonly import("../applog.ts").Applog[];
|
|
42
|
+
}
|
|
13
43
|
/**
|
|
14
|
-
*
|
|
44
|
+
* Live query result — eagerly activated, always up-to-date.
|
|
45
|
+
*
|
|
46
|
+
* `.nodes` returns the current live view.
|
|
47
|
+
* `.subscribe()` receives future delta events (consistent with current state).
|
|
48
|
+
* Must call `.dispose()` when done to tear down upstream subscriptions.
|
|
15
49
|
*/
|
|
16
|
-
export declare class
|
|
17
|
-
|
|
18
|
-
constructor(
|
|
50
|
+
export declare class LiveQueryResult implements IQueryResult {
|
|
51
|
+
private _source;
|
|
52
|
+
constructor(_source: SubscribableArray<QueryNode>, activate?: boolean);
|
|
53
|
+
private _activationUnsub;
|
|
54
|
+
/** Subscribe to node change events. Callback fires on future changes only. */
|
|
55
|
+
subscribe(cb: (event: ArrayEvent<QueryNode>) => void, type?: 'derived' | 'reaction'): Unsubscribe;
|
|
56
|
+
/** Current nodes — live view, always up-to-date while not disposed */
|
|
57
|
+
get nodes(): readonly QueryNode[];
|
|
19
58
|
get size(): number;
|
|
20
59
|
get isEmpty(): boolean;
|
|
21
60
|
get untrackedSize(): number;
|
|
22
|
-
get records():
|
|
23
|
-
get leafNodeThread(): import("
|
|
24
|
-
get leafNodeLogSet():
|
|
25
|
-
get leafNodeLogs():
|
|
26
|
-
get threadOfAllTrails(): import("
|
|
27
|
-
get thread(): import("
|
|
28
|
-
get allApplogs(): readonly import("
|
|
61
|
+
get records(): readonly SearchContext[];
|
|
62
|
+
get leafNodeThread(): import("../thread.ts").MappedThread;
|
|
63
|
+
get leafNodeLogSet(): (readonly import("../applog.ts").Applog[])[];
|
|
64
|
+
get leafNodeLogs(): import("../applog.ts").Applog[];
|
|
65
|
+
get threadOfAllTrails(): import("../thread.ts").MappedThread;
|
|
66
|
+
get thread(): import("../thread.ts").MappedThread;
|
|
67
|
+
get allApplogs(): readonly import("../applog.ts").Applog[];
|
|
68
|
+
dispose(): void;
|
|
29
69
|
}
|
|
30
70
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAyB,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAErG,qBAAa,SAAS;IAEpB,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC/B,QAAQ,CAAC,SAAS,EAAE,aAAa;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;gBAF1B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,aAAa,EACxB,QAAQ,GAAE,SAAS,GAAG,IAAW;IAE3C,IAAI,MAAM,kBAET;IAED,IAAI,aAAa,WAMhB;IACD,IAAI,SAAS,QAEZ;CACD;AAED,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,OAAO,uBAAuB,EAAE,MAAM,EAAE,CAAA;IACxE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,uBAAuB,EAAE,MAAM,EAAE,CAAA;CACtE;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IAE9C,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE;gBAA3B,KAAK,EAAE,SAAS,SAAS,EAAE;IAGrC,IAAI,IAAI,WAEP;IACD,IAAI,OAAO,YAEV;IACD,IAAI,aAAa,WAEhB;IAED,IAAI,OAAO,IAAI,SAAS,aAAa,EAAE,CAEtC;IACD,IAAI,cAAc,wCAIjB;IACD,IAAI,cAAc,iDAEjB;IACD,IAAI,YAAY,oCAEf;IACD,IAAI,iBAAiB,wCAEpB;IACD,IAAI,MAAM,wCAET;IACD,IAAI,UAAU,6CAEb;CACD;AAED;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAElD,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAC7C,QAAQ,UAAO;IAShB,OAAO,CAAC,gBAAgB,CAA2B;IAEnD,8EAA8E;IAC9E,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW;IAIjG,sEAAsE;IACtE,IAAI,KAAK,IAAI,SAAS,SAAS,EAAE,CAEhC;IAED,IAAI,IAAI,WAEP;IACD,IAAI,OAAO,YAEV;IACD,IAAI,aAAa,WAEhB;IAED,IAAI,OAAO,IAAI,SAAS,aAAa,EAAE,CAEtC;IACD,IAAI,cAAc,wCAIjB;IACD,IAAI,cAAc,iDAEjB;IACD,IAAI,YAAY,oCAEf;IACD,IAAI,iBAAiB,wCAEpB;IACD,IAAI,MAAM,wCAET;IACD,IAAI,UAAU,6CAEb;IAED,OAAO;CAKP"}
|
package/dist/query.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './query/basic';
|
|
3
|
-
export * from './query/divergences';
|
|
4
|
-
export * from './query/matchers';
|
|
5
|
-
export * from './query/
|
|
1
|
+
export * from './utils/debug-name.ts';
|
|
2
|
+
export * from './query/basic.ts';
|
|
3
|
+
export * from './query/divergences.ts';
|
|
4
|
+
export * from './query/matchers.ts';
|
|
5
|
+
export * from './query/memoized.ts';
|
|
6
|
+
export * from './query/subscribable.ts';
|
|
7
|
+
export * from './query/types.ts';
|
|
8
|
+
export * from './query/attr-helpers.ts';
|
|
9
|
+
export * from './query/entity-collection.ts';
|
|
6
10
|
//# sourceMappingURL=query.d.ts.map
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA"}
|