@xyo-network/url-plugin 2.85.0 → 2.85.2

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.
Files changed (81) hide show
  1. package/dist/browser/PluginBrowser.d.cts +0 -2
  2. package/dist/browser/PluginBrowser.d.cts.map +1 -1
  3. package/dist/browser/PluginBrowser.d.mts +0 -2
  4. package/dist/browser/PluginBrowser.d.mts.map +1 -1
  5. package/dist/browser/PluginBrowser.d.ts +0 -2
  6. package/dist/browser/PluginBrowser.d.ts.map +1 -1
  7. package/dist/browser/PluginNode.d.cts +0 -2
  8. package/dist/browser/PluginNode.d.cts.map +1 -1
  9. package/dist/browser/PluginNode.d.mts +0 -2
  10. package/dist/browser/PluginNode.d.mts.map +1 -1
  11. package/dist/browser/PluginNode.d.ts +0 -2
  12. package/dist/browser/PluginNode.d.ts.map +1 -1
  13. package/dist/browser/indexBrowser.cjs +2 -5
  14. package/dist/browser/indexBrowser.cjs.map +1 -1
  15. package/dist/browser/indexBrowser.d.cts +1 -3
  16. package/dist/browser/indexBrowser.d.cts.map +1 -1
  17. package/dist/browser/indexBrowser.d.mts +1 -3
  18. package/dist/browser/indexBrowser.d.mts.map +1 -1
  19. package/dist/browser/indexBrowser.d.ts +1 -3
  20. package/dist/browser/indexBrowser.d.ts.map +1 -1
  21. package/dist/browser/indexBrowser.js +2 -5
  22. package/dist/browser/indexBrowser.js.map +1 -1
  23. package/dist/browser/indexNode.d.cts +1 -3
  24. package/dist/browser/indexNode.d.cts.map +1 -1
  25. package/dist/browser/indexNode.d.mts +1 -3
  26. package/dist/browser/indexNode.d.mts.map +1 -1
  27. package/dist/browser/indexNode.d.ts +1 -3
  28. package/dist/browser/indexNode.d.ts.map +1 -1
  29. package/dist/browser/util/hashFile.d.cts.map +1 -1
  30. package/dist/browser/util/hashFile.d.mts.map +1 -1
  31. package/dist/browser/util/hashFile.d.ts.map +1 -1
  32. package/dist/browser/util/hashHttpUrl.d.cts.map +1 -1
  33. package/dist/browser/util/hashHttpUrl.d.mts.map +1 -1
  34. package/dist/browser/util/hashHttpUrl.d.ts.map +1 -1
  35. package/dist/browser/util/hashUrl.d.cts.map +1 -1
  36. package/dist/browser/util/hashUrl.d.mts.map +1 -1
  37. package/dist/browser/util/hashUrl.d.ts.map +1 -1
  38. package/dist/node/PluginBrowser.d.cts +0 -2
  39. package/dist/node/PluginBrowser.d.cts.map +1 -1
  40. package/dist/node/PluginBrowser.d.mts +0 -2
  41. package/dist/node/PluginBrowser.d.mts.map +1 -1
  42. package/dist/node/PluginBrowser.d.ts +0 -2
  43. package/dist/node/PluginBrowser.d.ts.map +1 -1
  44. package/dist/node/PluginNode.d.cts +0 -2
  45. package/dist/node/PluginNode.d.cts.map +1 -1
  46. package/dist/node/PluginNode.d.mts +0 -2
  47. package/dist/node/PluginNode.d.mts.map +1 -1
  48. package/dist/node/PluginNode.d.ts +0 -2
  49. package/dist/node/PluginNode.d.ts.map +1 -1
  50. package/dist/node/indexBrowser.d.cts +1 -3
  51. package/dist/node/indexBrowser.d.cts.map +1 -1
  52. package/dist/node/indexBrowser.d.mts +1 -3
  53. package/dist/node/indexBrowser.d.mts.map +1 -1
  54. package/dist/node/indexBrowser.d.ts +1 -3
  55. package/dist/node/indexBrowser.d.ts.map +1 -1
  56. package/dist/node/indexNode.cjs +60 -60
  57. package/dist/node/indexNode.cjs.map +1 -1
  58. package/dist/node/indexNode.d.cts +1 -3
  59. package/dist/node/indexNode.d.cts.map +1 -1
  60. package/dist/node/indexNode.d.mts +1 -3
  61. package/dist/node/indexNode.d.mts.map +1 -1
  62. package/dist/node/indexNode.d.ts +1 -3
  63. package/dist/node/indexNode.d.ts.map +1 -1
  64. package/dist/node/indexNode.js +57 -57
  65. package/dist/node/indexNode.js.map +1 -1
  66. package/dist/node/util/hashFile.d.cts.map +1 -1
  67. package/dist/node/util/hashFile.d.mts.map +1 -1
  68. package/dist/node/util/hashFile.d.ts.map +1 -1
  69. package/dist/node/util/hashHttpUrl.d.cts.map +1 -1
  70. package/dist/node/util/hashHttpUrl.d.mts.map +1 -1
  71. package/dist/node/util/hashHttpUrl.d.ts.map +1 -1
  72. package/dist/node/util/hashUrl.d.cts.map +1 -1
  73. package/dist/node/util/hashUrl.d.mts.map +1 -1
  74. package/dist/node/util/hashUrl.d.ts.map +1 -1
  75. package/package.json +9 -9
  76. package/src/Witness/Witness.ts +1 -1
  77. package/src/indexBrowser.ts +1 -6
  78. package/src/indexNode.ts +2 -6
  79. package/src/util/hashFile.ts +3 -2
  80. package/src/util/hashHttpUrl.ts +3 -2
  81. package/src/util/hashUrl.ts +6 -3
