@xyo-network/filesystem-archivist 2.107.3 → 2.107.5

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,2 +1,123 @@
1
- "use strict";var c=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var y=(a,r)=>c(a,"name",{value:r,configurable:!0});var H=(a,r)=>{for(var t in r)c(a,t,{get:r[t],enumerable:!0})},x=(a,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of P(r))!F.call(a,e)&&e!==t&&c(a,e,{get:()=>r[e],enumerable:!(o=b(r,e))||o.enumerable});return a};var R=a=>x(c({},"__esModule",{value:!0}),a);var j={};H(j,{FilesystemArchivist:()=>s,FilesystemArchivistConfigSchema:()=>d});module.exports=R(j);var u=require("fs/promises"),n=require("@xylabs/assert"),p=require("@xylabs/error"),w=require("@xyo-network/account"),v=require("@xyo-network/archivist-abstract"),A=require("@xyo-network/archivist-memory"),l=require("@xyo-network/archivist-model"),g=require("@xyo-network/module-model"),f=require("@xyo-network/payload-builder");function S(a,r,t,o){var e=arguments.length,i=e<3?r:o===null?o=Object.getOwnPropertyDescriptor(r,t):o,m;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(a,r,t,o);else for(var h=a.length-1;h>=0;h--)(m=a[h])&&(i=(e<3?m(i):e>3?m(r,t,i):m(r,t))||i);return e>3&&i&&Object.defineProperty(r,t,i),i}y(S,"_ts_decorate");var d="network.xyo.archivist.filesystem.config",s=class a extends v.AbstractArchivist{static{y(this,"FilesystemArchivist")}static configSchemas=[...super.configSchemas,d];static defaultConfigSchema=d;_memoryArchivist;get filePath(){return this.config?.filePath??"archivist.xyo.json"}get queries(){return[l.ArchivistAllQuerySchema,l.ArchivistCommitQuerySchema,...super.queries]}get memoryArchivist(){return(0,n.assertEx)(this._memoryArchivist)}static async dataFromRawJson(r){let t=JSON.parse(r);return(0,n.assertEx)(typeof t=="object",()=>"Archivist Data must be object"),(0,n.assertEx)(Array.isArray(t.payloads),()=>'Archivist Data "payloads" field must be array of payloads'),t.payloads=await this.payloadsFromRawPayloads(t.payloads),t}static async payloadsFromRawPayloads(r){return await Promise.all(r.map(async t=>await f.PayloadBuilder.build(t)))}allHandler(){return this.memoryArchivist.all()}clearHandler(){return this.memoryArchivist.clear()}async commitHandler(){return await this.memoryArchivist.commit()}deleteHandler(r){return this.memoryArchivist.delete(r)}async getHandler(r){return await this.memoryArchivist.get(r)}async insertHandler(r){return await this.memoryArchivist.insert(r)}async startHandler(){await super.startHandler(),this._memoryArchivist=await A.MemoryArchivist.create({account:await w.HDWallet.random()});try{let r=await a.dataFromRawJson(await this.rawJsonFromFile());await this._memoryArchivist.insert(await Promise.all(r.payloads.map(t=>f.PayloadBuilder.build(t))))}catch(r){return(0,p.handleError)(r,t=>{this.logger?.error(t.message)}),!1}return!0}async rawJsonFromFile(){return await(0,u.readFile)(this.filePath,{encoding:"utf8"})}};s=S([(0,g.creatableModule)()],s);
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/index.ts
22
+ var src_exports = {};
23
+ __export(src_exports, {
24
+ FilesystemArchivist: () => FilesystemArchivist,
25
+ FilesystemArchivistConfigSchema: () => FilesystemArchivistConfigSchema
26
+ });
27
+ module.exports = __toCommonJS(src_exports);
28
+
29
+ // src/FilesystemArchivist.ts
30
+ var import_promises = require("fs/promises");
31
+ var import_assert = require("@xylabs/assert");
32
+ var import_error = require("@xylabs/error");
33
+ var import_account = require("@xyo-network/account");
34
+ var import_archivist_abstract = require("@xyo-network/archivist-abstract");
35
+ var import_archivist_memory = require("@xyo-network/archivist-memory");
36
+ var import_archivist_model = require("@xyo-network/archivist-model");
37
+ var import_module_model = require("@xyo-network/module-model");
38
+ var import_payload_builder = require("@xyo-network/payload-builder");
39
+ function _ts_decorate(decorators, target, key, desc) {
40
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
42
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
43
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
44
+ }
45
+ __name(_ts_decorate, "_ts_decorate");
46
+ var FilesystemArchivistConfigSchema = "network.xyo.archivist.filesystem.config";
47
+ var FilesystemArchivist = class _FilesystemArchivist extends import_archivist_abstract.AbstractArchivist {
48
+ static {
49
+ __name(this, "FilesystemArchivist");
50
+ }
51
+ static configSchemas = [
52
+ ...super.configSchemas,
53
+ FilesystemArchivistConfigSchema
54
+ ];
55
+ static defaultConfigSchema = FilesystemArchivistConfigSchema;
56
+ _memoryArchivist;
57
+ get filePath() {
58
+ return this.config?.filePath ?? "archivist.xyo.json";
59
+ }
60
+ get queries() {
61
+ return [
62
+ import_archivist_model.ArchivistAllQuerySchema,
63
+ import_archivist_model.ArchivistCommitQuerySchema,
64
+ ...super.queries
65
+ ];
66
+ }
67
+ get memoryArchivist() {
68
+ return (0, import_assert.assertEx)(this._memoryArchivist);
69
+ }
70
+ static async dataFromRawJson(rawJson) {
71
+ const data = JSON.parse(rawJson);
72
+ (0, import_assert.assertEx)(typeof data === "object", () => "Archivist Data must be object");
73
+ (0, import_assert.assertEx)(Array.isArray(data.payloads), () => 'Archivist Data "payloads" field must be array of payloads');
74
+ data.payloads = await this.payloadsFromRawPayloads(data.payloads);
75
+ return data;
76
+ }
77
+ static async payloadsFromRawPayloads(rawPayloads) {
78
+ return await Promise.all(rawPayloads.map(async (payload) => await import_payload_builder.PayloadBuilder.build(payload)));
79
+ }
80
+ allHandler() {
81
+ return this.memoryArchivist.all();
82
+ }
83
+ clearHandler() {
84
+ return this.memoryArchivist.clear();
85
+ }
86
+ async commitHandler() {
87
+ return await this.memoryArchivist.commit();
88
+ }
89
+ deleteHandler(hashes) {
90
+ return this.memoryArchivist.delete(hashes);
91
+ }
92
+ async getHandler(hashes) {
93
+ return await this.memoryArchivist.get(hashes);
94
+ }
95
+ async insertHandler(payloads) {
96
+ return await this.memoryArchivist.insert(payloads);
97
+ }
98
+ async startHandler() {
99
+ await super.startHandler();
100
+ this._memoryArchivist = await import_archivist_memory.MemoryArchivist.create({
101
+ account: await import_account.HDWallet.random()
102
+ });
103
+ try {
104
+ const data = await _FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile());
105
+ await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => import_payload_builder.PayloadBuilder.build(payload))));
106
+ } catch (ex) {
107
+ (0, import_error.handleError)(ex, (error) => {
108
+ this.logger?.error(error.message);
109
+ });
110
+ return false;
111
+ }
112
+ return true;
113
+ }
114
+ async rawJsonFromFile() {
115
+ return await (0, import_promises.readFile)(this.filePath, {
116
+ encoding: "utf8"
117
+ });
118
+ }
119
+ };
120
+ FilesystemArchivist = _ts_decorate([
121
+ (0, import_module_model.creatableModule)()
122
+ ], FilesystemArchivist);
2
123
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/FilesystemArchivist.ts"],"sourcesContent":["export * from './FilesystemArchivist'\n","import { readFile } from 'node:fs/promises'\n\nimport { assertEx } from '@xylabs/assert'\nimport { handleError } from '@xylabs/error'\nimport { Hash } from '@xylabs/hex'\nimport { PromisableArray } from '@xylabs/promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport {\n ArchivistAllQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistInstance,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model'\n\nexport interface FileSystemArchivistData {\n payloads: Payload[]\n}\n\nexport type FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\nexport const FilesystemArchivistConfigSchema: FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\n\nexport type FilesystemArchivistConfig = ArchivistConfig<{\n filePath?: string\n schema: FilesystemArchivistConfigSchema\n}>\n\nexport type FilesystemArchivistParams = ArchivistParams<AnyConfigSchema<FilesystemArchivistConfig>>\n\n/** @description Currently only a read-only archivist that loads payloads from filesystem\n * but allows for future expansion to read/write\n */\n@creatableModule()\nexport class FilesystemArchivist<TParams extends FilesystemArchivistParams = FilesystemArchivistParams>\n extends AbstractArchivist<TParams>\n implements ArchivistInstance\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FilesystemArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = FilesystemArchivistConfigSchema\n\n private _memoryArchivist?: MemoryArchivist\n\n get filePath() {\n return this.config?.filePath ?? 'archivist.xyo.json'\n }\n\n override get queries() {\n return [ArchivistAllQuerySchema, ArchivistCommitQuerySchema, ...super.queries]\n }\n\n private get memoryArchivist() {\n return assertEx(this._memoryArchivist)\n }\n\n private static async dataFromRawJson(rawJson: string) {\n const data: FileSystemArchivistData = JSON.parse(rawJson)\n assertEx(typeof data === 'object', () => 'Archivist Data must be object')\n assertEx(Array.isArray(data.payloads), () => 'Archivist Data \"payloads\" field must be array of payloads')\n data.payloads = await this.payloadsFromRawPayloads(data.payloads)\n return data\n }\n\n private static async payloadsFromRawPayloads(rawPayloads: Payload[]) {\n //validation should be done in here. I don't believe parse does much validation yet.\n return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)))\n }\n\n protected override allHandler(): PromisableArray<PayloadWithMeta> {\n return this.memoryArchivist.all()\n }\n\n protected override clearHandler(): void | Promise<void> {\n return this.memoryArchivist.clear()\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n return await this.memoryArchivist.commit()\n }\n\n protected override deleteHandler(hashes: Hash[]): PromisableArray<Hash> {\n return this.memoryArchivist.delete(hashes)\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.get(hashes)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.insert(payloads)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this._memoryArchivist = await MemoryArchivist.create({ account: await HDWallet.random() })\n try {\n const data = await FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile())\n await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))))\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.error(error.message)\n })\n return false\n }\n return true\n }\n\n private async rawJsonFromFile() {\n return await readFile(this.filePath, { encoding: 'utf8' })\n }\n}\n"],"mappings":"4dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,oCAAAC,IAAA,eAAAC,EAAAJ,GCAA,IAAAK,EAAyB,uBAEzBC,EAAyB,0BACzBC,EAA4B,yBAG5BC,EAAyB,gCACzBC,EAAkC,2CAClCC,EAAgC,yCAChCC,EAMO,wCAEPC,EAAiD,qCACjDC,EAA+B,iYAQxB,IAAMC,EAAmE,0CAanEC,EAAN,MAAMA,UACHC,mBAAAA,OAAAA,CAAAA,EAAAA,4BAGR,OAAyBC,cAA0B,IAAI,MAAMA,cAAeH,GAC5E,OAAyBI,oBAA8BJ,EAE/CK,iBAER,IAAIC,UAAW,CACb,OAAO,KAAKC,QAAQD,UAAY,oBAClC,CAEA,IAAaE,SAAU,CACrB,MAAO,CAACC,0BAAyBC,gCAA+B,MAAMF,QACxE,CAEA,IAAYG,iBAAkB,CAC5B,SAAOC,YAAS,KAAKP,gBAAgB,CACvC,CAEA,aAAqBQ,gBAAgBC,EAAiB,CACpD,IAAMC,EAAgCC,KAAKC,MAAMH,CAAAA,EACjDF,qBAAS,OAAOG,GAAS,SAAU,IAAM,+BAAA,KACzCH,YAASM,MAAMC,QAAQJ,EAAKK,QAAQ,EAAG,IAAM,2DAAA,EAC7CL,EAAKK,SAAW,MAAM,KAAKC,wBAAwBN,EAAKK,QAAQ,EACzDL,CACT,CAEA,aAAqBM,wBAAwBC,EAAwB,CAEnE,OAAO,MAAMC,QAAQC,IAAIF,EAAYG,IAAI,MAAOC,GAAY,MAAMC,iBAAeC,MAAMF,CAAAA,CAAAA,CAAAA,CACzF,CAEmBG,YAA+C,CAChE,OAAO,KAAKlB,gBAAgBa,IAAG,CACjC,CAEmBM,cAAqC,CACtD,OAAO,KAAKnB,gBAAgBoB,MAAK,CACnC,CAEA,MAAyBC,eAAmD,CAC1E,OAAO,MAAM,KAAKrB,gBAAgBsB,OAAM,CAC1C,CAEmBC,cAAcC,EAAuC,CACtE,OAAO,KAAKxB,gBAAgByB,OAAOD,CAAAA,CACrC,CAEA,MAAyBE,WAAWF,EAA4C,CAC9E,OAAO,MAAM,KAAKxB,gBAAgB2B,IAAIH,CAAAA,CACxC,CAEA,MAAyBI,cAAcnB,EAAiD,CACtF,OAAO,MAAM,KAAKT,gBAAgB6B,OAAOpB,CAAAA,CAC3C,CAEA,MAAyBqB,cAAe,CACtC,MAAM,MAAMA,aAAAA,EACZ,KAAKpC,iBAAmB,MAAMqC,kBAAgBC,OAAO,CAAEC,QAAS,MAAMC,WAASC,OAAM,CAAG,CAAA,EACxF,GAAI,CACF,IAAM/B,EAAO,MAAMd,EAAoBY,gBAAgB,MAAM,KAAKkC,gBAAe,CAAA,EACjF,MAAM,KAAK1C,iBAAiBmC,OAAO,MAAMjB,QAAQC,IAAIT,EAAKK,SAASK,IAAKC,GAAYC,iBAAeC,MAAMF,CAAAA,CAAAA,CAAAA,CAAAA,CAC3G,OAASsB,EAAI,CACXC,wBAAYD,EAAKE,GAAAA,CACf,KAAKC,QAAQD,MAAMA,EAAME,OAAO,CAClC,CAAA,EACO,EACT,CACA,MAAO,EACT,CAEA,MAAcL,iBAAkB,CAC9B,OAAO,QAAMM,YAAS,KAAK/C,SAAU,CAAEgD,SAAU,MAAO,CAAA,CAC1D,CACF","names":["src_exports","__export","FilesystemArchivist","FilesystemArchivistConfigSchema","__toCommonJS","import_promises","import_assert","import_error","import_account","import_archivist_abstract","import_archivist_memory","import_archivist_model","import_module_model","import_payload_builder","FilesystemArchivistConfigSchema","FilesystemArchivist","AbstractArchivist","configSchemas","defaultConfigSchema","_memoryArchivist","filePath","config","queries","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","memoryArchivist","assertEx","dataFromRawJson","rawJson","data","JSON","parse","Array","isArray","payloads","payloadsFromRawPayloads","rawPayloads","Promise","all","map","payload","PayloadBuilder","build","allHandler","clearHandler","clear","commitHandler","commit","deleteHandler","hashes","delete","getHandler","get","insertHandler","insert","startHandler","MemoryArchivist","create","account","HDWallet","random","rawJsonFromFile","ex","handleError","error","logger","message","readFile","encoding"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/FilesystemArchivist.ts"],"sourcesContent":["export * from './FilesystemArchivist'\n","import { readFile } from 'node:fs/promises'\n\nimport { assertEx } from '@xylabs/assert'\nimport { handleError } from '@xylabs/error'\nimport { Hash } from '@xylabs/hex'\nimport { PromisableArray } from '@xylabs/promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport {\n ArchivistAllQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistInstance,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model'\n\nexport interface FileSystemArchivistData {\n payloads: Payload[]\n}\n\nexport type FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\nexport const FilesystemArchivistConfigSchema: FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\n\nexport type FilesystemArchivistConfig = ArchivistConfig<{\n filePath?: string\n schema: FilesystemArchivistConfigSchema\n}>\n\nexport type FilesystemArchivistParams = ArchivistParams<AnyConfigSchema<FilesystemArchivistConfig>>\n\n/** @description Currently only a read-only archivist that loads payloads from filesystem\n * but allows for future expansion to read/write\n */\n@creatableModule()\nexport class FilesystemArchivist<TParams extends FilesystemArchivistParams = FilesystemArchivistParams>\n extends AbstractArchivist<TParams>\n implements ArchivistInstance\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FilesystemArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = FilesystemArchivistConfigSchema\n\n private _memoryArchivist?: MemoryArchivist\n\n get filePath() {\n return this.config?.filePath ?? 'archivist.xyo.json'\n }\n\n override get queries() {\n return [ArchivistAllQuerySchema, ArchivistCommitQuerySchema, ...super.queries]\n }\n\n private get memoryArchivist() {\n return assertEx(this._memoryArchivist)\n }\n\n private static async dataFromRawJson(rawJson: string) {\n const data: FileSystemArchivistData = JSON.parse(rawJson)\n assertEx(typeof data === 'object', () => 'Archivist Data must be object')\n assertEx(Array.isArray(data.payloads), () => 'Archivist Data \"payloads\" field must be array of payloads')\n data.payloads = await this.payloadsFromRawPayloads(data.payloads)\n return data\n }\n\n private static async payloadsFromRawPayloads(rawPayloads: Payload[]) {\n //validation should be done in here. I don't believe parse does much validation yet.\n return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)))\n }\n\n protected override allHandler(): PromisableArray<PayloadWithMeta> {\n return this.memoryArchivist.all()\n }\n\n protected override clearHandler(): void | Promise<void> {\n return this.memoryArchivist.clear()\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n return await this.memoryArchivist.commit()\n }\n\n protected override deleteHandler(hashes: Hash[]): PromisableArray<Hash> {\n return this.memoryArchivist.delete(hashes)\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.get(hashes)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.insert(payloads)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this._memoryArchivist = await MemoryArchivist.create({ account: await HDWallet.random() })\n try {\n const data = await FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile())\n await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))))\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.error(error.message)\n })\n return false\n }\n return true\n }\n\n private async rawJsonFromFile() {\n return await readFile(this.filePath, { encoding: 'utf8' })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;ACAA,sBAAyB;AAEzB,oBAAyB;AACzB,mBAA4B;AAG5B,qBAAyB;AACzB,gCAAkC;AAClC,8BAAgC;AAChC,6BAMO;AAEP,0BAAiD;AACjD,6BAA+B;;;;;;;;AAQxB,IAAMA,kCAAmE;AAazE,IAAMC,sBAAN,MAAMA,6BACHC,4CAAAA;SAAAA;;;EAGR,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeH;;EAC5E,OAAyBI,sBAA8BJ;EAE/CK;EAER,IAAIC,WAAW;AACb,WAAO,KAAKC,QAAQD,YAAY;EAClC;EAEA,IAAaE,UAAU;AACrB,WAAO;MAACC;MAAyBC;SAA+B,MAAMF;;EACxE;EAEA,IAAYG,kBAAkB;AAC5B,eAAOC,wBAAS,KAAKP,gBAAgB;EACvC;EAEA,aAAqBQ,gBAAgBC,SAAiB;AACpD,UAAMC,OAAgCC,KAAKC,MAAMH,OAAAA;AACjDF,gCAAS,OAAOG,SAAS,UAAU,MAAM,+BAAA;AACzCH,gCAASM,MAAMC,QAAQJ,KAAKK,QAAQ,GAAG,MAAM,2DAAA;AAC7CL,SAAKK,WAAW,MAAM,KAAKC,wBAAwBN,KAAKK,QAAQ;AAChE,WAAOL;EACT;EAEA,aAAqBM,wBAAwBC,aAAwB;AAEnE,WAAO,MAAMC,QAAQC,IAAIF,YAAYG,IAAI,OAAOC,YAAY,MAAMC,sCAAeC,MAAMF,OAAAA,CAAAA,CAAAA;EACzF;EAEmBG,aAA+C;AAChE,WAAO,KAAKlB,gBAAgBa,IAAG;EACjC;EAEmBM,eAAqC;AACtD,WAAO,KAAKnB,gBAAgBoB,MAAK;EACnC;EAEA,MAAyBC,gBAAmD;AAC1E,WAAO,MAAM,KAAKrB,gBAAgBsB,OAAM;EAC1C;EAEmBC,cAAcC,QAAuC;AACtE,WAAO,KAAKxB,gBAAgByB,OAAOD,MAAAA;EACrC;EAEA,MAAyBE,WAAWF,QAA4C;AAC9E,WAAO,MAAM,KAAKxB,gBAAgB2B,IAAIH,MAAAA;EACxC;EAEA,MAAyBI,cAAcnB,UAAiD;AACtF,WAAO,MAAM,KAAKT,gBAAgB6B,OAAOpB,QAAAA;EAC3C;EAEA,MAAyBqB,eAAe;AACtC,UAAM,MAAMA,aAAAA;AACZ,SAAKpC,mBAAmB,MAAMqC,wCAAgBC,OAAO;MAAEC,SAAS,MAAMC,wBAASC,OAAM;IAAG,CAAA;AACxF,QAAI;AACF,YAAM/B,OAAO,MAAMd,qBAAoBY,gBAAgB,MAAM,KAAKkC,gBAAe,CAAA;AACjF,YAAM,KAAK1C,iBAAiBmC,OAAO,MAAMjB,QAAQC,IAAIT,KAAKK,SAASK,IAAI,CAACC,YAAYC,sCAAeC,MAAMF,OAAAA,CAAAA,CAAAA,CAAAA;IAC3G,SAASsB,IAAI;AACXC,oCAAYD,IAAI,CAACE,UAAAA;AACf,aAAKC,QAAQD,MAAMA,MAAME,OAAO;MAClC,CAAA;AACA,aAAO;IACT;AACA,WAAO;EACT;EAEA,MAAcL,kBAAkB;AAC9B,WAAO,UAAMM,0BAAS,KAAK/C,UAAU;MAAEgD,UAAU;IAAO,CAAA;EAC1D;AACF;;;;","names":["FilesystemArchivistConfigSchema","FilesystemArchivist","AbstractArchivist","configSchemas","defaultConfigSchema","_memoryArchivist","filePath","config","queries","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","memoryArchivist","assertEx","dataFromRawJson","rawJson","data","JSON","parse","Array","isArray","payloads","payloadsFromRawPayloads","rawPayloads","Promise","all","map","payload","PayloadBuilder","build","allHandler","clearHandler","clear","commitHandler","commit","deleteHandler","hashes","delete","getHandler","get","insertHandler","insert","startHandler","MemoryArchivist","create","account","HDWallet","random","rawJsonFromFile","ex","handleError","error","logger","message","readFile","encoding"]}
@@ -1,2 +1,102 @@
1
- var f=Object.defineProperty;var n=(e,r)=>f(e,"name",{value:r,configurable:!0});import{readFile as u}from"node:fs/promises";import{assertEx as l}from"@xylabs/assert";import{handleError as p}from"@xylabs/error";import{HDWallet as w}from"@xyo-network/account";import{AbstractArchivist as v}from"@xyo-network/archivist-abstract";import{MemoryArchivist as A}from"@xyo-network/archivist-memory";import{ArchivistAllQuerySchema as g,ArchivistCommitQuerySchema as b}from"@xyo-network/archivist-model";import{creatableModule as P}from"@xyo-network/module-model";import{PayloadBuilder as h}from"@xyo-network/payload-builder";function d(e,r,t,i){var o=arguments.length,a=o<3?r:i===null?i=Object.getOwnPropertyDescriptor(r,t):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(e,r,t,i);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(a=(o<3?s(a):o>3?s(r,t,a):s(r,t))||a);return o>3&&a&&Object.defineProperty(r,t,a),a}n(d,"_ts_decorate");var y="network.xyo.archivist.filesystem.config",m=class e extends v{static{n(this,"FilesystemArchivist")}static configSchemas=[...super.configSchemas,y];static defaultConfigSchema=y;_memoryArchivist;get filePath(){return this.config?.filePath??"archivist.xyo.json"}get queries(){return[g,b,...super.queries]}get memoryArchivist(){return l(this._memoryArchivist)}static async dataFromRawJson(r){let t=JSON.parse(r);return l(typeof t=="object",()=>"Archivist Data must be object"),l(Array.isArray(t.payloads),()=>'Archivist Data "payloads" field must be array of payloads'),t.payloads=await this.payloadsFromRawPayloads(t.payloads),t}static async payloadsFromRawPayloads(r){return await Promise.all(r.map(async t=>await h.build(t)))}allHandler(){return this.memoryArchivist.all()}clearHandler(){return this.memoryArchivist.clear()}async commitHandler(){return await this.memoryArchivist.commit()}deleteHandler(r){return this.memoryArchivist.delete(r)}async getHandler(r){return await this.memoryArchivist.get(r)}async insertHandler(r){return await this.memoryArchivist.insert(r)}async startHandler(){await super.startHandler(),this._memoryArchivist=await A.create({account:await w.random()});try{let r=await e.dataFromRawJson(await this.rawJsonFromFile());await this._memoryArchivist.insert(await Promise.all(r.payloads.map(t=>h.build(t))))}catch(r){return p(r,t=>{this.logger?.error(t.message)}),!1}return!0}async rawJsonFromFile(){return await u(this.filePath,{encoding:"utf8"})}};m=d([P()],m);export{m as FilesystemArchivist,y as FilesystemArchivistConfigSchema};
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/FilesystemArchivist.ts
5
+ import { readFile } from "node:fs/promises";
6
+ import { assertEx } from "@xylabs/assert";
7
+ import { handleError } from "@xylabs/error";
8
+ import { HDWallet } from "@xyo-network/account";
9
+ import { AbstractArchivist } from "@xyo-network/archivist-abstract";
10
+ import { MemoryArchivist } from "@xyo-network/archivist-memory";
11
+ import { ArchivistAllQuerySchema, ArchivistCommitQuerySchema } from "@xyo-network/archivist-model";
12
+ import { creatableModule } from "@xyo-network/module-model";
13
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
14
+ function _ts_decorate(decorators, target, key, desc) {
15
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
19
+ }
20
+ __name(_ts_decorate, "_ts_decorate");
21
+ var FilesystemArchivistConfigSchema = "network.xyo.archivist.filesystem.config";
22
+ var FilesystemArchivist = class _FilesystemArchivist extends AbstractArchivist {
23
+ static {
24
+ __name(this, "FilesystemArchivist");
25
+ }
26
+ static configSchemas = [
27
+ ...super.configSchemas,
28
+ FilesystemArchivistConfigSchema
29
+ ];
30
+ static defaultConfigSchema = FilesystemArchivistConfigSchema;
31
+ _memoryArchivist;
32
+ get filePath() {
33
+ return this.config?.filePath ?? "archivist.xyo.json";
34
+ }
35
+ get queries() {
36
+ return [
37
+ ArchivistAllQuerySchema,
38
+ ArchivistCommitQuerySchema,
39
+ ...super.queries
40
+ ];
41
+ }
42
+ get memoryArchivist() {
43
+ return assertEx(this._memoryArchivist);
44
+ }
45
+ static async dataFromRawJson(rawJson) {
46
+ const data = JSON.parse(rawJson);
47
+ assertEx(typeof data === "object", () => "Archivist Data must be object");
48
+ assertEx(Array.isArray(data.payloads), () => 'Archivist Data "payloads" field must be array of payloads');
49
+ data.payloads = await this.payloadsFromRawPayloads(data.payloads);
50
+ return data;
51
+ }
52
+ static async payloadsFromRawPayloads(rawPayloads) {
53
+ return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)));
54
+ }
55
+ allHandler() {
56
+ return this.memoryArchivist.all();
57
+ }
58
+ clearHandler() {
59
+ return this.memoryArchivist.clear();
60
+ }
61
+ async commitHandler() {
62
+ return await this.memoryArchivist.commit();
63
+ }
64
+ deleteHandler(hashes) {
65
+ return this.memoryArchivist.delete(hashes);
66
+ }
67
+ async getHandler(hashes) {
68
+ return await this.memoryArchivist.get(hashes);
69
+ }
70
+ async insertHandler(payloads) {
71
+ return await this.memoryArchivist.insert(payloads);
72
+ }
73
+ async startHandler() {
74
+ await super.startHandler();
75
+ this._memoryArchivist = await MemoryArchivist.create({
76
+ account: await HDWallet.random()
77
+ });
78
+ try {
79
+ const data = await _FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile());
80
+ await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))));
81
+ } catch (ex) {
82
+ handleError(ex, (error) => {
83
+ this.logger?.error(error.message);
84
+ });
85
+ return false;
86
+ }
87
+ return true;
88
+ }
89
+ async rawJsonFromFile() {
90
+ return await readFile(this.filePath, {
91
+ encoding: "utf8"
92
+ });
93
+ }
94
+ };
95
+ FilesystemArchivist = _ts_decorate([
96
+ creatableModule()
97
+ ], FilesystemArchivist);
98
+ export {
99
+ FilesystemArchivist,
100
+ FilesystemArchivistConfigSchema
101
+ };
2
102
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/FilesystemArchivist.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises'\n\nimport { assertEx } from '@xylabs/assert'\nimport { handleError } from '@xylabs/error'\nimport { Hash } from '@xylabs/hex'\nimport { PromisableArray } from '@xylabs/promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport {\n ArchivistAllQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistInstance,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model'\n\nexport interface FileSystemArchivistData {\n payloads: Payload[]\n}\n\nexport type FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\nexport const FilesystemArchivistConfigSchema: FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\n\nexport type FilesystemArchivistConfig = ArchivistConfig<{\n filePath?: string\n schema: FilesystemArchivistConfigSchema\n}>\n\nexport type FilesystemArchivistParams = ArchivistParams<AnyConfigSchema<FilesystemArchivistConfig>>\n\n/** @description Currently only a read-only archivist that loads payloads from filesystem\n * but allows for future expansion to read/write\n */\n@creatableModule()\nexport class FilesystemArchivist<TParams extends FilesystemArchivistParams = FilesystemArchivistParams>\n extends AbstractArchivist<TParams>\n implements ArchivistInstance\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FilesystemArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = FilesystemArchivistConfigSchema\n\n private _memoryArchivist?: MemoryArchivist\n\n get filePath() {\n return this.config?.filePath ?? 'archivist.xyo.json'\n }\n\n override get queries() {\n return [ArchivistAllQuerySchema, ArchivistCommitQuerySchema, ...super.queries]\n }\n\n private get memoryArchivist() {\n return assertEx(this._memoryArchivist)\n }\n\n private static async dataFromRawJson(rawJson: string) {\n const data: FileSystemArchivistData = JSON.parse(rawJson)\n assertEx(typeof data === 'object', () => 'Archivist Data must be object')\n assertEx(Array.isArray(data.payloads), () => 'Archivist Data \"payloads\" field must be array of payloads')\n data.payloads = await this.payloadsFromRawPayloads(data.payloads)\n return data\n }\n\n private static async payloadsFromRawPayloads(rawPayloads: Payload[]) {\n //validation should be done in here. I don't believe parse does much validation yet.\n return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)))\n }\n\n protected override allHandler(): PromisableArray<PayloadWithMeta> {\n return this.memoryArchivist.all()\n }\n\n protected override clearHandler(): void | Promise<void> {\n return this.memoryArchivist.clear()\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n return await this.memoryArchivist.commit()\n }\n\n protected override deleteHandler(hashes: Hash[]): PromisableArray<Hash> {\n return this.memoryArchivist.delete(hashes)\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.get(hashes)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.insert(payloads)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this._memoryArchivist = await MemoryArchivist.create({ account: await HDWallet.random() })\n try {\n const data = await FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile())\n await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))))\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.error(error.message)\n })\n return false\n }\n return true\n }\n\n private async rawJsonFromFile() {\n return await readFile(this.filePath, { encoding: 'utf8' })\n }\n}\n"],"mappings":"+EAAA,OAASA,YAAAA,MAAgB,mBAEzB,OAASC,YAAAA,MAAgB,iBACzB,OAASC,eAAAA,MAAmB,gBAG5B,OAASC,YAAAA,MAAgB,uBACzB,OAASC,qBAAAA,MAAyB,kCAClC,OAASC,mBAAAA,MAAuB,gCAChC,OACEC,2BAAAA,EACAC,8BAAAA,MAIK,+BAEP,OAA0BC,mBAAAA,MAAuB,4BACjD,OAASC,kBAAAA,MAAsB,wXAQxB,IAAMC,EAAmE,0CAanEC,EAAN,MAAMA,UACHC,CAAAA,OAAAA,CAAAA,EAAAA,4BAGR,OAAyBC,cAA0B,IAAI,MAAMA,cAAeH,GAC5E,OAAyBI,oBAA8BJ,EAE/CK,iBAER,IAAIC,UAAW,CACb,OAAO,KAAKC,QAAQD,UAAY,oBAClC,CAEA,IAAaE,SAAU,CACrB,MAAO,CAACC,EAAyBC,KAA+B,MAAMF,QACxE,CAEA,IAAYG,iBAAkB,CAC5B,OAAOC,EAAS,KAAKP,gBAAgB,CACvC,CAEA,aAAqBQ,gBAAgBC,EAAiB,CACpD,IAAMC,EAAgCC,KAAKC,MAAMH,CAAAA,EACjDF,OAAAA,EAAS,OAAOG,GAAS,SAAU,IAAM,+BAAA,EACzCH,EAASM,MAAMC,QAAQJ,EAAKK,QAAQ,EAAG,IAAM,2DAAA,EAC7CL,EAAKK,SAAW,MAAM,KAAKC,wBAAwBN,EAAKK,QAAQ,EACzDL,CACT,CAEA,aAAqBM,wBAAwBC,EAAwB,CAEnE,OAAO,MAAMC,QAAQC,IAAIF,EAAYG,IAAI,MAAOC,GAAY,MAAMC,EAAeC,MAAMF,CAAAA,CAAAA,CAAAA,CACzF,CAEmBG,YAA+C,CAChE,OAAO,KAAKlB,gBAAgBa,IAAG,CACjC,CAEmBM,cAAqC,CACtD,OAAO,KAAKnB,gBAAgBoB,MAAK,CACnC,CAEA,MAAyBC,eAAmD,CAC1E,OAAO,MAAM,KAAKrB,gBAAgBsB,OAAM,CAC1C,CAEmBC,cAAcC,EAAuC,CACtE,OAAO,KAAKxB,gBAAgByB,OAAOD,CAAAA,CACrC,CAEA,MAAyBE,WAAWF,EAA4C,CAC9E,OAAO,MAAM,KAAKxB,gBAAgB2B,IAAIH,CAAAA,CACxC,CAEA,MAAyBI,cAAcnB,EAAiD,CACtF,OAAO,MAAM,KAAKT,gBAAgB6B,OAAOpB,CAAAA,CAC3C,CAEA,MAAyBqB,cAAe,CACtC,MAAM,MAAMA,aAAAA,EACZ,KAAKpC,iBAAmB,MAAMqC,EAAgBC,OAAO,CAAEC,QAAS,MAAMC,EAASC,OAAM,CAAG,CAAA,EACxF,GAAI,CACF,IAAM/B,EAAO,MAAMd,EAAoBY,gBAAgB,MAAM,KAAKkC,gBAAe,CAAA,EACjF,MAAM,KAAK1C,iBAAiBmC,OAAO,MAAMjB,QAAQC,IAAIT,EAAKK,SAASK,IAAKC,GAAYC,EAAeC,MAAMF,CAAAA,CAAAA,CAAAA,CAAAA,CAC3G,OAASsB,EAAI,CACXC,OAAAA,EAAYD,EAAKE,GAAAA,CACf,KAAKC,QAAQD,MAAMA,EAAME,OAAO,CAClC,CAAA,EACO,EACT,CACA,MAAO,EACT,CAEA,MAAcL,iBAAkB,CAC9B,OAAO,MAAMM,EAAS,KAAK/C,SAAU,CAAEgD,SAAU,MAAO,CAAA,CAC1D,CACF","names":["readFile","assertEx","handleError","HDWallet","AbstractArchivist","MemoryArchivist","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","creatableModule","PayloadBuilder","FilesystemArchivistConfigSchema","FilesystemArchivist","AbstractArchivist","configSchemas","defaultConfigSchema","_memoryArchivist","filePath","config","queries","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","memoryArchivist","assertEx","dataFromRawJson","rawJson","data","JSON","parse","Array","isArray","payloads","payloadsFromRawPayloads","rawPayloads","Promise","all","map","payload","PayloadBuilder","build","allHandler","clearHandler","clear","commitHandler","commit","deleteHandler","hashes","delete","getHandler","get","insertHandler","insert","startHandler","MemoryArchivist","create","account","HDWallet","random","rawJsonFromFile","ex","handleError","error","logger","message","readFile","encoding"]}
1
+ {"version":3,"sources":["../../src/FilesystemArchivist.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises'\n\nimport { assertEx } from '@xylabs/assert'\nimport { handleError } from '@xylabs/error'\nimport { Hash } from '@xylabs/hex'\nimport { PromisableArray } from '@xylabs/promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport {\n ArchivistAllQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistInstance,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model'\n\nexport interface FileSystemArchivistData {\n payloads: Payload[]\n}\n\nexport type FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\nexport const FilesystemArchivistConfigSchema: FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\n\nexport type FilesystemArchivistConfig = ArchivistConfig<{\n filePath?: string\n schema: FilesystemArchivistConfigSchema\n}>\n\nexport type FilesystemArchivistParams = ArchivistParams<AnyConfigSchema<FilesystemArchivistConfig>>\n\n/** @description Currently only a read-only archivist that loads payloads from filesystem\n * but allows for future expansion to read/write\n */\n@creatableModule()\nexport class FilesystemArchivist<TParams extends FilesystemArchivistParams = FilesystemArchivistParams>\n extends AbstractArchivist<TParams>\n implements ArchivistInstance\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FilesystemArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = FilesystemArchivistConfigSchema\n\n private _memoryArchivist?: MemoryArchivist\n\n get filePath() {\n return this.config?.filePath ?? 'archivist.xyo.json'\n }\n\n override get queries() {\n return [ArchivistAllQuerySchema, ArchivistCommitQuerySchema, ...super.queries]\n }\n\n private get memoryArchivist() {\n return assertEx(this._memoryArchivist)\n }\n\n private static async dataFromRawJson(rawJson: string) {\n const data: FileSystemArchivistData = JSON.parse(rawJson)\n assertEx(typeof data === 'object', () => 'Archivist Data must be object')\n assertEx(Array.isArray(data.payloads), () => 'Archivist Data \"payloads\" field must be array of payloads')\n data.payloads = await this.payloadsFromRawPayloads(data.payloads)\n return data\n }\n\n private static async payloadsFromRawPayloads(rawPayloads: Payload[]) {\n //validation should be done in here. I don't believe parse does much validation yet.\n return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)))\n }\n\n protected override allHandler(): PromisableArray<PayloadWithMeta> {\n return this.memoryArchivist.all()\n }\n\n protected override clearHandler(): void | Promise<void> {\n return this.memoryArchivist.clear()\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n return await this.memoryArchivist.commit()\n }\n\n protected override deleteHandler(hashes: Hash[]): PromisableArray<Hash> {\n return this.memoryArchivist.delete(hashes)\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.get(hashes)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.insert(payloads)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this._memoryArchivist = await MemoryArchivist.create({ account: await HDWallet.random() })\n try {\n const data = await FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile())\n await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))))\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.error(error.message)\n })\n return false\n }\n return true\n }\n\n private async rawJsonFromFile() {\n return await readFile(this.filePath, { encoding: 'utf8' })\n }\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AAEzB,SAASC,gBAAgB;AACzB,SAASC,mBAAmB;AAG5B,SAASC,gBAAgB;AACzB,SAASC,yBAAyB;AAClC,SAASC,uBAAuB;AAChC,SACEC,yBACAC,kCAIK;AAEP,SAA0BC,uBAAuB;AACjD,SAASC,sBAAsB;;;;;;;;AAQxB,IAAMC,kCAAmE;AAazE,IAAMC,sBAAN,MAAMA,6BACHC,kBAAAA;SAAAA;;;EAGR,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeH;;EAC5E,OAAyBI,sBAA8BJ;EAE/CK;EAER,IAAIC,WAAW;AACb,WAAO,KAAKC,QAAQD,YAAY;EAClC;EAEA,IAAaE,UAAU;AACrB,WAAO;MAACC;MAAyBC;SAA+B,MAAMF;;EACxE;EAEA,IAAYG,kBAAkB;AAC5B,WAAOC,SAAS,KAAKP,gBAAgB;EACvC;EAEA,aAAqBQ,gBAAgBC,SAAiB;AACpD,UAAMC,OAAgCC,KAAKC,MAAMH,OAAAA;AACjDF,aAAS,OAAOG,SAAS,UAAU,MAAM,+BAAA;AACzCH,aAASM,MAAMC,QAAQJ,KAAKK,QAAQ,GAAG,MAAM,2DAAA;AAC7CL,SAAKK,WAAW,MAAM,KAAKC,wBAAwBN,KAAKK,QAAQ;AAChE,WAAOL;EACT;EAEA,aAAqBM,wBAAwBC,aAAwB;AAEnE,WAAO,MAAMC,QAAQC,IAAIF,YAAYG,IAAI,OAAOC,YAAY,MAAMC,eAAeC,MAAMF,OAAAA,CAAAA,CAAAA;EACzF;EAEmBG,aAA+C;AAChE,WAAO,KAAKlB,gBAAgBa,IAAG;EACjC;EAEmBM,eAAqC;AACtD,WAAO,KAAKnB,gBAAgBoB,MAAK;EACnC;EAEA,MAAyBC,gBAAmD;AAC1E,WAAO,MAAM,KAAKrB,gBAAgBsB,OAAM;EAC1C;EAEmBC,cAAcC,QAAuC;AACtE,WAAO,KAAKxB,gBAAgByB,OAAOD,MAAAA;EACrC;EAEA,MAAyBE,WAAWF,QAA4C;AAC9E,WAAO,MAAM,KAAKxB,gBAAgB2B,IAAIH,MAAAA;EACxC;EAEA,MAAyBI,cAAcnB,UAAiD;AACtF,WAAO,MAAM,KAAKT,gBAAgB6B,OAAOpB,QAAAA;EAC3C;EAEA,MAAyBqB,eAAe;AACtC,UAAM,MAAMA,aAAAA;AACZ,SAAKpC,mBAAmB,MAAMqC,gBAAgBC,OAAO;MAAEC,SAAS,MAAMC,SAASC,OAAM;IAAG,CAAA;AACxF,QAAI;AACF,YAAM/B,OAAO,MAAMd,qBAAoBY,gBAAgB,MAAM,KAAKkC,gBAAe,CAAA;AACjF,YAAM,KAAK1C,iBAAiBmC,OAAO,MAAMjB,QAAQC,IAAIT,KAAKK,SAASK,IAAI,CAACC,YAAYC,eAAeC,MAAMF,OAAAA,CAAAA,CAAAA,CAAAA;IAC3G,SAASsB,IAAI;AACXC,kBAAYD,IAAI,CAACE,UAAAA;AACf,aAAKC,QAAQD,MAAMA,MAAME,OAAO;MAClC,CAAA;AACA,aAAO;IACT;AACA,WAAO;EACT;EAEA,MAAcL,kBAAkB;AAC9B,WAAO,MAAMM,SAAS,KAAK/C,UAAU;MAAEgD,UAAU;IAAO,CAAA;EAC1D;AACF;;;;","names":["readFile","assertEx","handleError","HDWallet","AbstractArchivist","MemoryArchivist","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","creatableModule","PayloadBuilder","FilesystemArchivistConfigSchema","FilesystemArchivist","AbstractArchivist","configSchemas","defaultConfigSchema","_memoryArchivist","filePath","config","queries","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","memoryArchivist","assertEx","dataFromRawJson","rawJson","data","JSON","parse","Array","isArray","payloads","payloadsFromRawPayloads","rawPayloads","Promise","all","map","payload","PayloadBuilder","build","allHandler","clearHandler","clear","commitHandler","commit","deleteHandler","hashes","delete","getHandler","get","insertHandler","insert","startHandler","MemoryArchivist","create","account","HDWallet","random","rawJsonFromFile","ex","handleError","error","logger","message","readFile","encoding"]}
@@ -1,2 +1,134 @@
1
- "use strict";var m=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var J=Reflect.get;var D=(a,r,t)=>r in a?m(a,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[r]=t;var d=(a,r)=>m(a,"name",{value:r,configurable:!0});var F=(a,r)=>{for(var t in r)m(a,t,{get:r[t],enumerable:!0})},O=(a,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of R(r))!j.call(a,i)&&i!==t&&m(a,i,{get:()=>r[i],enumerable:!(e=x(r,i))||e.enumerable});return a};var C=a=>O(m({},"__esModule",{value:!0}),a);var u=(a,r,t)=>D(a,typeof r!="symbol"?r+"":r,t);var w=(a,r,t)=>J(S(a),t,r);var E={};F(E,{FilesystemArchivist:()=>n,FilesystemArchivistConfigSchema:()=>p});module.exports=C(E);var v=require("fs/promises"),l=require("@xylabs/assert"),A=require("@xylabs/error"),g=require("@xyo-network/account"),b=require("@xyo-network/archivist-abstract"),P=require("@xyo-network/archivist-memory"),h=require("@xyo-network/archivist-model"),H=require("@xyo-network/module-model"),y=require("@xyo-network/payload-builder");function q(a,r,t,e){var i=arguments.length,o=i<3?r:e===null?e=Object.getOwnPropertyDescriptor(r,t):e,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(a,r,t,e);else for(var f=a.length-1;f>=0;f--)(c=a[f])&&(o=(i<3?c(o):i>3?c(r,t,o):c(r,t))||o);return i>3&&o&&Object.defineProperty(r,t,o),o}d(q,"_ts_decorate");var p="network.xyo.archivist.filesystem.config",s=class s extends b.AbstractArchivist{_memoryArchivist;get filePath(){var r;return((r=this.config)==null?void 0:r.filePath)??"archivist.xyo.json"}get queries(){return[h.ArchivistAllQuerySchema,h.ArchivistCommitQuerySchema,...super.queries]}get memoryArchivist(){return(0,l.assertEx)(this._memoryArchivist)}static async dataFromRawJson(r){let t=JSON.parse(r);return(0,l.assertEx)(typeof t=="object",()=>"Archivist Data must be object"),(0,l.assertEx)(Array.isArray(t.payloads),()=>'Archivist Data "payloads" field must be array of payloads'),t.payloads=await this.payloadsFromRawPayloads(t.payloads),t}static async payloadsFromRawPayloads(r){return await Promise.all(r.map(async t=>await y.PayloadBuilder.build(t)))}allHandler(){return this.memoryArchivist.all()}clearHandler(){return this.memoryArchivist.clear()}async commitHandler(){return await this.memoryArchivist.commit()}deleteHandler(r){return this.memoryArchivist.delete(r)}async getHandler(r){return await this.memoryArchivist.get(r)}async insertHandler(r){return await this.memoryArchivist.insert(r)}async startHandler(){await super.startHandler(),this._memoryArchivist=await P.MemoryArchivist.create({account:await g.HDWallet.random()});try{let r=await s.dataFromRawJson(await this.rawJsonFromFile());await this._memoryArchivist.insert(await Promise.all(r.payloads.map(t=>y.PayloadBuilder.build(t))))}catch(r){return(0,A.handleError)(r,t=>{var e;(e=this.logger)==null||e.error(t.message)}),!1}return!0}async rawJsonFromFile(){return await(0,v.readFile)(this.filePath,{encoding:"utf8"})}};d(s,"FilesystemArchivist"),u(s,"configSchemas",[...w(s,s,"configSchemas"),p]),u(s,"defaultConfigSchema",p);var n=s;n=q([(0,H.creatableModule)()],n);0&&(module.exports={FilesystemArchivist,FilesystemArchivistConfigSchema});
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __reflectGet = Reflect.get;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
24
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
25
+
26
+ // src/index.ts
27
+ var src_exports = {};
28
+ __export(src_exports, {
29
+ FilesystemArchivist: () => FilesystemArchivist,
30
+ FilesystemArchivistConfigSchema: () => FilesystemArchivistConfigSchema
31
+ });
32
+ module.exports = __toCommonJS(src_exports);
33
+
34
+ // src/FilesystemArchivist.ts
35
+ var import_promises = require("fs/promises");
36
+ var import_assert = require("@xylabs/assert");
37
+ var import_error = require("@xylabs/error");
38
+ var import_account = require("@xyo-network/account");
39
+ var import_archivist_abstract = require("@xyo-network/archivist-abstract");
40
+ var import_archivist_memory = require("@xyo-network/archivist-memory");
41
+ var import_archivist_model = require("@xyo-network/archivist-model");
42
+ var import_module_model = require("@xyo-network/module-model");
43
+ var import_payload_builder = require("@xyo-network/payload-builder");
44
+ function _ts_decorate(decorators, target, key, desc) {
45
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
47
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
48
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
49
+ }
50
+ __name(_ts_decorate, "_ts_decorate");
51
+ var FilesystemArchivistConfigSchema = "network.xyo.archivist.filesystem.config";
52
+ var _FilesystemArchivist = class _FilesystemArchivist extends import_archivist_abstract.AbstractArchivist {
53
+ _memoryArchivist;
54
+ get filePath() {
55
+ var _a;
56
+ return ((_a = this.config) == null ? void 0 : _a.filePath) ?? "archivist.xyo.json";
57
+ }
58
+ get queries() {
59
+ return [
60
+ import_archivist_model.ArchivistAllQuerySchema,
61
+ import_archivist_model.ArchivistCommitQuerySchema,
62
+ ...super.queries
63
+ ];
64
+ }
65
+ get memoryArchivist() {
66
+ return (0, import_assert.assertEx)(this._memoryArchivist);
67
+ }
68
+ static async dataFromRawJson(rawJson) {
69
+ const data = JSON.parse(rawJson);
70
+ (0, import_assert.assertEx)(typeof data === "object", () => "Archivist Data must be object");
71
+ (0, import_assert.assertEx)(Array.isArray(data.payloads), () => 'Archivist Data "payloads" field must be array of payloads');
72
+ data.payloads = await this.payloadsFromRawPayloads(data.payloads);
73
+ return data;
74
+ }
75
+ static async payloadsFromRawPayloads(rawPayloads) {
76
+ return await Promise.all(rawPayloads.map(async (payload) => await import_payload_builder.PayloadBuilder.build(payload)));
77
+ }
78
+ allHandler() {
79
+ return this.memoryArchivist.all();
80
+ }
81
+ clearHandler() {
82
+ return this.memoryArchivist.clear();
83
+ }
84
+ async commitHandler() {
85
+ return await this.memoryArchivist.commit();
86
+ }
87
+ deleteHandler(hashes) {
88
+ return this.memoryArchivist.delete(hashes);
89
+ }
90
+ async getHandler(hashes) {
91
+ return await this.memoryArchivist.get(hashes);
92
+ }
93
+ async insertHandler(payloads) {
94
+ return await this.memoryArchivist.insert(payloads);
95
+ }
96
+ async startHandler() {
97
+ await super.startHandler();
98
+ this._memoryArchivist = await import_archivist_memory.MemoryArchivist.create({
99
+ account: await import_account.HDWallet.random()
100
+ });
101
+ try {
102
+ const data = await _FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile());
103
+ await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => import_payload_builder.PayloadBuilder.build(payload))));
104
+ } catch (ex) {
105
+ (0, import_error.handleError)(ex, (error) => {
106
+ var _a;
107
+ (_a = this.logger) == null ? void 0 : _a.error(error.message);
108
+ });
109
+ return false;
110
+ }
111
+ return true;
112
+ }
113
+ async rawJsonFromFile() {
114
+ return await (0, import_promises.readFile)(this.filePath, {
115
+ encoding: "utf8"
116
+ });
117
+ }
118
+ };
119
+ __name(_FilesystemArchivist, "FilesystemArchivist");
120
+ __publicField(_FilesystemArchivist, "configSchemas", [
121
+ ...__superGet(_FilesystemArchivist, _FilesystemArchivist, "configSchemas"),
122
+ FilesystemArchivistConfigSchema
123
+ ]);
124
+ __publicField(_FilesystemArchivist, "defaultConfigSchema", FilesystemArchivistConfigSchema);
125
+ var FilesystemArchivist = _FilesystemArchivist;
126
+ FilesystemArchivist = _ts_decorate([
127
+ (0, import_module_model.creatableModule)()
128
+ ], FilesystemArchivist);
129
+ // Annotate the CommonJS export names for ESM import in node:
130
+ 0 && (module.exports = {
131
+ FilesystemArchivist,
132
+ FilesystemArchivistConfigSchema
133
+ });
2
134
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/FilesystemArchivist.ts"],"sourcesContent":["export * from './FilesystemArchivist'\n","import { readFile } from 'node:fs/promises'\n\nimport { assertEx } from '@xylabs/assert'\nimport { handleError } from '@xylabs/error'\nimport { Hash } from '@xylabs/hex'\nimport { PromisableArray } from '@xylabs/promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport {\n ArchivistAllQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistInstance,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model'\n\nexport interface FileSystemArchivistData {\n payloads: Payload[]\n}\n\nexport type FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\nexport const FilesystemArchivistConfigSchema: FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\n\nexport type FilesystemArchivistConfig = ArchivistConfig<{\n filePath?: string\n schema: FilesystemArchivistConfigSchema\n}>\n\nexport type FilesystemArchivistParams = ArchivistParams<AnyConfigSchema<FilesystemArchivistConfig>>\n\n/** @description Currently only a read-only archivist that loads payloads from filesystem\n * but allows for future expansion to read/write\n */\n@creatableModule()\nexport class FilesystemArchivist<TParams extends FilesystemArchivistParams = FilesystemArchivistParams>\n extends AbstractArchivist<TParams>\n implements ArchivistInstance\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FilesystemArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = FilesystemArchivistConfigSchema\n\n private _memoryArchivist?: MemoryArchivist\n\n get filePath() {\n return this.config?.filePath ?? 'archivist.xyo.json'\n }\n\n override get queries() {\n return [ArchivistAllQuerySchema, ArchivistCommitQuerySchema, ...super.queries]\n }\n\n private get memoryArchivist() {\n return assertEx(this._memoryArchivist)\n }\n\n private static async dataFromRawJson(rawJson: string) {\n const data: FileSystemArchivistData = JSON.parse(rawJson)\n assertEx(typeof data === 'object', () => 'Archivist Data must be object')\n assertEx(Array.isArray(data.payloads), () => 'Archivist Data \"payloads\" field must be array of payloads')\n data.payloads = await this.payloadsFromRawPayloads(data.payloads)\n return data\n }\n\n private static async payloadsFromRawPayloads(rawPayloads: Payload[]) {\n //validation should be done in here. I don't believe parse does much validation yet.\n return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)))\n }\n\n protected override allHandler(): PromisableArray<PayloadWithMeta> {\n return this.memoryArchivist.all()\n }\n\n protected override clearHandler(): void | Promise<void> {\n return this.memoryArchivist.clear()\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n return await this.memoryArchivist.commit()\n }\n\n protected override deleteHandler(hashes: Hash[]): PromisableArray<Hash> {\n return this.memoryArchivist.delete(hashes)\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.get(hashes)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.insert(payloads)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this._memoryArchivist = await MemoryArchivist.create({ account: await HDWallet.random() })\n try {\n const data = await FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile())\n await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))))\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.error(error.message)\n })\n return false\n }\n return true\n }\n\n private async rawJsonFromFile() {\n return await readFile(this.filePath, { encoding: 'utf8' })\n }\n}\n"],"mappings":"yqBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,oCAAAC,IAAA,eAAAC,EAAAJ,GCAA,IAAAK,EAAyB,uBAEzBC,EAAyB,0BACzBC,EAA4B,yBAG5BC,EAAyB,gCACzBC,EAAkC,2CAClCC,EAAgC,yCAChCC,EAMO,wCAEPC,EAAiD,qCACjDC,EAA+B,iYAQxB,IAAMC,EAAmE,0CAanEC,EAAN,MAAMA,UACHC,mBAAAA,CAMAC,iBAER,IAAIC,UAAW,OACb,QAAOC,EAAA,KAAKC,SAAL,YAAAD,EAAaD,WAAY,oBAClC,CAEA,IAAaG,SAAU,CACrB,MAAO,CAACC,0BAAyBC,gCAA+B,MAAMF,QACxE,CAEA,IAAYG,iBAAkB,CAC5B,SAAOC,YAAS,KAAKR,gBAAgB,CACvC,CAEA,aAAqBS,gBAAgBC,EAAiB,CACpD,IAAMC,EAAgCC,KAAKC,MAAMH,CAAAA,EACjDF,qBAAS,OAAOG,GAAS,SAAU,IAAM,+BAAA,KACzCH,YAASM,MAAMC,QAAQJ,EAAKK,QAAQ,EAAG,IAAM,2DAAA,EAC7CL,EAAKK,SAAW,MAAM,KAAKC,wBAAwBN,EAAKK,QAAQ,EACzDL,CACT,CAEA,aAAqBM,wBAAwBC,EAAwB,CAEnE,OAAO,MAAMC,QAAQC,IAAIF,EAAYG,IAAI,MAAOC,GAAY,MAAMC,iBAAeC,MAAMF,CAAAA,CAAAA,CAAAA,CACzF,CAEmBG,YAA+C,CAChE,OAAO,KAAKlB,gBAAgBa,IAAG,CACjC,CAEmBM,cAAqC,CACtD,OAAO,KAAKnB,gBAAgBoB,MAAK,CACnC,CAEA,MAAyBC,eAAmD,CAC1E,OAAO,MAAM,KAAKrB,gBAAgBsB,OAAM,CAC1C,CAEmBC,cAAcC,EAAuC,CACtE,OAAO,KAAKxB,gBAAgByB,OAAOD,CAAAA,CACrC,CAEA,MAAyBE,WAAWF,EAA4C,CAC9E,OAAO,MAAM,KAAKxB,gBAAgB2B,IAAIH,CAAAA,CACxC,CAEA,MAAyBI,cAAcnB,EAAiD,CACtF,OAAO,MAAM,KAAKT,gBAAgB6B,OAAOpB,CAAAA,CAC3C,CAEA,MAAyBqB,cAAe,CACtC,MAAM,MAAMA,aAAAA,EACZ,KAAKrC,iBAAmB,MAAMsC,kBAAgBC,OAAO,CAAEC,QAAS,MAAMC,WAASC,OAAM,CAAG,CAAA,EACxF,GAAI,CACF,IAAM/B,EAAO,MAAMb,EAAoBW,gBAAgB,MAAM,KAAKkC,gBAAe,CAAA,EACjF,MAAM,KAAK3C,iBAAiBoC,OAAO,MAAMjB,QAAQC,IAAIT,EAAKK,SAASK,IAAKC,GAAYC,iBAAeC,MAAMF,CAAAA,CAAAA,CAAAA,CAAAA,CAC3G,OAASsB,EAAI,CACXC,wBAAYD,EAAKE,GAAAA,QACf5C,EAAA,KAAK6C,SAAL,MAAA7C,EAAa4C,MAAMA,EAAME,QAC3B,CAAA,EACO,EACT,CACA,MAAO,EACT,CAEA,MAAcL,iBAAkB,CAC9B,OAAO,QAAMM,YAAS,KAAKhD,SAAU,CAAEiD,SAAU,MAAO,CAAA,CAC1D,CACF,EA3EUnD,EAAAA,EAAAA,uBAGRoD,EAJWrD,EAIcsD,gBAA0B,IAAIC,EAAAC,IAAMF,iBAAevD,IAC5EsD,EALWrD,EAKcyD,sBAA8B1D,GALlD,IAAMC,EAANwD","names":["src_exports","__export","FilesystemArchivist","FilesystemArchivistConfigSchema","__toCommonJS","import_promises","import_assert","import_error","import_account","import_archivist_abstract","import_archivist_memory","import_archivist_model","import_module_model","import_payload_builder","FilesystemArchivistConfigSchema","FilesystemArchivist","AbstractArchivist","_memoryArchivist","filePath","_a","config","queries","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","memoryArchivist","assertEx","dataFromRawJson","rawJson","data","JSON","parse","Array","isArray","payloads","payloadsFromRawPayloads","rawPayloads","Promise","all","map","payload","PayloadBuilder","build","allHandler","clearHandler","clear","commitHandler","commit","deleteHandler","hashes","delete","getHandler","get","insertHandler","insert","startHandler","MemoryArchivist","create","account","HDWallet","random","rawJsonFromFile","ex","handleError","error","logger","message","readFile","encoding","__publicField","configSchemas","__superGet","_FilesystemArchivist","defaultConfigSchema"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/FilesystemArchivist.ts"],"sourcesContent":["export * from './FilesystemArchivist'\n","import { readFile } from 'node:fs/promises'\n\nimport { assertEx } from '@xylabs/assert'\nimport { handleError } from '@xylabs/error'\nimport { Hash } from '@xylabs/hex'\nimport { PromisableArray } from '@xylabs/promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport {\n ArchivistAllQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistInstance,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model'\n\nexport interface FileSystemArchivistData {\n payloads: Payload[]\n}\n\nexport type FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\nexport const FilesystemArchivistConfigSchema: FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\n\nexport type FilesystemArchivistConfig = ArchivistConfig<{\n filePath?: string\n schema: FilesystemArchivistConfigSchema\n}>\n\nexport type FilesystemArchivistParams = ArchivistParams<AnyConfigSchema<FilesystemArchivistConfig>>\n\n/** @description Currently only a read-only archivist that loads payloads from filesystem\n * but allows for future expansion to read/write\n */\n@creatableModule()\nexport class FilesystemArchivist<TParams extends FilesystemArchivistParams = FilesystemArchivistParams>\n extends AbstractArchivist<TParams>\n implements ArchivistInstance\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FilesystemArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = FilesystemArchivistConfigSchema\n\n private _memoryArchivist?: MemoryArchivist\n\n get filePath() {\n return this.config?.filePath ?? 'archivist.xyo.json'\n }\n\n override get queries() {\n return [ArchivistAllQuerySchema, ArchivistCommitQuerySchema, ...super.queries]\n }\n\n private get memoryArchivist() {\n return assertEx(this._memoryArchivist)\n }\n\n private static async dataFromRawJson(rawJson: string) {\n const data: FileSystemArchivistData = JSON.parse(rawJson)\n assertEx(typeof data === 'object', () => 'Archivist Data must be object')\n assertEx(Array.isArray(data.payloads), () => 'Archivist Data \"payloads\" field must be array of payloads')\n data.payloads = await this.payloadsFromRawPayloads(data.payloads)\n return data\n }\n\n private static async payloadsFromRawPayloads(rawPayloads: Payload[]) {\n //validation should be done in here. I don't believe parse does much validation yet.\n return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)))\n }\n\n protected override allHandler(): PromisableArray<PayloadWithMeta> {\n return this.memoryArchivist.all()\n }\n\n protected override clearHandler(): void | Promise<void> {\n return this.memoryArchivist.clear()\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n return await this.memoryArchivist.commit()\n }\n\n protected override deleteHandler(hashes: Hash[]): PromisableArray<Hash> {\n return this.memoryArchivist.delete(hashes)\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.get(hashes)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.insert(payloads)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this._memoryArchivist = await MemoryArchivist.create({ account: await HDWallet.random() })\n try {\n const data = await FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile())\n await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))))\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.error(error.message)\n })\n return false\n }\n return true\n }\n\n private async rawJsonFromFile() {\n return await readFile(this.filePath, { encoding: 'utf8' })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;ACAA,sBAAyB;AAEzB,oBAAyB;AACzB,mBAA4B;AAG5B,qBAAyB;AACzB,gCAAkC;AAClC,8BAAgC;AAChC,6BAMO;AAEP,0BAAiD;AACjD,6BAA+B;;;;;;;;AAQxB,IAAMA,kCAAmE;AAazE,IAAMC,uBAAN,MAAMA,6BACHC,4CAAAA;EAMAC;EAER,IAAIC,WAAW;;AACb,aAAO,UAAKC,WAAL,mBAAaD,aAAY;EAClC;EAEA,IAAaE,UAAU;AACrB,WAAO;MAACC;MAAyBC;SAA+B,MAAMF;;EACxE;EAEA,IAAYG,kBAAkB;AAC5B,eAAOC,wBAAS,KAAKP,gBAAgB;EACvC;EAEA,aAAqBQ,gBAAgBC,SAAiB;AACpD,UAAMC,OAAgCC,KAAKC,MAAMH,OAAAA;AACjDF,gCAAS,OAAOG,SAAS,UAAU,MAAM,+BAAA;AACzCH,gCAASM,MAAMC,QAAQJ,KAAKK,QAAQ,GAAG,MAAM,2DAAA;AAC7CL,SAAKK,WAAW,MAAM,KAAKC,wBAAwBN,KAAKK,QAAQ;AAChE,WAAOL;EACT;EAEA,aAAqBM,wBAAwBC,aAAwB;AAEnE,WAAO,MAAMC,QAAQC,IAAIF,YAAYG,IAAI,OAAOC,YAAY,MAAMC,sCAAeC,MAAMF,OAAAA,CAAAA,CAAAA;EACzF;EAEmBG,aAA+C;AAChE,WAAO,KAAKlB,gBAAgBa,IAAG;EACjC;EAEmBM,eAAqC;AACtD,WAAO,KAAKnB,gBAAgBoB,MAAK;EACnC;EAEA,MAAyBC,gBAAmD;AAC1E,WAAO,MAAM,KAAKrB,gBAAgBsB,OAAM;EAC1C;EAEmBC,cAAcC,QAAuC;AACtE,WAAO,KAAKxB,gBAAgByB,OAAOD,MAAAA;EACrC;EAEA,MAAyBE,WAAWF,QAA4C;AAC9E,WAAO,MAAM,KAAKxB,gBAAgB2B,IAAIH,MAAAA;EACxC;EAEA,MAAyBI,cAAcnB,UAAiD;AACtF,WAAO,MAAM,KAAKT,gBAAgB6B,OAAOpB,QAAAA;EAC3C;EAEA,MAAyBqB,eAAe;AACtC,UAAM,MAAMA,aAAAA;AACZ,SAAKpC,mBAAmB,MAAMqC,wCAAgBC,OAAO;MAAEC,SAAS,MAAMC,wBAASC,OAAM;IAAG,CAAA;AACxF,QAAI;AACF,YAAM/B,OAAO,MAAMZ,qBAAoBU,gBAAgB,MAAM,KAAKkC,gBAAe,CAAA;AACjF,YAAM,KAAK1C,iBAAiBmC,OAAO,MAAMjB,QAAQC,IAAIT,KAAKK,SAASK,IAAI,CAACC,YAAYC,sCAAeC,MAAMF,OAAAA,CAAAA,CAAAA,CAAAA;IAC3G,SAASsB,IAAI;AACXC,oCAAYD,IAAI,CAACE,UAAAA;;AACf,mBAAKC,WAAL,mBAAaD,MAAMA,MAAME;MAC3B,CAAA;AACA,aAAO;IACT;AACA,WAAO;EACT;EAEA,MAAcL,kBAAkB;AAC9B,WAAO,UAAMM,0BAAS,KAAK/C,UAAU;MAAEgD,UAAU;IAAO,CAAA;EAC1D;AACF;AA3EUlD;AAGR,cAJWD,sBAIcoD,iBAA0B;KAAI,uDAAMA;EAAerD;;AAC5E,cALWC,sBAKcqD,uBAA8BtD;AALlD,IAAMC,sBAAN;;;;","names":["FilesystemArchivistConfigSchema","FilesystemArchivist","AbstractArchivist","_memoryArchivist","filePath","config","queries","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","memoryArchivist","assertEx","dataFromRawJson","rawJson","data","JSON","parse","Array","isArray","payloads","payloadsFromRawPayloads","rawPayloads","Promise","all","map","payload","PayloadBuilder","build","allHandler","clearHandler","clear","commitHandler","commit","deleteHandler","hashes","delete","getHandler","get","insertHandler","insert","startHandler","MemoryArchivist","create","account","HDWallet","random","rawJsonFromFile","ex","handleError","error","logger","message","readFile","encoding","configSchemas","defaultConfigSchema"]}
@@ -1,2 +1,108 @@
1
- var d=Object.defineProperty;var w=Object.getPrototypeOf;var v=Reflect.get;var A=(a,r,t)=>r in a?d(a,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[r]=t;var l=(a,r)=>d(a,"name",{value:r,configurable:!0});var h=(a,r,t)=>A(a,typeof r!="symbol"?r+"":r,t);var u=(a,r,t)=>v(w(a),t,r);import{readFile as b}from"node:fs/promises";import{assertEx as f}from"@xylabs/assert";import{handleError as P}from"@xylabs/error";import{HDWallet as H}from"@xyo-network/account";import{AbstractArchivist as x}from"@xyo-network/archivist-abstract";import{MemoryArchivist as R}from"@xyo-network/archivist-memory";import{ArchivistAllQuerySchema as S,ArchivistCommitQuerySchema as j}from"@xyo-network/archivist-model";import{creatableModule as J}from"@xyo-network/module-model";import{PayloadBuilder as y}from"@xyo-network/payload-builder";function g(a,r,t,o){var s=arguments.length,e=s<3?r:o===null?o=Object.getOwnPropertyDescriptor(r,t):o,m;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(a,r,t,o);else for(var c=a.length-1;c>=0;c--)(m=a[c])&&(e=(s<3?m(e):s>3?m(r,t,e):m(r,t))||e);return s>3&&e&&Object.defineProperty(r,t,e),e}l(g,"_ts_decorate");var p="network.xyo.archivist.filesystem.config",i=class i extends x{_memoryArchivist;get filePath(){var r;return((r=this.config)==null?void 0:r.filePath)??"archivist.xyo.json"}get queries(){return[S,j,...super.queries]}get memoryArchivist(){return f(this._memoryArchivist)}static async dataFromRawJson(r){let t=JSON.parse(r);return f(typeof t=="object",()=>"Archivist Data must be object"),f(Array.isArray(t.payloads),()=>'Archivist Data "payloads" field must be array of payloads'),t.payloads=await this.payloadsFromRawPayloads(t.payloads),t}static async payloadsFromRawPayloads(r){return await Promise.all(r.map(async t=>await y.build(t)))}allHandler(){return this.memoryArchivist.all()}clearHandler(){return this.memoryArchivist.clear()}async commitHandler(){return await this.memoryArchivist.commit()}deleteHandler(r){return this.memoryArchivist.delete(r)}async getHandler(r){return await this.memoryArchivist.get(r)}async insertHandler(r){return await this.memoryArchivist.insert(r)}async startHandler(){await super.startHandler(),this._memoryArchivist=await R.create({account:await H.random()});try{let r=await i.dataFromRawJson(await this.rawJsonFromFile());await this._memoryArchivist.insert(await Promise.all(r.payloads.map(t=>y.build(t))))}catch(r){return P(r,t=>{var o;(o=this.logger)==null||o.error(t.message)}),!1}return!0}async rawJsonFromFile(){return await b(this.filePath,{encoding:"utf8"})}};l(i,"FilesystemArchivist"),h(i,"configSchemas",[...u(i,i,"configSchemas"),p]),h(i,"defaultConfigSchema",p);var n=i;n=g([J()],n);export{n as FilesystemArchivist,p as FilesystemArchivistConfigSchema};
1
+ var __defProp = Object.defineProperty;
2
+ var __getProtoOf = Object.getPrototypeOf;
3
+ var __reflectGet = Reflect.get;
4
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
8
+
9
+ // src/FilesystemArchivist.ts
10
+ import { readFile } from "node:fs/promises";
11
+ import { assertEx } from "@xylabs/assert";
12
+ import { handleError } from "@xylabs/error";
13
+ import { HDWallet } from "@xyo-network/account";
14
+ import { AbstractArchivist } from "@xyo-network/archivist-abstract";
15
+ import { MemoryArchivist } from "@xyo-network/archivist-memory";
16
+ import { ArchivistAllQuerySchema, ArchivistCommitQuerySchema } from "@xyo-network/archivist-model";
17
+ import { creatableModule } from "@xyo-network/module-model";
18
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
19
+ function _ts_decorate(decorators, target, key, desc) {
20
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
21
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
22
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
23
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
24
+ }
25
+ __name(_ts_decorate, "_ts_decorate");
26
+ var FilesystemArchivistConfigSchema = "network.xyo.archivist.filesystem.config";
27
+ var _FilesystemArchivist = class _FilesystemArchivist extends AbstractArchivist {
28
+ _memoryArchivist;
29
+ get filePath() {
30
+ var _a;
31
+ return ((_a = this.config) == null ? void 0 : _a.filePath) ?? "archivist.xyo.json";
32
+ }
33
+ get queries() {
34
+ return [
35
+ ArchivistAllQuerySchema,
36
+ ArchivistCommitQuerySchema,
37
+ ...super.queries
38
+ ];
39
+ }
40
+ get memoryArchivist() {
41
+ return assertEx(this._memoryArchivist);
42
+ }
43
+ static async dataFromRawJson(rawJson) {
44
+ const data = JSON.parse(rawJson);
45
+ assertEx(typeof data === "object", () => "Archivist Data must be object");
46
+ assertEx(Array.isArray(data.payloads), () => 'Archivist Data "payloads" field must be array of payloads');
47
+ data.payloads = await this.payloadsFromRawPayloads(data.payloads);
48
+ return data;
49
+ }
50
+ static async payloadsFromRawPayloads(rawPayloads) {
51
+ return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)));
52
+ }
53
+ allHandler() {
54
+ return this.memoryArchivist.all();
55
+ }
56
+ clearHandler() {
57
+ return this.memoryArchivist.clear();
58
+ }
59
+ async commitHandler() {
60
+ return await this.memoryArchivist.commit();
61
+ }
62
+ deleteHandler(hashes) {
63
+ return this.memoryArchivist.delete(hashes);
64
+ }
65
+ async getHandler(hashes) {
66
+ return await this.memoryArchivist.get(hashes);
67
+ }
68
+ async insertHandler(payloads) {
69
+ return await this.memoryArchivist.insert(payloads);
70
+ }
71
+ async startHandler() {
72
+ await super.startHandler();
73
+ this._memoryArchivist = await MemoryArchivist.create({
74
+ account: await HDWallet.random()
75
+ });
76
+ try {
77
+ const data = await _FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile());
78
+ await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))));
79
+ } catch (ex) {
80
+ handleError(ex, (error) => {
81
+ var _a;
82
+ (_a = this.logger) == null ? void 0 : _a.error(error.message);
83
+ });
84
+ return false;
85
+ }
86
+ return true;
87
+ }
88
+ async rawJsonFromFile() {
89
+ return await readFile(this.filePath, {
90
+ encoding: "utf8"
91
+ });
92
+ }
93
+ };
94
+ __name(_FilesystemArchivist, "FilesystemArchivist");
95
+ __publicField(_FilesystemArchivist, "configSchemas", [
96
+ ...__superGet(_FilesystemArchivist, _FilesystemArchivist, "configSchemas"),
97
+ FilesystemArchivistConfigSchema
98
+ ]);
99
+ __publicField(_FilesystemArchivist, "defaultConfigSchema", FilesystemArchivistConfigSchema);
100
+ var FilesystemArchivist = _FilesystemArchivist;
101
+ FilesystemArchivist = _ts_decorate([
102
+ creatableModule()
103
+ ], FilesystemArchivist);
104
+ export {
105
+ FilesystemArchivist,
106
+ FilesystemArchivistConfigSchema
107
+ };
2
108
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/FilesystemArchivist.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises'\n\nimport { assertEx } from '@xylabs/assert'\nimport { handleError } from '@xylabs/error'\nimport { Hash } from '@xylabs/hex'\nimport { PromisableArray } from '@xylabs/promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport {\n ArchivistAllQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistInstance,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model'\n\nexport interface FileSystemArchivistData {\n payloads: Payload[]\n}\n\nexport type FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\nexport const FilesystemArchivistConfigSchema: FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\n\nexport type FilesystemArchivistConfig = ArchivistConfig<{\n filePath?: string\n schema: FilesystemArchivistConfigSchema\n}>\n\nexport type FilesystemArchivistParams = ArchivistParams<AnyConfigSchema<FilesystemArchivistConfig>>\n\n/** @description Currently only a read-only archivist that loads payloads from filesystem\n * but allows for future expansion to read/write\n */\n@creatableModule()\nexport class FilesystemArchivist<TParams extends FilesystemArchivistParams = FilesystemArchivistParams>\n extends AbstractArchivist<TParams>\n implements ArchivistInstance\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FilesystemArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = FilesystemArchivistConfigSchema\n\n private _memoryArchivist?: MemoryArchivist\n\n get filePath() {\n return this.config?.filePath ?? 'archivist.xyo.json'\n }\n\n override get queries() {\n return [ArchivistAllQuerySchema, ArchivistCommitQuerySchema, ...super.queries]\n }\n\n private get memoryArchivist() {\n return assertEx(this._memoryArchivist)\n }\n\n private static async dataFromRawJson(rawJson: string) {\n const data: FileSystemArchivistData = JSON.parse(rawJson)\n assertEx(typeof data === 'object', () => 'Archivist Data must be object')\n assertEx(Array.isArray(data.payloads), () => 'Archivist Data \"payloads\" field must be array of payloads')\n data.payloads = await this.payloadsFromRawPayloads(data.payloads)\n return data\n }\n\n private static async payloadsFromRawPayloads(rawPayloads: Payload[]) {\n //validation should be done in here. I don't believe parse does much validation yet.\n return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)))\n }\n\n protected override allHandler(): PromisableArray<PayloadWithMeta> {\n return this.memoryArchivist.all()\n }\n\n protected override clearHandler(): void | Promise<void> {\n return this.memoryArchivist.clear()\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n return await this.memoryArchivist.commit()\n }\n\n protected override deleteHandler(hashes: Hash[]): PromisableArray<Hash> {\n return this.memoryArchivist.delete(hashes)\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.get(hashes)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.insert(payloads)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this._memoryArchivist = await MemoryArchivist.create({ account: await HDWallet.random() })\n try {\n const data = await FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile())\n await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))))\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.error(error.message)\n })\n return false\n }\n return true\n }\n\n private async rawJsonFromFile() {\n return await readFile(this.filePath, { encoding: 'utf8' })\n }\n}\n"],"mappings":"gSAAA,OAASA,YAAAA,MAAgB,mBAEzB,OAASC,YAAAA,MAAgB,iBACzB,OAASC,eAAAA,MAAmB,gBAG5B,OAASC,YAAAA,MAAgB,uBACzB,OAASC,qBAAAA,MAAyB,kCAClC,OAASC,mBAAAA,MAAuB,gCAChC,OACEC,2BAAAA,EACAC,8BAAAA,MAIK,+BAEP,OAA0BC,mBAAAA,MAAuB,4BACjD,OAASC,kBAAAA,MAAsB,wXAQxB,IAAMC,EAAmE,0CAanEC,EAAN,MAAMA,UACHC,CAAAA,CAMAC,iBAER,IAAIC,UAAW,OACb,QAAOC,EAAA,KAAKC,SAAL,YAAAD,EAAaD,WAAY,oBAClC,CAEA,IAAaG,SAAU,CACrB,MAAO,CAACC,EAAyBC,KAA+B,MAAMF,QACxE,CAEA,IAAYG,iBAAkB,CAC5B,OAAOC,EAAS,KAAKR,gBAAgB,CACvC,CAEA,aAAqBS,gBAAgBC,EAAiB,CACpD,IAAMC,EAAgCC,KAAKC,MAAMH,CAAAA,EACjDF,OAAAA,EAAS,OAAOG,GAAS,SAAU,IAAM,+BAAA,EACzCH,EAASM,MAAMC,QAAQJ,EAAKK,QAAQ,EAAG,IAAM,2DAAA,EAC7CL,EAAKK,SAAW,MAAM,KAAKC,wBAAwBN,EAAKK,QAAQ,EACzDL,CACT,CAEA,aAAqBM,wBAAwBC,EAAwB,CAEnE,OAAO,MAAMC,QAAQC,IAAIF,EAAYG,IAAI,MAAOC,GAAY,MAAMC,EAAeC,MAAMF,CAAAA,CAAAA,CAAAA,CACzF,CAEmBG,YAA+C,CAChE,OAAO,KAAKlB,gBAAgBa,IAAG,CACjC,CAEmBM,cAAqC,CACtD,OAAO,KAAKnB,gBAAgBoB,MAAK,CACnC,CAEA,MAAyBC,eAAmD,CAC1E,OAAO,MAAM,KAAKrB,gBAAgBsB,OAAM,CAC1C,CAEmBC,cAAcC,EAAuC,CACtE,OAAO,KAAKxB,gBAAgByB,OAAOD,CAAAA,CACrC,CAEA,MAAyBE,WAAWF,EAA4C,CAC9E,OAAO,MAAM,KAAKxB,gBAAgB2B,IAAIH,CAAAA,CACxC,CAEA,MAAyBI,cAAcnB,EAAiD,CACtF,OAAO,MAAM,KAAKT,gBAAgB6B,OAAOpB,CAAAA,CAC3C,CAEA,MAAyBqB,cAAe,CACtC,MAAM,MAAMA,aAAAA,EACZ,KAAKrC,iBAAmB,MAAMsC,EAAgBC,OAAO,CAAEC,QAAS,MAAMC,EAASC,OAAM,CAAG,CAAA,EACxF,GAAI,CACF,IAAM/B,EAAO,MAAMb,EAAoBW,gBAAgB,MAAM,KAAKkC,gBAAe,CAAA,EACjF,MAAM,KAAK3C,iBAAiBoC,OAAO,MAAMjB,QAAQC,IAAIT,EAAKK,SAASK,IAAKC,GAAYC,EAAeC,MAAMF,CAAAA,CAAAA,CAAAA,CAAAA,CAC3G,OAASsB,EAAI,CACXC,OAAAA,EAAYD,EAAKE,GAAAA,QACf5C,EAAA,KAAK6C,SAAL,MAAA7C,EAAa4C,MAAMA,EAAME,QAC3B,CAAA,EACO,EACT,CACA,MAAO,EACT,CAEA,MAAcL,iBAAkB,CAC9B,OAAO,MAAMM,EAAS,KAAKhD,SAAU,CAAEiD,SAAU,MAAO,CAAA,CAC1D,CACF,EA3EUnD,EAAAA,EAAAA,uBAGRoD,EAJWrD,EAIcsD,gBAA0B,IAAIC,EAAAC,IAAMF,iBAAevD,IAC5EsD,EALWrD,EAKcyD,sBAA8B1D,GALlD,IAAMC,EAANwD","names":["readFile","assertEx","handleError","HDWallet","AbstractArchivist","MemoryArchivist","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","creatableModule","PayloadBuilder","FilesystemArchivistConfigSchema","FilesystemArchivist","AbstractArchivist","_memoryArchivist","filePath","_a","config","queries","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","memoryArchivist","assertEx","dataFromRawJson","rawJson","data","JSON","parse","Array","isArray","payloads","payloadsFromRawPayloads","rawPayloads","Promise","all","map","payload","PayloadBuilder","build","allHandler","clearHandler","clear","commitHandler","commit","deleteHandler","hashes","delete","getHandler","get","insertHandler","insert","startHandler","MemoryArchivist","create","account","HDWallet","random","rawJsonFromFile","ex","handleError","error","logger","message","readFile","encoding","__publicField","configSchemas","__superGet","_FilesystemArchivist","defaultConfigSchema"]}
1
+ {"version":3,"sources":["../../src/FilesystemArchivist.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises'\n\nimport { assertEx } from '@xylabs/assert'\nimport { handleError } from '@xylabs/error'\nimport { Hash } from '@xylabs/hex'\nimport { PromisableArray } from '@xylabs/promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport {\n ArchivistAllQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistInstance,\n ArchivistParams,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model'\n\nexport interface FileSystemArchivistData {\n payloads: Payload[]\n}\n\nexport type FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\nexport const FilesystemArchivistConfigSchema: FilesystemArchivistConfigSchema = 'network.xyo.archivist.filesystem.config'\n\nexport type FilesystemArchivistConfig = ArchivistConfig<{\n filePath?: string\n schema: FilesystemArchivistConfigSchema\n}>\n\nexport type FilesystemArchivistParams = ArchivistParams<AnyConfigSchema<FilesystemArchivistConfig>>\n\n/** @description Currently only a read-only archivist that loads payloads from filesystem\n * but allows for future expansion to read/write\n */\n@creatableModule()\nexport class FilesystemArchivist<TParams extends FilesystemArchivistParams = FilesystemArchivistParams>\n extends AbstractArchivist<TParams>\n implements ArchivistInstance\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FilesystemArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = FilesystemArchivistConfigSchema\n\n private _memoryArchivist?: MemoryArchivist\n\n get filePath() {\n return this.config?.filePath ?? 'archivist.xyo.json'\n }\n\n override get queries() {\n return [ArchivistAllQuerySchema, ArchivistCommitQuerySchema, ...super.queries]\n }\n\n private get memoryArchivist() {\n return assertEx(this._memoryArchivist)\n }\n\n private static async dataFromRawJson(rawJson: string) {\n const data: FileSystemArchivistData = JSON.parse(rawJson)\n assertEx(typeof data === 'object', () => 'Archivist Data must be object')\n assertEx(Array.isArray(data.payloads), () => 'Archivist Data \"payloads\" field must be array of payloads')\n data.payloads = await this.payloadsFromRawPayloads(data.payloads)\n return data\n }\n\n private static async payloadsFromRawPayloads(rawPayloads: Payload[]) {\n //validation should be done in here. I don't believe parse does much validation yet.\n return await Promise.all(rawPayloads.map(async (payload) => await PayloadBuilder.build(payload)))\n }\n\n protected override allHandler(): PromisableArray<PayloadWithMeta> {\n return this.memoryArchivist.all()\n }\n\n protected override clearHandler(): void | Promise<void> {\n return this.memoryArchivist.clear()\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n return await this.memoryArchivist.commit()\n }\n\n protected override deleteHandler(hashes: Hash[]): PromisableArray<Hash> {\n return this.memoryArchivist.delete(hashes)\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.get(hashes)\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await this.memoryArchivist.insert(payloads)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n this._memoryArchivist = await MemoryArchivist.create({ account: await HDWallet.random() })\n try {\n const data = await FilesystemArchivist.dataFromRawJson(await this.rawJsonFromFile())\n await this._memoryArchivist.insert(await Promise.all(data.payloads.map((payload) => PayloadBuilder.build(payload))))\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.error(error.message)\n })\n return false\n }\n return true\n }\n\n private async rawJsonFromFile() {\n return await readFile(this.filePath, { encoding: 'utf8' })\n }\n}\n"],"mappings":";;;;;;;;;AAAA,SAASA,gBAAgB;AAEzB,SAASC,gBAAgB;AACzB,SAASC,mBAAmB;AAG5B,SAASC,gBAAgB;AACzB,SAASC,yBAAyB;AAClC,SAASC,uBAAuB;AAChC,SACEC,yBACAC,kCAIK;AAEP,SAA0BC,uBAAuB;AACjD,SAASC,sBAAsB;;;;;;;;AAQxB,IAAMC,kCAAmE;AAazE,IAAMC,uBAAN,MAAMA,6BACHC,kBAAAA;EAMAC;EAER,IAAIC,WAAW;;AACb,aAAO,UAAKC,WAAL,mBAAaD,aAAY;EAClC;EAEA,IAAaE,UAAU;AACrB,WAAO;MAACC;MAAyBC;SAA+B,MAAMF;;EACxE;EAEA,IAAYG,kBAAkB;AAC5B,WAAOC,SAAS,KAAKP,gBAAgB;EACvC;EAEA,aAAqBQ,gBAAgBC,SAAiB;AACpD,UAAMC,OAAgCC,KAAKC,MAAMH,OAAAA;AACjDF,aAAS,OAAOG,SAAS,UAAU,MAAM,+BAAA;AACzCH,aAASM,MAAMC,QAAQJ,KAAKK,QAAQ,GAAG,MAAM,2DAAA;AAC7CL,SAAKK,WAAW,MAAM,KAAKC,wBAAwBN,KAAKK,QAAQ;AAChE,WAAOL;EACT;EAEA,aAAqBM,wBAAwBC,aAAwB;AAEnE,WAAO,MAAMC,QAAQC,IAAIF,YAAYG,IAAI,OAAOC,YAAY,MAAMC,eAAeC,MAAMF,OAAAA,CAAAA,CAAAA;EACzF;EAEmBG,aAA+C;AAChE,WAAO,KAAKlB,gBAAgBa,IAAG;EACjC;EAEmBM,eAAqC;AACtD,WAAO,KAAKnB,gBAAgBoB,MAAK;EACnC;EAEA,MAAyBC,gBAAmD;AAC1E,WAAO,MAAM,KAAKrB,gBAAgBsB,OAAM;EAC1C;EAEmBC,cAAcC,QAAuC;AACtE,WAAO,KAAKxB,gBAAgByB,OAAOD,MAAAA;EACrC;EAEA,MAAyBE,WAAWF,QAA4C;AAC9E,WAAO,MAAM,KAAKxB,gBAAgB2B,IAAIH,MAAAA;EACxC;EAEA,MAAyBI,cAAcnB,UAAiD;AACtF,WAAO,MAAM,KAAKT,gBAAgB6B,OAAOpB,QAAAA;EAC3C;EAEA,MAAyBqB,eAAe;AACtC,UAAM,MAAMA,aAAAA;AACZ,SAAKpC,mBAAmB,MAAMqC,gBAAgBC,OAAO;MAAEC,SAAS,MAAMC,SAASC,OAAM;IAAG,CAAA;AACxF,QAAI;AACF,YAAM/B,OAAO,MAAMZ,qBAAoBU,gBAAgB,MAAM,KAAKkC,gBAAe,CAAA;AACjF,YAAM,KAAK1C,iBAAiBmC,OAAO,MAAMjB,QAAQC,IAAIT,KAAKK,SAASK,IAAI,CAACC,YAAYC,eAAeC,MAAMF,OAAAA,CAAAA,CAAAA,CAAAA;IAC3G,SAASsB,IAAI;AACXC,kBAAYD,IAAI,CAACE,UAAAA;;AACf,mBAAKC,WAAL,mBAAaD,MAAMA,MAAME;MAC3B,CAAA;AACA,aAAO;IACT;AACA,WAAO;EACT;EAEA,MAAcL,kBAAkB;AAC9B,WAAO,MAAMM,SAAS,KAAK/C,UAAU;MAAEgD,UAAU;IAAO,CAAA;EAC1D;AACF;AA3EUlD;AAGR,cAJWD,sBAIcoD,iBAA0B;KAAI,uDAAMA;EAAerD;;AAC5E,cALWC,sBAKcqD,uBAA8BtD;AALlD,IAAMC,sBAAN;;;;","names":["readFile","assertEx","handleError","HDWallet","AbstractArchivist","MemoryArchivist","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","creatableModule","PayloadBuilder","FilesystemArchivistConfigSchema","FilesystemArchivist","AbstractArchivist","_memoryArchivist","filePath","config","queries","ArchivistAllQuerySchema","ArchivistCommitQuerySchema","memoryArchivist","assertEx","dataFromRawJson","rawJson","data","JSON","parse","Array","isArray","payloads","payloadsFromRawPayloads","rawPayloads","Promise","all","map","payload","PayloadBuilder","build","allHandler","clearHandler","clear","commitHandler","commit","deleteHandler","hashes","delete","getHandler","get","insertHandler","insert","startHandler","MemoryArchivist","create","account","HDWallet","random","rawJsonFromFile","ex","handleError","error","logger","message","readFile","encoding","configSchemas","defaultConfigSchema"]}
package/package.json CHANGED
@@ -14,18 +14,18 @@
14
14
  "@xylabs/error": "^3.5.1",
