@xyo-network/url-plugin 5.3.2 → 5.3.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.
Files changed (92) hide show
  1. package/dist/browser/PluginBrowser.d.ts +3 -0
  2. package/dist/browser/PluginBrowser.d.ts.map +1 -0
  3. package/dist/browser/PluginNode.d.ts +3 -0
  4. package/dist/browser/PluginNode.d.ts.map +1 -0
  5. package/dist/browser/Witness/Config.d.ts +10 -0
  6. package/dist/browser/Witness/Config.d.ts.map +1 -0
  7. package/dist/browser/Witness/Params.d.ts +5 -0
  8. package/dist/browser/Witness/Params.d.ts.map +1 -0
  9. package/dist/browser/Witness/Witness.d.ts +11 -0
  10. package/dist/browser/Witness/Witness.d.ts.map +1 -0
  11. package/dist/browser/Witness/index.d.ts +4 -0
  12. package/dist/browser/Witness/index.d.ts.map +1 -0
  13. package/dist/browser/indexBrowser.d.ts +3 -0
  14. package/dist/browser/indexBrowser.d.ts.map +1 -0
  15. package/dist/browser/indexBrowser.mjs +55 -0
  16. package/dist/browser/indexBrowser.mjs.map +1 -0
  17. package/dist/browser/indexNode.d.ts +3 -0
  18. package/dist/browser/indexNode.d.ts.map +1 -0
  19. package/dist/browser/util/hashFile.d.ts +2 -0
  20. package/dist/browser/util/hashFile.d.ts.map +1 -0
  21. package/dist/browser/util/hashHttpUrl.d.ts +2 -0
  22. package/dist/browser/util/hashHttpUrl.d.ts.map +1 -0
  23. package/dist/browser/util/hashUrl.d.ts +2 -0
  24. package/dist/browser/util/hashUrl.d.ts.map +1 -0
  25. package/dist/browser/util/index.d.ts +2 -0
  26. package/dist/browser/util/index.d.ts.map +1 -0
  27. package/dist/neutral/PluginBrowser.d.ts +3 -0
  28. package/dist/neutral/PluginBrowser.d.ts.map +1 -0
  29. package/dist/neutral/PluginNode.d.ts +3 -0
  30. package/dist/neutral/PluginNode.d.ts.map +1 -0
  31. package/dist/neutral/Witness/Config.d.ts +10 -0
  32. package/dist/neutral/Witness/Config.d.ts.map +1 -0
  33. package/dist/neutral/Witness/Params.d.ts +5 -0
  34. package/dist/neutral/Witness/Params.d.ts.map +1 -0
  35. package/dist/neutral/Witness/Witness.d.ts +11 -0
  36. package/dist/neutral/Witness/Witness.d.ts.map +1 -0
  37. package/dist/neutral/Witness/index.d.ts +4 -0
  38. package/dist/neutral/Witness/index.d.ts.map +1 -0
  39. package/dist/neutral/indexBrowser.d.ts +3 -0
  40. package/dist/neutral/indexBrowser.d.ts.map +1 -0
  41. package/dist/neutral/indexNode.d.ts +3 -0
  42. package/dist/neutral/indexNode.d.ts.map +1 -0
  43. package/dist/neutral/indexNode.mjs +117 -0
  44. package/dist/neutral/indexNode.mjs.map +1 -0
  45. package/dist/neutral/util/hashFile.d.ts +2 -0
  46. package/dist/neutral/util/hashFile.d.ts.map +1 -0
  47. package/dist/neutral/util/hashHttpUrl.d.ts +2 -0
  48. package/dist/neutral/util/hashHttpUrl.d.ts.map +1 -0
  49. package/dist/neutral/util/hashUrl.d.ts +2 -0
  50. package/dist/neutral/util/hashUrl.d.ts.map +1 -0
  51. package/dist/neutral/util/index.d.ts +2 -0
  52. package/dist/neutral/util/index.d.ts.map +1 -0
  53. package/dist/node/PluginBrowser.d.ts +3 -0
  54. package/dist/node/PluginBrowser.d.ts.map +1 -0
  55. package/dist/node/PluginNode.d.ts +3 -0
  56. package/dist/node/PluginNode.d.ts.map +1 -0
  57. package/dist/node/Witness/Config.d.ts +10 -0
  58. package/dist/node/Witness/Config.d.ts.map +1 -0
  59. package/dist/node/Witness/Params.d.ts +5 -0
  60. package/dist/node/Witness/Params.d.ts.map +1 -0
  61. package/dist/node/Witness/Witness.d.ts +11 -0
  62. package/dist/node/Witness/Witness.d.ts.map +1 -0
  63. package/dist/node/Witness/index.d.ts +4 -0
  64. package/dist/node/Witness/index.d.ts.map +1 -0
  65. package/dist/node/indexBrowser.d.ts +3 -0
  66. package/dist/node/indexBrowser.d.ts.map +1 -0
  67. package/dist/node/indexNode.d.ts +3 -0
  68. package/dist/node/indexNode.d.ts.map +1 -0
  69. package/dist/node/indexNode.mjs +117 -0
  70. package/dist/node/indexNode.mjs.map +1 -0
  71. package/dist/node/util/hashFile.d.ts +2 -0
  72. package/dist/node/util/hashFile.d.ts.map +1 -0
  73. package/dist/node/util/hashHttpUrl.d.ts +2 -0
  74. package/dist/node/util/hashHttpUrl.d.ts.map +1 -0
  75. package/dist/node/util/hashUrl.d.ts +2 -0
  76. package/dist/node/util/hashUrl.d.ts.map +1 -0
  77. package/dist/node/util/index.d.ts +2 -0
  78. package/dist/node/util/index.d.ts.map +1 -0
  79. package/package.json +12 -6
  80. package/src/PluginBrowser.ts +0 -16
  81. package/src/PluginNode.ts +0 -16
  82. package/src/Witness/Config.ts +0 -11
  83. package/src/Witness/Params.ts +0 -6
  84. package/src/Witness/Witness.ts +0 -40
  85. package/src/Witness/index.ts +0 -3
  86. package/src/indexBrowser.ts +0 -2
  87. package/src/indexNode.ts +0 -7
  88. package/src/util/hashFile.ts +0 -22
  89. package/src/util/hashHttpUrl.ts +0 -24
  90. package/src/util/hashUrl.ts +0 -18
  91. package/src/util/index.ts +0 -1
  92. package/src/util/spec/test.txt +0 -1
