@xyo-network/url-plugin 2.99.5 → 2.99.6

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,11 +1,8 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/util/hashFile.ts
5
2
  import { createReadStream } from "node:fs";
6
3
  import { fileURLToPath } from "node:url";
7
4
  import { Crypto } from "@xylabs/crypto";
8
- var hashFile = /* @__PURE__ */ __name((url) => {
5
+ var hashFile = (url) => {
9
6
  const path = url.startsWith("file://") ? fileURLToPath(url) : url;
10
7
  const ret = new Promise((resolve, reject) => {
11
8
  const hash = Crypto.createHash("sha256");
@@ -21,13 +18,13 @@ var hashFile = /* @__PURE__ */ __name((url) => {
21
18
  });
22
19
  });
23
20
  return ret;
24
- }, "hashFile");
21
+ };
25
22
 
26
23
  // src/util/hashHttpUrl.ts
27
24
  import http from "node:http";
28
25
  import https from "node:https";
29
26
  import { Crypto as Crypto2 } from "@xylabs/crypto";
30
- var hashHttpUrl = /* @__PURE__ */ __name((url) => {
27
+ var hashHttpUrl = (url) => {
31
28
  const ret = new Promise((resolve, reject) => {
32
29
  const hash = Crypto2.createHash("sha256");
33
30
  const lib = url.startsWith("https") ? https : http;
@@ -43,10 +40,10 @@ var hashHttpUrl = /* @__PURE__ */ __name((url) => {
43
40
  });
44
41
  });
45
42
  return ret;
46
- }, "hashHttpUrl");
43
+ };
47
44
 
48
45
  // src/util/hashUrl.ts
