@wovin/core 0.0.0-ciao-mobx-955482e8
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/LICENSE +661 -0
- package/README.md +3 -0
- package/dist/applog/applog-helpers.d.ts +47 -0
- package/dist/applog/applog-helpers.d.ts.map +1 -0
- package/dist/applog/applog-utils.d.ts +57 -0
- package/dist/applog/applog-utils.d.ts.map +1 -0
- package/dist/applog/datom-types.d.ts +128 -0
- package/dist/applog/datom-types.d.ts.map +1 -0
- package/dist/applog.d.ts +4 -0
- package/dist/applog.d.ts.map +1 -0
- package/dist/applog.js +101 -0
- package/dist/applog.js.map +1 -0
- package/dist/blockstore/index.d.ts +21 -0
- package/dist/blockstore/index.d.ts.map +1 -0
- package/dist/blockstore.d.ts +2 -0
- package/dist/blockstore.d.ts.map +1 -0
- package/dist/blockstore.js +24 -0
- package/dist/blockstore.js.map +1 -0
- package/dist/chunk-6MQKRL6W.js +86 -0
- package/dist/chunk-6MQKRL6W.js.map +1 -0
- package/dist/chunk-7MW34UEO.js +40 -0
- package/dist/chunk-7MW34UEO.js.map +1 -0
- package/dist/chunk-7Z5YDQKK.js +1 -0
- package/dist/chunk-7Z5YDQKK.js.map +1 -0
- package/dist/chunk-CY4NLISM.js +144 -0
- package/dist/chunk-CY4NLISM.js.map +1 -0
- package/dist/chunk-E46VTKTZ.js +1 -0
- package/dist/chunk-E46VTKTZ.js.map +1 -0
- package/dist/chunk-O43W7UW6.js +434 -0
- package/dist/chunk-O43W7UW6.js.map +1 -0
- package/dist/chunk-XIQSYEV3.js +1604 -0
- package/dist/chunk-XIQSYEV3.js.map +1 -0
- package/dist/chunk-XVGW4QC3.js +55 -0
- package/dist/chunk-XVGW4QC3.js.map +1 -0
- package/dist/chunk-YDAKBU6Q.js +9 -0
- 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/chunk-ZXCJRYD7.js +883 -0
- package/dist/chunk-ZXCJRYD7.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +354 -0
- package/dist/index.js.map +1 -0
- package/dist/ipfs/car.d.ts +59 -0
- package/dist/ipfs/car.d.ts.map +1 -0
- package/dist/ipfs/fetch-snapshot-chain.d.ts +32 -0
- package/dist/ipfs/fetch-snapshot-chain.d.ts.map +1 -0
- package/dist/ipfs/ipfs-utils.d.ts +35 -0
- package/dist/ipfs/ipfs-utils.d.ts.map +1 -0
- package/dist/ipfs.d.ts +4 -0
- package/dist/ipfs.d.ts.map +1 -0
- package/dist/ipfs.js +60 -0
- package/dist/ipfs.js.map +1 -0
- package/dist/ipns/ipns-record.d.ts +34 -0
- package/dist/ipns/ipns-record.d.ts.map +1 -0
- package/dist/ipns.d.ts +2 -0
- package/dist/ipns.d.ts.map +1 -0
- package/dist/ipns.js +64 -0
- package/dist/ipns.js.map +1 -0
- package/dist/pubsub/connector.d.ts +9 -0
- package/dist/pubsub/connector.d.ts.map +1 -0
- package/dist/pubsub/pub-pull.d.ts +14 -0
- package/dist/pubsub/pub-pull.d.ts.map +1 -0
- package/dist/pubsub/pubsub-types.d.ts +72 -0
- package/dist/pubsub/pubsub-types.d.ts.map +1 -0
- package/dist/pubsub/snap-push.d.ts +41 -0
- package/dist/pubsub/snap-push.d.ts.map +1 -0
- package/dist/pubsub/ucan-example.d.ts +3 -0
- package/dist/pubsub/ucan-example.d.ts.map +1 -0
- package/dist/pubsub/ucan.d.ts +16 -0
- package/dist/pubsub/ucan.d.ts.map +1 -0
- package/dist/pubsub.d.ts +5 -0
- package/dist/pubsub.d.ts.map +1 -0
- package/dist/pubsub.js +31 -0
- package/dist/pubsub.js.map +1 -0
- package/dist/query/basic.d.ts +105 -0
- package/dist/query/basic.d.ts.map +1 -0
- package/dist/query/divergences.d.ts +12 -0
- package/dist/query/divergences.d.ts.map +1 -0
- package/dist/query/matchers.d.ts +4 -0
- package/dist/query/matchers.d.ts.map +1 -0
- package/dist/query/memoized.d.ts +66 -0
- package/dist/query/memoized.d.ts.map +1 -0
- package/dist/query/query-steps.d.ts +4 -0
- package/dist/query/query-steps.d.ts.map +1 -0
- package/dist/query/situations.d.ts +80 -0
- package/dist/query/situations.d.ts.map +1 -0
- package/dist/query/subscribable.d.ts +102 -0
- package/dist/query/subscribable.d.ts.map +1 -0
- package/dist/query/types.d.ts +70 -0
- package/dist/query/types.d.ts.map +1 -0
- package/dist/query.d.ts +8 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +108 -0
- package/dist/query.js.map +1 -0
- package/dist/retrieve/index.d.ts +2 -0
- package/dist/retrieve/index.d.ts.map +1 -0
- package/dist/retrieve/update-thread.d.ts +64 -0
- package/dist/retrieve/update-thread.d.ts.map +1 -0
- package/dist/retrieve.d.ts +2 -0
- package/dist/retrieve.d.ts.map +1 -0
- package/dist/retrieve.js +14 -0
- package/dist/retrieve.js.map +1 -0
- package/dist/thread/basic.d.ts +60 -0
- package/dist/thread/basic.d.ts.map +1 -0
- package/dist/thread/filters.d.ts +47 -0
- package/dist/thread/filters.d.ts.map +1 -0
- package/dist/thread/mapped.d.ts +31 -0
- package/dist/thread/mapped.d.ts.map +1 -0
- package/dist/thread/utils.d.ts +23 -0
- package/dist/thread/utils.d.ts.map +1 -0
- package/dist/thread/writeable.d.ts +41 -0
- package/dist/thread/writeable.d.ts.map +1 -0
- package/dist/thread.d.ts +6 -0
- package/dist/thread.d.ts.map +1 -0
- package/dist/thread.js +54 -0
- package/dist/thread.js.map +1 -0
- package/dist/types/typescript-utils.d.ts +34 -0
- package/dist/types/typescript-utils.d.ts.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +26 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/debug-name.d.ts +13 -0
- package/dist/utils/debug-name.d.ts.map +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +9 -0
- package/dist/utils.js.map +1 -0
- package/package.json +110 -0
- package/src/applog/applog-helpers.ts +150 -0
- package/src/applog/applog-utils.ts +398 -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/basic.ts +1061 -0
- package/src/query/divergences.ts +50 -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 +536 -0
- package/src/query/situations.ts +261 -0
- package/src/query/subscribable.test.ts +245 -0
- package/src/query/subscribable.ts +225 -0
- package/src/query/types.ts +155 -0
- package/src/query.ts +7 -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 +175 -0
- package/src/thread/basic.ts +209 -0
- package/src/thread/filters.ts +234 -0
- package/src/thread/mapped.ts +166 -0
- package/src/thread/utils.ts +146 -0
- package/src/thread/writeable.ts +163 -0
- package/src/thread.ts +5 -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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipfs-utils.d.ts","sourceRoot":"","sources":["../../src/ipfs/ipfs-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAGzC,OAAO,EAAE,GAAG,EAAoB,MAAM,cAAc,CAAA;AAGpD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAqB,MAAM,0BAA0B,CAAA;AAS1I,eAAO,MAAM,mBAAmB,MAAO,CAAA;AAEvC,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,GAAE,MAAM,EAAY;;;;SAoBnD,MAAM;;EAClC;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,4BAErD;AACD,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAE1G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,4BAOtD;AACD,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,UAAU,EAAE,GAAG,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAQvF;AAED,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,GAAG,8DAQxD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS;;;;EAsB/C;AACD,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,WAEpC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,UAMnC;AACD,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAEL,UAAU,CACzC;AACD,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,GAAG,GAAG,SAAS,gEAMnE;AACD,wBAAgB,YAAY,CAAC,YAAY,EAAE,GAAG,GAAG,SAAS,EAAE,YAAY,EAAE,GAAG,GAAG,SAAS,WAMxF;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,SAAS,WAG9F"}
|
package/dist/ipfs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../src/ipfs.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA"}
|
package/dist/ipfs.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fetchSnapshotChainUntil
|
|
3
|
+
} from "./chunk-6MQKRL6W.js";
|
|
4
|
+
import {
|
|
5
|
+
carFromBlob,
|
|
6
|
+
collectDagBlocks,
|
|
7
|
+
decodePubFromBlocks,
|
|
8
|
+
decodePubFromCar,
|
|
9
|
+
getBlocksOfCar,
|
|
10
|
+
getDecodedBlock,
|
|
11
|
+
makeCarBlob,
|
|
12
|
+
makeCarOut,
|
|
13
|
+
streamReaderToIterable
|
|
14
|
+
} from "./chunk-O43W7UW6.js";
|
|
15
|
+
import "./chunk-YDAKBU6Q.js";
|
|
16
|
+
import "./chunk-ZXCJRYD7.js";
|
|
17
|
+
import {
|
|
18
|
+
MULTICODEC_IPNS_KEY,
|
|
19
|
+
areCidsEqual,
|
|
20
|
+
cidToString,
|
|
21
|
+
containsCid,
|
|
22
|
+
encodeApplog,
|
|
23
|
+
encodeApplogAndGetCid,
|
|
24
|
+
encodeBlock,
|
|
25
|
+
encodeBlockOriginal,
|
|
26
|
+
ensureValidCIDinstance,
|
|
27
|
+
getCidSync,
|
|
28
|
+
isIpnsKeyCid,
|
|
29
|
+
prepareForPub,
|
|
30
|
+
toIpnsString,
|
|
31
|
+
tryParseCID
|
|
32
|
+
} from "./chunk-XIQSYEV3.js";
|
|
33
|
+
import "./chunk-ZAADLBSB.js";
|
|
34
|
+
export {
|
|
35
|
+
MULTICODEC_IPNS_KEY,
|
|
36
|
+
areCidsEqual,
|
|
37
|
+
carFromBlob,
|
|
38
|
+
cidToString,
|
|
39
|
+
collectDagBlocks,
|
|
40
|
+
containsCid,
|
|
41
|
+
decodePubFromBlocks,
|
|
42
|
+
decodePubFromCar,
|
|
43
|
+
encodeApplog,
|
|
44
|
+
encodeApplogAndGetCid,
|
|
45
|
+
encodeBlock,
|
|
46
|
+
encodeBlockOriginal,
|
|
47
|
+
ensureValidCIDinstance,
|
|
48
|
+
fetchSnapshotChainUntil,
|
|
49
|
+
getBlocksOfCar,
|
|
50
|
+
getCidSync,
|
|
51
|
+
getDecodedBlock,
|
|
52
|
+
isIpnsKeyCid,
|
|
53
|
+
makeCarBlob,
|
|
54
|
+
makeCarOut,
|
|
55
|
+
prepareForPub,
|
|
56
|
+
streamReaderToIterable,
|
|
57
|
+
toIpnsString,
|
|
58
|
+
tryParseCID
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=ipfs.js.map
|
package/dist/ipfs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { unmarshalIPNSRecord } from 'ipns';
|
|
2
|
+
import type { CID } from 'multiformats/cid';
|
|
3
|
+
export interface SignedIPNSRecord {
|
|
4
|
+
recordBytes: Uint8Array;
|
|
5
|
+
ipnsName: string;
|
|
6
|
+
value: string;
|
|
7
|
+
sequence: bigint;
|
|
8
|
+
}
|
|
9
|
+
/** Derive IPNS name string (k51...) from Ed25519 private key bytes */
|
|
10
|
+
export declare function ipnsNameFromPrivateKey(privKeyBytes: Uint8Array): string;
|
|
11
|
+
/**
|
|
12
|
+
* Create a signed IPNS record (protobuf wire format).
|
|
13
|
+
* Same bytes can be published to any naming service.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSignedIPNSRecord(privateKey: Uint8Array, cid: CID, sequence: bigint, lifetimeMs?: number): Promise<SignedIPNSRecord>;
|
|
16
|
+
export { unmarshalIPNSRecord };
|
|
17
|
+
/** A target that can receive a signed IPNS record */
|
|
18
|
+
export interface IPNSPublishTarget {
|
|
19
|
+
name: string;
|
|
20
|
+
publish(ipnsName: string, recordBytes: Uint8Array): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolve current IPNS sequence number from a naming service.
|
|
24
|
+
* Returns null if the name was never published (404).
|
|
25
|
+
* Throws on network/server errors.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveIPNSSequence(nameServiceUrl: string, ipnsName: string): Promise<bigint | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Create a signed IPNS record and publish to all configured targets.
|
|
30
|
+
* Resolves sequence from sequenceServiceUrl, creates record once, fans out.
|
|
31
|
+
* Throws if ALL targets fail; warns on partial failure.
|
|
32
|
+
*/
|
|
33
|
+
export declare function publishIPNSRecord(privateKey: Uint8Array, cid: CID, targets: IPNSPublishTarget[], sequenceServiceUrl?: string): Promise<SignedIPNSRecord>;
|
|
34
|
+
//# sourceMappingURL=ipns-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipns-record.d.ts","sourceRoot":"","sources":["../../src/ipns/ipns-record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAI/E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,MAAM,WAAW,gBAAgB;IAChC,WAAW,EAAE,UAAU,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,UAAU,GAAG,MAAM,CAGvE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC3C,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,UAAU,SAA4B,GACpC,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B,qDAAqD;AACrD,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACxC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BxB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACtC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,iBAAiB,EAAE,EAC5B,kBAAkB,SAA8B,GAC9C,OAAO,CAAC,gBAAgB,CAAC,CAuB3B"}
|
package/dist/ipns.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipns.d.ts","sourceRoot":"","sources":["../src/ipns.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
package/dist/ipns.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// src/ipns/ipns-record.ts
|
|
2
|
+
import { createIPNSRecord, marshalIPNSRecord, unmarshalIPNSRecord } from "ipns";
|
|
3
|
+
import { privateKeyFromRaw } from "@libp2p/crypto/keys";
|
|
4
|
+
import { base36 } from "multiformats/bases/base36";
|
|
5
|
+
import { base64pad } from "multiformats/bases/base64";
|
|
6
|
+
function ipnsNameFromPrivateKey(privKeyBytes) {
|
|
7
|
+
const privKey = privateKeyFromRaw(privKeyBytes);
|
|
8
|
+
return privKey.publicKey.toCID().toString(base36);
|
|
9
|
+
}
|
|
10
|
+
async function createSignedIPNSRecord(privateKey, cid, sequence, lifetimeMs = 365 * 24 * 60 * 60 * 1e3) {
|
|
11
|
+
const privKey = privateKeyFromRaw(privateKey);
|
|
12
|
+
const value = `/ipfs/${cid.toV1()}`;
|
|
13
|
+
const record = await createIPNSRecord(privKey, value, sequence, lifetimeMs);
|
|
14
|
+
const recordBytes = marshalIPNSRecord(record);
|
|
15
|
+
const ipnsName = privKey.publicKey.toCID().toString(base36);
|
|
16
|
+
return { recordBytes, ipnsName, value, sequence };
|
|
17
|
+
}
|
|
18
|
+
async function resolveIPNSSequence(nameServiceUrl, ipnsName) {
|
|
19
|
+
const url = `${nameServiceUrl}/name/${ipnsName}`;
|
|
20
|
+
let response;
|
|
21
|
+
try {
|
|
22
|
+
response = await fetch(url);
|
|
23
|
+
} catch (err) {
|
|
24
|
+
throw new Error(`Network error resolving IPNS ${ipnsName}: ${err}`);
|
|
25
|
+
}
|
|
26
|
+
if (response.status === 404) return null;
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
throw new Error(`HTTP ${response.status} resolving IPNS ${ipnsName}: ${response.statusText}`);
|
|
29
|
+
}
|
|
30
|
+
const { record, value } = await response.json();
|
|
31
|
+
if (!record && !value) return null;
|
|
32
|
+
if (record) {
|
|
33
|
+
const bytes = base64pad.baseDecode(record);
|
|
34
|
+
const entry = unmarshalIPNSRecord(bytes);
|
|
35
|
+
return entry.sequence;
|
|
36
|
+
}
|
|
37
|
+
return 0n;
|
|
38
|
+
}
|
|
39
|
+
async function publishIPNSRecord(privateKey, cid, targets, sequenceServiceUrl = "https://name.web3.storage") {
|
|
40
|
+
const ipnsName = ipnsNameFromPrivateKey(privateKey);
|
|
41
|
+
const currentSeq = await resolveIPNSSequence(sequenceServiceUrl, ipnsName);
|
|
42
|
+
const sequence = currentSeq != null ? currentSeq + 1n : 0n;
|
|
43
|
+
const signed = await createSignedIPNSRecord(privateKey, cid, sequence);
|
|
44
|
+
const results = await Promise.allSettled(
|
|
45
|
+
targets.map((t) => t.publish(ipnsName, signed.recordBytes))
|
|
46
|
+
);
|
|
47
|
+
const failures = results.map((r, i) => ({ r, name: targets[i].name })).filter(({ r }) => r.status === "rejected");
|
|
48
|
+
if (failures.length > 0 && failures.length < targets.length) {
|
|
49
|
+
for (const { r, name } of failures) {
|
|
50
|
+
console.warn(`[publishIPNSRecord] target '${name}' failed:`, r.reason);
|
|
51
|
+
}
|
|
52
|
+
} else if (failures.length === targets.length) {
|
|
53
|
+
throw new Error(`All IPNS publish targets failed: ${failures.map(({ r, name }) => `${name}: ${r.reason}`).join("; ")}`);
|
|
54
|
+
}
|
|
55
|
+
return signed;
|
|
56
|
+
}
|
|
57
|
+
export {
|
|
58
|
+
createSignedIPNSRecord,
|
|
59
|
+
ipnsNameFromPrivateKey,
|
|
60
|
+
publishIPNSRecord,
|
|
61
|
+
resolveIPNSSequence,
|
|
62
|
+
unmarshalIPNSRecord
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=ipns.js.map
|
package/dist/ipns.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ipns/ipns-record.ts"],"sourcesContent":["import { createIPNSRecord, marshalIPNSRecord, unmarshalIPNSRecord } from 'ipns'\nimport { privateKeyFromRaw } from '@libp2p/crypto/keys'\nimport { base36 } from 'multiformats/bases/base36'\nimport { base64pad } from 'multiformats/bases/base64'\nimport type { CID } from 'multiformats/cid'\n\nexport interface SignedIPNSRecord {\n\trecordBytes: Uint8Array // marshalled protobuf, signed — the wire format\n\tipnsName: string // k51... string\n\tvalue: string // /ipfs/<cid>\n\tsequence: bigint\n}\n\n/** Derive IPNS name string (k51...) from Ed25519 private key bytes */\nexport function ipnsNameFromPrivateKey(privKeyBytes: Uint8Array): string {\n\tconst privKey = privateKeyFromRaw(privKeyBytes)\n\treturn privKey.publicKey.toCID().toString(base36)\n}\n\n/**\n * Create a signed IPNS record (protobuf wire format).\n * Same bytes can be published to any naming service.\n */\nexport async function createSignedIPNSRecord(\n\tprivateKey: Uint8Array,\n\tcid: CID,\n\tsequence: bigint,\n\tlifetimeMs = 365 * 24 * 60 * 60 * 1000, // 1 year\n): Promise<SignedIPNSRecord> {\n\tconst privKey = privateKeyFromRaw(privateKey)\n\tconst value = `/ipfs/${cid.toV1()}`\n\tconst record = await createIPNSRecord(privKey, value, sequence, lifetimeMs)\n\tconst recordBytes = marshalIPNSRecord(record)\n\tconst ipnsName = privKey.publicKey.toCID().toString(base36)\n\treturn { recordBytes, ipnsName, value, sequence }\n}\n\nexport { unmarshalIPNSRecord }\n\n/** A target that can receive a signed IPNS record */\nexport interface IPNSPublishTarget {\n\tname: string\n\tpublish(ipnsName: string, recordBytes: Uint8Array): Promise<void>\n}\n\n/**\n * Resolve current IPNS sequence number from a naming service.\n * Returns null if the name was never published (404).\n * Throws on network/server errors.\n */\nexport async function resolveIPNSSequence(\n\tnameServiceUrl: string,\n\tipnsName: string,\n): Promise<bigint | null> {\n\tconst url = `${nameServiceUrl}/name/${ipnsName}`\n\tlet response: Response\n\ttry {\n\t\tresponse = await fetch(url)\n\t} catch (err) {\n\t\tthrow new Error(`Network error resolving IPNS ${ipnsName}: ${err}`)\n\t}\n\n\tif (response.status === 404) return null\n\tif (!response.ok) {\n\t\tthrow new Error(`HTTP ${response.status} resolving IPNS ${ipnsName}: ${response.statusText}`)\n\t}\n\n\tconst { record, value } = await response.json()\n\tif (!record && !value) return null // never published\n\n\t// If raw record is available, unmarshal to get sequence\n\tif (record) {\n\t\tconst bytes = base64pad.baseDecode(record)\n\t\tconst entry = unmarshalIPNSRecord(bytes)\n\t\treturn entry.sequence\n\t}\n\n\t// Some servers return value but not raw record — can't get sequence\n\treturn 0n\n}\n\n/**\n * Create a signed IPNS record and publish to all configured targets.\n * Resolves sequence from sequenceServiceUrl, creates record once, fans out.\n * Throws if ALL targets fail; warns on partial failure.\n */\nexport async function publishIPNSRecord(\n\tprivateKey: Uint8Array,\n\tcid: CID,\n\ttargets: IPNSPublishTarget[],\n\tsequenceServiceUrl = 'https://name.web3.storage',\n): Promise<SignedIPNSRecord> {\n\tconst ipnsName = ipnsNameFromPrivateKey(privateKey)\n\tconst currentSeq = await resolveIPNSSequence(sequenceServiceUrl, ipnsName)\n\tconst sequence = currentSeq != null ? currentSeq + 1n : 0n\n\tconst signed = await createSignedIPNSRecord(privateKey, cid, sequence)\n\n\tconst results = await Promise.allSettled(\n\t\ttargets.map(t => t.publish(ipnsName, signed.recordBytes))\n\t)\n\tconst failures = results\n\t\t.map((r, i) => ({ r, name: targets[i].name }))\n\t\t.filter(({ r }) => r.status === 'rejected') as { r: PromiseRejectedResult; name: string }[]\n\n\tif (failures.length > 0 && failures.length < targets.length) {\n\t\t// Partial failure — log but don't throw\n\t\tfor (const { r, name } of failures) {\n\t\t\tconsole.warn(`[publishIPNSRecord] target '${name}' failed:`, r.reason)\n\t\t}\n\t} else if (failures.length === targets.length) {\n\t\tthrow new Error(`All IPNS publish targets failed: ${failures.map(({ r, name }) => `${name}: ${r.reason}`).join('; ')}`)\n\t}\n\n\treturn signed\n}\n"],"mappings":";AAAA,SAAS,kBAAkB,mBAAmB,2BAA2B;AACzE,SAAS,yBAAyB;AAClC,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAWnB,SAAS,uBAAuB,cAAkC;AACxE,QAAM,UAAU,kBAAkB,YAAY;AAC9C,SAAO,QAAQ,UAAU,MAAM,EAAE,SAAS,MAAM;AACjD;AAMA,eAAsB,uBACrB,YACA,KACA,UACA,aAAa,MAAM,KAAK,KAAK,KAAK,KACN;AAC5B,QAAM,UAAU,kBAAkB,UAAU;AAC5C,QAAM,QAAQ,SAAS,IAAI,KAAK,CAAC;AACjC,QAAM,SAAS,MAAM,iBAAiB,SAAS,OAAO,UAAU,UAAU;AAC1E,QAAM,cAAc,kBAAkB,MAAM;AAC5C,QAAM,WAAW,QAAQ,UAAU,MAAM,EAAE,SAAS,MAAM;AAC1D,SAAO,EAAE,aAAa,UAAU,OAAO,SAAS;AACjD;AAeA,eAAsB,oBACrB,gBACA,UACyB;AACzB,QAAM,MAAM,GAAG,cAAc,SAAS,QAAQ;AAC9C,MAAI;AACJ,MAAI;AACH,eAAW,MAAM,MAAM,GAAG;AAAA,EAC3B,SAAS,KAAK;AACb,UAAM,IAAI,MAAM,gCAAgC,QAAQ,KAAK,GAAG,EAAE;AAAA,EACnE;AAEA,MAAI,SAAS,WAAW,IAAK,QAAO;AACpC,MAAI,CAAC,SAAS,IAAI;AACjB,UAAM,IAAI,MAAM,QAAQ,SAAS,MAAM,mBAAmB,QAAQ,KAAK,SAAS,UAAU,EAAE;AAAA,EAC7F;AAEA,QAAM,EAAE,QAAQ,MAAM,IAAI,MAAM,SAAS,KAAK;AAC9C,MAAI,CAAC,UAAU,CAAC,MAAO,QAAO;AAG9B,MAAI,QAAQ;AACX,UAAM,QAAQ,UAAU,WAAW,MAAM;AACzC,UAAM,QAAQ,oBAAoB,KAAK;AACvC,WAAO,MAAM;AAAA,EACd;AAGA,SAAO;AACR;AAOA,eAAsB,kBACrB,YACA,KACA,SACA,qBAAqB,6BACO;AAC5B,QAAM,WAAW,uBAAuB,UAAU;AAClD,QAAM,aAAa,MAAM,oBAAoB,oBAAoB,QAAQ;AACzE,QAAM,WAAW,cAAc,OAAO,aAAa,KAAK;AACxD,QAAM,SAAS,MAAM,uBAAuB,YAAY,KAAK,QAAQ;AAErE,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC7B,QAAQ,IAAI,OAAK,EAAE,QAAQ,UAAU,OAAO,WAAW,CAAC;AAAA,EACzD;AACA,QAAM,WAAW,QACf,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,EAC5C,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,UAAU;AAE3C,MAAI,SAAS,SAAS,KAAK,SAAS,SAAS,QAAQ,QAAQ;AAE5D,eAAW,EAAE,GAAG,KAAK,KAAK,UAAU;AACnC,cAAQ,KAAK,+BAA+B,IAAI,aAAa,EAAE,MAAM;AAAA,IACtE;AAAA,EACD,WAAW,SAAS,WAAW,QAAQ,QAAQ;AAC9C,UAAM,IAAI,MAAM,oCAAoC,SAAS,IAAI,CAAC,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,EACvH;AAEA,SAAO;AACR;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CarReader } from '@ipld/car';
|
|
2
|
+
import { CID } from 'multiformats';
|
|
3
|
+
export interface StorageConnector {
|
|
4
|
+
storeCar(car: Blob, signal?: AbortSignal): Promise<CID>;
|
|
5
|
+
}
|
|
6
|
+
export interface RetrievalConnector {
|
|
7
|
+
retrieveCar(cid: CID): Promise<CarReader>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/pubsub/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAElC,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;CACvD;AACD,MAAM,WAAW,kBAAkB;IAClC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;CACzC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CID } from 'multiformats';
|
|
2
|
+
import { EntityID } from '../applog/datom-types.ts';
|
|
3
|
+
import { Thread } from '../thread.ts';
|
|
4
|
+
export type PubPullData = {
|
|
5
|
+
cid: CID;
|
|
6
|
+
thread: Thread;
|
|
7
|
+
};
|
|
8
|
+
export declare function integratePub({ targetThread, agentHash, subID, pubData }: {
|
|
9
|
+
targetThread: Thread;
|
|
10
|
+
agentHash: EntityID;
|
|
11
|
+
pubData: PubPullData;
|
|
12
|
+
subID?: EntityID;
|
|
13
|
+
}): import("../applog.ts").Applog[];
|
|
14
|
+
//# sourceMappingURL=pub-pull.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pub-pull.d.ts","sourceRoot":"","sources":["../../src/pubsub/pub-pull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAIrC,MAAM,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,YAAY,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACzE,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,CAAA;IACnB,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,CAAC,EAAE,QAAQ,CAAA;CAChB,mCAYA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { CID } from 'multiformats/cid';
|
|
2
|
+
import { AgentHash, AgentID } from '../applog/datom-types.ts';
|
|
3
|
+
import { Tagged } from '../types.ts';
|
|
4
|
+
import { UCANCapMap } from './ucan.ts';
|
|
5
|
+
type AgentString = Tagged<string, 'AgentString'>;
|
|
6
|
+
type DIDString = Tagged<string, 'DID'>;
|
|
7
|
+
export type { AgentHash, AgentString, DIDString };
|
|
8
|
+
export interface AppAgent {
|
|
9
|
+
ag: AgentHash;
|
|
10
|
+
agentString: AgentString;
|
|
11
|
+
did: DIDString;
|
|
12
|
+
sign?(data: Uint8Array): Promise<Uint8Array>;
|
|
13
|
+
ucan?: UCANCapMap;
|
|
14
|
+
}
|
|
15
|
+
export interface AppAgentForWorker extends AppAgent {
|
|
16
|
+
signerSecret?: Uint8Array;
|
|
17
|
+
}
|
|
18
|
+
export interface SnapRootBlock {
|
|
19
|
+
applogs: CID;
|
|
20
|
+
applogsSignature: Uint8Array;
|
|
21
|
+
info: CID;
|
|
22
|
+
infoSignature: Uint8Array;
|
|
23
|
+
prev?: CID;
|
|
24
|
+
prevCounter?: number | null;
|
|
25
|
+
}
|
|
26
|
+
export interface SnapBlockLogs {
|
|
27
|
+
logs: CID[];
|
|
28
|
+
}
|
|
29
|
+
export interface SnapBlockChunks {
|
|
30
|
+
chunks: CID[];
|
|
31
|
+
}
|
|
32
|
+
export type SnapBlockLogsOrChunks = SnapBlockLogs | SnapBlockChunks;
|
|
33
|
+
export interface IShare {
|
|
34
|
+
id?: string;
|
|
35
|
+
createdAt: string;
|
|
36
|
+
name: string;
|
|
37
|
+
isDeleted?: boolean;
|
|
38
|
+
purgeBeforePush?: boolean;
|
|
39
|
+
pk: Uint8Array;
|
|
40
|
+
autopush: boolean;
|
|
41
|
+
lastPush: string | null;
|
|
42
|
+
lastCID?: string;
|
|
43
|
+
latestLogTs?: string;
|
|
44
|
+
pubCounter?: number;
|
|
45
|
+
publishedBy: string;
|
|
46
|
+
selectors?: string[];
|
|
47
|
+
encryptedFor?: string | null;
|
|
48
|
+
encryptedWith?: CryptoKey | null;
|
|
49
|
+
sharedKey?: CryptoKey | null;
|
|
50
|
+
sharedAgents?: AgentID[] | null;
|
|
51
|
+
sharedKeyMap?: Map<AgentID, string> | null;
|
|
52
|
+
}
|
|
53
|
+
export interface ISubscription {
|
|
54
|
+
id: string;
|
|
55
|
+
createdAt: string;
|
|
56
|
+
name: string;
|
|
57
|
+
isDeleted: boolean;
|
|
58
|
+
lastPull?: string | null;
|
|
59
|
+
lastPullAttempt?: string | null;
|
|
60
|
+
autopull: boolean;
|
|
61
|
+
realtime?: boolean;
|
|
62
|
+
lastCID?: string;
|
|
63
|
+
lastApplogCID?: string;
|
|
64
|
+
publishedBy?: string;
|
|
65
|
+
encryptedFor?: string | undefined;
|
|
66
|
+
encryptedWith?: CryptoKey | undefined;
|
|
67
|
+
}
|
|
68
|
+
export declare function isShare(obj: any): obj is IShare;
|
|
69
|
+
export declare function isSubscription(obj: any): obj is ISubscription;
|
|
70
|
+
export type TShareSub = IShare | ISubscription;
|
|
71
|
+
export declare function agentToShortHash(agentString: string): string;
|
|
72
|
+
//# sourceMappingURL=pubsub-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubsub-types.d.ts","sourceRoot":"","sources":["../../src/pubsub/pubsub-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CID } from 'multiformats/cid';
|
|
2
|
+
import type { Applog, ApplogArrayMaybeEncryptedRO, ApplogArrayNoCIDMaybeEncryptedRO } from '../applog/datom-types.ts';
|
|
3
|
+
import { BlockStoreish } from '../ipfs/car.ts';
|
|
4
|
+
import { ApplogsOrThread, Thread } from '../thread.ts';
|
|
5
|
+
import type { AppAgent, IShare, SnapBlockChunks, SnapBlockLogsOrChunks } from './pubsub-types.ts';
|
|
6
|
+
export declare function prepareSnapshotForPush(agent: AppAgent, appThread: Thread, threadToPublish: ApplogsOrThread, share: IShare, prevSnapCID: CID | null, prevCounter: number | null): Promise<{
|
|
7
|
+
cid: CID<any, 297, 18, 1>;
|
|
8
|
+
blob: Blob;
|
|
9
|
+
blocks: import("multiformats").BlockView<any, 297, 18, 1>[];
|
|
10
|
+
infoLogCids: CID<any, 297, 18, 1>[];
|
|
11
|
+
applogCids: CID<any, 297, 18, 1>[];
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* @param applogs Encrypted or plain applogs
|
|
15
|
+
* @returns Car file
|
|
16
|
+
*/
|
|
17
|
+
export declare function encodeSnapshotAsCar(agent: AppAgent, applogs: ApplogArrayNoCIDMaybeEncryptedRO, infoLogs: readonly Applog[], prevSnapCID: CID | null, prevCounter: number | null): Promise<{
|
|
18
|
+
cid: CID<any, 297, 18, 1>;
|
|
19
|
+
blob: Blob;
|
|
20
|
+
blocks: import("multiformats").BlockView<any, 297, 18, 1>[];
|
|
21
|
+
infoLogCids: CID<any, 297, 18, 1>[];
|
|
22
|
+
applogCids: CID<any, 297, 18, 1>[];
|
|
23
|
+
}>;
|
|
24
|
+
/** (i) IPFS has a block size limit of 1MB - which is about 15K CIDs */
|
|
25
|
+
export declare function chunkApplogs(applogCids: CID<unknown, 297, 18, 1>[], size?: number): Promise<{
|
|
26
|
+
rootCID: any;
|
|
27
|
+
blocks: any[];
|
|
28
|
+
chunks?: undefined;
|
|
29
|
+
} | {
|
|
30
|
+
rootCID: CID<any, 297, 18, 1>;
|
|
31
|
+
blocks: any[];
|
|
32
|
+
chunks: any[];
|
|
33
|
+
}>;
|
|
34
|
+
export declare function unchunkApplogsBlock(block: SnapBlockLogsOrChunks, blockStore: BlockStoreish): Promise<CID[]>;
|
|
35
|
+
export declare function isSnapBlockChunks(block: SnapBlockLogsOrChunks): block is SnapBlockChunks;
|
|
36
|
+
/**
|
|
37
|
+
* @param applogs Encrypted or plain applogs
|
|
38
|
+
* @returns Car file
|
|
39
|
+
*/
|
|
40
|
+
export declare function encodeSnapshotApplogsAsCar(applogs: ApplogArrayMaybeEncryptedRO): Promise<Blob>;
|
|
41
|
+
//# sourceMappingURL=snap-push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap-push.d.ts","sourceRoot":"","sources":["../../src/pubsub/snap-push.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,KAAK,EACX,MAAM,EAEN,2BAA2B,EAC3B,gCAAgC,EAIhC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,aAAa,EAA4C,MAAM,gBAAgB,CAAA;AAGxF,OAAO,EAAE,eAAe,EAAqB,MAAM,EAAE,MAAM,cAAc,CAAA;AAGzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAiB,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAehH,wBAAsB,sBAAsB,CAC3C,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,GAAG,GAAG,IAAI,EACvB,WAAW,EAAE,MAAM,GAAG,IAAI;;;;;;GA+H1B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACxC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,gCAAgC,EACzC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,GAAG,GAAG,IAAI,EACvB,WAAW,EAAE,MAAM,GAAG,IAAI;;;;;;GAiC1B;AAED,uEAAuE;AACvE,wBAAsB,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,SAAQ;;;;;;;;GAatF;AACD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAYjH;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,GAAG,KAAK,IAAI,eAAe,CAExF;AACD;;;GAGG;AACH,wBAAsB,0BAA0B,CAC/C,OAAO,EAAE,2BAA2B,iBAUpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ucan-example.d.ts","sourceRoot":"","sources":["../../src/pubsub/ucan-example.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAE/D,eAAO,MAAM,gBAAgB,UAE3B,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DelegationOptions, DelegationPayload, StandardSchemaV1 } from 'iso-ucan/types';
|
|
2
|
+
import { Delegation } from 'iso-ucan/delegation';
|
|
3
|
+
import { AgentID } from '../applog/datom-types.ts';
|
|
4
|
+
import { Resolver } from 'iso-signatures/verifiers/resolver.js';
|
|
5
|
+
export declare const verifierResolver: Resolver;
|
|
6
|
+
export declare enum KnownCaps {
|
|
7
|
+
publish = "WovinPublishCap",
|
|
8
|
+
delegate = "cap_delegate"
|
|
9
|
+
}
|
|
10
|
+
type DelegationPayloadSchema = StandardSchemaV1<unknown, DelegationPayload<unknown>>;
|
|
11
|
+
export type DelegationOptionsStandard = DelegationOptions<DelegationPayloadSchema>;
|
|
12
|
+
export type UCANCapMap = Partial<Record<KnownCaps, DelegationOptionsStandard[]>>;
|
|
13
|
+
export type AgentCapMap = Record<AgentID, UCANCapMap>;
|
|
14
|
+
export declare const createDelegation: (delegationPayload: DelegationOptionsStandard) => Promise<Delegation>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=ucan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ucan.d.ts","sourceRoot":"","sources":["../../src/pubsub/ucan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAe,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACzG,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAIlD,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAE/D,eAAO,MAAM,gBAAgB,UAE3B,CAAA;AA+BF,oBAAY,SAAS;IACpB,OAAO,oBAAoB;IAC3B,QAAQ,iBAAiB;CACzB;AAED,KAAK,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;AACpF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,CAAA;AAClF,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AAErD,eAAO,MAAM,gBAAgB,GAAI,mBAAkB,yBAAyB,wBAG3E,CAAA"}
|
package/dist/pubsub.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../src/pubsub.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA"}
|
package/dist/pubsub.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
agentToShortHash,
|
|
3
|
+
integratePub,
|
|
4
|
+
isShare,
|
|
5
|
+
isSubscription
|
|
6
|
+
} from "./chunk-7MW34UEO.js";
|
|
7
|
+
import {
|
|
8
|
+
chunkApplogs,
|
|
9
|
+
encodeSnapshotApplogsAsCar,
|
|
10
|
+
encodeSnapshotAsCar,
|
|
11
|
+
isSnapBlockChunks,
|
|
12
|
+
prepareSnapshotForPush,
|
|
13
|
+
unchunkApplogsBlock
|
|
14
|
+
} from "./chunk-O43W7UW6.js";
|
|
15
|
+
import "./chunk-YDAKBU6Q.js";
|
|
16
|
+
import "./chunk-ZXCJRYD7.js";
|
|
17
|
+
import "./chunk-XIQSYEV3.js";
|
|
18
|
+
import "./chunk-ZAADLBSB.js";
|
|
19
|
+
export {
|
|
20
|
+
agentToShortHash,
|
|
21
|
+
chunkApplogs,
|
|
22
|
+
encodeSnapshotApplogsAsCar,
|
|
23
|
+
encodeSnapshotAsCar,
|
|
24
|
+
integratePub,
|
|
25
|
+
isShare,
|
|
26
|
+
isSnapBlockChunks,
|
|
27
|
+
isSubscription,
|
|
28
|
+
prepareSnapshotForPush,
|
|
29
|
+
unchunkApplogsBlock
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=pubsub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
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';
|
|
7
|
+
/**
|
|
8
|
+
* Keep only the latest logs for each en&at (= last write wins)
|
|
9
|
+
*/
|
|
10
|
+
export declare const lastWriteWins: (thread: Thread, { inverseToOnlyReturnFirstLogs, tolerateAlreadyFiltered }?: {
|
|
11
|
+
inverseToOnlyReturnFirstLogs?: boolean;
|
|
12
|
+
tolerateAlreadyFiltered?: boolean;
|
|
13
|
+
}) => ThreadOnlyCurrent;
|
|
14
|
+
/**
|
|
15
|
+
* Remove all applogs for entities that have an applog: { at: `isDeleted`, val: true }
|
|
16
|
+
* ! WARNING: If not based on lastWriteWins, it will not respect un-deletions yet (isDeleted: false)
|
|
17
|
+
*/
|
|
18
|
+
export declare const withoutDeleted: (thread: Thread) => MappedThread;
|
|
19
|
+
/**
|
|
20
|
+
* One-off query — returns a plain snapshot. No subscriptions, no stale-data risk.
|
|
21
|
+
*/
|
|
22
|
+
export declare const query: (threadOrLogs: Thread | Applog[], patternOrPatterns: DatalogQueryPattern | DatalogQueryPattern[], startVariables?: SearchContext, opts?: {
|
|
23
|
+
debug?: boolean;
|
|
24
|
+
}) => QueryResult;
|
|
25
|
+
/**
|
|
26
|
+
* One-off query step — pure filtering via makeFilter, no subscriptions.
|
|
27
|
+
*/
|
|
28
|
+
export declare function queryStepOnce(thread: Thread, prevNodes: readonly QueryNode[] | null, pattern: DatalogQueryPattern, opts?: {
|
|
29
|
+
debug?: boolean;
|
|
30
|
+
}): QueryResult;
|
|
31
|
+
/**
|
|
32
|
+
* Live query — eagerly activated, always up-to-date.
|
|
33
|
+
* Returns LiveQueryResult with subscribe + dispose.
|
|
34
|
+
*/
|
|
35
|
+
export declare const liveQuery: (threadOrLogs: Thread | Applog[], patternOrPatterns: DatalogQueryPattern | DatalogQueryPattern[], startVariables?: SearchContext, opts?: {
|
|
36
|
+
debug?: boolean;
|
|
37
|
+
}) => LiveQueryResult;
|
|
38
|
+
export declare const liveQueryStep: (thread: Thread, nodeSet: LiveQueryResult | null, pattern: DatalogQueryPattern, opts?: {
|
|
39
|
+
debug?: boolean;
|
|
40
|
+
}) => LiveQueryResult;
|
|
41
|
+
export declare const queryNot: (thread: Thread, startNodes: QueryResult, patternOrPatterns: DatalogQueryPattern | DatalogQueryPattern[], opts?: {
|
|
42
|
+
debug?: boolean;
|
|
43
|
+
}) => QueryResult;
|
|
44
|
+
/** Live variant: queryNot with incremental updates.
|
|
45
|
+
* - Thread additions: O(new_applogs × included_nodes) — only checks new applogs
|
|
46
|
+
* - Thread removals/resets: full recompute (rare for append-mostly logs)
|
|
47
|
+
* - Upstream node additions: O(new_nodes × applogs)
|
|
48
|
+
* - Upstream node removals: removed from output
|
|
49
|
+
*/
|
|
50
|
+
export declare const liveQueryNot: (thread: Thread, upstream: LiveQueryResult, patternOrPatterns: DatalogQueryPattern | DatalogQueryPattern[], opts?: {
|
|
51
|
+
debug?: boolean;
|
|
52
|
+
}) => LiveQueryResult;
|
|
53
|
+
/** One-off: filter thread by pattern, map to values. Returns plain array. */
|
|
54
|
+
export declare const filterAndMap: <R>(thread: Thread, pattern: DatalogQueryPattern, mapper: (keyof Applog) | (Partial<{ [key in keyof Applog]: string; }>) | ((applog: Applog) => R)) => R[];
|
|
55
|
+
/** Live variant: returns SubscribableArray that updates when thread changes. */
|
|
56
|
+
export declare const liveFilterAndMap: <R>(thread: Thread, pattern: DatalogQueryPattern, mapper: (keyof Applog) | (Partial<{ [key in keyof Applog]: string; }>) | ((applog: Applog) => R)) => SubscribableArrayImpl<R>;
|
|
57
|
+
/** One-off: query and map results. Returns plain array. */
|
|
58
|
+
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[];
|
|
59
|
+
/** Live variant: query and map results, returns SubscribableArray that updates reactively. */
|
|
60
|
+
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>;
|
|
61
|
+
/** One-off: query entity attributes. Returns Record or null. Requires current-state thread (LWW). */
|
|
62
|
+
export declare const queryEntity: (thread: Thread, name: string, entityID: EntityID, attributes: readonly string[]) => {
|
|
63
|
+
[k: string]: ApplogValue;
|
|
64
|
+
};
|
|
65
|
+
/** Live variant: returns Subscribable that updates when entity attributes change. Requires current-state thread (LWW). */
|
|
66
|
+
export declare const liveQueryEntity: (thread: Thread, name: string, entityID: EntityID, attributes: readonly string[]) => SubscribableImpl<Record<string, ApplogValue>>;
|
|
67
|
+
/** Live single-attribute query. Requires current-state thread (LWW). Returns Subscribable<T | null>. */
|
|
68
|
+
export declare const liveEntityAt: <T extends ApplogValue>(thread: Thread, entityID: EntityID, at: string) => SubscribableImpl<T>;
|
|
69
|
+
export declare const agentsOfThread: (thread: Thread) => Map<string, number>;
|
|
70
|
+
export declare const entityOverlap: (threadA: Thread, threadB: Thread) => string[];
|
|
71
|
+
export declare const entityOverlapMap: (threadA: Thread, threadB: Thread, threadAName?: string, threadBName?: string) => void;
|
|
72
|
+
export declare const entityOverlapCount: (threadA: Thread, threadB: Thread) => number;
|
|
73
|
+
/** Live variant: entity overlap count as Subscribable<number>. */
|
|
74
|
+
export declare const liveEntityOverlapCount: (threadA: Thread, threadB: Thread) => SubscribableImpl<number>;
|
|
75
|
+
export declare const querySingle: (threadOrLogs: Thread | Applog[], patternOrPatterns: Parameters<typeof query>[1], variables?: SearchContext) => Applog;
|
|
76
|
+
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;
|
|
77
|
+
/** Live variant: querySingle returning Subscribable<Applog | null>. */
|
|
78
|
+
export declare const liveQuerySingle: (thread: Thread, patternOrPatterns: Parameters<typeof liveQuery>[1]) => SubscribableImpl<Applog>;
|
|
79
|
+
/** Live variant: querySingleAndMap returning Subscribable<T | undefined>. */
|
|
80
|
+
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>;
|
|
81
|
+
/** Create a single-applog mapper function from a mapDef */
|
|
82
|
+
export declare function makeApplogMapper<R>(mapDef: (keyof Applog) | (Partial<{
|
|
83
|
+
[key in keyof Applog]: string;
|
|
84
|
+
}>) | ((applog: Applog) => R)): (applog: Applog) => R;
|
|
85
|
+
/** Map an array of applogs using a mapDef */
|
|
86
|
+
export declare function mapApplogsWith<R>(applogs: readonly Applog[], mapDef: (keyof Applog) | (Partial<{
|
|
87
|
+
[key in keyof Applog]: string;
|
|
88
|
+
}>) | ((applog: Applog) => R)): R[];
|
|
89
|
+
export declare const mapThreadWith: <R>(thread: Thread, mapDef: (keyof Applog) | (Partial<{ [key in keyof Applog]: string; }>) | ((applog: Applog) => R)) => R[];
|
|
90
|
+
export declare const mapQueryResultWith: <R>(queryResult: QueryResult, mapDef: string | (Partial<{ [key in keyof SearchContext]: string; }>) | ((record: SearchContext) => R)) => any[];
|
|
91
|
+
/**
|
|
92
|
+
* Map Applog to custom named record, e.g.:
|
|
93
|
+
* { en: 'movieID', vl: 'movieName' }
|
|
94
|
+
* will map the applog to { movieID: .., movieName: .. }
|
|
95
|
+
*/
|
|
96
|
+
export declare function createObjMapper<FROM extends string, TO extends string>(applogFieldMap: Partial<{
|
|
97
|
+
[key in FROM]: TO;
|
|
98
|
+
}>): (applog: { [key_1 in FROM]: any; }) => Partial<{ [key in TO]: ApplogValue; }>;
|
|
99
|
+
export declare function startsWith(str: string): (value: any) => any;
|
|
100
|
+
export declare function prefixAttrs(prefix: string, attrs: readonly string[]): string[];
|
|
101
|
+
export declare function prefixAt(prefix: string, attr: string): string;
|
|
102
|
+
export declare function threadFromMaybeArray(threadOrLogs: Thread | Applog[], name?: string): Thread;
|
|
103
|
+
export declare function withTimeout<R>(timeoutMilliseconds: number, func: () => R): R;
|
|
104
|
+
export declare function throwOnTimeout(): void;
|
|
105
|
+
//# sourceMappingURL=basic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/query/basic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Applog } from '../applog/datom-types.ts';
|
|
2
|
+
import { Thread } from '../thread/basic.ts';
|
|
3
|
+
import { ThreadInMemory } from '../thread/writeable.ts';
|
|
4
|
+
export interface DivergenceLeaf {
|
|
5
|
+
log: Applog;
|
|
6
|
+
thread: Thread;
|
|
7
|
+
}
|
|
8
|
+
export declare const queryDivergencesByPrev: (sourceThread: Thread) => {
|
|
9
|
+
log: Applog;
|
|
10
|
+
thread: ThreadInMemory;
|
|
11
|
+
}[];
|
|
12
|
+
//# sourceMappingURL=divergences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/query/matchers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,IAC3B,IAAI,SAAS,aACrB;AACD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAC/B,IAAI,SAAS,aACrB"}
|