@@ -33,67 +33,19 @@ __export(indexNode_exports, {
33
33
  UrlPlugin: () => UrlPlugin,
34
34
  UrlWitness: () => UrlWitness,
35
35
  UrlWitnessConfigSchema: () => UrlWitnessConfigSchema,
36
- default: () => indexNode_default
36
+ default: () => UrlPlugin
37
37
  });
38
38
  module.exports = __toCommonJS(indexNode_exports);
39
39
 
40
- // src/PluginNode.ts
41
- var import_payload_model = require("@xyo-network/payload-model");
42
- var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
43
- var import_url_payload_plugin3 = require("@xyo-network/url-payload-plugin");
44
-
45
- // src/Witness/Config.ts
46
- var import_url_payload_plugin = require("@xyo-network/url-payload-plugin");
47
- var UrlWitnessConfigSchema = `${import_url_payload_plugin.UrlSchema}.witness.config`;
48
-
49
- // src/Witness/Witness.ts
50
- var import_assert = require("@xylabs/assert");
51
- var import_abstract_witness = require("@xyo-network/abstract-witness");
52
- var import_url_payload_plugin2 = require("@xyo-network/url-payload-plugin");
53
- var UrlWitness = class _UrlWitness extends import_abstract_witness.AbstractWitness {
54
- static configSchemas = [UrlWitnessConfigSchema];
55
- static hashUrl = void 0;
56
- get urls() {
57
- var _a;
58
- return (_a = this.config) == null ? void 0 : _a.urls;
59
- }
60
- async observeHandler(payloads = []) {
61
- var _a;
62
- if (_UrlWitness.hashUrl === void 0) {
63
- throw Error("Set UrlWitness.hashUrl before using");
64
- }
65
- 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) => {
66
- return { schema: import_url_payload_plugin2.UrlSchema, url: p.url };
67
- });
68
- const hashed = await Promise.all(
69
- urls.map(async (url) => {
70
- return { ...url, hash: await (0, import_assert.assertEx)(_UrlWitness.hashUrl, "Set UrlWitness.hashUrl before using")(url.url) };
71
- })
72
- );
73
- return hashed;
74
- }
75
- };
76
-
77
- // src/PluginNode.ts
78
- var UrlPlugin = () => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)(
79
- { required: { [import_url_payload_plugin3.UrlSchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
80
- {
81
- witness: async (params) => {
82
- const result = await UrlWitness.create(params);
83
- return result;
84
- }
85
- }
86
- );
87
-
88
40
  // src/util/hashFile.ts
41
+ var import_node_fs = require("fs");
42
+ var import_node_url = require("url");
89
43
  var import_crypto = require("@xylabs/crypto");
90
- var import_fs = require("fs");
91
- var import_url = require("url");
92
44
  var hashFile = (url) => {
93
- const path = url.startsWith("file://") ? (0, import_url.fileURLToPath)(url) : url;
45
+ const path = url.startsWith("file://") ? (0, import_node_url.fileURLToPath)(url) : url;
94
46
  const ret = new Promise((resolve, reject) => {
95
47
  const hash = import_crypto.Crypto.createHash("sha256");
96
- const stream = (0, import_fs.createReadStream)(path);
48
+ const stream = (0, import_node_fs.createReadStream)(path);
97
49
  stream.on("data", (data) => {
98
50
  hash.update(data);
99
51
  });
@@ -108,13 +60,13 @@ var hashFile = (url) => {
108
60
  };
109
61
 
110
62
  // src/util/hashHttpUrl.ts
63
+ var import_node_http = __toESM(require("http"), 1);
64
+ var import_node_https = __toESM(require("https"), 1);
111
65
  var import_crypto2 = require("@xylabs/crypto");
112
- var import_http = __toESM(require("http"), 1);
113
- var import_https = __toESM(require("https"), 1);
114
66
  var hashHttpUrl = (url) => {
115
67
  const ret = new Promise((resolve, reject) => {
116
68
  const hash = import_crypto2.Crypto.createHash("sha256");
117
- const lib = url.startsWith("https") ? import_https.default : import_http.default;
69
+ const lib = url.startsWith("https") ? import_node_https.default : import_node_http.default;
118
70
  lib.get(url, (res) => {
119
71
  res.on("data", (data) => {
120
72
  hash.update(data);
@@ -134,19 +86,67 @@ var hashUrl = (url) => {
134
86
  var _a;
135
87
  const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
136
88
  switch (scheme) {
137
- case "file":
89
+ case "file": {
138
90
  return hashFile(url);
91
+ }
139
92
  case "http":
140
- case "https":
93
+ case "https": {
141
94
  return hashHttpUrl(url);
142
- default:
95
+ }
96
+ default: {
143
97
  throw new Error(`Unsupported URL scheme: ${scheme}`);
98
+ }
144
99
  }
145
100
  };
146
101
 
102
+ // src/Witness/Config.ts
103
+ var import_url_payload_plugin = require("@xyo-network/url-payload-plugin");
104
+ var UrlWitnessConfigSchema = `${import_url_payload_plugin.UrlSchema}.witness.config`;
105
+
106
+ // src/Witness/Witness.ts
107
+ var import_assert = require("@xylabs/assert");
108
+ var import_abstract_witness = require("@xyo-network/abstract-witness");
109
+ var import_url_payload_plugin2 = require("@xyo-network/url-payload-plugin");
110
+ var UrlWitness = class _UrlWitness extends import_abstract_witness.AbstractWitness {
111
+ static configSchemas = [UrlWitnessConfigSchema];
112
+ static hashUrl = void 0;
113
+ get urls() {
114
+ var _a;
115
+ return (_a = this.config) == null ? void 0 : _a.urls;
116
+ }
117
+ async observeHandler(payloads = []) {
118
+ var _a;
119
+ if (_UrlWitness.hashUrl === void 0) {
120
+ throw new Error("Set UrlWitness.hashUrl before using");
121
+ }
122
+ 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) => {
123
+ return { schema: import_url_payload_plugin2.UrlSchema, url: p.url };
124
+ });
125
+ const hashed = await Promise.all(
126
+ urls.map(async (url) => {
127
+ return { ...url, hash: await (0, import_assert.assertEx)(_UrlWitness.hashUrl, "Set UrlWitness.hashUrl before using")(url.url) };
128
+ })
129
+ );
130
+ return hashed;
131
+ }
132
+ };
133
+
134
+ // src/PluginNode.ts
135
+ var import_payload_model = require("@xyo-network/payload-model");
136
+ var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
137
+ var import_url_payload_plugin3 = require("@xyo-network/url-payload-plugin");
138
+ var UrlPlugin = () => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)(
139
+ { required: { [import_url_payload_plugin3.UrlSchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
140
+ {
141
+ witness: async (params) => {
142
+ const result = await UrlWitness.create(params);
143
+ return result;
144
+ }
145
+ }
146
+ );
147
+
147
148
  // src/indexNode.ts
148
149
  UrlWitness.hashUrl = hashUrl;
149
- var indexNode_default = UrlPlugin;
150
150
  // Annotate the CommonJS export names for ESM import in node:
151
151
  0 && (module.exports = {
152
152
  UrlPlugin,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/indexNode.ts","../../src/PluginNode.ts","../../src/Witness/Config.ts","../../src/Witness/Witness.ts","../../src/util/hashFile.ts","../../src/util/hashHttpUrl.ts","../../src/util/hashUrl.ts"],"sourcesContent":["import { UrlPlugin } from './PluginNode'\nimport { hashUrl } from './util'\nimport { UrlWitness } from './Witness'\nexport * from './Witness'\n\nUrlWitness.hashUrl = hashUrl\n\nexport { UrlPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default UrlPlugin\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'\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 { 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 } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config'\nimport { UrlWitnessParams } from './Params'\n\nexport class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {\n static override configSchemas = [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 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 { Crypto } from '@xylabs/crypto'\nimport { createReadStream } from 'fs'\nimport { fileURLToPath } from 'url'\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 { Crypto } from '@xylabs/crypto'\nimport http from 'http'\nimport https from 'https'\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'\nimport { hashHttpUrl } from './hashHttpUrl'\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 case 'http':\n case 'https':\n return hashHttpUrl(url)\n default:\n throw new Error(`Unsupported URL scheme: ${scheme}`)\n }\n}\n"],"mappings":"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","names":["import_url_payload_plugin","import_url_payload_plugin","import_crypto","https","http"]}
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'\nimport { UrlWitness } from './Witness'\n\nUrlWitness.hashUrl = hashUrl\n\nexport { UrlPlugin as default, UrlPlugin } from './PluginNode'\nexport * from './Witness'\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'\nimport { hashHttpUrl } from './hashHttpUrl'\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 } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config'\nimport { UrlWitnessParams } from './Params'\n\nexport class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {\n static override configSchemas = [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'\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,5 +1,3 @@
1
- import { UrlPlugin } from './PluginNode';
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode';
2
2
  export * from './Witness';
3
- export { UrlPlugin };
4
- export default UrlPlugin;
5
3
  //# sourceMappingURL=indexNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,cAAc,WAAW,CAAA;AAIzB,OAAO,EAAE,SAAS,EAAE,CAAA;AAGpB,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC9D,cAAc,WAAW,CAAA"}
@@ -1,5 +1,3 @@
1
- import { UrlPlugin } from './PluginNode';
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode';
2
2
  export * from './Witness';
3
- export { UrlPlugin };
4
- export default UrlPlugin;
5
3
  //# sourceMappingURL=indexNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,cAAc,WAAW,CAAA;AAIzB,OAAO,EAAE,SAAS,EAAE,CAAA;AAGpB,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC9D,cAAc,WAAW,CAAA"}
@@ -1,5 +1,3 @@
1
- import { UrlPlugin } from './PluginNode';
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode';
2
2
  export * from './Witness';
3
- export { UrlPlugin };
4
- export default UrlPlugin;
5
3
  //# sourceMappingURL=indexNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,cAAc,WAAW,CAAA;AAIzB,OAAO,EAAE,SAAS,EAAE,CAAA;AAGpB,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC9D,cAAc,WAAW,CAAA"}
@@ -1,55 +1,7 @@
1
- // src/PluginNode.ts
2
- import { PayloadSetSchema } from "@xyo-network/payload-model";
3
- import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
4
- import { UrlSchema as UrlSchema3 } from "@xyo-network/url-payload-plugin";
5
-
6
- // src/Witness/Config.ts
7
- import { UrlSchema } from "@xyo-network/url-payload-plugin";
8
- var UrlWitnessConfigSchema = `${UrlSchema}.witness.config`;
9
-
10
- // src/Witness/Witness.ts
11
- import { assertEx } from "@xylabs/assert";
12
- import { AbstractWitness } from "@xyo-network/abstract-witness";
13
- import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
14
- var UrlWitness = class _UrlWitness extends AbstractWitness {
15
- static configSchemas = [UrlWitnessConfigSchema];
16
- static hashUrl = void 0;
17
- get urls() {
18
- var _a;
19
- return (_a = this.config) == null ? void 0 : _a.urls;
20
- }
21
- async observeHandler(payloads = []) {
22
- var _a;
23
- if (_UrlWitness.hashUrl === void 0) {
24
- throw Error("Set UrlWitness.hashUrl before using");
25
- }
26
- const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({ schema: UrlSchema2, url }))) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
27
- return { schema: UrlSchema2, url: p.url };
28
- });
29
- const hashed = await Promise.all(
30
- urls.map(async (url) => {
31
- return { ...url, hash: await assertEx(_UrlWitness.hashUrl, "Set UrlWitness.hashUrl before using")(url.url) };
32
- })
33
- );
34
- return hashed;
35
- }
36
- };
37
-
38
- // src/PluginNode.ts
39
- var UrlPlugin = () => createPayloadSetWitnessPlugin(
40
- { required: { [UrlSchema3]: 1 }, schema: PayloadSetSchema },
41
- {
42
- witness: async (params) => {
43
- const result = await UrlWitness.create(params);
44
- return result;
45
- }
46
- }
47
- );
48
-
49
1
  // src/util/hashFile.ts
2
+ import { createReadStream } from "node:fs";
3
+ import { fileURLToPath } from "node:url";
50
4
  import { Crypto } from "@xylabs/crypto";
51
- import { createReadStream } from "fs";
52
- import { fileURLToPath } from "url";
53
5
  var hashFile = (url) => {
54
6
  const path = url.startsWith("file://") ? fileURLToPath(url) : url;
55
7
  const ret = new Promise((resolve, reject) => {
@@ -69,9 +21,9 @@ var hashFile = (url) => {
69
21
  };
70
22
 
71
23
  // src/util/hashHttpUrl.ts
24
+ import http from "node:http";
25
+ import https from "node:https";
72
26
  import { Crypto as Crypto2 } from "@xylabs/crypto";
73
- import http from "http";
74
- import https from "https";
75
27
  var hashHttpUrl = (url) => {
76
28
  const ret = new Promise((resolve, reject) => {
77
29
  const hash = Crypto2.createHash("sha256");
@@ -95,23 +47,71 @@ var hashUrl = (url) => {
95
47
  var _a;
96
48
  const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
97
49
  switch (scheme) {
98
- case "file":
50
+ case "file": {
99
51
  return hashFile(url);
52
+ }
100
53
  case "http":
101
- case "https":
54
+ case "https": {
102
55
  return hashHttpUrl(url);
103
- default:
56
+ }
57
+ default: {
104
58
  throw new Error(`Unsupported URL scheme: ${scheme}`);
59
+ }
105
60
  }
106
61
  };
107
62
 
63
+ // src/Witness/Config.ts
64
+ import { UrlSchema } from "@xyo-network/url-payload-plugin";
65
+ var UrlWitnessConfigSchema = `${UrlSchema}.witness.config`;
66
+
67
+ // src/Witness/Witness.ts
68
+ import { assertEx } from "@xylabs/assert";
69
+ import { AbstractWitness } from "@xyo-network/abstract-witness";
70
+ import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
71
+ var UrlWitness = class _UrlWitness extends AbstractWitness {
72
+ static configSchemas = [UrlWitnessConfigSchema];
73
+ static hashUrl = void 0;
74
+ get urls() {
75
+ var _a;
76
+ return (_a = this.config) == null ? void 0 : _a.urls;
77
+ }
78
+ async observeHandler(payloads = []) {
79
+ var _a;
80
+ if (_UrlWitness.hashUrl === void 0) {
81
+ throw new Error("Set UrlWitness.hashUrl before using");
82
+ }
83
+ const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({ schema: UrlSchema2, url }))) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
84
+ return { schema: UrlSchema2, url: p.url };
85
+ });
86
+ const hashed = await Promise.all(
87
+ urls.map(async (url) => {
88
+ return { ...url, hash: await assertEx(_UrlWitness.hashUrl, "Set UrlWitness.hashUrl before using")(url.url) };
89
+ })
90
+ );
91
+ return hashed;
92
+ }
93
+ };
94
+
95
+ // src/PluginNode.ts
96
+ import { PayloadSetSchema } from "@xyo-network/payload-model";
97
+ import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
98
+ import { UrlSchema as UrlSchema3 } from "@xyo-network/url-payload-plugin";
99
+ var UrlPlugin = () => createPayloadSetWitnessPlugin(
100
+ { required: { [UrlSchema3]: 1 }, schema: PayloadSetSchema },
101
+ {
102
+ witness: async (params) => {
103
+ const result = await UrlWitness.create(params);
104
+ return result;
105
+ }
106
+ }
107
+ );
108
+
108
109
  // src/indexNode.ts
109
110
  UrlWitness.hashUrl = hashUrl;
110
- var indexNode_default = UrlPlugin;
111
111
  export {
112
112
  UrlPlugin,
113
113
  UrlWitness,
114
114
  UrlWitnessConfigSchema,
115
- indexNode_default as default
115
+ UrlPlugin as default
116
116
  };
117
117
  //# sourceMappingURL=indexNode.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/PluginNode.ts","../../src/Witness/Config.ts","../../src/Witness/Witness.ts","../../src/util/hashFile.ts","../../src/util/hashHttpUrl.ts","../../src/util/hashUrl.ts","../../src/indexNode.ts"],"sourcesContent":["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'\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 { 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 } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config'\nimport { UrlWitnessParams } from './Params'\n\nexport class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {\n static override configSchemas = [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 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 { Crypto } from '@xylabs/crypto'\nimport { createReadStream } from 'fs'\nimport { fileURLToPath } from 'url'\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 { Crypto } from '@xylabs/crypto'\nimport http from 'http'\nimport https from 'https'\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'\nimport { hashHttpUrl } from './hashHttpUrl'\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 case 'http':\n case 'https':\n return hashHttpUrl(url)\n default:\n throw new Error(`Unsupported URL scheme: ${scheme}`)\n }\n}\n","import { UrlPlugin } from './PluginNode'\nimport { hashUrl } from './util'\nimport { UrlWitness } from './Witness'\nexport * from './Witness'\n\nUrlWitness.hashUrl = hashUrl\n\nexport { UrlPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default UrlPlugin\n"],"mappings":"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","names":["UrlSchema","UrlSchema","UrlSchema","UrlSchema","Crypto"]}
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'\nimport { hashHttpUrl } from './hashHttpUrl'\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 } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config'\nimport { UrlWitnessParams } from './Params'\n\nexport class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {\n static override configSchemas = [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'\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'\nimport { UrlWitness } from './Witness'\n\nUrlWitness.hashUrl = hashUrl\n\nexport { UrlPlugin as default, UrlPlugin } from './PluginNode'\nexport * from './Witness'\n"],"mappings":"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","names":["Crypto","UrlSchema","UrlSchema","UrlSchema","UrlSchema"]}
@@ -1 +1 @@
1
- {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,QAAQ,MAAM,CAgBpD,CAAA"}
1
+ {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,QAAQ,MAAM,CAgBpD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,QAAQ,MAAM,CAgBpD,CAAA"}
1
+ {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,QAAQ,MAAM,CAgBpD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,QAAQ,MAAM,CAgBpD,CAAA"}
1
+ {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,QAAQ,MAAM,CAgBpD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,QAAQ,MAAM,CAkBvD,CAAA"}
1
+ {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,QAAQ,MAAM,CAkBvD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,QAAQ,MAAM,CAkBvD,CAAA"}
1
+ {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,QAAQ,MAAM,CAkBvD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,QAAQ,MAAM,CAkBvD,CAAA"}
1
+ {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,QAAQ,MAAM,CAkBvD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,QAAQ,MAAM,CAWnD,CAAA"}
1
+ {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,QAAQ,MAAM,CAcnD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,QAAQ,MAAM,CAWnD,CAAA"}
1
+ {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,QAAQ,MAAM,CAcnD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,QAAQ,MAAM,CAWnD,CAAA"}
1
+ {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,QAAQ,MAAM,CAcnD,CAAA"}
package/package.json CHANGED
@@ -10,14 +10,14 @@
10
10
  "url": "https://github.com/XYOracleNetwork/plugins/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^2.13.20",
14
- "@xylabs/crypto": "^2.13.20",
15
- "@xyo-network/abstract-witness": "^2.85.0",
16
- "@xyo-network/module-model": "^2.85.0",
17
- "@xyo-network/payload-model": "^2.85.0",
18
- "@xyo-network/payloadset-plugin": "^2.85.0",
19
- "@xyo-network/url-payload-plugin": "~2.85.0",
20
- "@xyo-network/witness-model": "^2.85.0"
13
+ "@xylabs/assert": "^2.13.23",
14
+ "@xylabs/crypto": "^2.13.23",
15
+ "@xyo-network/abstract-witness": "^2.85.8",
16
+ "@xyo-network/module-model": "^2.85.8",
17
+ "@xyo-network/payload-model": "^2.85.8",
18
+ "@xyo-network/payloadset-plugin": "^2.85.8",
19
+ "@xyo-network/url-payload-plugin": "~2.85.2",
20
+ "@xyo-network/witness-model": "^2.85.8"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@xylabs/ts-scripts-yarn3": "^3.2.25",
@@ -63,6 +63,6 @@
63
63
  "url": "https://github.com/XYOracleNetwork/plugins.git"
64
64
  },
65
65
  "sideEffects": false,
66
- "version": "2.85.0",
66
+ "version": "2.85.2",
67
67
  "type": "module"
68
68
  }
@@ -16,7 +16,7 @@ export class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> ext
16
16
 
17
17
  protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {
18
18
  if (UrlWitness.hashUrl === undefined) {
19
- throw Error('Set UrlWitness.hashUrl before using')
19
+ throw new Error('Set UrlWitness.hashUrl before using')
20
20
  }
21
21
  const urls: UrlPayload[] =
22
22
  this.urls?.map((url) => ({ schema: UrlSchema, url })) ??
@@ -1,7 +1,2 @@
1
- import { UrlPlugin } from './PluginNode'
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode'
2
2
  export * from './Witness'
3
-
4
- export { UrlPlugin }
5
-
6
- // eslint-disable-next-line import/no-default-export
7
- export default UrlPlugin
package/src/indexNode.ts CHANGED
@@ -1,11 +1,7 @@
1
- import { UrlPlugin } from './PluginNode'
2
1
  import { hashUrl } from './util'
3
2
  import { UrlWitness } from './Witness'
4
- export * from './Witness'
5
3
 
6
4
  UrlWitness.hashUrl = hashUrl
7
5
 
8
- export { UrlPlugin }
9
-
10
- // eslint-disable-next-line import/no-default-export
11
- export default UrlPlugin
6
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode'
7
+ export * from './Witness'
@@ -1,6 +1,7 @@
1
+ import { createReadStream } from 'node:fs'
2
+ import { fileURLToPath } from 'node:url'
3
+
1
4
  import { Crypto } from '@xylabs/crypto'
2
- import { createReadStream } from 'fs'
3
- import { fileURLToPath } from 'url'
4
5
 
5
6
  export const hashFile = (url: string): Promise<string> => {
6
7
  const path = url.startsWith('file://') ? fileURLToPath(url) : url
@@ -1,6 +1,7 @@
1
+ import http from 'node:http'
2
+ import https from 'node:https'
3
+
1
4
  import { Crypto } from '@xylabs/crypto'
2
- import http from 'http'
3
- import https from 'https'
4
5
 
5
6
  export const hashHttpUrl = (url: string): Promise<string> => {
6
7
  const ret = new Promise<string>((resolve, reject) => {
@@ -4,12 +4,15 @@ import { hashHttpUrl } from './hashHttpUrl'
4
4
  export const hashUrl = (url: string): Promise<string> => {
5
5
  const scheme = url.split('://')[0]?.toLowerCase()
6
6
  switch (scheme) {
7
- case 'file':
7
+ case 'file': {
8
8
  return hashFile(url)
9
+ }
9
10
  case 'http':
10
- case 'https':
11
+ case 'https': {
11
12
  return hashHttpUrl(url)
12
- default:
13
+ }
14
+ default: {
13
15
  throw new Error(`Unsupported URL scheme: ${scheme}`)
16
+ }
14
17
  }
15
18
  }