@xyo-network/file-browser-plugin 3.4.1 → 3.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,14 @@
1
+ import { Schema } from '@xyo-network/payload-model';
2
+ import { BrowserFileWitnessAdditionalParams } from './Params.ts';
3
+ import { FilePayload } from './Payload.ts';
4
+ import { FileWitness, FileWitnessParams } from './Witness.ts';
5
+ type BrowserFileWitnessParams = FileWitnessParams & BrowserFileWitnessAdditionalParams;
6
+ export declare class BrowserFileWitness extends FileWitness<BrowserFileWitnessParams> {
7
+ static readonly configSchemas: Schema[];
8
+ static readonly defaultConfigSchema: Schema;
9
+ protected observeHandler(): Promise<FilePayload[]>;
10
+ private readBinaryFile;
11
+ private witnessBrowserFile;
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=BrowserFileWitness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserFileWitness.d.ts","sourceRoot":"","sources":["../../src/BrowserFileWitness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAE7D,KAAK,wBAAwB,GAAG,iBAAiB,GAAG,kCAAkC,CAAA;AAEtF,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,wBAAwB,CAAC;IAC3E,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAoD;IACpG,gBAAyB,mBAAmB,EAAE,MAAM,CAA0B;cAErD,cAAc;IAWvC,OAAO,CAAC,cAAc;YAcR,kBAAkB;CAqBjC"}
@@ -0,0 +1,8 @@
1
+ import { WitnessConfig } from '@xyo-network/witness-model';
2
+ export type FileWitnessConfigSchema = 'network.xyo.file.witness.config';
3
+ export declare const FileWitnessConfigSchema: FileWitnessConfigSchema;
4
+ export type FileWitnessConfig = WitnessConfig<{
5
+ schema: FileWitnessConfigSchema;
6
+ storage?: 'data-uri';
7
+ }>;
8
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC;IAC5C,MAAM,EAAE,uBAAuB,CAAA;IAC/B,OAAO,CAAC,EAAE,UAAU,CAAA;CACrB,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export type BrowserFileWitnessAdditionalParams = {
2
+ file?: File;
3
+ };
4
+ //# sourceMappingURL=Params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Params.d.ts","sourceRoot":"","sources":["../../src/Params.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { Payload } from '@xyo-network/payload-model';
2
+ import { FileSchema } from './Schema.ts';
3
+ export type BinaryDataHash = string;
4
+ /** @description File location and optional data */
5
+ export type FilePayload = Payload<{
6
+ created?: number;
7
+ hash: BinaryDataHash;
8
+ length: number;
9
+ /** @field Storage specific meta data */
10
+ meta?: Record<string, string | number>;
11
+ modified?: number;
12
+ uri: string;
13
+ }, FileSchema>;
14
+ export declare const isFilePayload: (x?: unknown | null) => x is FilePayload;
15
+ //# sourceMappingURL=Payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AAEnC,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,OAAO,CAC/B;IACE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;CACZ,EACD,UAAU,CACX,CAAA;AAED,eAAO,MAAM,aAAa,0CAAiD,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { BrowserFileWitness } from './BrowserFileWitness.ts';
2
+ export declare const BrowserFilePlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<BrowserFileWitness>;
3
+ //# sourceMappingURL=PluginBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginBrowser.d.ts","sourceRoot":"","sources":["../../src/PluginBrowser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG5D,eAAO,MAAM,iBAAiB,4FAS3B,CAAA"}
@@ -0,0 +1,3 @@
1
+ export type FileSchema = 'network.xyo.file';
2
+ export declare const FileSchema: FileSchema;
3
+ //# sourceMappingURL=Schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAA;AAC3C,eAAO,MAAM,UAAU,EAAE,UAA+B,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { Promisable } from '@xylabs/promise';
2
+ import { AbstractWitness } from '@xyo-network/abstract-witness';
3
+ import { AnyConfigSchema } from '@xyo-network/module-model';
4
+ import { Payload, Schema } from '@xyo-network/payload-model';
5
+ import { WitnessModule, WitnessParams } from '@xyo-network/witness-model';
6
+ import { FileWitnessConfig } from './Config.ts';
7
+ export type FileWitnessParams = WitnessParams<AnyConfigSchema<FileWitnessConfig>>;
8
+ export declare abstract class FileWitness<TParams extends FileWitnessParams = FileWitnessParams> extends AbstractWitness<TParams> implements WitnessModule {
9
+ static readonly configSchemas: Schema[];
10
+ static readonly defaultConfigSchema: Schema;
11
+ protected observeHandler(payloads?: Payload[]): Promisable<Payload[]>;
12
+ }
13
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAA;AAGxE,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAGjF,8BAAsB,WAAW,CAAC,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAE,YAAW,aAAa;IAChJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAoD;IACpG,gBAAyB,mBAAmB,EAAE,MAAM,CAA0B;cAE3D,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CAG/E"}
@@ -1,72 +1,8 @@
1
- import * as _store__xylabs_object_npm_4_5_1_e31c389195_package from '.store/@xylabs-object-npm-4.5.1-e31c389195/package';
2
- import { Payload, Schema } from '@xyo-network/payload-model';
3
- import { Promisable } from '@xylabs/promise';
4
- import { AbstractWitness } from '@xyo-network/abstract-witness';
5
- import { AnyConfigSchema } from '@xyo-network/module-model';
6
- import { WitnessConfig, WitnessParams, WitnessModule } from '@xyo-network/witness-model';
7
- import * as _xyo_network_payloadset_plugin from '@xyo-network/payloadset-plugin';
8
-
9
- type FileSchema = 'network.xyo.file';
10
- declare const FileSchema: FileSchema;
11
-
12
- type BinaryDataHash = string;
13
- type FilePayload = Payload<{
14
- created?: number;
15
- hash: BinaryDataHash;
16
- length: number;
17
- meta?: Record<string, string | number>;
18
- modified?: number;
19
- uri: string;
20
- }, FileSchema>;
21
- declare const isFilePayload: (x?: unknown | null) => x is _store__xylabs_object_npm_4_5_1_e31c389195_package.DeepRestrictToStringKeys<{
22
- schema: "network.xyo.file";
23
- created?: number | undefined;
24
- hash: BinaryDataHash;
25
- length: number;
26
- meta?: {
27
- [x: string]: string | number;
28
- } | undefined;
29
- modified?: number | undefined;
30
- uri: string;
31
- }>;
32
-
33
- type BrowserFileWitnessAdditionalParams = {
34
- file?: File;
35
- };
36
-
37
- type FileWitnessConfigSchema = 'network.xyo.file.witness.config';
38
- declare const FileWitnessConfigSchema: FileWitnessConfigSchema;
39
- type FileWitnessConfig = WitnessConfig<{
40
- schema: FileWitnessConfigSchema;
41
- storage?: 'data-uri';
42
- }>;
43
-
44
- type FileWitnessParams = WitnessParams<AnyConfigSchema<FileWitnessConfig>>;
45
- declare abstract class FileWitness<TParams extends FileWitnessParams = FileWitnessParams> extends AbstractWitness<TParams> implements WitnessModule {
46
- static readonly configSchemas: Schema[];
47
- static readonly defaultConfigSchema: Schema;
48
- protected observeHandler(payloads?: Payload[]): Promisable<Payload[]>;
49
- }
50
-
51
- type BrowserFileWitnessParams = FileWitnessParams & BrowserFileWitnessAdditionalParams;
52
- declare class BrowserFileWitness extends FileWitness<BrowserFileWitnessParams> {
53
- static readonly configSchemas: Schema[];
54
- static readonly defaultConfigSchema: Schema;
55
- protected observeHandler(): Promise<_store__xylabs_object_npm_4_5_1_e31c389195_package.DeepRestrictToStringKeys<{
56
- schema: "network.xyo.file";
57
- created?: number | undefined;
58
- hash: BinaryDataHash;
59
- length: number;
60
- meta?: {
61
- [x: string]: string | number;
62
- } | undefined;
63
- modified?: number | undefined;
64
- uri: string;
65
- }>[]>;
66
- private readBinaryFile;
67
- private witnessBrowserFile;
68
- }
69
-
70
- declare const BrowserFilePlugin: () => _xyo_network_payloadset_plugin.PayloadSetWitnessPlugin<BrowserFileWitness>;
71
-
72
- export { type BinaryDataHash, BrowserFilePlugin, BrowserFileWitness, type BrowserFileWitnessAdditionalParams, type FilePayload, FileSchema, FileWitness, type FileWitnessConfig, FileWitnessConfigSchema, type FileWitnessParams, BrowserFilePlugin as default, isFilePayload };
1
+ export * from './BrowserFileWitness.ts';
2
+ export * from './Config.ts';
3
+ export * from './Params.ts';
4
+ export * from './Payload.ts';
5
+ export { BrowserFilePlugin, BrowserFilePlugin as default } from './PluginBrowser.ts';
6
+ export * from './Schema.ts';
7
+ export * from './Witness.ts';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACpF,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/BrowserFileWitness.ts","../../src/Config.ts","../../src/Schema.ts","../../src/util/GenerateDataUri.ts","../../src/Witness.ts","../../src/Payload.ts","../../src/PluginBrowser.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Schema } from '@xyo-network/payload-model'\nimport shajs from 'sha.js'\n\nimport { FileWitnessConfigSchema } from './Config.ts'\nimport type { BrowserFileWitnessAdditionalParams } from './Params.ts'\nimport type { FilePayload } from './Payload.ts'\nimport { FileSchema } from './Schema.ts'\nimport { generateDataUri } from './util/index.ts'\nimport type { FileWitnessParams } from './Witness.ts'\nimport { FileWitness } from './Witness.ts'\n\ntype BrowserFileWitnessParams = FileWitnessParams & BrowserFileWitnessAdditionalParams\n\nexport class BrowserFileWitness extends FileWitness<BrowserFileWitnessParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FileWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = FileWitnessConfigSchema\n\n protected override async observeHandler() {\n try {\n const [payload] = await this.witnessBrowserFile()\n const { logger } = this.params\n logger?.log(`BrowserFileWitness: ${await PayloadBuilder.dataHash(payload)}`)\n return [payload]\n } catch (e) {\n throw new Error(`Error reading file: ${e}`)\n }\n }\n\n private readBinaryFile(file: File): Promise<Uint8Array> {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader()\n fileReader.addEventListener('load', (event) => {\n const arrayBuffer = event.target?.result as ArrayBuffer\n resolve(new Uint8Array(arrayBuffer))\n })\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n fileReader.onerror = () => reject(fileReader.error)\n // eslint-disable-next-line unicorn/prefer-blob-reading-methods\n fileReader.readAsArrayBuffer(file)\n })\n }\n\n private async witnessBrowserFile(): Promise<[FilePayload, Uint8Array]> {\n const file = assertEx(this.params.file, () => 'File is missing from params')\n const fileBinary = await this.readBinaryFile(file)\n const result = new Uint8Array(fileBinary)\n const hash = shajs('sha256').update(result).digest('hex').padStart(64, '0')\n\n return [\n {\n hash,\n length: fileBinary.byteLength,\n meta: {\n name: file.name,\n type: file.type,\n },\n modified: file.lastModified,\n schema: FileSchema,\n uri: this.config.storage === 'data-uri' ? generateDataUri(fileBinary) : file.name,\n },\n fileBinary,\n ]\n }\n}\n","import type { WitnessConfig } from '@xyo-network/witness-model'\n\nexport type FileWitnessConfigSchema = 'network.xyo.file.witness.config'\nexport const FileWitnessConfigSchema: FileWitnessConfigSchema = 'network.xyo.file.witness.config'\n\nexport type FileWitnessConfig = WitnessConfig<{\n schema: FileWitnessConfigSchema\n storage?: 'data-uri'\n}>\n","export type FileSchema = 'network.xyo.file'\nexport const FileSchema: FileSchema = 'network.xyo.file'\n","import { base64 } from '@scure/base'\n\nexport const generateDataUri = (data: Uint8Array): string => {\n return `data:application/octet-stream;base64,${base64.encode(data)}`\n}\n","import type { Promisable } from '@xylabs/promise'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport type { AnyConfigSchema } from '@xyo-network/module-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport type { WitnessModule, WitnessParams } from '@xyo-network/witness-model'\n\nimport type { FileWitnessConfig } from './Config.ts'\nimport { FileWitnessConfigSchema } from './Config.ts'\nimport { FileSchema } from './Schema.ts'\n\nexport type FileWitnessParams = WitnessParams<AnyConfigSchema<FileWitnessConfig>>\n\n// Abstract so that derived classes provide a type for the file param and methods to parse it\nexport abstract class FileWitness<TParams extends FileWitnessParams = FileWitnessParams> extends AbstractWitness<TParams> implements WitnessModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FileWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = FileWitnessConfigSchema\n\n protected override observeHandler(payloads?: Payload[]): Promisable<Payload[]> {\n return [{ ...payloads?.[0], schema: FileSchema }]\n }\n}\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { FileSchema } from './Schema.ts'\n\n// eslint-disable-next-line sonarjs/redundant-type-aliases\nexport type BinaryDataHash = string\n\n/** @description File location and optional data */\nexport type FilePayload = Payload<\n {\n created?: number\n hash: BinaryDataHash\n length: number\n /** @field Storage specific meta data */\n meta?: Record<string, string | number>\n modified?: number\n uri: string\n },\n FileSchema\n>\n\nexport const isFilePayload = isPayloadOfSchemaType<FilePayload>(FileSchema)\n","import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { BrowserFileWitness } from './BrowserFileWitness.ts'\nimport { FileSchema } from './Schema.ts'\n\nexport const BrowserFilePlugin = () =>\n createPayloadSetWitnessPlugin<BrowserFileWitness>(\n { required: { [FileSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await BrowserFileWitness.create(params)\n return result\n },\n },\n )\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAE/B,OAAO,WAAW;;;ACAX,IAAM,0BAAmD;;;ACFzD,IAAM,aAAyB;;;ACDtC,SAAS,cAAc;AAEhB,IAAM,kBAAkB,CAAC,SAA6B;AAC3D,SAAO,wCAAwC,OAAO,OAAO,IAAI,CAAC;AACpE;;;ACHA,SAAS,uBAAuB;AAYzB,IAAe,cAAf,cAA0F,gBAAkD;AAAA,EACjJ,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,uBAAuB;AAAA,EACnG,OAAyB,sBAA8B;AAAA,EAEpC,eAAe,UAA6C;AAC7E,WAAO,CAAC,EAAE,GAAG,WAAW,CAAC,GAAG,QAAQ,WAAW,CAAC;AAAA,EAClD;AACF;;;AJLO,IAAM,qBAAN,cAAiC,YAAsC;AAAA,EAC5E,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,uBAAuB;AAAA,EACnG,OAAyB,sBAA8B;AAAA,EAEvD,MAAyB,iBAAiB;AACxC,QAAI;AACF,YAAM,CAAC,OAAO,IAAI,MAAM,KAAK,mBAAmB;AAChD,YAAM,EAAE,OAAO,IAAI,KAAK;AACxB,cAAQ,IAAI,uBAAuB,MAAM,eAAe,SAAS,OAAO,CAAC,EAAE;AAC3E,aAAO,CAAC,OAAO;AAAA,IACjB,SAAS,GAAG;AACV,YAAM,IAAI,MAAM,uBAAuB,CAAC,EAAE;AAAA,IAC5C;AAAA,EACF;AAAA,EAEQ,eAAe,MAAiC;AACtD,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,aAAa,IAAI,WAAW;AAClC,iBAAW,iBAAiB,QAAQ,CAAC,UAAU;AAC7C,cAAM,cAAc,MAAM,QAAQ;AAClC,gBAAQ,IAAI,WAAW,WAAW,CAAC;AAAA,MACrC,CAAC;AAED,iBAAW,UAAU,MAAM,OAAO,WAAW,KAAK;AAElD,iBAAW,kBAAkB,IAAI;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,qBAAyD;AACrE,UAAM,OAAO,SAAS,KAAK,OAAO,MAAM,MAAM,6BAA6B;AAC3E,UAAM,aAAa,MAAM,KAAK,eAAe,IAAI;AACjD,UAAM,SAAS,IAAI,WAAW,UAAU;AACxC,UAAM,OAAO,MAAM,QAAQ,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK,EAAE,SAAS,IAAI,GAAG;AAE1E,WAAO;AAAA,MACL;AAAA,QACE;AAAA,QACA,QAAQ,WAAW;AAAA,QACnB,MAAM;AAAA,UACJ,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,QACb;AAAA,QACA,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,QACR,KAAK,KAAK,OAAO,YAAY,aAAa,gBAAgB,UAAU,IAAI,KAAK;AAAA,MAC/E;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AKhEA,SAAS,6BAA6B;AAqB/B,IAAM,gBAAgB,sBAAmC,UAAU;;;ACtB1E,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;AAKvC,IAAM,oBAAoB,MAC/B;AAAA,EACE,EAAE,UAAU,EAAE,CAAC,UAAU,GAAG,EAAE,GAAG,QAAQ,iBAAiB;AAAA,EAC1D;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,YAAM,SAAS,MAAM,mBAAmB,OAAO,MAAM;AACrD,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/BrowserFileWitness.ts","../../src/Config.ts","../../src/Schema.ts","../../src/util/GenerateDataUri.ts","../../src/Witness.ts","../../src/Payload.ts","../../src/PluginBrowser.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Schema } from '@xyo-network/payload-model'\nimport shajs from 'sha.js'\n\nimport { FileWitnessConfigSchema } from './Config.ts'\nimport { BrowserFileWitnessAdditionalParams } from './Params.ts'\nimport { FilePayload } from './Payload.ts'\nimport { FileSchema } from './Schema.ts'\nimport { generateDataUri } from './util/index.ts'\nimport { FileWitness, FileWitnessParams } from './Witness.ts'\n\ntype BrowserFileWitnessParams = FileWitnessParams & BrowserFileWitnessAdditionalParams\n\nexport class BrowserFileWitness extends FileWitness<BrowserFileWitnessParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FileWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = FileWitnessConfigSchema\n\n protected override async observeHandler() {\n try {\n const [payload] = await this.witnessBrowserFile()\n const { logger } = this.params\n logger?.log(`BrowserFileWitness: ${await PayloadBuilder.dataHash(payload)}`)\n return [payload]\n } catch (e) {\n throw new Error(`Error reading file: ${e}`)\n }\n }\n\n private readBinaryFile(file: File): Promise<Uint8Array> {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader()\n fileReader.addEventListener('load', (event) => {\n const arrayBuffer = event.target?.result as ArrayBuffer\n resolve(new Uint8Array(arrayBuffer))\n })\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n fileReader.onerror = () => reject(fileReader.error)\n // eslint-disable-next-line unicorn/prefer-blob-reading-methods\n fileReader.readAsArrayBuffer(file)\n })\n }\n\n private async witnessBrowserFile(): Promise<[FilePayload, Uint8Array]> {\n const file = assertEx(this.params.file, () => 'File is missing from params')\n const fileBinary = await this.readBinaryFile(file)\n const result = new Uint8Array(fileBinary)\n const hash = shajs('sha256').update(result).digest('hex').padStart(64, '0')\n\n return [\n {\n hash,\n length: fileBinary.byteLength,\n meta: {\n name: file.name,\n type: file.type,\n },\n modified: file.lastModified,\n schema: FileSchema,\n uri: this.config.storage === 'data-uri' ? generateDataUri(fileBinary) : file.name,\n },\n fileBinary,\n ]\n }\n}\n","import { WitnessConfig } from '@xyo-network/witness-model'\n\nexport type FileWitnessConfigSchema = 'network.xyo.file.witness.config'\nexport const FileWitnessConfigSchema: FileWitnessConfigSchema = 'network.xyo.file.witness.config'\n\nexport type FileWitnessConfig = WitnessConfig<{\n schema: FileWitnessConfigSchema\n storage?: 'data-uri'\n}>\n","export type FileSchema = 'network.xyo.file'\nexport const FileSchema: FileSchema = 'network.xyo.file'\n","import { base64 } from '@scure/base'\n\nexport const generateDataUri = (data: Uint8Array): string => {\n return `data:application/octet-stream;base64,${base64.encode(data)}`\n}\n","import { Promisable } from '@xylabs/promise'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { WitnessModule, WitnessParams } from '@xyo-network/witness-model'\n\nimport { FileWitnessConfig, FileWitnessConfigSchema } from './Config.ts'\nimport { FileSchema } from './Schema.ts'\n\nexport type FileWitnessParams = WitnessParams<AnyConfigSchema<FileWitnessConfig>>\n\n// Abstract so that derived classes provide a type for the file param and methods to parse it\nexport abstract class FileWitness<TParams extends FileWitnessParams = FileWitnessParams> extends AbstractWitness<TParams> implements WitnessModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, FileWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = FileWitnessConfigSchema\n\n protected override observeHandler(payloads?: Payload[]): Promisable<Payload[]> {\n return [{ ...payloads?.[0], schema: FileSchema }]\n }\n}\n","import { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { FileSchema } from './Schema.ts'\n\n// eslint-disable-next-line sonarjs/redundant-type-aliases\nexport type BinaryDataHash = string\n\n/** @description File location and optional data */\nexport type FilePayload = Payload<\n {\n created?: number\n hash: BinaryDataHash\n length: number\n /** @field Storage specific meta data */\n meta?: Record<string, string | number>\n modified?: number\n uri: string\n },\n FileSchema\n>\n\nexport const isFilePayload = isPayloadOfSchemaType<FilePayload>(FileSchema)\n","import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { BrowserFileWitness } from './BrowserFileWitness.ts'\nimport { FileSchema } from './Schema.ts'\n\nexport const BrowserFilePlugin = () =>\n createPayloadSetWitnessPlugin<BrowserFileWitness>(\n { required: { [FileSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await BrowserFileWitness.create(params)\n return result\n },\n },\n )\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAE/B,OAAO,WAAW;;;ACAX,IAAM,0BAAmD;;;ACFzD,IAAM,aAAyB;;;ACDtC,SAAS,cAAc;AAEhB,IAAM,kBAAkB,CAAC,SAA6B;AAC3D,SAAO,wCAAwC,OAAO,OAAO,IAAI,CAAC;AACpE;;;ACHA,SAAS,uBAAuB;AAWzB,IAAe,cAAf,cAA0F,gBAAkD;AAAA,EACjJ,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,uBAAuB;AAAA,EACnG,OAAyB,sBAA8B;AAAA,EAEpC,eAAe,UAA6C;AAC7E,WAAO,CAAC,EAAE,GAAG,WAAW,CAAC,GAAG,QAAQ,WAAW,CAAC;AAAA,EAClD;AACF;;;AJLO,IAAM,qBAAN,cAAiC,YAAsC;AAAA,EAC5E,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,uBAAuB;AAAA,EACnG,OAAyB,sBAA8B;AAAA,EAEvD,MAAyB,iBAAiB;AACxC,QAAI;AACF,YAAM,CAAC,OAAO,IAAI,MAAM,KAAK,mBAAmB;AAChD,YAAM,EAAE,OAAO,IAAI,KAAK;AACxB,cAAQ,IAAI,uBAAuB,MAAM,eAAe,SAAS,OAAO,CAAC,EAAE;AAC3E,aAAO,CAAC,OAAO;AAAA,IACjB,SAAS,GAAG;AACV,YAAM,IAAI,MAAM,uBAAuB,CAAC,EAAE;AAAA,IAC5C;AAAA,EACF;AAAA,EAEQ,eAAe,MAAiC;AACtD,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,aAAa,IAAI,WAAW;AAClC,iBAAW,iBAAiB,QAAQ,CAAC,UAAU;AAC7C,cAAM,cAAc,MAAM,QAAQ;AAClC,gBAAQ,IAAI,WAAW,WAAW,CAAC;AAAA,MACrC,CAAC;AAED,iBAAW,UAAU,MAAM,OAAO,WAAW,KAAK;AAElD,iBAAW,kBAAkB,IAAI;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,qBAAyD;AACrE,UAAM,OAAO,SAAS,KAAK,OAAO,MAAM,MAAM,6BAA6B;AAC3E,UAAM,aAAa,MAAM,KAAK,eAAe,IAAI;AACjD,UAAM,SAAS,IAAI,WAAW,UAAU;AACxC,UAAM,OAAO,MAAM,QAAQ,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK,EAAE,SAAS,IAAI,GAAG;AAE1E,WAAO;AAAA,MACL;AAAA,QACE;AAAA,QACA,QAAQ,WAAW;AAAA,QACnB,MAAM;AAAA,UACJ,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,QACb;AAAA,QACA,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,QACR,KAAK,KAAK,OAAO,YAAY,aAAa,gBAAgB,UAAU,IAAI,KAAK;AAAA,MAC/E;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AKhEA,SAAS,6BAAsC;AAqBxC,IAAM,gBAAgB,sBAAmC,UAAU;;;ACrB1E,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;AAKvC,IAAM,oBAAoB,MAC/B;AAAA,EACE,EAAE,UAAU,EAAE,CAAC,UAAU,GAAG,EAAE,GAAG,QAAQ,iBAAiB;AAAA,EAC1D;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,YAAM,SAAS,MAAM,mBAAmB,OAAO,MAAM;AACrD,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare const generateDataUri: (data: Uint8Array) => string;
2
+ //# sourceMappingURL=GenerateDataUri.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateDataUri.d.ts","sourceRoot":"","sources":["../../../src/util/GenerateDataUri.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,GAAI,MAAM,UAAU,KAAG,MAElD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './GenerateDataUri.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/file-browser-plugin",
3
- "version": "3.4.1",
3
+ "version": "3.4.3",
4
4
  "description": "Typescript/Javascript Plugins for XYO Platform",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -32,21 +32,21 @@
32
32
  "@scure/base": "^1.2.4",
33
33
  "@xylabs/assert": "^4.5.1",
34
34
  "@xylabs/promise": "^4.5.1",
35
- "@xyo-network/abstract-witness": "^3.8.5",
36
- "@xyo-network/module-model": "^3.8.5",
37
- "@xyo-network/payload-builder": "^3.8.5",
38
- "@xyo-network/payload-model": "^3.8.5",
39
- "@xyo-network/payloadset-plugin": "^3.8.5",
40
- "@xyo-network/witness-model": "^3.8.5",
35
+ "@xyo-network/abstract-witness": "^3.9.23",
36
+ "@xyo-network/module-model": "^3.9.23",
37
+ "@xyo-network/payload-builder": "^3.9.23",
38
+ "@xyo-network/payload-model": "^3.9.23",
39
+ "@xyo-network/payloadset-plugin": "^3.9.23",
40
+ "@xyo-network/witness-model": "^3.9.23",
41
41
  "sha.js": "^2.4.11"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/sha.js": "^2.4.4",
45
- "@xylabs/ts-scripts-yarn3": "^5.0.22",
46
- "@xylabs/tsconfig": "^5.0.22",
45
+ "@xylabs/ts-scripts-yarn3": "^5.0.39",
46
+ "@xylabs/tsconfig": "^5.0.39",
47
47
  "@xylabs/vitest-extended": "^4.5.1",
48
- "typescript": "^5.7.3",
49
- "vitest": "^3.0.5"
48
+ "typescript": "^5.8.2",
49
+ "vitest": "^3.0.7"
50
50
  },
