@wovin/core 0.1.35 → 0.2.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/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 +25 -6
- package/dist/applog/applog-utils.d.ts.map +1 -1
- package/dist/applog/datom-types.d.ts +4 -5
- 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} +6 -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-KXMTKPF4.min.js → chunk-3JZMOEOD.js} +8 -8
- package/dist/chunk-3JZMOEOD.js.map +1 -0
- package/dist/chunk-3WZVG277.js +434 -0
- package/dist/chunk-3WZVG277.js.map +1 -0
- package/dist/chunk-7Z5YDQKK.js +1 -0
- package/dist/chunk-CPSDKFBG.js +147 -0
- package/dist/chunk-CPSDKFBG.js.map +1 -0
- package/dist/chunk-E46VTKTZ.js +1 -0
- package/dist/{chunk-H3VQJP56.min.js → chunk-J2FDHGOZ.js} +9 -9
- package/dist/chunk-J2FDHGOZ.js.map +1 -0
- package/dist/chunk-L5EEEGE6.js +1862 -0
- package/dist/chunk-L5EEEGE6.js.map +1 -0
- package/dist/{chunk-BRC7LSM6.min.js → chunk-PD3C7XUM.js} +5 -5
- package/dist/chunk-PD3C7XUM.js.map +1 -0
- package/dist/chunk-QZXKQCAY.js +1026 -0
- package/dist/chunk-QZXKQCAY.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} +73 -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 +85 -21
- 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 +1 -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} +51 -32
- 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 +56 -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 +507 -0
- package/src/applog/datom-types.ts +148 -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 +277 -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 +131 -0
- package/src/query/liveFilterAndMap.test.ts +102 -0
- package/src/query/matchers.ts +8 -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 +250 -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
package/README.md
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
1
|
# @wovin/core
|
|
2
2
|
|
|
3
3
|
Core utilities and types for Wovin applications.
|
|
4
|
-
|
|
5
|
-
## MobX Configuration
|
|
6
|
-
|
|
7
|
-
This package configures MobX with strict mode enabled (`enforceActions: 'always'`). To use non-strict mode in your application, override the configuration after importing:
|
|
8
|
-
|
|
9
|
-
```typescript
|
|
10
|
-
import { configure } from '@wovin/core/mobx'
|
|
11
|
-
|
|
12
|
-
configure({
|
|
13
|
-
enforceActions: 'never'
|
|
14
|
-
})
|
|
15
|
-
```
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { MappedThread, Thread } from '../thread';
|
|
2
|
-
import { PartialBy } from '../types/typescript-utils';
|
|
3
|
-
import { ApplogForInsert, ApplogForInsertOptionalAgent, ApplogNoCid, AgentHash, CidString, Timestamp } from './datom-types';
|
|
1
|
+
import { MappedThread, Thread } from '../thread.ts';
|
|
2
|
+
import { PartialBy } from '../types/typescript-utils.ts';
|
|
3
|
+
import { ApplogForInsert, ApplogForInsertOptionalAgent, ApplogNoCid, AgentHash, CidString, Timestamp } from './datom-types.ts';
|
|
4
4
|
export declare function ensureTsPvAndFinalizeApplogs(appLogsToInsert: ApplogForInsert[], threadForPv: Thread): Readonly<{
|
|
5
5
|
cid: CidString;
|
|
6
|
-
at: import("./datom-types").Attribute;
|
|
6
|
+
at: import("./datom-types.ts").Attribute;
|
|
7
7
|
pv: CidString | null;
|
|
8
8
|
ts: Timestamp;
|
|
9
9
|
ag: AgentHash;
|
|
10
|
-
en: import("./datom-types").EntityID;
|
|
11
|
-
vl: import("./datom-types").ApplogValue;
|
|
10
|
+
en: import("./datom-types.ts").EntityID;
|
|
11
|
+
vl: import("./datom-types.ts").ApplogValue;
|
|
12
12
|
}>[];
|
|
13
13
|
export declare function ensureTsPvAndFinalizeApplog(applogToInsert: ApplogForInsert, threadForPv: Thread): Readonly<{
|
|
14
14
|
cid: CidString;
|
|
15
|
-
at: import("./datom-types").Attribute;
|
|
15
|
+
at: import("./datom-types.ts").Attribute;
|
|
16
16
|
pv: CidString | null;
|
|
17
17
|
ts: Timestamp;
|
|
18
18
|
ag: AgentHash;
|
|
19
|
-
en: import("./datom-types").EntityID;
|
|
20
|
-
vl: import("./datom-types").ApplogValue;
|
|
19
|
+
en: import("./datom-types.ts").EntityID;
|
|
20
|
+
vl: import("./datom-types.ts").ApplogValue;
|
|
21
21
|
}>;
|
|
22
22
|
export declare function finalizeApplogForInsert(log: ApplogForInsert, { ts, threadForPv }?: {
|
|
23
23
|
ts?: string;
|
|
24
24
|
threadForPv?: Thread;
|
|
25
25
|
}): Readonly<{
|
|
26
26
|
cid: CidString;
|
|
27
|
-
at: import("./datom-types").Attribute;
|
|
27
|
+
at: import("./datom-types.ts").Attribute;
|
|
28
28
|
pv: CidString | null;
|
|
29
29
|
ts: Timestamp;
|
|
30
30
|
ag: AgentHash;
|
|
31
|
-
en: import("./datom-types").EntityID;
|
|
32
|
-
vl: import("./datom-types").ApplogValue;
|
|
31
|
+
en: import("./datom-types.ts").EntityID;
|
|
32
|
+
vl: import("./datom-types.ts").ApplogValue;
|
|
33
33
|
}>;
|
|
34
34
|
export declare function hasAg(log: ApplogForInsertOptionalAgent): log is ApplogForInsert;
|
|
35
35
|
export declare function hasTs(log: ApplogForInsert): log is Omit<ApplogForInsert, 'ts'> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applog-helpers.d.ts","sourceRoot":"","sources":["../../src/applog/applog-helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"applog-helpers.d.ts","sourceRoot":"","sources":["../../src/applog/applog-helpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAiB,MAAM,EAA4C,MAAM,cAAc,CAAA;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAEN,eAAe,EACf,4BAA4B,EAC5B,WAAW,EACX,SAAS,EACT,SAAS,EAGT,SAAS,EACT,MAAM,kBAAkB,CAAA;AAIzB,wBAAgB,4BAA4B,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,MAAM;;;;;;;;KA+BnG;AACD,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM;;;;;;;;GAE/F;AAED,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,eAAe,EACpB,EAAE,EAAE,EAAE,WAAW,EAAE,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAuB;;;;;;;;GAkB/E;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,4BAA4B,GAAG,GAAG,IAAI,eAAe,CAE/E;AACD,wBAAgB,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG;IAAE,EAAE,EAAE,SAAS,CAAA;CAAE,CAElG;AACD,wBAAgB,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAEnF;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,SAAS;QAP8B,SAAS;EAShG;AACD,wBAAgB,MAAM,CAAC,GAAG,EAAE,4BAA4B,EAAE,EAAE,EAAE,SAAS,mBAEtE;AACD,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,GAAmB,IAAI,eA8BlG;AACD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,gBA6BzD"}
|
|
@@ -1,9 +1,28 @@
|
|
|
1
|
-
import type { Applog, ApplogValue, DatalogQueryPattern, DatalogQueryResultEntry, ResultContext, SearchContext, ValueOrMatcher } from './datom-types';
|
|
1
|
+
import type { Applog, ApplogValue, DatalogQueryPattern, DatalogQueryResultEntry, ResultContext, SearchContext, ValueOrMatcher } from './datom-types.ts';
|
|
2
2
|
export declare const isoDateStrCompare: (strA: string, strB: string, dir?: "asc" | "desc") => number;
|
|
3
3
|
export declare const objEqualByKeys: (keys: string[], objA: object, objB: object) => boolean;
|
|
4
|
+
/** Transitive total-order comparator over (ts, cid). Safe for `Array.sort`. */
|
|
4
5
|
export declare const compareApplogsByTs: (logA: Applog, logB: Applog, dir?: "asc" | "desc") => number;
|
|
5
6
|
export declare const compareApplogsByEnAt: (objA: object, objB: object) => boolean;
|
|
6
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Pairwise: is `a` strictly later than `b` per (ts, pv-chain, cid)?
|
|
9
|
+
*
|
|
10
|
+
* NOT TRANSITIVE. Use only for two-log decisions (e.g. lastWriteWins replacement
|
|
11
|
+
* check). Do NOT pass to `Array.sort` — it can produce cycles at 3+ chain links
|
|
12
|
+
* and break the engine's sort.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isLaterByTsAndPv(a: Applog, b: Applog): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Sort applogs in chain-aware order (modifies array, also returns for chaining).
|
|
17
|
+
*
|
|
18
|
+
* Two-phase:
|
|
19
|
+
* 1. Transitive `(ts, cid)` `Array.sort` — fast, total-order, common case.
|
|
20
|
+
* 2. For each contiguous same-ts cluster (rare), chain-stabilize via `pv`
|
|
21
|
+
* so chain-tail logs land last (asc) / first (desc) within their (en, at)
|
|
22
|
+
* sub-group. Cross-group order within a cluster stays cid-lex.
|
|
23
|
+
*
|
|
24
|
+
* No-tie inputs pay only one linear scan past `Array.sort`.
|
|
25
|
+
*/
|
|
7
26
|
export declare function sortApplogsByTs(appLogArray: Applog[], dir?: 'asc' | 'desc'): Applog[];
|
|
8
27
|
export declare const isTsBefore: (log: Applog, logToCompare: Applog) => boolean;
|
|
9
28
|
export declare const uniqueEnFromAppLogs: (appLogArray: Applog[]) => string[];
|
|
@@ -19,13 +38,13 @@ export declare const getHashID: (stringifiable: any, lngth?: number) => string;
|
|
|
19
38
|
export declare function isVariable(x: any): x is string;
|
|
20
39
|
export declare function variableNameWithoutQuestionmark(str: string): string;
|
|
21
40
|
export declare function isStaticPattern(x: any): x is ApplogValue;
|
|
22
|
-
export declare function resolveOrRemoveVariables(pattern: DatalogQueryPattern, candidate: SearchContext): readonly [Partial<import("./datom-types").WithMatchers<Applog>>, Partial<{
|
|
41
|
+
export declare function resolveOrRemoveVariables(pattern: DatalogQueryPattern, candidate: SearchContext): readonly [Partial<import("./datom-types.ts").WithMatchers<Applog>>, Partial<{
|
|
23
42
|
cid: string;
|
|
24
43
|
pv: string;
|
|
25
|
-
ts: import("./datom-types").Timestamp;
|
|
44
|
+
ts: import("./datom-types.ts").Timestamp;
|
|
26
45
|
ag: string;
|
|
27
|
-
en: import("./datom-types").EntityID;
|
|
28
|
-
at: import("./datom-types").Attribute;
|
|
46
|
+
en: import("./datom-types.ts").EntityID;
|
|
47
|
+
at: import("./datom-types.ts").Attribute;
|
|
29
48
|
vl: string;
|
|
30
49
|
}>];
|
|
31
50
|
export declare function matchPartStatic(field: keyof Applog, patternPart: ValueOrMatcher<ApplogValue>, atomPart: ApplogValue): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applog-utils.d.ts","sourceRoot":"","sources":["../../src/applog/applog-utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACX,MAAM,EAEN,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,aAAa,EACb,cAAc,EACd,MAAM,
|
|
1
|
+
{"version":3,"file":"applog-utils.d.ts","sourceRoot":"","sources":["../../src/applog/applog-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Static, TSchema } from '@sinclair/typebox';
|
|
2
2
|
import { CID } from 'multiformats/cid';
|
|
3
|
-
import {
|
|
4
|
-
import type { PartialBy, Tagged } from '../types/typescript-utils';
|
|
3
|
+
import type { PartialBy, Tagged } from '../types/typescript-utils.ts';
|
|
5
4
|
export declare const Nullable: <T extends TSchema>(schema: T) => import("@sinclair/typebox").TUnion<[T, import("@sinclair/typebox").TNull]>;
|
|
6
5
|
export declare const EntityID_LENGTH = 7;
|
|
7
6
|
export declare const EntityID: import("@sinclair/typebox").TString;
|
|
@@ -44,7 +43,7 @@ export type AtomPattern = Atom | Applog;
|
|
|
44
43
|
export interface DatalogStateIdentifier {
|
|
45
44
|
lastTS: Timestamp;
|
|
46
45
|
}
|
|
47
|
-
export type ValueOrMatcher<T> = T | readonly T[] | ReadonlySet<T> |
|
|
46
|
+
export type ValueOrMatcher<T> = T | readonly T[] | ReadonlySet<T> | ((value: T) => boolean);
|
|
48
47
|
export type WithMatchers<T extends Record<string, any>> = {
|
|
49
48
|
[K in keyof T & string as `${K}` | `!${K}`]?: ValueOrMatcher<T[K]>;
|
|
50
49
|
};
|
|
@@ -97,8 +96,8 @@ export declare const isValidApplogNoCid: (value: unknown) => value is {
|
|
|
97
96
|
vl: string | number | boolean;
|
|
98
97
|
};
|
|
99
98
|
export declare const AppLogTB: import("@sinclair/typebox").TObject<{
|
|
100
|
-
at: import("@sinclair/typebox").TString;
|
|
101
99
|
cid: import("@sinclair/typebox").TString;
|
|
100
|
+
at: import("@sinclair/typebox").TString;
|
|
102
101
|
pv: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
103
102
|
ts: import("@sinclair/typebox").TString;
|
|
104
103
|
ag: import("@sinclair/typebox").TString;
|
|
@@ -107,8 +106,8 @@ export declare const AppLogTB: import("@sinclair/typebox").TObject<{
|
|
|
107
106
|
}>;
|
|
108
107
|
export type AppLogTB = Static<typeof AppLogTB>;
|
|
109
108
|
export declare const AppLogTBC: import("@sinclair/typebox/compiler").TypeCheck<import("@sinclair/typebox").TObject<{
|
|
110
|
-
at: import("@sinclair/typebox").TString;
|
|
111
109
|
cid: import("@sinclair/typebox").TString;
|
|
110
|
+
at: import("@sinclair/typebox").TString;
|
|
112
111
|
pv: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
113
112
|
ts: import("@sinclair/typebox").TString;
|
|
114
113
|
ag: import("@sinclair/typebox").TString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datom-types.d.ts","sourceRoot":"","sources":["../../src/applog/datom-types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,MAAM,EAAE,OAAO,EAAQ,MAAM,mBAAmB,CAAA;AAEzE,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"datom-types.d.ts","sourceRoot":"","sources":["../../src/applog/datom-types.ts"],"names":[],"mappings":"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"}
|
package/dist/applog.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './applog/applog-helpers';
|
|
2
|
-
export * from './applog/applog-utils';
|
|
3
|
-
export * from './applog/datom-types';
|
|
1
|
+
export * from './applog/applog-helpers.ts';
|
|
2
|
+
export * from './applog/applog-utils.ts';
|
|
3
|
+
export * from './applog/datom-types.ts';
|
|
4
4
|
//# sourceMappingURL=applog.d.ts.map
|
package/dist/applog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applog.d.ts","sourceRoot":"","sources":["../src/applog.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"applog.d.ts","sourceRoot":"","sources":["../src/applog.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-7Z5YDQKK.js";
|
|
2
2
|
import {
|
|
3
3
|
AppLogNoCidTB,
|
|
4
4
|
AppLogNoCidTBC,
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
hasPv,
|
|
28
28
|
hasTs,
|
|
29
29
|
isEncryptedApplog,
|
|
30
|
+
isLaterByTsAndPv,
|
|
30
31
|
isStaticPattern,
|
|
31
32
|
isTsBefore,
|
|
32
33
|
isValidApplog,
|
|
@@ -47,11 +48,8 @@ import {
|
|
|
47
48
|
withAg,
|
|
48
49
|
withPvFrom,
|
|
49
50
|
withTs
|
|
50
|
-
} from "./chunk-
|
|
51
|
-
import "./chunk-
|
|
52
|
-
import "./chunk-QO2KMGDN.min.js";
|
|
53
|
-
import "./chunk-KEHU7HGZ.min.js";
|
|
54
|
-
import "./chunk-PHITDXZT.min.js";
|
|
51
|
+
} from "./chunk-L5EEEGE6.js";
|
|
52
|
+
import "./chunk-ZAADLBSB.js";
|
|
55
53
|
export {
|
|
56
54
|
AppLogNoCidTB,
|
|
57
55
|
AppLogNoCidTBC,
|
|
@@ -80,6 +78,7 @@ export {
|
|
|
80
78
|
hasPv,
|
|
81
79
|
hasTs,
|
|
82
80
|
isEncryptedApplog,
|
|
81
|
+
isLaterByTsAndPv,
|
|
83
82
|
isStaticPattern,
|
|
84
83
|
isTsBefore,
|
|
85
84
|
isValidApplog,
|
|
@@ -101,4 +100,4 @@ export {
|
|
|
101
100
|
withPvFrom,
|
|
102
101
|
withTs
|
|
103
102
|
};
|
|
104
|
-
//# sourceMappingURL=applog.
|
|
103
|
+
//# sourceMappingURL=applog.js.map
|
package/dist/blockstore.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './blockstore/index';
|
|
1
|
+
export * from './blockstore/index.ts';
|
|
2
2
|
//# sourceMappingURL=blockstore.d.ts.map
|
package/dist/blockstore.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockstore.d.ts","sourceRoot":"","sources":["../src/blockstore.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"blockstore.d.ts","sourceRoot":"","sources":["../src/blockstore.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import "./chunk-PHITDXZT.min.js";
|
|
2
|
-
|
|
3
1
|
// src/blockstore/index.ts
|
|
4
2
|
var LocalFirstBlockStore = class {
|
|
5
3
|
constructor(local, remote) {
|
|
@@ -23,4 +21,4 @@ var LocalFirstBlockStore = class {
|
|
|
23
21
|
export {
|
|
24
22
|
LocalFirstBlockStore
|
|
25
23
|
};
|
|
26
|
-
//# sourceMappingURL=blockstore.
|
|
24
|
+
//# sourceMappingURL=blockstore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/blockstore/index.ts"],"sourcesContent":["import type { CID } from 'multiformats/cid'\n\n/** Minimal async block store interface — get/put/has. */\nexport interface BlockStore {\n\tget(cid: CID): Promise<Uint8Array>\n\tput(cid: CID, bytes: Uint8Array): Promise<void>\n\thas(cid: CID): Promise<boolean>\n}\n\n/**\n * A block store that reads locally first, with optional remote fallback.\n * On get: local hit → return; local miss + remote → fetch, write-back, return.\n * put/has always operate on local only.\n */\nexport class LocalFirstBlockStore implements BlockStore {\n\tconstructor(\n\t\tprivate local: BlockStore,\n\t\tprivate remote?: Pick<BlockStore, 'get'>,\n\t) {}\n\n\tasync get(cid: CID): Promise<Uint8Array> {\n\t\tif (await this.local.has(cid)) return this.local.get(cid)\n\t\tif (!this.remote) throw new Error(`Block not found: ${cid}`)\n\t\tconst bytes = await this.remote.get(cid)\n\t\tawait this.local.put(cid, bytes)\n\t\treturn bytes\n\t}\n\n\tput(cid: CID, bytes: Uint8Array): Promise<void> {\n\t\treturn this.local.put(cid, bytes)\n\t}\n\n\thas(cid: CID): Promise<boolean> {\n\t\treturn this.local.has(cid)\n\t}\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/blockstore/index.ts"],"sourcesContent":["import type { CID } from 'multiformats/cid'\n\n/** Minimal async block store interface — get/put/has. */\nexport interface BlockStore {\n\tget(cid: CID): Promise<Uint8Array>\n\tput(cid: CID, bytes: Uint8Array): Promise<void>\n\thas(cid: CID): Promise<boolean>\n}\n\n/**\n * A block store that reads locally first, with optional remote fallback.\n * On get: local hit → return; local miss + remote → fetch, write-back, return.\n * put/has always operate on local only.\n */\nexport class LocalFirstBlockStore implements BlockStore {\n\tconstructor(\n\t\tprivate local: BlockStore,\n\t\tprivate remote?: Pick<BlockStore, 'get'>,\n\t) {}\n\n\tasync get(cid: CID): Promise<Uint8Array> {\n\t\tif (await this.local.has(cid)) return this.local.get(cid)\n\t\tif (!this.remote) throw new Error(`Block not found: ${cid}`)\n\t\tconst bytes = await this.remote.get(cid)\n\t\tawait this.local.put(cid, bytes)\n\t\treturn bytes\n\t}\n\n\tput(cid: CID, bytes: Uint8Array): Promise<void> {\n\t\treturn this.local.put(cid, bytes)\n\t}\n\n\thas(cid: CID): Promise<boolean> {\n\t\treturn this.local.has(cid)\n\t}\n}\n"],"mappings":";AAcO,IAAM,uBAAN,MAAiD;AAAA,EACvD,YACS,OACA,QACP;AAFO;AACA;AAAA,EACN;AAAA,EAEH,MAAM,IAAI,KAA+B;AACxC,QAAI,MAAM,KAAK,MAAM,IAAI,GAAG,EAAG,QAAO,KAAK,MAAM,IAAI,GAAG;AACxD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,oBAAoB,GAAG,EAAE;AAC3D,UAAM,QAAQ,MAAM,KAAK,OAAO,IAAI,GAAG;AACvC,UAAM,KAAK,MAAM,IAAI,KAAK,KAAK;AAC/B,WAAO;AAAA,EACR;AAAA,EAEA,IAAI,KAAU,OAAkC;AAC/C,WAAO,KAAK,MAAM,IAAI,KAAK,KAAK;AAAA,EACjC;AAAA,EAEA,IAAI,KAA4B;AAC/B,WAAO,KAAK,MAAM,IAAI,GAAG;AAAA,EAC1B;AACD;","names":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
decode,
|
|
5
|
-
g
|
|
6
|
-
} from "./chunk-GDX2OO7L.min.js";
|
|
2
|
+
areCidsEqual
|
|
3
|
+
} from "./chunk-L5EEEGE6.js";
|
|
7
4
|
|
|
8
5
|
// src/ipfs/fetch-snapshot-chain.ts
|
|
9
|
-
|
|
6
|
+
import * as dagJson from "@ipld/dag-json";
|
|
7
|
+
import { Logger } from "besonders-logger";
|
|
8
|
+
import { CID } from "multiformats/cid";
|
|
9
|
+
var { WARN, LOG, DEBUG, VERBOSE, ERROR } = Logger.setup(Logger.INFO);
|
|
10
10
|
async function fetchSnapshotChainUntil(options) {
|
|
11
11
|
const { rootCID, stopAtCID, stopAtCounter, fetchBlock, fetchAll, maxDepth = 100 } = options;
|
|
12
12
|
const blockStore = createMemoryBlockStore();
|
|
@@ -32,7 +32,7 @@ async function fetchSnapshotChainUntil(options) {
|
|
|
32
32
|
if (!rootBytes) {
|
|
33
33
|
throw ERROR("[fetchSnapshotChain] root block not in store after fetch", { currentCID: cidStr });
|
|
34
34
|
}
|
|
35
|
-
const root = decode(rootBytes);
|
|
35
|
+
const root = dagJson.decode(rootBytes);
|
|
36
36
|
if (typeof root.prevCounter === "number") {
|
|
37
37
|
minCounter = Math.min(minCounter, root.prevCounter);
|
|
38
38
|
maxCounter = Math.max(maxCounter, root.prevCounter);
|
|
@@ -83,4 +83,4 @@ function createMemoryBlockStore() {
|
|
|
83
83
|
export {
|
|
84
84
|
fetchSnapshotChainUntil
|
|
85
85
|
};
|
|
86
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-3JZMOEOD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ipfs/fetch-snapshot-chain.ts"],"sourcesContent":["import { CarReader } from '@ipld/car'\nimport * as dagJson from '@ipld/dag-json'\nimport { Logger } from 'besonders-logger'\nimport { CID } from 'multiformats/cid'\nimport type { SnapRootBlock } from '../pubsub/pubsub-types.ts'\nimport { areCidsEqual } from './ipfs-utils.ts'\n\nconst { WARN, LOG, DEBUG, VERBOSE, ERROR } = Logger.setup(Logger.INFO) // eslint-disable-line no-unused-vars\n\nexport interface BlockStoreForFetch {\n get(cid: CID): Promise<Uint8Array | undefined>\n put(cid: CID, bytes: Uint8Array): Promise<void>\n}\n\nexport interface FetchChainOptions {\n rootCID: CID\n stopAtCID?: CID // Stop when we hit this CID (lastCID from subscription)\n stopAtCounter?: number // Stop when we reach this counter (walking backwards)\n fetchBlock: (cid: CID) => Promise<CarReader> // dag-scope=block\n fetchAll: (cid: CID) => Promise<CarReader> // dag-scope=all\n maxDepth?: number\n}\n\nexport interface FetchChainResult {\n rootCID: CID\n blockStore: BlockStoreForFetch\n /** Serializable blocks array for worker boundary crossing */\n blocks: [string, Uint8Array][]\n snapshotCount: number\n counterRange?: { minCounter: number; maxCounter: number }\n}\n\n/**\n * Fetches a snapshot chain iteratively, stopping at stopAtCID.\n * Uses 3 requests per snapshot: root(block), applogs(all), info(all).\n * This avoids the gateway's dag-scope=all following prev links recursively.\n */\nexport async function fetchSnapshotChainUntil(options: FetchChainOptions): Promise<FetchChainResult> {\n const { rootCID, stopAtCID, stopAtCounter, fetchBlock, fetchAll, maxDepth = 100 } = options\n const blockStore = createMemoryBlockStore()\n const visited = new Set<string>() // Loop detection for fetch\n let currentCID: CID | undefined = rootCID\n let snapshotCount = 0\n let minCounter = Infinity\n let maxCounter = -Infinity\n\n while (currentCID && snapshotCount < maxDepth) {\n const cidStr = currentCID.toString()\n\n // Loop detection\n if (visited.has(cidStr)) {\n throw ERROR('[fetchSnapshotChain] snapshot chain has a loop', { currentCID: cidStr, visited: [...visited] })\n }\n visited.add(cidStr)\n\n // Check stop condition BEFORE fetching content\n if (stopAtCID && areCidsEqual(currentCID, stopAtCID)) {\n DEBUG('[fetchSnapshotChain] reached stopAtCID, stopping', stopAtCID.toString())\n break // We've reached the last pulled snapshot - don't fetch it again\n }\n\n // 1. Fetch root block only (dag-scope=block)\n DEBUG('[fetchSnapshotChain] fetching root block', cidStr)\n const rootCar = await fetchBlock(currentCID)\n await addCarBlocksToStore(rootCar, blockStore)\n\n // Parse root to get applogs, info, prev CIDs\n const rootBytes = await blockStore.get(currentCID)\n if (!rootBytes) {\n throw ERROR('[fetchSnapshotChain] root block not in store after fetch', { currentCID: cidStr })\n }\n const root = dagJson.decode(rootBytes) as SnapRootBlock\n\n // Track counter range\n if (typeof root.prevCounter === 'number') {\n minCounter = Math.min(minCounter, root.prevCounter)\n maxCounter = Math.max(maxCounter, root.prevCounter)\n }\n\n // Stop condition based on counter\n if (stopAtCounter !== undefined && typeof root.prevCounter === 'number' && root.prevCounter <= stopAtCounter) {\n DEBUG('[fetchSnapshotChain] reached stopAtCounter', { stopAtCounter, prevCounter: root.prevCounter })\n break\n }\n\n // 2. Fetch applogs with dag-scope=all (gets applogs block + all linked applog blocks)\n DEBUG('[fetchSnapshotChain] fetching applogs', root.applogs.toString())\n const applogsCar = await fetchAll(root.applogs)\n await addCarBlocksToStore(applogsCar, blockStore)\n\n // 3. Fetch info with dag-scope=all (gets info block + all linked info log blocks)\n DEBUG('[fetchSnapshotChain] fetching info', root.info.toString())\n const infoCar = await fetchAll(root.info)\n await addCarBlocksToStore(infoCar, blockStore)\n\n snapshotCount++\n currentCID = root.prev // Move to previous snapshot\n }\n\n DEBUG('[fetchSnapshotChain] done', { snapshotCount, rootCID: rootCID.toString() })\n return {\n rootCID,\n blockStore,\n blocks: blockStore.getBlocksArray(),\n snapshotCount,\n counterRange: minCounter !== Infinity ? { minCounter, maxCounter } : undefined,\n }\n}\n\nasync function addCarBlocksToStore(car: CarReader, store: BlockStoreForFetch) {\n for await (const { cid, bytes } of car.blocks()) {\n const validCid = typeof cid.toV1 === 'function' ? cid : CID.decode(cid.bytes)\n await store.put(validCid, bytes)\n }\n}\n\ninterface MemoryBlockStoreWithBlocks extends BlockStoreForFetch {\n /** Get all blocks as serializable array */\n getBlocksArray(): [string, Uint8Array][]\n}\n\nfunction createMemoryBlockStore(): MemoryBlockStoreWithBlocks {\n const blocks = new Map<string, Uint8Array>()\n return {\n async get(cid: CID) {\n return blocks.get(cid.toV1().toString())\n },\n async put(cid: CID, bytes: Uint8Array) {\n blocks.set(cid.toV1().toString(), bytes)\n },\n getBlocksArray() {\n return Array.from(blocks.entries())\n },\n }\n}\n"],"mappings":";;;;;AACA,YAAY,aAAa;AACzB,SAAS,cAAc;AACvB,SAAS,WAAW;AAIpB,IAAM,EAAE,MAAM,KAAK,OAAO,SAAS,MAAM,IAAI,OAAO,MAAM,OAAO,IAAI;AA8BrE,eAAsB,wBAAwB,SAAuD;AACjG,QAAM,EAAE,SAAS,WAAW,eAAe,YAAY,UAAU,WAAW,IAAI,IAAI;AACpF,QAAM,aAAa,uBAAuB;AAC1C,QAAM,UAAU,oBAAI,IAAY;AAChC,MAAI,aAA8B;AAClC,MAAI,gBAAgB;AACpB,MAAI,aAAa;AACjB,MAAI,aAAa;AAEjB,SAAO,cAAc,gBAAgB,UAAU;AAC3C,UAAM,SAAS,WAAW,SAAS;AAGnC,QAAI,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAM,MAAM,kDAAkD,EAAE,YAAY,QAAQ,SAAS,CAAC,GAAG,OAAO,EAAE,CAAC;AAAA,IAC/G;AACA,YAAQ,IAAI,MAAM;AAGlB,QAAI,aAAa,aAAa,YAAY,SAAS,GAAG;AAClD,YAAM,oDAAoD,UAAU,SAAS,CAAC;AAC9E;AAAA,IACJ;AAGA,UAAM,4CAA4C,MAAM;AACxD,UAAM,UAAU,MAAM,WAAW,UAAU;AAC3C,UAAM,oBAAoB,SAAS,UAAU;AAG7C,UAAM,YAAY,MAAM,WAAW,IAAI,UAAU;AACjD,QAAI,CAAC,WAAW;AACZ,YAAM,MAAM,4DAA4D,EAAE,YAAY,OAAO,CAAC;AAAA,IAClG;AACA,UAAM,OAAe,eAAO,SAAS;AAGrC,QAAI,OAAO,KAAK,gBAAgB,UAAU;AACtC,mBAAa,KAAK,IAAI,YAAY,KAAK,WAAW;AAClD,mBAAa,KAAK,IAAI,YAAY,KAAK,WAAW;AAAA,IACtD;AAGA,QAAI,kBAAkB,UAAa,OAAO,KAAK,gBAAgB,YAAY,KAAK,eAAe,eAAe;AAC1G,YAAM,8CAA8C,EAAE,eAAe,aAAa,KAAK,YAAY,CAAC;AACpG;AAAA,IACJ;AAGA,UAAM,yCAAyC,KAAK,QAAQ,SAAS,CAAC;AACtE,UAAM,aAAa,MAAM,SAAS,KAAK,OAAO;AAC9C,UAAM,oBAAoB,YAAY,UAAU;AAGhD,UAAM,sCAAsC,KAAK,KAAK,SAAS,CAAC;AAChE,UAAM,UAAU,MAAM,SAAS,KAAK,IAAI;AACxC,UAAM,oBAAoB,SAAS,UAAU;AAE7C;AACA,iBAAa,KAAK;AAAA,EACtB;AAEA,QAAM,6BAA6B,EAAE,eAAe,SAAS,QAAQ,SAAS,EAAE,CAAC;AACjF,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA,QAAQ,WAAW,eAAe;AAAA,IAClC;AAAA,IACA,cAAc,eAAe,WAAW,EAAE,YAAY,WAAW,IAAI;AAAA,EACzE;AACJ;AAEA,eAAe,oBAAoB,KAAgB,OAA2B;AAC1E,mBAAiB,EAAE,KAAK,MAAM,KAAK,IAAI,OAAO,GAAG;AAC7C,UAAM,WAAW,OAAO,IAAI,SAAS,aAAa,MAAM,IAAI,OAAO,IAAI,KAAK;AAC5E,UAAM,MAAM,IAAI,UAAU,KAAK;AAAA,EACnC;AACJ;AAOA,SAAS,yBAAqD;AAC1D,QAAM,SAAS,oBAAI,IAAwB;AAC3C,SAAO;AAAA,IACH,MAAM,IAAI,KAAU;AAChB,aAAO,OAAO,IAAI,IAAI,KAAK,EAAE,SAAS,CAAC;AAAA,IAC3C;AAAA,IACA,MAAM,IAAI,KAAU,OAAmB;AACnC,aAAO,IAAI,IAAI,KAAK,EAAE,SAAS,GAAG,KAAK;AAAA,IAC3C;AAAA,IACA,iBAAiB;AACb,aAAO,MAAM,KAAK,OAAO,QAAQ,CAAC;AAAA,IACtC;AAAA,EACJ;AACJ;","names":[]}
|