@@ -0,0 +1,3 @@
1
+ import { UrlWitness } from './Witness/index.ts';
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("./Witness/Params.ts").UrlWitnessParams>>;
3
+ //# sourceMappingURL=PluginBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginBrowser.d.ts","sourceRoot":"","sources":["../../src/PluginBrowser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,SAAS,oIASnB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { UrlWitness } from './Witness/index.ts';
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("./Witness/Params.ts").UrlWitnessParams>>;
3
+ //# sourceMappingURL=PluginNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginNode.d.ts","sourceRoot":"","sources":["../../src/PluginNode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,SAAS,oIASnB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { WitnessConfig } from '@xyo-network/witness-model';
2
+ export declare const UrlWitnessConfigSchema: string & {
3
+ readonly __schema: true;
4
+ };
5
+ export type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema;
6
+ export type UrlWitnessConfig = WitnessConfig<{
7
+ schema: UrlWitnessConfigSchema;
8
+ urls?: string[];
9
+ }>;
10
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/Witness/Config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,eAAO,MAAM,sBAAsB;;CAAgD,CAAA;AACnF,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC3C,MAAM,EAAE,sBAAsB,CAAA;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { AnyConfigSchema } from '@xyo-network/module-model';
2
+ import type { WitnessParams } from '@xyo-network/witness-model';
3
+ import type { UrlWitnessConfig } from './Config.ts';
4
+ export type UrlWitnessParams = WitnessParams<AnyConfigSchema<UrlWitnessConfig>>;
5
+ //# sourceMappingURL=Params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Params.d.ts","sourceRoot":"","sources":["../../../src/Witness/Params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { AbstractWitness } from '@xyo-network/abstract-witness';
2
+ import type { Payload, Schema } from '@xyo-network/payload-model';
3
+ import type { UrlWitnessParams } from './Params.ts';
4
+ export declare class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {
5
+ static readonly configSchemas: Schema[];
6
+ static readonly defaultConfigSchema: Schema;
7
+ static hashUrl: ((url: string) => Promise<string>) | undefined;
8
+ get urls(): string[] | undefined;
9
+ protected observeHandler(payloads?: Payload[]): Promise<Payload[]>;
10
+ }
11
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAKjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,qBAAa,UAAU,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC3G,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAE7E,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAY;IAE1E,IAAI,IAAI,yBAEP;cAEwB,cAAc,CAAC,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAoBtF"}
@@ -0,0 +1,4 @@
1
+ export * from './Config.ts';
2
+ export * from './Params.ts';
3
+ export * from './Witness.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode.ts';
2
+ export * from './Witness/index.ts';
3
+ //# sourceMappingURL=indexBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexBrowser.d.ts","sourceRoot":"","sources":["../../src/indexBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACjE,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,55 @@
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 { asSchema } from "@xyo-network/payload-model";
8
+ import { UrlSchema } from "@xyo-network/url-payload-plugin";
9
+ var UrlWitnessConfigSchema = asSchema(`${UrlSchema}.witness.config`, true);
10
+
11
+ // src/Witness/Witness.ts
12
+ import { assertEx } from "@xylabs/sdk-js";
13
+ import { AbstractWitness } from "@xyo-network/abstract-witness";
14
+ import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
15
+ var UrlWitness = class _UrlWitness extends AbstractWitness {
16
+ static configSchemas = [...super.configSchemas, UrlWitnessConfigSchema];
17
+ static defaultConfigSchema = UrlWitnessConfigSchema;
18
+ // eslint-disable-next-line sonarjs/public-static-readonly
19
+ static hashUrl = void 0;
20
+ get urls() {
21
+ return this.config?.urls;
22
+ }
23
+ async observeHandler(payloads = []) {
24
+ if (_UrlWitness.hashUrl === void 0) {
25
+ throw new Error("Set UrlWitness.hashUrl before using");
26
+ }
27
+ const urls = this.urls?.map((url) => ({ schema: UrlSchema2, url })) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
28
+ return { schema: UrlSchema2, url: p.url };
29
+ });
30
+ const hashed = await Promise.all(
31
+ urls.map(async (url) => {
32
+ return { ...url, hash: await assertEx(_UrlWitness.hashUrl, () => "Set UrlWitness.hashUrl before using")(url.url) };
33
+ })
34
+ );
35
+ return hashed;
36
+ }
37
+ };
38
+
39
+ // src/PluginNode.ts
40
+ var UrlPlugin = () => createPayloadSetWitnessPlugin(
41
+ { required: { [UrlSchema3]: 1 }, schema: PayloadSetSchema },
42
+ {
43
+ witness: async (params) => {
44
+ const result = await UrlWitness.create(params);
45
+ return result;
46
+ }
47
+ }
48
+ );
49
+ export {
50
+ UrlPlugin,
51
+ UrlWitness,
52
+ UrlWitnessConfigSchema,
53
+ UrlPlugin as default
54
+ };
55
+ //# sourceMappingURL=indexBrowser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/PluginNode.ts","../../src/Witness/Config.ts","../../src/Witness/Witness.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/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 { asSchema } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport type { WitnessConfig } from '@xyo-network/witness-model'\n\nexport const UrlWitnessConfigSchema = asSchema(`${UrlSchema}.witness.config`, true)\nexport type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema\n\nexport type UrlWitnessConfig = WitnessConfig<{\n schema: UrlWitnessConfigSchema\n urls?: string[]\n}>\n","import { assertEx } from '@xylabs/sdk-js'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport type { UrlPayload } from '@xyo-network/url-payload-plugin'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config.ts'\nimport type { 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 // eslint-disable-next-line sonarjs/public-static-readonly\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"],"mappings":";AAAA,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;AAC9C,SAAS,aAAAA,kBAAiB;;;ACF1B,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAGnB,IAAM,yBAAyB,SAAS,GAAG,SAAS,mBAAmB,IAAI;;;ACJlF,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAGhC,SAAS,aAAAC,kBAAiB;AAKnB,IAAM,aAAN,MAAM,oBAAwE,gBAAyB;AAAA,EAC5G,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,sBAAsB;AAAA,EAClG,OAAyB,sBAA8B;AAAA;AAAA,EAEvD,OAAO,UAA0D;AAAA,EAEjE,IAAI,OAAO;AACT,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAyB,eAAe,WAAsB,CAAC,GAAuB;AACpF,QAAI,YAAW,YAAY,QAAW;AACpC,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AACA,UAAM,OACF,KAAK,MAAM,IAAI,UAAQ,EAAE,QAAQC,YAAW,IAAI,EAAE,KAC/C,SACA,OAAO,CAAC,MAAuB,EAAE,WAAWA,UAAS,EACrD,IAAI,CAAC,MAAM;AACV,aAAO,EAAE,QAAQA,YAAW,KAAK,EAAE,IAAI;AAAA,IACzC,CAAC;AACP,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,KAAK,IAAI,OAAO,QAAQ;AAEtB,eAAO,EAAE,GAAG,KAAK,MAAM,MAAM,SAAS,YAAW,SAAS,MAAM,qCAAqC,EAAE,IAAI,GAAG,EAAE;AAAA,MAClH,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;;;AFjCO,IAAM,YAAY,MACvB;AAAA,EACE,EAAE,UAAU,EAAE,CAACC,UAAS,GAAG,EAAE,GAAG,QAAQ,iBAAiB;AAAA,EACzD;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,YAAM,SAAS,MAAM,WAAW,OAAO,MAAM;AAC7C,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":["UrlSchema","UrlSchema","UrlSchema","UrlSchema"]}
@@ -0,0 +1,3 @@
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode.ts';
2
+ export * from './Witness/index.ts';
3
+ //# sourceMappingURL=indexNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACjE,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const hashFile: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAgBpD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const hashHttpUrl: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashHttpUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAkBvD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const hashUrl: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAcnD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './hashUrl.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,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { UrlWitness } from './Witness/index.ts';
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("./Witness/Params.ts").UrlWitnessParams>>;
3
+ //# sourceMappingURL=PluginBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginBrowser.d.ts","sourceRoot":"","sources":["../../src/PluginBrowser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,SAAS,oIASnB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { UrlWitness } from './Witness/index.ts';
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("./Witness/Params.ts").UrlWitnessParams>>;
3
+ //# sourceMappingURL=PluginNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginNode.d.ts","sourceRoot":"","sources":["../../src/PluginNode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,SAAS,oIASnB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { WitnessConfig } from '@xyo-network/witness-model';
2
+ export declare const UrlWitnessConfigSchema: string & {
3
+ readonly __schema: true;
4
+ };
5
+ export type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema;
6
+ export type UrlWitnessConfig = WitnessConfig<{
7
+ schema: UrlWitnessConfigSchema;
8
+ urls?: string[];
9
+ }>;
10
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/Witness/Config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,eAAO,MAAM,sBAAsB;;CAAgD,CAAA;AACnF,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC3C,MAAM,EAAE,sBAAsB,CAAA;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { AnyConfigSchema } from '@xyo-network/module-model';
2
+ import type { WitnessParams } from '@xyo-network/witness-model';
3
+ import type { UrlWitnessConfig } from './Config.ts';
4
+ export type UrlWitnessParams = WitnessParams<AnyConfigSchema<UrlWitnessConfig>>;
5
+ //# sourceMappingURL=Params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Params.d.ts","sourceRoot":"","sources":["../../../src/Witness/Params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { AbstractWitness } from '@xyo-network/abstract-witness';
2
+ import type { Payload, Schema } from '@xyo-network/payload-model';
3
+ import type { UrlWitnessParams } from './Params.ts';
4
+ export declare class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {
5
+ static readonly configSchemas: Schema[];
6
+ static readonly defaultConfigSchema: Schema;
7
+ static hashUrl: ((url: string) => Promise<string>) | undefined;
8
+ get urls(): string[] | undefined;
9
+ protected observeHandler(payloads?: Payload[]): Promise<Payload[]>;
10
+ }
11
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAKjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,qBAAa,UAAU,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC3G,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAE7E,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAY;IAE1E,IAAI,IAAI,yBAEP;cAEwB,cAAc,CAAC,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAoBtF"}
@@ -0,0 +1,4 @@
1
+ export * from './Config.ts';
2
+ export * from './Params.ts';
3
+ export * from './Witness.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode.ts';
2
+ export * from './Witness/index.ts';
3
+ //# sourceMappingURL=indexBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexBrowser.d.ts","sourceRoot":"","sources":["../../src/indexBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACjE,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode.ts';
2
+ export * from './Witness/index.ts';
3
+ //# sourceMappingURL=indexNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACjE,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,117 @@
1
+ // src/util/hashFile.ts
2
+ import { createReadStream } from "fs";
3
+ import { fileURLToPath } from "url";
4
+ import { Crypto } from "@xylabs/crypto";
5
+ var hashFile = (url) => {
6
+ const path = url.startsWith("file://") ? fileURLToPath(url) : url;
7
+ const ret = new Promise((resolve, reject) => {
8
+ const hash = Crypto.createHash("sha256");
9
+ const stream = createReadStream(path);
10
+ stream.on("data", (data) => {
11
+ hash.update(data);
12
+ });
13
+ stream.on("end", () => {
14
+ resolve(hash.digest("hex"));
15
+ });
16
+ stream.on("error", (err) => {
17
+ reject(err);
18
+ });
19
+ });
20
+ return ret;
21
+ };
22
+
23
+ // src/util/hashHttpUrl.ts
24
+ import http from "http";
25
+ import https from "https";
26
+ import { Crypto as Crypto2 } from "@xylabs/crypto";
27
+ var hashHttpUrl = (url) => {
28
+ const ret = new Promise((resolve, reject) => {
29
+ const hash = Crypto2.createHash("sha256");
30
+ const lib = url.startsWith("https") ? https : http;
31
+ lib.get(url, (res) => {
32
+ res.on("data", (data) => {
33
+ hash.update(data);
34
+ });
35
+ res.on("end", () => {
36
+ resolve(hash.digest("hex"));
37
+ });
38
+ }).on("error", (err) => {
39
+ reject(err);
40
+ });
41
+ });
42
+ return ret;
43
+ };
44
+
45
+ // src/util/hashUrl.ts
46
+ var hashUrl = (url) => {
47
+ const scheme = url.split("://")[0]?.toLowerCase();
48
+ switch (scheme) {
49
+ case "file": {
50
+ return hashFile(url);
51
+ }
52
+ case "http":
53
+ case "https": {
54
+ return hashHttpUrl(url);
55
+ }
56
+ default: {
57
+ throw new Error(`Unsupported URL scheme: ${scheme}`);
58
+ }
59
+ }
60
+ };
61
+
62
+ // src/Witness/Config.ts
63
+ import { asSchema } from "@xyo-network/payload-model";
64
+ import { UrlSchema } from "@xyo-network/url-payload-plugin";
65
+ var UrlWitnessConfigSchema = asSchema(`${UrlSchema}.witness.config`, true);
66
+
67
+ // src/Witness/Witness.ts
68
+ import { assertEx } from "@xylabs/sdk-js";
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 = [...super.configSchemas, UrlWitnessConfigSchema];
73
+ static defaultConfigSchema = UrlWitnessConfigSchema;
74
+ // eslint-disable-next-line sonarjs/public-static-readonly
75
+ static hashUrl = void 0;
76
+ get urls() {
77
+ return this.config?.urls;
78
+ }
79
+ async observeHandler(payloads = []) {
80
+ if (_UrlWitness.hashUrl === void 0) {
81
+ throw new Error("Set UrlWitness.hashUrl before using");
82
+ }
83
+ const urls = this.urls?.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
+
109
+ // src/indexNode.ts
110
+ UrlWitness.hashUrl = hashUrl;
111
+ export {
112
+ UrlPlugin,
113
+ UrlWitness,
114
+ UrlWitnessConfigSchema,
115
+ UrlPlugin as default
116
+ };
117
+ //# sourceMappingURL=indexNode.mjs.map
@@ -0,0 +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 { asSchema } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport type { WitnessConfig } from '@xyo-network/witness-model'\n\nexport const UrlWitnessConfigSchema = asSchema(`${UrlSchema}.witness.config`, true)\nexport type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema\n\nexport type UrlWitnessConfig = WitnessConfig<{\n schema: UrlWitnessConfigSchema\n urls?: string[]\n}>\n","import { assertEx } from '@xylabs/sdk-js'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport type { UrlPayload } from '@xyo-network/url-payload-plugin'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config.ts'\nimport type { 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 // eslint-disable-next-line sonarjs/public-static-readonly\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\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"]}
@@ -0,0 +1,2 @@
1
+ export declare const hashFile: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAgBpD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const hashHttpUrl: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashHttpUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAkBvD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const hashUrl: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAcnD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './hashUrl.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,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { UrlWitness } from './Witness/index.ts';
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("./Witness/Params.ts").UrlWitnessParams>>;
3
+ //# sourceMappingURL=PluginBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginBrowser.d.ts","sourceRoot":"","sources":["../../src/PluginBrowser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,SAAS,oIASnB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { UrlWitness } from './Witness/index.ts';
2
+ export declare const UrlPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<UrlWitness<import("./Witness/Params.ts").UrlWitnessParams>>;
3
+ //# sourceMappingURL=PluginNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginNode.d.ts","sourceRoot":"","sources":["../../src/PluginNode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,SAAS,oIASnB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { WitnessConfig } from '@xyo-network/witness-model';
2
+ export declare const UrlWitnessConfigSchema: string & {
3
+ readonly __schema: true;
4
+ };
5
+ export type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema;
6
+ export type UrlWitnessConfig = WitnessConfig<{
7
+ schema: UrlWitnessConfigSchema;
8
+ urls?: string[];
9
+ }>;
10
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/Witness/Config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,eAAO,MAAM,sBAAsB;;CAAgD,CAAA;AACnF,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC3C,MAAM,EAAE,sBAAsB,CAAA;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { AnyConfigSchema } from '@xyo-network/module-model';
2
+ import type { WitnessParams } from '@xyo-network/witness-model';
3
+ import type { UrlWitnessConfig } from './Config.ts';
4
+ export type UrlWitnessParams = WitnessParams<AnyConfigSchema<UrlWitnessConfig>>;
5
+ //# sourceMappingURL=Params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Params.d.ts","sourceRoot":"","sources":["../../../src/Witness/Params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { AbstractWitness } from '@xyo-network/abstract-witness';
2
+ import type { Payload, Schema } from '@xyo-network/payload-model';
3
+ import type { UrlWitnessParams } from './Params.ts';
4
+ export declare class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {
5
+ static readonly configSchemas: Schema[];
6
+ static readonly defaultConfigSchema: Schema;
7
+ static hashUrl: ((url: string) => Promise<string>) | undefined;
8
+ get urls(): string[] | undefined;
9
+ protected observeHandler(payloads?: Payload[]): Promise<Payload[]>;
10
+ }
11
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAKjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,qBAAa,UAAU,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC3G,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAE7E,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAY;IAE1E,IAAI,IAAI,yBAEP;cAEwB,cAAc,CAAC,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAoBtF"}
@@ -0,0 +1,4 @@
1
+ export * from './Config.ts';
2
+ export * from './Params.ts';
3
+ export * from './Witness.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode.ts';
2
+ export * from './Witness/index.ts';
3
+ //# sourceMappingURL=indexBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexBrowser.d.ts","sourceRoot":"","sources":["../../src/indexBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACjE,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { UrlPlugin as default, UrlPlugin } from './PluginNode.ts';
2
+ export * from './Witness/index.ts';
3
+ //# sourceMappingURL=indexNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexNode.d.ts","sourceRoot":"","sources":["../../src/indexNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACjE,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,117 @@
1
+ // src/util/hashFile.ts
2
+ import { createReadStream } from "fs";
3
+ import { fileURLToPath } from "url";
4
+ import { Crypto } from "@xylabs/crypto";
5
+ var hashFile = (url) => {
6
+ const path = url.startsWith("file://") ? fileURLToPath(url) : url;
7
+ const ret = new Promise((resolve, reject) => {
8
+ const hash = Crypto.createHash("sha256");
9
+ const stream = createReadStream(path);
10
+ stream.on("data", (data) => {
11
+ hash.update(data);
12
+ });
13
+ stream.on("end", () => {
14
+ resolve(hash.digest("hex"));
15
+ });
16
+ stream.on("error", (err) => {
17
+ reject(err);
18
+ });
19
+ });
20
+ return ret;
21
+ };
22
+
23
+ // src/util/hashHttpUrl.ts
24
+ import http from "http";
25
+ import https from "https";
26
+ import { Crypto as Crypto2 } from "@xylabs/crypto";
27
+ var hashHttpUrl = (url) => {
28
+ const ret = new Promise((resolve, reject) => {
29
+ const hash = Crypto2.createHash("sha256");
30
+ const lib = url.startsWith("https") ? https : http;
31
+ lib.get(url, (res) => {
32
+ res.on("data", (data) => {
33
+ hash.update(data);
34
+ });
35
+ res.on("end", () => {
36
+ resolve(hash.digest("hex"));
37
+ });
38
+ }).on("error", (err) => {
39
+ reject(err);
40
+ });
41
+ });
42
+ return ret;
43
+ };
44
+
45
+ // src/util/hashUrl.ts
46
+ var hashUrl = (url) => {
47
+ const scheme = url.split("://")[0]?.toLowerCase();
48
+ switch (scheme) {
49
+ case "file": {
50
+ return hashFile(url);
51
+ }
52
+ case "http":
53
+ case "https": {
54
+ return hashHttpUrl(url);
55
+ }
56
+ default: {
57
+ throw new Error(`Unsupported URL scheme: ${scheme}`);
58
+ }
59
+ }
60
+ };
61
+
62
+ // src/Witness/Config.ts
63
+ import { asSchema } from "@xyo-network/payload-model";
64
+ import { UrlSchema } from "@xyo-network/url-payload-plugin";
65
+ var UrlWitnessConfigSchema = asSchema(`${UrlSchema}.witness.config`, true);
66
+
67
+ // src/Witness/Witness.ts
68
+ import { assertEx } from "@xylabs/sdk-js";
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 = [...super.configSchemas, UrlWitnessConfigSchema];
73
+ static defaultConfigSchema = UrlWitnessConfigSchema;
74
+ // eslint-disable-next-line sonarjs/public-static-readonly
75
+ static hashUrl = void 0;
76
+ get urls() {
77
+ return this.config?.urls;
78
+ }
79
+ async observeHandler(payloads = []) {
80
+ if (_UrlWitness.hashUrl === void 0) {
81
+ throw new Error("Set UrlWitness.hashUrl before using");
82
+ }
83
+ const urls = this.urls?.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
+
109
+ // src/indexNode.ts
110
+ UrlWitness.hashUrl = hashUrl;
111
+ export {
112
+ UrlPlugin,
113
+ UrlWitness,
114
+ UrlWitnessConfigSchema,
115
+ UrlPlugin as default
116
+ };
117
+ //# sourceMappingURL=indexNode.mjs.map
@@ -0,0 +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 { asSchema } from '@xyo-network/payload-model'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport type { WitnessConfig } from '@xyo-network/witness-model'\n\nexport const UrlWitnessConfigSchema = asSchema(`${UrlSchema}.witness.config`, true)\nexport type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema\n\nexport type UrlWitnessConfig = WitnessConfig<{\n schema: UrlWitnessConfigSchema\n urls?: string[]\n}>\n","import { assertEx } from '@xylabs/sdk-js'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport type { UrlPayload } from '@xyo-network/url-payload-plugin'\nimport { UrlSchema } from '@xyo-network/url-payload-plugin'\n\nimport { UrlWitnessConfigSchema } from './Config.ts'\nimport type { 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 // eslint-disable-next-line sonarjs/public-static-readonly\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\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"]}
@@ -0,0 +1,2 @@
1
+ export declare const hashFile: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashFile.d.ts","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAgBpD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const hashHttpUrl: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashHttpUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashHttpUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAkBvD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const hashUrl: (url: string) => Promise<string>;
2
+ //# sourceMappingURL=hashUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashUrl.d.ts","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAcnD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './hashUrl.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,cAAc,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/url-plugin",
3
- "version": "5.3.2",
3
+ "version": "5.3.3",
4
4
  "description": "Typescript/Javascript Plugins for XYO Platform",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -38,14 +38,15 @@
38
38
  "types": "dist/neutral/indexNode.d.ts",
39
39
  "files": [
40
40
  "dist",
41
- "src",
42
- "!**/*.bench.*",
43
- "!**/*.spec.*",
44
- "!**/*.test.*"
41
+ "README.md"
45
42
  ],
43
+ "dependencies": {
44
+ "@xyo-network/url-payload-plugin": "workspace:^"
45
+ },
46
46
  "devDependencies": {
47
47
  "@xylabs/crypto": "~5.0.90",
48
48
  "@xylabs/sdk-js": "^5.0.90",
49
+ "@xylabs/ts-scripts-common": "~7.5.10",
49
50
  "@xylabs/ts-scripts-yarn3": "~7.5.10",
50
51
  "@xylabs/tsconfig": "~7.5.10",
51
52
  "@xylabs/vitest-extended": "~5.0.90",
@@ -53,14 +54,19 @@
53
54
  "@xyo-network/module-model": "~5.3.5",
54
55
  "@xyo-network/payload-model": "~5.3.5",
55
56
  "@xyo-network/payloadset-plugin": "~5.3.5",
56
- "@xyo-network/url-payload-plugin": "5.3.2",
57
57
  "@xyo-network/witness-model": "~5.3.5",
58
58
  "typescript": "~5.9.3",
59
59
  "vitest": "~4.1.2",
60
60
  "zod": "^4.3.6"
61
61
  },
62
62
  "peerDependencies": {
63
+ "@xylabs/crypto": "^5",
63
64
  "@xylabs/sdk-js": "^5",
65
+ "@xyo-network/abstract-witness": "^5",
66
+ "@xyo-network/module-model": "^5",
67
+ "@xyo-network/payload-model": "^5",
68
+ "@xyo-network/payloadset-plugin": "^5",
69
+ "@xyo-network/witness-model": "^5",
64
70
  "zod": "^4"
65
71
  },
66
72
  "publishConfig": {
@@ -1,16 +0,0 @@
1
- import { PayloadSetSchema } from '@xyo-network/payload-model'
2
- import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
3
- import { UrlSchema } from '@xyo-network/url-payload-plugin'
4
-
5
- import { UrlWitness } from './Witness/index.ts'
6
-
7
- export const UrlPlugin = () =>
8
- createPayloadSetWitnessPlugin<UrlWitness>(
9
- { required: { [UrlSchema]: 1 }, schema: PayloadSetSchema },
10
- {
11
- witness: async (params) => {
12
- const result = await UrlWitness.create(params)
13
- return result
14
- },
15
- },
16
- )
package/src/PluginNode.ts DELETED
@@ -1,16 +0,0 @@
1
- import { PayloadSetSchema } from '@xyo-network/payload-model'
2
- import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
3
- import { UrlSchema } from '@xyo-network/url-payload-plugin'
4
-
5
- import { UrlWitness } from './Witness/index.ts'
6
-
7
- export const UrlPlugin = () =>
8
- createPayloadSetWitnessPlugin<UrlWitness>(
9
- { required: { [UrlSchema]: 1 }, schema: PayloadSetSchema },
10
- {
11
- witness: async (params) => {
12
- const result = await UrlWitness.create(params)
13
- return result
14
- },
15
- },
16
- )
@@ -1,11 +0,0 @@
1
- import { asSchema } from '@xyo-network/payload-model'
2
- import { UrlSchema } from '@xyo-network/url-payload-plugin'
3
- import type { WitnessConfig } from '@xyo-network/witness-model'
4
-
5
- export const UrlWitnessConfigSchema = asSchema(`${UrlSchema}.witness.config`, true)
6
- export type UrlWitnessConfigSchema = typeof UrlWitnessConfigSchema
7
-
8
- export type UrlWitnessConfig = WitnessConfig<{
9
- schema: UrlWitnessConfigSchema
10
- urls?: string[]
11
- }>
@@ -1,6 +0,0 @@
1
- import type { AnyConfigSchema } from '@xyo-network/module-model'
2
- import type { WitnessParams } from '@xyo-network/witness-model'
3
-
4
- import type { UrlWitnessConfig } from './Config.ts'
5
-
6
- export type UrlWitnessParams = WitnessParams<AnyConfigSchema<UrlWitnessConfig>>
@@ -1,40 +0,0 @@
1
- import { assertEx } from '@xylabs/sdk-js'
2
- import { AbstractWitness } from '@xyo-network/abstract-witness'
3
- import type { Payload, Schema } from '@xyo-network/payload-model'
4
- import type { UrlPayload } from '@xyo-network/url-payload-plugin'
5
- import { UrlSchema } from '@xyo-network/url-payload-plugin'
6
-
7
- import { UrlWitnessConfigSchema } from './Config.ts'
8
- import type { UrlWitnessParams } from './Params.ts'
9
-
10
- export class UrlWitness<TParams extends UrlWitnessParams = UrlWitnessParams> extends AbstractWitness<TParams> {
11
- static override readonly configSchemas: Schema[] = [...super.configSchemas, UrlWitnessConfigSchema]
12
- static override readonly defaultConfigSchema: Schema = UrlWitnessConfigSchema
13
- // eslint-disable-next-line sonarjs/public-static-readonly
14
- static hashUrl: ((url: string) => Promise<string>) | undefined = undefined
15
-
16
- get urls() {
17
- return this.config?.urls
18
- }
19
-
20
- protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {
21
- if (UrlWitness.hashUrl === undefined) {
22
- throw new Error('Set UrlWitness.hashUrl before using')
23
- }
24
- const urls: UrlPayload[]
25
- = this.urls?.map(url => ({ schema: UrlSchema, url }))
26
- ?? payloads
27
- .filter((p): p is UrlPayload => p.schema === UrlSchema)
28
- .map((p) => {
29
- return { schema: UrlSchema, url: p.url }
30
- })
31
- const hashed = await Promise.all(
32
- urls.map(async (url) => {
33
- // TODO: Different schema for hashed url
34
- return { ...url, hash: await assertEx(UrlWitness.hashUrl, () => 'Set UrlWitness.hashUrl before using')(url.url) }
35
- }),
36
- )
37
- // TODO: Handle partial success
38
- return hashed
39
- }
40
- }
@@ -1,3 +0,0 @@
1
- export * from './Config.ts'
2
- export * from './Params.ts'
3
- export * from './Witness.ts'
@@ -1,2 +0,0 @@
1
- export { UrlPlugin as default, UrlPlugin } from './PluginNode.ts'
2
- export * from './Witness/index.ts'
package/src/indexNode.ts DELETED
@@ -1,7 +0,0 @@
1
- import { hashUrl } from './util/index.ts'
2
- import { UrlWitness } from './Witness/index.ts'
3
-
4
- UrlWitness.hashUrl = hashUrl
5
-
6
- export { UrlPlugin as default, UrlPlugin } from './PluginNode.ts'
7
- export * from './Witness/index.ts'
@@ -1,22 +0,0 @@
1
- import { createReadStream } from 'node:fs'
2
- import { fileURLToPath } from 'node:url'
3
-
4
- import { Crypto } from '@xylabs/crypto'
5
-
6
- export const hashFile = (url: string): Promise<string> => {
7
- const path = url.startsWith('file://') ? fileURLToPath(url) : url
8
- const ret = new Promise<string>((resolve, reject) => {
9
- const hash = Crypto.createHash('sha256')
10
- const stream = createReadStream(path)
11
- stream.on('data', (data) => {
12
- hash.update(data)
13
- })
14
- stream.on('end', () => {
15
- resolve(hash.digest('hex'))
16
- })
17
- stream.on('error', (err) => {
18
- reject(err)
19
- })
20
- })
21
- return ret
22
- }
@@ -1,24 +0,0 @@
1
- import http from 'node:http'
2
- import https from 'node:https'
3
-
4
- import { Crypto } from '@xylabs/crypto'
5
-
6
- export const hashHttpUrl = (url: string): Promise<string> => {
7
- const ret = new Promise<string>((resolve, reject) => {
8
- const hash = Crypto.createHash('sha256')
9
- const lib = url.startsWith('https') ? https : http
10
- lib
11
- .get(url, (res) => {
12
- res.on('data', (data) => {
13
- hash.update(data)
14
- })
15
- res.on('end', () => {
16
- resolve(hash.digest('hex'))
17
- })
18
- })
19
- .on('error', (err) => {
20
- reject(err)
21
- })
22
- })
23
- return ret
24
- }
@@ -1,18 +0,0 @@
1
- import { hashFile } from './hashFile.ts'
2
- import { hashHttpUrl } from './hashHttpUrl.ts'
3
-
4
- export const hashUrl = (url: string): Promise<string> => {
5
- const scheme = url.split('://')[0]?.toLowerCase()
6
- switch (scheme) {
7
- case 'file': {
8
- return hashFile(url)
9
- }
10
- case 'http':
11
- case 'https': {
12
- return hashHttpUrl(url)
13
- }
14
- default: {
15
- throw new Error(`Unsupported URL scheme: ${scheme}`)
16
- }
17
- }
18
- }
package/src/util/index.ts DELETED
@@ -1 +0,0 @@
1
- export * from './hashUrl.ts'
@@ -1 +0,0 @@
1
- This file exists to test hashing