@xyo-network/archivist-view 6.1.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import type { Hash, Promisable } from '@xylabs/sdk-js';
|
|
2
|
+
import { zodAsFactory, zodIsFactory, zodToFactory } from '@xylabs/sdk-js';
|
|
2
3
|
import { AbstractArchivist } from '@xyo-network/archivist-abstract';
|
|
3
4
|
import type { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData, ArchivistNextOptions, ArchivistParams } from '@xyo-network/archivist-model';
|
|
5
|
+
import { ArchivistConfigZod } from '@xyo-network/archivist-model';
|
|
4
6
|
import type { AnyConfigSchema, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model';
|
|
5
7
|
import type { Payload, Schema, WithStorageMeta } from '@xyo-network/sdk-protocol-js';
|
|
8
|
+
import * as z from 'zod/mini';
|
|
6
9
|
export declare const ViewArchivistConfigSchema: 'network.xyo.archivist.view.config' & {
|
|
7
10
|
readonly __schema: true;
|
|
8
11
|
};
|
|
9
12
|
export type ViewArchivistConfigSchema = typeof ViewArchivistConfigSchema;
|
|
13
|
+
export declare const ViewArchivistConfigZod: z.ZodMiniObject<Omit<(typeof ArchivistConfigZod)['shape'], 'schema'> & {
|
|
14
|
+
originArchivist: z.ZodMiniOptional<z.ZodMiniCustom<ModuleIdentifier, ModuleIdentifier>>;
|
|
15
|
+
schema: z.ZodMiniLiteral<ViewArchivistConfigSchema>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
export type ViewArchivistConfigBase = z.infer<typeof ViewArchivistConfigZod>;
|
|
18
|
+
export declare const isViewArchivistConfig: ReturnType<typeof zodIsFactory<ViewArchivistConfigBase>>;
|
|
19
|
+
export declare const asViewArchivistConfig: ReturnType<typeof zodAsFactory<ViewArchivistConfigBase>>;
|
|
20
|
+
export declare const toViewArchivistConfig: ReturnType<typeof zodToFactory<ViewArchivistConfigBase>>;
|
|
10
21
|
export type ViewArchivistConfig = ArchivistConfig<{
|
|
11
22
|
originArchivist?: ModuleIdentifier;
|
|
12
23
|
}, ViewArchivistConfigSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewArchivist.d.ts","sourceRoot":"","sources":["../../src/ViewArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"ViewArchivist.d.ts","sourceRoot":"","sources":["../../src/ViewArchivist.ts"],"names":[],"mappings":"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"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -15,10 +15,16 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
15
15
|
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
16
16
|
|
|
17
17
|
// src/ViewArchivist.ts
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
assertEx,
|
|
20
|
+
zodAsFactory,
|
|
21
|
+
zodIsFactory,
|
|
22
|
+
zodToFactory
|
|
23
|
+
} from "@xylabs/sdk-js";
|
|
19
24
|
import { AbstractArchivist, StorageClassLabel } from "@xyo-network/archivist-abstract";
|
|
20
25
|
import {
|
|
21
26
|
ArchivistAllQuerySchema,
|
|
27
|
+
ArchivistConfigZod,
|
|
22
28
|
ArchivistGetQuerySchema,
|
|
23
29
|
ArchivistNextQuerySchema,
|
|
24
30
|
isArchivistInstance
|
|
@@ -28,7 +34,15 @@ import {
|
|
|
28
34
|
ModuleLimitationViewLabel
|
|
29
35
|
} from "@xyo-network/module-model";
|
|
30
36
|
import { asSchema } from "@xyo-network/sdk-protocol-js";
|
|
37
|
+
import * as z from "zod/mini";
|
|
31
38
|
var ViewArchivistConfigSchema = asSchema("network.xyo.archivist.view.config", true);
|
|
39
|
+
var ViewArchivistConfigZod = z.extend(ArchivistConfigZod, {
|
|
40
|
+
originArchivist: z.optional(z.custom()),
|
|
41
|
+
schema: z.literal(ViewArchivistConfigSchema)
|
|
42
|
+
});
|
|
43
|
+
var isViewArchivistConfig = zodIsFactory(ViewArchivistConfigZod);
|
|
44
|
+
var asViewArchivistConfig = zodAsFactory(ViewArchivistConfigZod, "asViewArchivistConfig");
|
|
45
|
+
var toViewArchivistConfig = zodToFactory(ViewArchivistConfigZod, "toViewArchivistConfig");
|
|
32
46
|
var ViewArchivist = class extends AbstractArchivist {
|
|
33
47
|
_originArchivistInstance;
|
|
34
48
|
get originArchivist() {
|
|
@@ -60,6 +74,10 @@ ViewArchivist = __decorateClass([
|
|
|
60
74
|
], ViewArchivist);
|
|
61
75
|
export {
|
|
62
76
|
ViewArchivist,
|
|
63
|
-
ViewArchivistConfigSchema
|
|
77
|
+
ViewArchivistConfigSchema,
|
|
78
|
+
ViewArchivistConfigZod,
|
|
79
|
+
asViewArchivistConfig,
|
|
80
|
+
isViewArchivistConfig,
|
|
81
|
+
toViewArchivistConfig
|
|
64
82
|
};
|
|
65
83
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/ViewArchivist.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Hash, Promisable } from '@xylabs/sdk-js'\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AACA,
|
|
4
|
+
"sourcesContent": ["import type { Hash, Promisable } from '@xylabs/sdk-js'\nimport {\n assertEx,\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport { AbstractArchivist, StorageClassLabel } from '@xyo-network/archivist-abstract'\nimport type {\n ArchivistConfig,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport {\n ArchivistAllQuerySchema,\n ArchivistConfigZod,\n ArchivistGetQuerySchema,\n ArchivistNextQuerySchema,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport type {\n AnyConfigSchema,\n ModuleIdentifier,\n ModuleInstance,\n} from '@xyo-network/module-model'\nimport {\n labeledCreatableModule,\n ModuleLimitationViewLabel,\n} from '@xyo-network/module-model'\nimport type {\n Payload, Schema, WithStorageMeta,\n} from '@xyo-network/sdk-protocol-js'\nimport { asSchema } from '@xyo-network/sdk-protocol-js'\nimport * as z from 'zod/mini'\n\nexport const ViewArchivistConfigSchema: 'network.xyo.archivist.view.config' & {\n readonly __schema: true\n} = asSchema('network.xyo.archivist.view.config', true)\nexport type ViewArchivistConfigSchema = typeof ViewArchivistConfigSchema\n\nexport const ViewArchivistConfigZod: z.ZodMiniObject<\n & Omit<(typeof ArchivistConfigZod)['shape'], 'schema'>\n & {\n originArchivist: z.ZodMiniOptional<z.ZodMiniCustom<ModuleIdentifier, ModuleIdentifier>>\n schema: z.ZodMiniLiteral<ViewArchivistConfigSchema>\n },\n z.core.$strip\n> = z.extend(ArchivistConfigZod, {\n originArchivist: z.optional(z.custom<ModuleIdentifier>()),\n schema: z.literal(ViewArchivistConfigSchema),\n})\n\nexport type ViewArchivistConfigBase = z.infer<typeof ViewArchivistConfigZod>\n\nexport const isViewArchivistConfig: ReturnType<typeof zodIsFactory<ViewArchivistConfigBase>> = zodIsFactory(ViewArchivistConfigZod)\nexport const asViewArchivistConfig: ReturnType<typeof zodAsFactory<ViewArchivistConfigBase>> = zodAsFactory(ViewArchivistConfigZod, 'asViewArchivistConfig')\nexport const toViewArchivistConfig: ReturnType<typeof zodToFactory<ViewArchivistConfigBase>> = zodToFactory(ViewArchivistConfigZod, 'toViewArchivistConfig')\n\nexport type ViewArchivistConfig = ArchivistConfig<\n {\n originArchivist?: ModuleIdentifier\n },\n ViewArchivistConfigSchema\n>\n\nexport type ViewArchivistParams<TConfig extends AnyConfigSchema<ViewArchivistConfig> = AnyConfigSchema<ViewArchivistConfig>> = ArchivistParams<TConfig>\n\n@labeledCreatableModule()\nexport class ViewArchivist<\n TParams extends ViewArchivistParams<AnyConfigSchema<ViewArchivistConfig>> = ViewArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n>\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ViewArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = ViewArchivistConfigSchema\n static override readonly labels: {\n 'ModuleLimitationLabelName': string\n 'network.xyo.storage.class': string\n } = { ...ModuleLimitationViewLabel, [StorageClassLabel]: 'proxy' }\n\n private _originArchivistInstance?: ArchivistInstance\n\n get originArchivist(): string|(Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) {\n return assertEx(this.config.originArchivist, () => 'originArchivist not configured')\n }\n\n override get queries(): Schema[] {\n return [ArchivistGetQuerySchema, ArchivistAllQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n }\n\n async originArchivistInstance(): Promise<ArchivistInstance<ArchivistParams<AnyConfigSchema<ArchivistConfig>>, ArchivistModuleEventData, Payload>> {\n this._originArchivistInstance\n = this._originArchivistInstance ?? assertEx(await this.resolve(this.originArchivist, { identity: isArchivistInstance, required: true }))\n return this._originArchivistInstance\n }\n\n /** @deprecated use next instead */\n protected override allHandler(): Promisable<WithStorageMeta<Payload>[]> {\n throw new Error('allHandler is deprecated, use nextHandler instead')\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n return await (await this.originArchivistInstance()).get(hashes)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n return (await (await this.originArchivistInstance()).next?.(options)) ?? []\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EAAc;AAAA,EAAc;AAAA,OACvB;AACP,SAAS,mBAAmB,yBAAyB;AAQrD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAIP,SAAS,gBAAgB;AACzB,YAAY,OAAO;AAEZ,IAAM,4BAET,SAAS,qCAAqC,IAAI;AAG/C,IAAM,yBAOP,SAAO,oBAAoB;AAAA,EAC/B,iBAAmB,WAAW,SAAyB,CAAC;AAAA,EACxD,QAAU,UAAQ,yBAAyB;AAC7C,CAAC;AAIM,IAAM,wBAAkF,aAAa,sBAAsB;AAC3H,IAAM,wBAAkF,aAAa,wBAAwB,uBAAuB;AACpJ,IAAM,wBAAkF,aAAa,wBAAwB,uBAAuB;AAYpJ,IAAM,gBAAN,cAIG,kBACqC;AAAA,EAQrC;AAAA,EAER,IAAI,kBAID;AACD,WAAO,SAAS,KAAK,OAAO,iBAAiB,MAAM,gCAAgC;AAAA,EACrF;AAAA,EAEA,IAAa,UAAoB;AAC/B,WAAO,CAAC,yBAAyB,yBAAyB,0BAA0B,GAAG,MAAM,OAAO;AAAA,EACtG;AAAA,EAEA,MAAM,0BAA4I;AAChJ,SAAK,2BACD,KAAK,4BAA4B,SAAS,MAAM,KAAK,QAAQ,KAAK,iBAAiB,EAAE,UAAU,qBAAqB,UAAU,KAAK,CAAC,CAAC;AACzI,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGmB,aAAqD;AACtE,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA,EAEA,MAAyB,WAAW,QAAqD;AACvF,WAAO,OAAO,MAAM,KAAK,wBAAwB,GAAG,IAAI,MAAM;AAAA,EAChE;AAAA,EAEA,MAAyB,YAAY,SAAqE;AACxG,WAAQ,OAAO,MAAM,KAAK,wBAAwB,GAAG,OAAO,OAAO,KAAM,CAAC;AAAA,EAC5E;AACF;AAvCE,cANW,eAMc,iBAA0B,CAAC,GAAG,yCAAM,kBAAe,yBAAyB;AACrG,cAPW,eAOc,uBAA8B;AACvD,cARW,eAQc,UAGrB,EAAE,GAAG,2BAA2B,CAAC,iBAAiB,GAAG,QAAQ;AAXtD,gBAAN;AAAA,EADN,uBAAuB;AAAA,GACX;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/archivist-view",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -34,28 +34,28 @@
|
|
|
34
34
|
"README.md"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@xyo-network/archivist-abstract": "~
|
|
38
|
-
"@xyo-network/archivist-model": "~
|
|
39
|
-
"@xyo-network/module-model": "~
|
|
37
|
+
"@xyo-network/archivist-abstract": "~7.0.0",
|
|
38
|
+
"@xyo-network/archivist-model": "~7.0.0",
|
|
39
|
+
"@xyo-network/module-model": "~7.0.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@bitauth/libauth": "~3.0.0",
|
|
43
43
|
"@metamask/providers": "^22.1.1",
|
|
44
44
|
"@noble/post-quantum": "~0.6.1",
|
|
45
45
|
"@opentelemetry/api": "^1.9.1",
|
|
46
|
-
"@opentelemetry/sdk-trace-base": "^2.
|
|
46
|
+
"@opentelemetry/sdk-trace-base": "^2.8.0",
|
|
47
47
|
"@scure/base": "~2.2.0",
|
|
48
48
|
"@scure/bip39": "~2.2.0",
|
|
49
|
-
"@xylabs/geo": "^6.1.
|
|
50
|
-
"@xylabs/sdk-js": "^6.1.
|
|
51
|
-
"@xylabs/threads": "^6.1.
|
|
49
|
+
"@xylabs/geo": "^6.1.1",
|
|
50
|
+
"@xylabs/sdk-js": "^6.1.1",
|
|
51
|
+
"@xylabs/threads": "^6.1.1",
|
|
52
52
|
"@xylabs/toolchain": "^8.1.20",
|
|
53
53
|
"@xylabs/tsconfig": "^8.1.20",
|
|
54
|
-
"@xyo-network/sdk-protocol-js": "
|
|
54
|
+
"@xyo-network/sdk-protocol-js": "~7.0",
|
|
55
55
|
"ajv": "^8.20.0",
|
|
56
56
|
"async-mutex": "^0.5.0",
|
|
57
57
|
"debug": "~4.4.3",
|
|
58
|
-
"eslint": "^10.
|
|
58
|
+
"eslint": "^10.5.0",
|
|
59
59
|
"ethers": "^6.16.0",
|
|
60
60
|
"hash-wasm": "~4.12.0",
|
|
61
61
|
"idb": "^8.0.3",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"vitest": "~4.1.8",
|
|
68
68
|
"webextension-polyfill": "^0.12.0",
|
|
69
69
|
"zod": "^4.4.3",
|
|
70
|
-
"@xyo-network/archivist-memory": "~
|
|
71
|
-
"@xyo-network/node-memory": "~
|
|
70
|
+
"@xyo-network/archivist-memory": "~7.0.0",
|
|
71
|
+
"@xyo-network/node-memory": "~7.0.0"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
74
|
"@bitauth/libauth": "~3.0",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"@xylabs/geo": "^6.0",
|
|
82
82
|
"@xylabs/sdk-js": "^6.0",
|
|
83
83
|
"@xylabs/threads": "^6.0",
|
|
84
|
-
"@xyo-network/sdk-protocol-js": "^
|
|
84
|
+
"@xyo-network/sdk-protocol-js": "^7.0",
|
|
85
85
|
"ajv": "^8.20",
|
|
86
86
|
"async-mutex": "^0.5",
|
|
87
87
|
"debug": "~4.4",
|