51
51
  "publishConfig": {
52
52
  "access": "public"
@@ -1,15 +1,14 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { PayloadBuilder } from '@xyo-network/payload-builder'
3
- import type { Schema } from '@xyo-network/payload-model'
3
+ import { Schema } from '@xyo-network/payload-model'
4
4
  import shajs from 'sha.js'
5
5
 
6
6
  import { FileWitnessConfigSchema } from './Config.ts'
7
- import type { BrowserFileWitnessAdditionalParams } from './Params.ts'
8
- import type { FilePayload } from './Payload.ts'
7
+ import { BrowserFileWitnessAdditionalParams } from './Params.ts'
8
+ import { FilePayload } from './Payload.ts'
9
9
  import { FileSchema } from './Schema.ts'
10
10
  import { generateDataUri } from './util/index.ts'
11
- import type { FileWitnessParams } from './Witness.ts'
12
- import { FileWitness } from './Witness.ts'
11
+ import { FileWitness, FileWitnessParams } from './Witness.ts'
13
12
 
14
13
  type BrowserFileWitnessParams = FileWitnessParams & BrowserFileWitnessAdditionalParams
15
14
 
package/src/Config.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { WitnessConfig } from '@xyo-network/witness-model'
1
+ import { WitnessConfig } from '@xyo-network/witness-model'
2
2
 
3
3
  export type FileWitnessConfigSchema = 'network.xyo.file.witness.config'
4
4
  export const FileWitnessConfigSchema: FileWitnessConfigSchema = 'network.xyo.file.witness.config'
package/src/Payload.ts CHANGED
@@ -1,5 +1,4 @@
1
- import type { Payload } from '@xyo-network/payload-model'
2
- import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
1
+ import { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'
3
2
 
4
3
  import { FileSchema } from './Schema.ts'
5
4
 
package/src/Witness.ts CHANGED
@@ -1,11 +1,10 @@
1
- import type { Promisable } from '@xylabs/promise'
1
+ import { Promisable } from '@xylabs/promise'
2
2
  import { AbstractWitness } from '@xyo-network/abstract-witness'
3
- import type { AnyConfigSchema } from '@xyo-network/module-model'
4
- import type { Payload, Schema } from '@xyo-network/payload-model'
5
- import type { WitnessModule, WitnessParams } from '@xyo-network/witness-model'
3
+ import { AnyConfigSchema } from '@xyo-network/module-model'
4
+ import { Payload, Schema } from '@xyo-network/payload-model'
5
+ import { WitnessModule, WitnessParams } from '@xyo-network/witness-model'
6
6
 
7
- import type { FileWitnessConfig } from './Config.ts'
8
- import { FileWitnessConfigSchema } from './Config.ts'
7
+ import { FileWitnessConfig, FileWitnessConfigSchema } from './Config.ts'
9
8
  import { FileSchema } from './Schema.ts'
10
9
 
11
10
  export type FileWitnessParams = WitnessParams<AnyConfigSchema<FileWitnessConfig>>
package/xy.config.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
1
+ import { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
2
2
  const config: XyTsupConfig = {
3
3
  compile: {
4
4
  browser: { src: true },