49
- var hashUrl = /* @__PURE__ */ __name((url) => {
46
+ var hashUrl = (url) => {
50
47
  const scheme = url.split("://")[0]?.toLowerCase();
51
48
  switch (scheme) {
52
49
  case "file": {
@@ -60,7 +57,7 @@ var hashUrl = /* @__PURE__ */ __name((url) => {
60
57
  throw new Error(`Unsupported URL scheme: ${scheme}`);
61
58
  }
62
59
  }
63
- }, "hashUrl");
60
+ };
64
61
 
65
62
  // src/Witness/Config.ts
66
63
  import { UrlSchema } from "@xyo-network/url-payload-plugin";
@@ -71,13 +68,7 @@ import { assertEx } from "@xylabs/assert";
71
68
  import { AbstractWitness } from "@xyo-network/abstract-witness";
72
69
  import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
73
70
  var UrlWitness = class _UrlWitness extends AbstractWitness {
74
- static {
75
- __name(this, "UrlWitness");
76
- }
77
- static configSchemas = [
78
- ...super.configSchemas,
79
- UrlWitnessConfigSchema
80
- ];
71
+ static configSchemas = [...super.configSchemas, UrlWitnessConfigSchema];
81
72
  static defaultConfigSchema = UrlWitnessConfigSchema;
82
73
  static hashUrl = void 0;
83
74
  get urls() {
@@ -87,21 +78,14 @@ var UrlWitness = class _UrlWitness extends AbstractWitness {
87
78
  if (_UrlWitness.hashUrl === void 0) {
88
79
  throw new Error("Set UrlWitness.hashUrl before using");
89
80
  }
90
- const urls = this.urls?.map((url) => ({
91
- schema: UrlSchema2,
92
- url
93
- })) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
94
- return {
95
- schema: UrlSchema2,
96
- url: p.url
97
- };
81
+ const urls = this.urls?.map((url) => ({ schema: UrlSchema2, url })) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
82
+ return { schema: UrlSchema2, url: p.url };
98
83
  });
99
- const hashed = await Promise.all(urls.map(async (url) => {
100
- return {
101
- ...url,
102
- hash: await assertEx(_UrlWitness.hashUrl, () => "Set UrlWitness.hashUrl before using")(url.url)
103
- };
104
- }));
84
+ const hashed = await Promise.all(
85
+ urls.map(async (url) => {
86
+ return { ...url, hash: await assertEx(_UrlWitness.hashUrl, () => "Set UrlWitness.hashUrl before using")(url.url) };
87
+ })
88
+ );
105
89
  return hashed;
106
90
  }
107
91
  };
@@ -110,17 +94,15 @@ var UrlWitness = class _UrlWitness extends AbstractWitness {
110
94
  import { PayloadSetSchema } from "@xyo-network/payload-model";
111
95
  import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
112
96
  import { UrlSchema as UrlSchema3 } from "@xyo-network/url-payload-plugin";
113
- var UrlPlugin = /* @__PURE__ */ __name(() => createPayloadSetWitnessPlugin({
114
- required: {
115
- [UrlSchema3]: 1
116
- },
117
- schema: PayloadSetSchema
118
- }, {
119
- witness: /* @__PURE__ */ __name(async (params) => {
120
- const result = await UrlWitness.create(params);
121
- return result;
122
- }, "witness")
123
- }), "UrlPlugin");
97
+ var UrlPlugin = () => createPayloadSetWitnessPlugin(
98
+ { required: { [UrlSchema3]: 1 }, schema: PayloadSetSchema },
99
+ {
100
+ witness: async (params) => {
101
+ const result = await UrlWitness.create(params);
102
+ return result;
103
+ }
104
+ }
105
+ );
124
106
 
125
107
  // src/indexNode.ts
126
108
  UrlWitness.hashUrl = hashUrl;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/hashFile.ts","../../src/util/hashHttpUrl.ts","../../src/util/hashUrl.ts","../../src/Witness/Config.ts","../../src/Witness/Witness.ts","../../src/PluginNode.ts","../../src/indexNode.ts"],"sourcesContent":["import { createReadStream } from 'node:fs'\nimport { fileURLToPath } from 'node:url'\n\nimport { Crypto } from '@xylabs/crypto'\n\nexport const hashFile = (url: string): Promise<string> => {\n const path = url.startsWith('file://') ? fileURLToPath(url) : url\n const ret = new Promise<string>((resolve, reject) => {\n const hash = Crypto.createHash('sha256')\n const stream = createReadStream(path)\n stream.on('data', (data) => {\n hash.update(data)\n })\n stream.on('end', () => {\n resolve(hash.digest('hex'))\n })\n stream.on('error', (err) => {\n reject(err)\n })\n })\n return ret\n}\n","import http from 'node:http'\nimport https from 'node:https'\n\nimport { Crypto } from '@xylabs/crypto'\n\nexport const hashHttpUrl = (url: string): Promise<string> => {\n const ret = new Promise<string>((resolve, reject) => {\n const hash = Crypto.createHash('sha256')\n const lib = url.startsWith('https') ? https : http\n lib\n .get(url, (res) => {\n res.on('data', (data) => {\n hash.update(data)\n })\n res.on('end', () => {\n resolve(hash.digest('hex'))\n })\n })\n .on('error', (err) => {\n reject(err)\n })\n })\n return ret\n}\n","import { hashFile } from './hashFile.ts'\nimport { hashHttpUrl } from './hashHttpUrl.ts'\n\nexport const hashUrl = (url: string): Promise<string> => {\n const scheme = url.split('://')[0]?.toLowerCase()\n switch (scheme) {\n case 'file': {\n return hashFile(url)\n }\n case 'http':\n case 'https': {\n return hashHttpUrl(url)\n }\n default: {\n throw new Error(`Unsupported URL scheme: ${scheme}`)\n }\n }\n}\n","import { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { WitnessConfig } from '@xyo-network/witness-model'\n\nexport const UrlWitnessConfigSchema = `${UrlSchema}.witness.config` as const\nexport type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema\n\nexport type UrlWitnessConfig = WitnessConfig<{\n schema: UrlWitnessConfigSchema\n urls?: string[]\n}>\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config.ts'\nimport { UrlWitnessParams } from './Params.ts'\n\nexport class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, UrlWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = UrlWitnessConfigSchema\n static hashUrl: ((url: string) => Promise<string>) | undefined = undefined\n\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\n if (UrlWitness.hashUrl === undefined) {\n throw new Error('Set UrlWitness.hashUrl before using')\n }\n const urls: UrlPayload[]\n = this.urls?.map(url => ({ schema: UrlSchema, url }))\n ?? payloads\n .filter((p): p is UrlPayload => p.schema === UrlSchema)\n .map((p) => {\n return { schema: UrlSchema, url: p.url }\n })\n const hashed = await Promise.all(\n urls.map(async (url) => {\n // TODO: Different schema for hashed url\n return { ...url, hash: await assertEx(UrlWitness.hashUrl, () => 'Set UrlWitness.hashUrl before using')(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitness } from './Witness/index.ts'\n\nexport const UrlPlugin = () =>\n createPayloadSetWitnessPlugin<UrlWitness>(\n { required: { [UrlSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await UrlWitness.create(params)\n return result\n },\n },\n )\n","import { hashUrl } from './util/index.ts'\nimport { UrlWitness } from './Witness/index.ts'\n\nUrlWitness.hashUrl = hashUrl\n\n// eslint-disable-next-line import/no-default-export\nexport { UrlPlugin as default, UrlPlugin } from './PluginNode.ts'\nexport * from './Witness/index.ts'\n"],"mappings":"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","names":["createReadStream","fileURLToPath","Crypto","hashFile","url","path","startsWith","fileURLToPath","ret","Promise","resolve","reject","hash","Crypto","createHash","stream","createReadStream","on","data","update","digest","err","http","https","Crypto","hashHttpUrl","url","ret","Promise","resolve","reject","hash","Crypto","createHash","lib","startsWith","https","http","get","res","on","data","update","digest","err","hashUrl","url","scheme","split","toLowerCase","hashFile","hashHttpUrl","Error","UrlSchema","UrlWitnessConfigSchema","assertEx","AbstractWitness","UrlSchema","UrlWitness","AbstractWitness","configSchemas","UrlWitnessConfigSchema","defaultConfigSchema","hashUrl","undefined","urls","config","observeHandler","payloads","Error","map","url","schema","UrlSchema","filter","p","hashed","Promise","all","hash","assertEx","PayloadSetSchema","createPayloadSetWitnessPlugin","UrlSchema","UrlPlugin","createPayloadSetWitnessPlugin","required","UrlSchema","schema","PayloadSetSchema","witness","params","result","UrlWitness","create","UrlWitness","hashUrl"]}
1
+ {"version":3,"sources":["../../src/util/hashFile.ts","../../src/util/hashHttpUrl.ts","../../src/util/hashUrl.ts","../../src/Witness/Config.ts","../../src/Witness/Witness.ts","../../src/PluginNode.ts","../../src/indexNode.ts"],"sourcesContent":["import { createReadStream } from 'node:fs'\nimport { fileURLToPath } from 'node:url'\n\nimport { Crypto } from '@xylabs/crypto'\n\nexport const hashFile = (url: string): Promise<string> => {\n const path = url.startsWith('file://') ? fileURLToPath(url) : url\n const ret = new Promise<string>((resolve, reject) => {\n const hash = Crypto.createHash('sha256')\n const stream = createReadStream(path)\n stream.on('data', (data) => {\n hash.update(data)\n })\n stream.on('end', () => {\n resolve(hash.digest('hex'))\n })\n stream.on('error', (err) => {\n reject(err)\n })\n })\n return ret\n}\n","import http from 'node:http'\nimport https from 'node:https'\n\nimport { Crypto } from '@xylabs/crypto'\n\nexport const hashHttpUrl = (url: string): Promise<string> => {\n const ret = new Promise<string>((resolve, reject) => {\n const hash = Crypto.createHash('sha256')\n const lib = url.startsWith('https') ? https : http\n lib\n .get(url, (res) => {\n res.on('data', (data) => {\n hash.update(data)\n })\n res.on('end', () => {\n resolve(hash.digest('hex'))\n })\n })\n .on('error', (err) => {\n reject(err)\n })\n })\n return ret\n}\n","import { hashFile } from './hashFile.ts'\nimport { hashHttpUrl } from './hashHttpUrl.ts'\n\nexport const hashUrl = (url: string): Promise<string> => {\n const scheme = url.split('://')[0]?.toLowerCase()\n switch (scheme) {\n case 'file': {\n return hashFile(url)\n }\n case 'http':\n case 'https': {\n return hashHttpUrl(url)\n }\n default: {\n throw new Error(`Unsupported URL scheme: ${scheme}`)\n }\n }\n}\n","import { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { WitnessConfig } from '@xyo-network/witness-model'\n\nexport const UrlWitnessConfigSchema = `${UrlSchema}.witness.config` as const\nexport type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema\n\nexport type UrlWitnessConfig = WitnessConfig<{\n schema: UrlWitnessConfigSchema\n urls?: string[]\n}>\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config.ts'\nimport { UrlWitnessParams } from './Params.ts'\n\nexport class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, UrlWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = UrlWitnessConfigSchema\n static hashUrl: ((url: string) => Promise<string>) | undefined = undefined\n\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\n if (UrlWitness.hashUrl === undefined) {\n throw new Error('Set UrlWitness.hashUrl before using')\n }\n const urls: UrlPayload[]\n = this.urls?.map(url => ({ schema: UrlSchema, url }))\n ?? payloads\n .filter((p): p is UrlPayload => p.schema === UrlSchema)\n .map((p) => {\n return { schema: UrlSchema, url: p.url }\n })\n const hashed = await Promise.all(\n urls.map(async (url) => {\n // TODO: Different schema for hashed url\n return { ...url, hash: await assertEx(UrlWitness.hashUrl, () => 'Set UrlWitness.hashUrl before using')(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitness } from './Witness/index.ts'\n\nexport const UrlPlugin = () =>\n createPayloadSetWitnessPlugin<UrlWitness>(\n { required: { [UrlSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await UrlWitness.create(params)\n return result\n },\n },\n )\n","import { hashUrl } from './util/index.ts'\nimport { UrlWitness } from './Witness/index.ts'\n\nUrlWitness.hashUrl = hashUrl\n\n// eslint-disable-next-line import/no-default-export\nexport { UrlPlugin as default, UrlPlugin } from './PluginNode.ts'\nexport * from './Witness/index.ts'\n"],"mappings":"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","names":["Crypto","UrlSchema","UrlSchema","UrlSchema","UrlSchema"]}
@@ -1,8 +1,8 @@
1
1
  import { UrlWitness } from './Witness/index.ts';
2
- export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.url.witness.config";
@@ -1,8 +1,8 @@
1
1
  import { UrlWitness } from './Witness/index.ts';
2
- export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.url.witness.config";
@@ -1,8 +1,8 @@
1
1
  import { UrlWitness } from './Witness/index.ts';
2
- export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.url.witness.config";
@@ -1,8 +1,8 @@
1
1
  import { UrlWitness } from './Witness/index.ts';
2
- export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.url.witness.config";
@@ -1,8 +1,8 @@
1
1
  import { UrlWitness } from './Witness/index.ts';
2
- export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.url.witness.config";
@@ -1,8 +1,8 @@
1
1
  import { UrlWitness } from './Witness/index.ts';
2
- export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("@xylabs/object").BaseParamsFields & {
3
- account?: import("@xyo-network/account-model").AccountInstance | "random";
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
3
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
4
4
  addToResolvers?: boolean;
5
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
5
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
6
6
  allowNameResolution?: boolean;
7
7
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
8
8
  schema: "network.xyo.url.witness.config";
@@ -5,9 +5,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __reflectGet = Reflect.get;
9
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
11
8
  var __export = (target, all) => {
12
9
  for (var name in all)
13
10
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -29,8 +26,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
26
  mod
30
27
  ));
31
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
33
- var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
34
29
 
35
30
  // src/indexNode.ts
36
31
  var indexNode_exports = {};
@@ -46,7 +41,7 @@ module.exports = __toCommonJS(indexNode_exports);
46
41
  var import_node_fs = require("fs");
47
42
  var import_node_url = require("url");
48
43
  var import_crypto = require("@xylabs/crypto");
49
- var hashFile = /* @__PURE__ */ __name((url) => {
44
+ var hashFile = (url) => {
50
45
  const path = url.startsWith("file://") ? (0, import_node_url.fileURLToPath)(url) : url;
51
46
  const ret = new Promise((resolve, reject) => {
52
47
  const hash = import_crypto.Crypto.createHash("sha256");
@@ -62,13 +57,13 @@ var hashFile = /* @__PURE__ */ __name((url) => {
62
57
  });
63
58
  });
64
59
  return ret;
65
- }, "hashFile");
60
+ };
66
61
 
67
62
  // src/util/hashHttpUrl.ts
68
63
  var import_node_http = __toESM(require("http"), 1);
69
64
  var import_node_https = __toESM(require("https"), 1);
70
65
  var import_crypto2 = require("@xylabs/crypto");
71
- var hashHttpUrl = /* @__PURE__ */ __name((url) => {
66
+ var hashHttpUrl = (url) => {
72
67
  const ret = new Promise((resolve, reject) => {
73
68
  const hash = import_crypto2.Crypto.createHash("sha256");
74
69
  const lib = url.startsWith("https") ? import_node_https.default : import_node_http.default;
@@ -84,10 +79,10 @@ var hashHttpUrl = /* @__PURE__ */ __name((url) => {
84
79
  });
85
80
  });
86
81
  return ret;
87
- }, "hashHttpUrl");
82
+ };
88
83
 
89
84
  // src/util/hashUrl.ts
90
- var hashUrl = /* @__PURE__ */ __name((url) => {
85
+ var hashUrl = (url) => {
91
86
  var _a;
92
87
  const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
93
88
  switch (scheme) {
@@ -102,7 +97,7 @@ var hashUrl = /* @__PURE__ */ __name((url) => {
102
97
  throw new Error(`Unsupported URL scheme: ${scheme}`);
103
98
  }
104
99
  }
105
- }, "hashUrl");
100
+ };
106
101
 
107
102
  // src/Witness/Config.ts
108
103
  var import_url_payload_plugin = require("@xyo-network/url-payload-plugin");
@@ -112,7 +107,10 @@ var UrlWitnessConfigSchema = `${import_url_payload_plugin.UrlSchema}.witness.con
112
107
  var import_assert = require("@xylabs/assert");
113
108
  var import_abstract_witness = require("@xyo-network/abstract-witness");
114
109
  var import_url_payload_plugin2 = require("@xyo-network/url-payload-plugin");
115
- var _UrlWitness = class _UrlWitness extends import_abstract_witness.AbstractWitness {
110
+ var UrlWitness = class _UrlWitness extends import_abstract_witness.AbstractWitness {
111
+ static configSchemas = [...super.configSchemas, UrlWitnessConfigSchema];
112
+ static defaultConfigSchema = UrlWitnessConfigSchema;
113
+ static hashUrl = void 0;
116
114
  get urls() {
117
115
  var _a;
118
116
  return (_a = this.config) == null ? void 0 : _a.urls;
@@ -122,48 +120,31 @@ var _UrlWitness = class _UrlWitness extends import_abstract_witness.AbstractWitn
122
120
  if (_UrlWitness.hashUrl === void 0) {
123
121
  throw new Error("Set UrlWitness.hashUrl before using");
124
122
  }
125
- const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({
126
- schema: import_url_payload_plugin2.UrlSchema,
127
- url
128
- }))) ?? payloads.filter((p) => p.schema === import_url_payload_plugin2.UrlSchema).map((p) => {
129
- return {
130
- schema: import_url_payload_plugin2.UrlSchema,
131
- url: p.url
132
- };
123
+ const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({ schema: import_url_payload_plugin2.UrlSchema, url }))) ?? payloads.filter((p) => p.schema === import_url_payload_plugin2.UrlSchema).map((p) => {
124
+ return { schema: import_url_payload_plugin2.UrlSchema, url: p.url };
133
125
  });
134
- const hashed = await Promise.all(urls.map(async (url) => {
135
- return {
136
- ...url,
137
- hash: await (0, import_assert.assertEx)(_UrlWitness.hashUrl, () => "Set UrlWitness.hashUrl before using")(url.url)
138
- };
139
- }));
126
+ const hashed = await Promise.all(
127
+ urls.map(async (url) => {
128
+ return { ...url, hash: await (0, import_assert.assertEx)(_UrlWitness.hashUrl, () => "Set UrlWitness.hashUrl before using")(url.url) };
129
+ })
130
+ );
140
131
  return hashed;
141
132
  }
142
133
  };
143
- __name(_UrlWitness, "UrlWitness");
144
- __publicField(_UrlWitness, "configSchemas", [
145
- ...__superGet(_UrlWitness, _UrlWitness, "configSchemas"),
146
- UrlWitnessConfigSchema
147
- ]);
148
- __publicField(_UrlWitness, "defaultConfigSchema", UrlWitnessConfigSchema);
149
- __publicField(_UrlWitness, "hashUrl");
150
- var UrlWitness = _UrlWitness;
151
134
 
152
135
  // src/PluginNode.ts
153
136
  var import_payload_model = require("@xyo-network/payload-model");
154
137
  var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
155
138
  var import_url_payload_plugin3 = require("@xyo-network/url-payload-plugin");
156
- var UrlPlugin = /* @__PURE__ */ __name(() => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)({
157
- required: {
158
- [import_url_payload_plugin3.UrlSchema]: 1
159
- },
160
- schema: import_payload_model.PayloadSetSchema
161
- }, {
162
- witness: /* @__PURE__ */ __name(async (params) => {
163
- const result = await UrlWitness.create(params);
164
- return result;
165
- }, "witness")
166
- }), "UrlPlugin");
139
+ var UrlPlugin = () => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)(
140
+ { required: { [import_url_payload_plugin3.UrlSchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
141
+ {
142
+ witness: async (params) => {
143
+ const result = await UrlWitness.create(params);
144
+ return result;
145
+ }
146
+ }
147
+ );
167
148
 
168
149
  // src/indexNode.ts
169
150
  UrlWitness.hashUrl = hashUrl;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/indexNode.ts","../../src/util/hashFile.ts","../../src/util/hashHttpUrl.ts","../../src/util/hashUrl.ts","../../src/Witness/Config.ts","../../src/Witness/Witness.ts","../../src/PluginNode.ts"],"sourcesContent":["import { hashUrl } from './util/index.ts'\nimport { UrlWitness } from './Witness/index.ts'\n\nUrlWitness.hashUrl = hashUrl\n\n// eslint-disable-next-line import/no-default-export\nexport { UrlPlugin as default, UrlPlugin } from './PluginNode.ts'\nexport * from './Witness/index.ts'\n","import { createReadStream } from 'node:fs'\nimport { fileURLToPath } from 'node:url'\n\nimport { Crypto } from '@xylabs/crypto'\n\nexport const hashFile = (url: string): Promise<string> => {\n const path = url.startsWith('file://') ? fileURLToPath(url) : url\n const ret = new Promise<string>((resolve, reject) => {\n const hash = Crypto.createHash('sha256')\n const stream = createReadStream(path)\n stream.on('data', (data) => {\n hash.update(data)\n })\n stream.on('end', () => {\n resolve(hash.digest('hex'))\n })\n stream.on('error', (err) => {\n reject(err)\n })\n })\n return ret\n}\n","import http from 'node:http'\nimport https from 'node:https'\n\nimport { Crypto } from '@xylabs/crypto'\n\nexport const hashHttpUrl = (url: string): Promise<string> => {\n const ret = new Promise<string>((resolve, reject) => {\n const hash = Crypto.createHash('sha256')\n const lib = url.startsWith('https') ? https : http\n lib\n .get(url, (res) => {\n res.on('data', (data) => {\n hash.update(data)\n })\n res.on('end', () => {\n resolve(hash.digest('hex'))\n })\n })\n .on('error', (err) => {\n reject(err)\n })\n })\n return ret\n}\n","import { hashFile } from './hashFile.ts'\nimport { hashHttpUrl } from './hashHttpUrl.ts'\n\nexport const hashUrl = (url: string): Promise<string> => {\n const scheme = url.split('://')[0]?.toLowerCase()\n switch (scheme) {\n case 'file': {\n return hashFile(url)\n }\n case 'http':\n case 'https': {\n return hashHttpUrl(url)\n }\n default: {\n throw new Error(`Unsupported URL scheme: ${scheme}`)\n }\n }\n}\n","import { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { WitnessConfig } from '@xyo-network/witness-model'\n\nexport const UrlWitnessConfigSchema = `${UrlSchema}.witness.config` as const\nexport type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema\n\nexport type UrlWitnessConfig = WitnessConfig<{\n schema: UrlWitnessConfigSchema\n urls?: string[]\n}>\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config.ts'\nimport { UrlWitnessParams } from './Params.ts'\n\nexport class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, UrlWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = UrlWitnessConfigSchema\n static hashUrl: ((url: string) => Promise<string>) | undefined = undefined\n\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\n if (UrlWitness.hashUrl === undefined) {\n throw new Error('Set UrlWitness.hashUrl before using')\n }\n const urls: UrlPayload[]\n = this.urls?.map(url => ({ schema: UrlSchema, url }))\n ?? payloads\n .filter((p): p is UrlPayload => p.schema === UrlSchema)\n .map((p) => {\n return { schema: UrlSchema, url: p.url }\n })\n const hashed = await Promise.all(\n urls.map(async (url) => {\n // TODO: Different schema for hashed url\n return { ...url, hash: await assertEx(UrlWitness.hashUrl, () => 'Set UrlWitness.hashUrl before using')(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitness } from './Witness/index.ts'\n\nexport const UrlPlugin = () =>\n createPayloadSetWitnessPlugin<UrlWitness>(\n { required: { [UrlSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await UrlWitness.create(params)\n return result\n },\n },\n )\n"],"mappings":"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","names":["hashFile","url","path","startsWith","fileURLToPath","ret","Promise","resolve","reject","hash","Crypto","createHash","stream","createReadStream","on","data","update","digest","err","import_crypto","hashHttpUrl","url","ret","Promise","resolve","reject","hash","Crypto","createHash","lib","startsWith","https","http","get","res","on","data","update","digest","err","hashUrl","url","scheme","split","toLowerCase","hashFile","hashHttpUrl","Error","UrlWitnessConfigSchema","UrlSchema","import_url_payload_plugin","UrlWitness","AbstractWitness","urls","config","observeHandler","payloads","hashUrl","undefined","Error","map","url","schema","UrlSchema","filter","p","hashed","Promise","all","hash","assertEx","configSchemas","UrlWitnessConfigSchema","defaultConfigSchema","import_url_payload_plugin","UrlPlugin","createPayloadSetWitnessPlugin","required","UrlSchema","schema","PayloadSetSchema","witness","params","result","UrlWitness","create","UrlWitness","hashUrl"]}
1
+ {"version":3,"sources":["../../src/indexNode.ts","../../src/util/hashFile.ts","../../src/util/hashHttpUrl.ts","../../src/util/hashUrl.ts","../../src/Witness/Config.ts","../../src/Witness/Witness.ts","../../src/PluginNode.ts"],"sourcesContent":["import { hashUrl } from './util/index.ts'\nimport { UrlWitness } from './Witness/index.ts'\n\nUrlWitness.hashUrl = hashUrl\n\n// eslint-disable-next-line import/no-default-export\nexport { UrlPlugin as default, UrlPlugin } from './PluginNode.ts'\nexport * from './Witness/index.ts'\n","import { createReadStream } from 'node:fs'\nimport { fileURLToPath } from 'node:url'\n\nimport { Crypto } from '@xylabs/crypto'\n\nexport const hashFile = (url: string): Promise<string> => {\n const path = url.startsWith('file://') ? fileURLToPath(url) : url\n const ret = new Promise<string>((resolve, reject) => {\n const hash = Crypto.createHash('sha256')\n const stream = createReadStream(path)\n stream.on('data', (data) => {\n hash.update(data)\n })\n stream.on('end', () => {\n resolve(hash.digest('hex'))\n })\n stream.on('error', (err) => {\n reject(err)\n })\n })\n return ret\n}\n","import http from 'node:http'\nimport https from 'node:https'\n\nimport { Crypto } from '@xylabs/crypto'\n\nexport const hashHttpUrl = (url: string): Promise<string> => {\n const ret = new Promise<string>((resolve, reject) => {\n const hash = Crypto.createHash('sha256')\n const lib = url.startsWith('https') ? https : http\n lib\n .get(url, (res) => {\n res.on('data', (data) => {\n hash.update(data)\n })\n res.on('end', () => {\n resolve(hash.digest('hex'))\n })\n })\n .on('error', (err) => {\n reject(err)\n })\n })\n return ret\n}\n","import { hashFile } from './hashFile.ts'\nimport { hashHttpUrl } from './hashHttpUrl.ts'\n\nexport const hashUrl = (url: string): Promise<string> => {\n const scheme = url.split('://')[0]?.toLowerCase()\n switch (scheme) {\n case 'file': {\n return hashFile(url)\n }\n case 'http':\n case 'https': {\n return hashHttpUrl(url)\n }\n default: {\n throw new Error(`Unsupported URL scheme: ${scheme}`)\n }\n }\n}\n","import { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { WitnessConfig } from '@xyo-network/witness-model'\n\nexport const UrlWitnessConfigSchema = `${UrlSchema}.witness.config` as const\nexport type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema\n\nexport type UrlWitnessConfig = WitnessConfig<{\n schema: UrlWitnessConfigSchema\n urls?: string[]\n}>\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config.ts'\nimport { UrlWitnessParams } from './Params.ts'\n\nexport class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, UrlWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = UrlWitnessConfigSchema\n static hashUrl: ((url: string) => Promise<string>) | undefined = undefined\n\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\n if (UrlWitness.hashUrl === undefined) {\n throw new Error('Set UrlWitness.hashUrl before using')\n }\n const urls: UrlPayload[]\n = this.urls?.map(url => ({ schema: UrlSchema, url }))\n ?? payloads\n .filter((p): p is UrlPayload => p.schema === UrlSchema)\n .map((p) => {\n return { schema: UrlSchema, url: p.url }\n })\n const hashed = await Promise.all(\n urls.map(async (url) => {\n // TODO: Different schema for hashed url\n return { ...url, hash: await assertEx(UrlWitness.hashUrl, () => 'Set UrlWitness.hashUrl before using')(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitness } from './Witness/index.ts'\n\nexport const UrlPlugin = () =>\n createPayloadSetWitnessPlugin<UrlWitness>(\n { required: { [UrlSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await UrlWitness.create(params)\n return result\n },\n },\n )\n"],"mappings":"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","names":["import_crypto","https","http","import_url_payload_plugin","import_url_payload_plugin"]}
@@ -1,16 +1,8 @@
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
1
  // src/util/hashFile.ts
10
2
  import { createReadStream } from "node:fs";
11
3
  import { fileURLToPath } from "node:url";
12
4
  import { Crypto } from "@xylabs/crypto";
13
- var hashFile = /* @__PURE__ */ __name((url) => {
5
+ var hashFile = (url) => {
14
6
  const path = url.startsWith("file://") ? fileURLToPath(url) : url;
15
7
  const ret = new Promise((resolve, reject) => {
16
8
  const hash = Crypto.createHash("sha256");
@@ -26,13 +18,13 @@ var hashFile = /* @__PURE__ */ __name((url) => {
26
18
  });
27
19
  });
28
20
  return ret;
29
- }, "hashFile");
21
+ };
30
22
 
31
23
  // src/util/hashHttpUrl.ts
32
24
  import http from "node:http";
33
25
  import https from "node:https";
34
26
  import { Crypto as Crypto2 } from "@xylabs/crypto";
35
- var hashHttpUrl = /* @__PURE__ */ __name((url) => {
27
+ var hashHttpUrl = (url) => {
36
28
  const ret = new Promise((resolve, reject) => {
37
29
  const hash = Crypto2.createHash("sha256");
38
30
  const lib = url.startsWith("https") ? https : http;
@@ -48,10 +40,10 @@ var hashHttpUrl = /* @__PURE__ */ __name((url) => {
48
40
  });
49
41
  });
50
42
  return ret;
51
- }, "hashHttpUrl");
43
+ };
52
44
 
53
45
  // src/util/hashUrl.ts
54
- var hashUrl = /* @__PURE__ */ __name((url) => {
46
+ var hashUrl = (url) => {
55
47
  var _a;
56
48
  const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
57
49
  switch (scheme) {
@@ -66,7 +58,7 @@ var hashUrl = /* @__PURE__ */ __name((url) => {
66
58
  throw new Error(`Unsupported URL scheme: ${scheme}`);
67
59
  }
68
60
  }
69
- }, "hashUrl");
61
+ };
70
62
 
71
63
  // src/Witness/Config.ts
72
64
  import { UrlSchema } from "@xyo-network/url-payload-plugin";
@@ -76,7 +68,10 @@ var UrlWitnessConfigSchema = `${UrlSchema}.witness.config`;
76
68
  import { assertEx } from "@xylabs/assert";
77
69
  import { AbstractWitness } from "@xyo-network/abstract-witness";
78
70
  import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
79
- var _UrlWitness = class _UrlWitness extends AbstractWitness {
71
+ var UrlWitness = class _UrlWitness extends AbstractWitness {
72
+ static configSchemas = [...super.configSchemas, UrlWitnessConfigSchema];
73
+ static defaultConfigSchema = UrlWitnessConfigSchema;
74
+ static hashUrl = void 0;
80
75
  get urls() {
81
76
  var _a;
82
77
  return (_a = this.config) == null ? void 0 : _a.urls;
@@ -86,48 +81,31 @@ var _UrlWitness = class _UrlWitness extends AbstractWitness {
86
81
  if (_UrlWitness.hashUrl === void 0) {
87
82
  throw new Error("Set UrlWitness.hashUrl before using");
88
83
  }
89
- const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({
90
- schema: UrlSchema2,
91
- url
92
- }))) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
93
- return {
94
- schema: UrlSchema2,
95
- url: p.url
96
- };
84
+ const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({ schema: UrlSchema2, url }))) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
85
+ return { schema: UrlSchema2, url: p.url };
97
86
  });
98
- const hashed = await Promise.all(urls.map(async (url) => {
99
- return {
100
- ...url,
101
- hash: await assertEx(_UrlWitness.hashUrl, () => "Set UrlWitness.hashUrl before using")(url.url)
102
- };
103
- }));
87
+ const hashed = await Promise.all(
88
+ urls.map(async (url) => {
89
+ return { ...url, hash: await assertEx(_UrlWitness.hashUrl, () => "Set UrlWitness.hashUrl before using")(url.url) };
90
+ })
91
+ );
104
92
  return hashed;
105
93
  }
106
94
  };
107
- __name(_UrlWitness, "UrlWitness");
108
- __publicField(_UrlWitness, "configSchemas", [
109
- ...__superGet(_UrlWitness, _UrlWitness, "configSchemas"),
110
- UrlWitnessConfigSchema
111
- ]);
112
- __publicField(_UrlWitness, "defaultConfigSchema", UrlWitnessConfigSchema);
113
- __publicField(_UrlWitness, "hashUrl");
114
- var UrlWitness = _UrlWitness;
115
95
 
116
96
  // src/PluginNode.ts
117
97
  import { PayloadSetSchema } from "@xyo-network/payload-model";
118
98
  import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
119
99
  import { UrlSchema as UrlSchema3 } from "@xyo-network/url-payload-plugin";
120
- var UrlPlugin = /* @__PURE__ */ __name(() => createPayloadSetWitnessPlugin({
121
- required: {
122
- [UrlSchema3]: 1
123
- },
124
- schema: PayloadSetSchema
125
- }, {
126
- witness: /* @__PURE__ */ __name(async (params) => {
127
- const result = await UrlWitness.create(params);
128
- return result;
129
- }, "witness")
130
- }), "UrlPlugin");
100
+ var UrlPlugin = () => createPayloadSetWitnessPlugin(
101
+ { required: { [UrlSchema3]: 1 }, schema: PayloadSetSchema },
102
+ {
103
+ witness: async (params) => {
104
+ const result = await UrlWitness.create(params);
105
+ return result;
106
+ }
107
+ }
108
+ );
131
109
 
132
110
  // src/indexNode.ts
133
111
  UrlWitness.hashUrl = hashUrl;