15
15
  "@xylabs/hex": "^3.5.1",
16
16
  "@xylabs/promise": "^3.5.1",
17
- "@xyo-network/account": "~2.107.3",
18
- "@xyo-network/archivist-abstract": "~2.107.3",
19
- "@xyo-network/archivist-memory": "~2.107.3",
20
- "@xyo-network/archivist-model": "~2.107.3",
21
- "@xyo-network/boundwitness-model": "~2.107.3",
22
- "@xyo-network/module-model": "~2.107.3",
23
- "@xyo-network/payload-builder": "~2.107.3",
24
- "@xyo-network/payload-model": "~2.107.3"
17
+ "@xyo-network/account": "~2.107.5",
18
+ "@xyo-network/archivist-abstract": "~2.107.5",
19
+ "@xyo-network/archivist-memory": "~2.107.5",
20
+ "@xyo-network/archivist-model": "~2.107.5",
21
+ "@xyo-network/boundwitness-model": "~2.107.5",
22
+ "@xyo-network/module-model": "~2.107.5",
23
+ "@xyo-network/payload-builder": "~2.107.5",
24
+ "@xyo-network/payload-model": "~2.107.5"
25
25
  },
26
26
  "devDependencies": {
27
- "@xylabs/ts-scripts-yarn3": "^3.11.9",
28
- "@xylabs/tsconfig": "^3.11.9",
27
+ "@xylabs/ts-scripts-yarn3": "^3.11.10",
28
+ "@xylabs/tsconfig": "^3.11.10",
29
29
  "typescript": "^5.5.2"
30
30
  },
31
31
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -57,6 +57,6 @@
57
57
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
58
58
  },
59
59
  "sideEffects": false,
60
- "version": "2.107.3",
60
+ "version": "2.107.5",
61
61
  "type": "module"
62
62
  }