@xyo-network/archivist-indexeddb 2.60.3

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.
@@ -0,0 +1,42 @@
1
+ import { __decorate } from "tslib";
2
+ import { AbstractArchivist } from '@xyo-network/abstract-archivist';
3
+ import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema, } from '@xyo-network/archivist-model';
4
+ import { PayloadHasher } from '@xyo-network/core';
5
+ import { creatableModule } from '@xyo-network/module';
6
+ import { clear, delMany, entries, getMany, setMany } from 'idb-keyval';
7
+ export const IndexedDbArchivistConfigSchema = 'network.xyo.module.config.archivist.storage';
8
+ let IndexedDbArchivist = class IndexedDbArchivist extends AbstractArchivist {
9
+ static configSchema = IndexedDbArchivistConfigSchema;
10
+ get queries() {
11
+ return [ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema, ...super.queries];
12
+ }
13
+ async all() {
14
+ const result = await entries(this.params.indexedDB ?? undefined);
15
+ return result.map(([_hash, payload]) => payload);
16
+ }
17
+ async clear() {
18
+ await clear(this.params.indexedDB ?? undefined);
19
+ }
20
+ async delete(hashes) {
21
+ await delMany(hashes, this.params.indexedDB ?? undefined);
22
+ return hashes.map((_) => true);
23
+ }
24
+ async get(hashes) {
25
+ const result = await getMany(hashes, this.params.indexedDB ?? undefined);
26
+ return result;
27
+ }
28
+ async insert(payloads) {
29
+ const entries = await Promise.all(payloads.map(async (payload) => {
30
+ const hash = await PayloadHasher.hashAsync(payload);
31
+ return [hash, payload];
32
+ }));
33
+ await setMany(entries, this.params.indexedDB ?? undefined);
34
+ const result = await this.bindQueryResult({ payloads, schema: ArchivistInsertQuerySchema }, payloads);
35
+ return [result[0]];
36
+ }
37
+ };
38
+ IndexedDbArchivist = __decorate([
39
+ creatableModule()
40
+ ], IndexedDbArchivist);
41
+ export { IndexedDbArchivist };
42
+ //# sourceMappingURL=IndexedDbArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDbArchivist.js","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAEzB,0BAA0B,EAC1B,0BAA0B,GAG3B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAmB,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEtE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAY,MAAM,YAAY,CAAA;AAGhF,MAAM,CAAC,MAAM,8BAA8B,GAAmC,6CAA6C,CAAA;AAiBpH,IAAM,kBAAkB,GAAxB,MAAM,kBAGX,SAAQ,iBAAsC;IAC9C,MAAM,CAAU,YAAY,GAAG,8BAA8B,CAAA;IAE7D,IAAa,OAAO;QAClB,OAAO,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IACvI,CAAC;IAEQ,KAAK,CAAC,GAAG;QAChB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;QACjF,OAAO,MAAM,CAAC,GAAG,CAAU,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;IACjD,CAAC;IAEQ,KAAK,CAAC,MAAM,CAAC,MAAgB;QACpC,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;QACzD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAEQ,KAAK,CAAC,GAAG,CAAC,MAAgB;QACjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAU,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;QACjF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAmB;QAC9B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAA6B,KAAK,EAAE,OAAO,EAAE,EAAE;YACzD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACnD,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACxB,CAAC,CAAC,CACH,CAAA;QACD,MAAM,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,EAAE,QAAQ,CAAC,CAAA;QACrG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACpB,CAAC;;AAvCU,kBAAkB;IAD9B,eAAe,EAAE;GACL,kBAAkB,CAwC9B;SAxCY,kBAAkB"}
@@ -0,0 +1,2 @@
1
+ export * from './IndexedDbArchivist';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { AbstractArchivist } from '@xyo-network/abstract-archivist';
2
+ import { ArchivistConfig, ArchivistModuleEventData, ArchivistParams } from '@xyo-network/archivist-model';
3
+ import { BoundWitness } from '@xyo-network/boundwitness-model';
4
+ import { AnyConfigSchema } from '@xyo-network/module';
5
+ import { Payload } from '@xyo-network/payload-model';
6
+ import { UseStore } from 'idb-keyval';
7
+ export type IndexedDbArchivistConfigSchema = 'network.xyo.module.config.archivist.storage';
8
+ export declare const IndexedDbArchivistConfigSchema: IndexedDbArchivistConfigSchema;
9
+ export type IndexedDbArchivistConfig = ArchivistConfig<{
10
+ maxEntries?: number;
11
+ maxEntrySize?: number;
12
+ namespace?: string;
13
+ schema: IndexedDbArchivistConfigSchema;
14
+ }>;
15
+ export type IndexedDbArchivistParams = ArchivistParams<AnyConfigSchema<IndexedDbArchivistConfig>, {
16
+ indexedDB?: UseStore;
17
+ }>;
18
+ export declare class IndexedDbArchivist<TParams extends IndexedDbArchivistParams = IndexedDbArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> {
19
+ static configSchema: "network.xyo.module.config.archivist.storage";
20
+ get queries(): string[];
21
+ all(): Promise<Payload[]>;
22
+ clear(): Promise<void>;
23
+ delete(hashes: string[]): Promise<boolean[]>;
24
+ get(hashes: string[]): Promise<Payload[]>;
25
+ insert(payloads: Payload[]): Promise<BoundWitness[]>;
26
+ }
27
+ //# sourceMappingURL=IndexedDbArchivist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDbArchivist.d.ts","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAGL,eAAe,EAGf,wBAAwB,EACxB,eAAe,EAChB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAA6C,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEhF,MAAM,MAAM,8BAA8B,GAAG,6CAA6C,CAAA;AAC1F,eAAO,MAAM,8BAA8B,EAAE,8BAA8E,CAAA;AAE3H,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,8BAA8B,CAAA;CACvC,CAAC,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,eAAe,CACpD,eAAe,CAAC,wBAAwB,CAAC,EACzC;IACE,SAAS,CAAC,EAAE,QAAQ,CAAA;CACrB,CACF,CAAA;AAED,qBACa,kBAAkB,CAC7B,OAAO,SAAS,wBAAwB,GAAG,wBAAwB,EACnE,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CACtE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC;IAC9C,OAAgB,YAAY,gDAAiC;IAE7D,IAAa,OAAO,aAEnB;IAEc,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAK5C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAKlD,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAW3D"}
@@ -0,0 +1,2 @@
1
+ export * from './IndexedDbArchivist';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@xyo-network/archivist-indexeddb",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
+ },
12
+ "dependencies": {
13
+ "@xyo-network/abstract-archivist": "^2.60.3",
14
+ "@xyo-network/archivist-model": "^2.60.3",
15
+ "@xyo-network/boundwitness-model": "^2.60.3",
16
+ "@xyo-network/core": "^2.60.3",
17
+ "@xyo-network/module": "^2.60.3",
18
+ "@xyo-network/payload-model": "^2.60.3",
19
+ "@xyo-network/payload-wrapper": "^2.60.3",
20
+ "@xyo-network/promise": "^2.60.3",
21
+ "idb-keyval": "^6.2.1"
22
+ },
23
+ "devDependencies": {
24
+ "@xylabs/delay": "^2.8.1",
25
+ "@xylabs/ts-scripts-yarn3": "^2.17.13",
26
+ "@xylabs/tsconfig": "^2.17.13",
27
+ "@xyo-network/archivist-wrapper": "^2.60.3",
28
+ "@xyo-network/boundwitness-wrapper": "^2.60.3",
29
+ "@xyo-network/plugins": "^2.60.3",
30
+ "fake-indexeddb": "^4.0.1",
31
+ "typescript": "^5.1.3"
32
+ },
33
+ "description": "Primary SDK for using XYO Protocol 2.0",
34
+ "browser": "dist/esm/index.js",
35
+ "docs": "dist/docs.json",
36
+ "exports": {
37
+ ".": {
38
+ "node": {
39
+ "import": "./dist/esm/index.js",
40
+ "require": "./dist/cjs/index.js"
41
+ },
42
+ "browser": {
43
+ "import": "./dist/esm/index.js",
44
+ "require": "./dist/cjs/index.js"
45
+ },
46
+ "default": "./dist/esm/index.js"
47
+ },
48
+ "./dist/docs.json": {
49
+ "default": "./dist/docs.json"
50
+ },
51
+ "./package.json": "./package.json"
52
+ },
53
+ "main": "dist/cjs/index.js",
54
+ "module": "dist/esm/index.js",
55
+ "homepage": "https://xyo.network",
56
+ "license": "LGPL-3.0",
57
+ "publishConfig": {
58
+ "access": "public"
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
63
+ },
64
+ "sideEffects": false,
65
+ "types": "dist/types/index.d.ts",
66
+ "version": "2.60.3"
67
+ }
@@ -0,0 +1,75 @@
1
+ import { AbstractArchivist } from '@xyo-network/abstract-archivist'
2
+ import {
3
+ ArchivistAllQuerySchema,
4
+ ArchivistClearQuerySchema,
5
+ ArchivistConfig,
6
+ ArchivistDeleteQuerySchema,
7
+ ArchivistInsertQuerySchema,
8
+ ArchivistModuleEventData,
9
+ ArchivistParams,
10
+ } from '@xyo-network/archivist-model'
11
+ import { BoundWitness } from '@xyo-network/boundwitness-model'
12
+ import { PayloadHasher } from '@xyo-network/core'
13
+ import { AnyConfigSchema, creatableModule } from '@xyo-network/module'
14
+ import { Payload } from '@xyo-network/payload-model'
15
+ import { clear, delMany, entries, getMany, setMany, UseStore } from 'idb-keyval'
16
+
17
+ export type IndexedDbArchivistConfigSchema = 'network.xyo.module.config.archivist.storage'
18
+ export const IndexedDbArchivistConfigSchema: IndexedDbArchivistConfigSchema = 'network.xyo.module.config.archivist.storage'
19
+
20
+ export type IndexedDbArchivistConfig = ArchivistConfig<{
21
+ maxEntries?: number
22
+ maxEntrySize?: number
23
+ namespace?: string
24
+ schema: IndexedDbArchivistConfigSchema
25
+ }>
26
+
27
+ export type IndexedDbArchivistParams = ArchivistParams<
28
+ AnyConfigSchema<IndexedDbArchivistConfig>,
29
+ {
30
+ indexedDB?: UseStore
31
+ }
32
+ >
33
+
34
+ @creatableModule()
35
+ export class IndexedDbArchivist<
36
+ TParams extends IndexedDbArchivistParams = IndexedDbArchivistParams,
37
+ TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,
38
+ > extends AbstractArchivist<TParams, TEventData> {
39
+ static override configSchema = IndexedDbArchivistConfigSchema
40
+
41
+ override get queries() {
42
+ return [ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema, ...super.queries]
43
+ }
44
+
45
+ override async all(): Promise<Payload[]> {
46
+ const result = await entries<string, Payload>(this.params.indexedDB ?? undefined)
47
+ return result.map<Payload>(([_hash, payload]) => payload)
48
+ }
49
+
50
+ override async clear(): Promise<void> {
51
+ await clear(this.params.indexedDB ?? undefined)
52
+ }
53
+
54
+ override async delete(hashes: string[]): Promise<boolean[]> {
55
+ await delMany(hashes, this.params.indexedDB ?? undefined)
56
+ return hashes.map((_) => true)
57
+ }
58
+
59
+ override async get(hashes: string[]): Promise<Payload[]> {
60
+ const result = await getMany<Payload>(hashes, this.params.indexedDB ?? undefined)
61
+ return result
62
+ }
63
+
64
+ async insert(payloads: Payload[]): Promise<BoundWitness[]> {
65
+ const entries = await Promise.all(
66
+ payloads.map<Promise<[string, Payload]>>(async (payload) => {
67
+ const hash = await PayloadHasher.hashAsync(payload)
68
+ return [hash, payload]
69
+ }),
70
+ )
71
+ await setMany(entries, this.params.indexedDB ?? undefined)
72
+ const result = await this.bindQueryResult({ payloads, schema: ArchivistInsertQuerySchema }, payloads)
73
+ return [result[0]]
74
+ }
75
+ }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './IndexedDbArchivist'
@@ -0,0 +1,16 @@
1
+ {
2
+ "payloads": [
3
+ {
4
+ "schema": "network.xyo.test.1"
5
+ },
6
+ {
7
+ "schema": "network.xyo.test.2"
8
+ },
9
+ {
10
+ "schema": "network.xyo.test.3"
11
+ },
12
+ {
13
+ "schema": "network.xyo.test.4"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1 @@
1
+ export * from './testArchivist'
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+
5
+ import { delay } from '@xylabs/delay'
6
+ import { ArchivistModule } from '@xyo-network/archivist-model'
7
+ import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
8
+ import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
9
+ import { PayloadHasher } from '@xyo-network/core'
10
+ import { Payload } from '@xyo-network/payload-model'
11
+ import { PayloadWrapper } from '@xyo-network/payload-wrapper'
12
+ import { IdSchema } from '@xyo-network/plugins'
13
+ import { Promisable } from '@xyo-network/promise'
14
+
15
+ export const testArchivistRoundTrip = (archivist: Promisable<ArchivistModule>, name: string) => {
16
+ test(`XyoArchivist RoundTrip [${name}]`, async () => {
17
+ const idPayload: Payload<{ salt: string }> = {
18
+ salt: Date.now().toString(),
19
+ schema: IdSchema,
20
+ }
21
+ const payloadWrapper = new PayloadWrapper(idPayload)
22
+
23
+ const archivistWrapper = ArchivistWrapper.wrap(await archivist)
24
+ const insertResult = await archivistWrapper.insert([idPayload])
25
+ const insertResultWrappers = insertResult.map((bw) => new BoundWitnessWrapper(bw))
26
+ const insertResultPayload = insertResultWrappers.pop() as BoundWitnessWrapper
27
+ expect(insertResultPayload).toBeDefined()
28
+
29
+ expect(PayloadHasher.find(insertResultPayload.payloadHashes, await payloadWrapper.hashAsync())).toBeDefined()
30
+ const getResult = await archivistWrapper.get([await payloadWrapper.hashAsync()])
31
+ expect(getResult).toBeDefined()
32
+ expect(getResult.length).toBe(1)
33
+ const gottenPayload = getResult[0]
34
+ if (gottenPayload) {
35
+ const gottenPayloadWrapper = new PayloadWrapper(gottenPayload)
36
+ expect(await gottenPayloadWrapper.hashAsync()).toBe(await payloadWrapper.hashAsync())
37
+ }
38
+ })
39
+ }
40
+
41
+ export const testArchivistAll = (archivist: Promisable<ArchivistModule>, name: string) => {
42
+ test(`XyoArchivist All [${name}]`, async () => {
43
+ const idPayload = {
44
+ salt: Date.now().toString(),
45
+ schema: IdSchema,
46
+ }
47
+ const archivistWrapper = ArchivistWrapper.wrap(await archivist)
48
+ for (let x = 0; x < 10; x++) {
49
+ await archivistWrapper.insert([idPayload])
50
+ await delay(10)
51
+ }
52
+ const getResult = await archivistWrapper.all()
53
+ expect(getResult).toBeDefined()
54
+ expect(getResult.length).toBe(2)
55
+ })
56
+ }
package/typedoc.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["src/index.ts"],
4
+ "tsconfig": "./tsconfig.typedoc.json"
5
+ }