@xyo-network/url-plugin 2.74.5 → 2.75.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.
- package/dist/docs.json +555 -555
- package/dist/node/Plugin.d.cts.map +1 -0
- package/dist/node/Plugin.d.mts.map +1 -0
- package/dist/node/Plugin.d.ts +55 -0
- package/dist/node/Plugin.d.ts.map +1 -0
- package/dist/node/Plugin.js +142 -0
- package/dist/node/Plugin.js.map +1 -0
- package/dist/node/Plugin.mjs +107 -0
- package/dist/node/Plugin.mjs.map +1 -0
- package/dist/node/Witness/Config.d.cts.map +1 -0
- package/dist/node/Witness/Config.d.mts.map +1 -0
- package/dist/node/Witness/Config.d.ts +8 -0
- package/dist/node/Witness/Config.d.ts.map +1 -0
- package/dist/node/Witness/Config.js +32 -0
- package/dist/node/Witness/Config.js.map +1 -0
- package/dist/node/Witness/Config.mjs +7 -0
- package/dist/node/Witness/Config.mjs.map +1 -0
- package/dist/node/Witness/Params.d.cts.map +1 -0
- package/dist/node/Witness/Params.d.mts.map +1 -0
- package/dist/node/Witness/Params.d.ts +5 -0
- package/dist/node/Witness/Params.d.ts.map +1 -0
- package/dist/node/Witness/Params.js +19 -0
- package/dist/node/Witness/Params.js.map +1 -0
- package/dist/node/Witness/Params.mjs +1 -0
- package/dist/node/Witness/Params.mjs.map +1 -0
- package/dist/node/Witness/Witness.d.cts.map +1 -0
- package/dist/node/Witness/Witness.d.mts.map +1 -0
- package/dist/node/Witness/Witness.d.ts +9 -0
- package/dist/node/Witness/Witness.d.ts.map +1 -0
- package/dist/node/Witness/Witness.js +126 -0
- package/dist/node/Witness/Witness.js.map +1 -0
- package/dist/node/Witness/Witness.mjs +91 -0
- package/dist/node/Witness/Witness.mjs.map +1 -0
- package/dist/node/Witness/index.d.cts.map +1 -0
- package/dist/node/Witness/index.d.mts.map +1 -0
- package/dist/node/Witness/index.d.ts +4 -0
- package/dist/node/Witness/index.d.ts.map +1 -0
- package/dist/node/Witness/index.js +130 -0
- package/dist/node/Witness/index.js.map +1 -0
- package/dist/node/Witness/index.mjs +92 -0
- package/dist/node/Witness/index.mjs.map +1 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.mts.map +1 -0
- package/dist/node/index.d.ts +5 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/{index.js → node/index.js} +8 -5
- package/dist/node/index.js.map +1 -0
- package/dist/{index.mjs → node/index.mjs} +7 -4
- package/dist/node/index.mjs.map +1 -0
- package/dist/node/util/hashFile.d.cts.map +1 -0
- package/dist/node/util/hashFile.d.mts.map +1 -0
- package/dist/node/util/hashFile.d.ts +2 -0
- package/dist/node/util/hashFile.d.ts.map +1 -0
- package/dist/node/util/hashFile.js +60 -0
- package/dist/node/util/hashFile.js.map +1 -0
- package/dist/node/util/hashFile.mjs +25 -0
- package/dist/node/util/hashFile.mjs.map +1 -0
- package/dist/node/util/hashHttpUrl.d.cts.map +1 -0
- package/dist/node/util/hashHttpUrl.d.mts.map +1 -0
- package/dist/node/util/hashHttpUrl.d.ts +2 -0
- package/dist/node/util/hashHttpUrl.d.ts.map +1 -0
- package/dist/node/util/hashHttpUrl.js +60 -0
- package/dist/node/util/hashHttpUrl.js.map +1 -0
- package/dist/node/util/hashHttpUrl.mjs +25 -0
- package/dist/node/util/hashHttpUrl.mjs.map +1 -0
- package/dist/node/util/hashUrl.d.cts.map +1 -0
- package/dist/node/util/hashUrl.d.mts.map +1 -0
- package/dist/node/util/hashUrl.d.ts +2 -0
- package/dist/node/util/hashUrl.d.ts.map +1 -0
- package/dist/node/util/hashUrl.js +99 -0
- package/dist/node/util/hashUrl.js.map +1 -0
- package/dist/node/util/hashUrl.mjs +62 -0
- package/dist/node/util/hashUrl.mjs.map +1 -0
- package/dist/node/util/index.d.cts.map +1 -0
- package/dist/node/util/index.d.mts.map +1 -0
- package/dist/node/util/index.d.ts +2 -0
- package/dist/node/util/index.d.ts.map +1 -0
- package/dist/node/util/index.js +99 -0
- package/dist/node/util/index.js.map +1 -0
- package/dist/node/util/index.mjs +62 -0
- package/dist/node/util/index.mjs.map +1 -0
- package/package.json +29 -27
- package/src/util/hashHttpUrl.ts +1 -1
- package/dist/Plugin.d.mts.map +0 -1
- package/dist/Plugin.d.ts.map +0 -1
- package/dist/Witness/Config.d.mts.map +0 -1
- package/dist/Witness/Config.d.ts.map +0 -1
- package/dist/Witness/Params.d.mts.map +0 -1
- package/dist/Witness/Params.d.ts.map +0 -1
- package/dist/Witness/Witness.d.mts.map +0 -1
- package/dist/Witness/Witness.d.ts.map +0 -1
- package/dist/Witness/index.d.mts.map +0 -1
- package/dist/Witness/index.d.ts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/util/hashFile.d.mts.map +0 -1
- package/dist/util/hashFile.d.ts.map +0 -1
- package/dist/util/hashHttpUrl.d.mts.map +0 -1
- package/dist/util/hashHttpUrl.d.ts.map +0 -1
- package/dist/util/hashUrl.d.mts.map +0 -1
- package/dist/util/hashUrl.d.ts.map +0 -1
- package/dist/util/index.d.mts.map +0 -1
- package/dist/util/index.d.ts.map +0 -1
- /package/dist/{Plugin.d.mts → node/Plugin.d.cts} +0 -0
- /package/dist/{Plugin.d.ts → node/Plugin.d.mts} +0 -0
- /package/dist/{Witness/Config.d.mts → node/Witness/Config.d.cts} +0 -0
- /package/dist/{Witness/Config.d.ts → node/Witness/Config.d.mts} +0 -0
- /package/dist/{Witness/Params.d.mts → node/Witness/Params.d.cts} +0 -0
- /package/dist/{Witness/Params.d.ts → node/Witness/Params.d.mts} +0 -0
- /package/dist/{Witness/Witness.d.mts → node/Witness/Witness.d.cts} +0 -0
- /package/dist/{Witness/Witness.d.ts → node/Witness/Witness.d.mts} +0 -0
- /package/dist/{Witness/index.d.mts → node/Witness/index.d.cts} +0 -0
- /package/dist/{Witness/index.d.ts → node/Witness/index.d.mts} +0 -0
- /package/dist/{index.d.mts → node/index.d.cts} +0 -0
- /package/dist/{index.d.ts → node/index.d.mts} +0 -0
- /package/dist/{util/hashFile.d.mts → node/util/hashFile.d.cts} +0 -0
- /package/dist/{util/hashFile.d.ts → node/util/hashFile.d.mts} +0 -0
- /package/dist/{util/hashHttpUrl.d.mts → node/util/hashHttpUrl.d.cts} +0 -0
- /package/dist/{util/hashHttpUrl.d.ts → node/util/hashHttpUrl.d.mts} +0 -0
- /package/dist/{util/hashUrl.d.mts → node/util/hashUrl.d.cts} +0 -0
- /package/dist/{util/hashUrl.d.ts → node/util/hashUrl.d.mts} +0 -0
- /package/dist/{util/index.d.mts → node/util/index.d.cts} +0 -0
- /package/dist/{util/index.d.ts → node/util/index.d.mts} +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// src/Witness/Witness.ts
|
|
2
|
+
import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
|
|
3
|
+
import { AbstractWitness } from "@xyo-network/witness";
|
|
4
|
+
|
|
5
|
+
// src/util/hashFile.ts
|
|
6
|
+
import Crypto from "crypto";
|
|
7
|
+
import { createReadStream } from "fs";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
var hashFile = (url) => {
|
|
10
|
+
const path = url.startsWith("file://") ? fileURLToPath(url) : url;
|
|
11
|
+
const ret = new Promise((resolve, reject) => {
|
|
12
|
+
const hash = Crypto.createHash("sha256");
|
|
13
|
+
const stream = createReadStream(path);
|
|
14
|
+
stream.on("data", (data) => {
|
|
15
|
+
hash.update(data);
|
|
16
|
+
});
|
|
17
|
+
stream.on("end", () => {
|
|
18
|
+
resolve(hash.digest("hex"));
|
|
19
|
+
});
|
|
20
|
+
stream.on("error", (err) => {
|
|
21
|
+
reject(err);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
return ret;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// src/util/hashHttpUrl.ts
|
|
28
|
+
import { Crypto as Crypto2 } from "@xylabs/crypto";
|
|
29
|
+
import http from "http";
|
|
30
|
+
import https from "https";
|
|
31
|
+
var hashHttpUrl = (url) => {
|
|
32
|
+
const ret = new Promise((resolve, reject) => {
|
|
33
|
+
const hash = Crypto2.createHash("sha256");
|
|
34
|
+
const lib = url.startsWith("https") ? https : http;
|
|
35
|
+
lib.get(url, (res) => {
|
|
36
|
+
res.on("data", (data) => {
|
|
37
|
+
hash.update(data);
|
|
38
|
+
});
|
|
39
|
+
res.on("end", () => {
|
|
40
|
+
resolve(hash.digest("hex"));
|
|
41
|
+
});
|
|
42
|
+
}).on("error", (err) => {
|
|
43
|
+
reject(err);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
return ret;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/util/hashUrl.ts
|
|
50
|
+
var hashUrl = (url) => {
|
|
51
|
+
var _a;
|
|
52
|
+
const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
|
|
53
|
+
switch (scheme) {
|
|
54
|
+
case "file":
|
|
55
|
+
return hashFile(url);
|
|
56
|
+
case "http":
|
|
57
|
+
case "https":
|
|
58
|
+
return hashHttpUrl(url);
|
|
59
|
+
default:
|
|
60
|
+
throw new Error(`Unsupported URL scheme: ${scheme}`);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// src/Witness/Config.ts
|
|
65
|
+
import { UrlSchema } from "@xyo-network/url-payload-plugin";
|
|
66
|
+
var UrlWitnessConfigSchema = `${UrlSchema}.witness.config`;
|
|
67
|
+
|
|
68
|
+
// src/Witness/Witness.ts
|
|
69
|
+
var UrlWitness = class extends AbstractWitness {
|
|
70
|
+
static configSchemas = [UrlWitnessConfigSchema];
|
|
71
|
+
get urls() {
|
|
72
|
+
var _a;
|
|
73
|
+
return (_a = this.config) == null ? void 0 : _a.urls;
|
|
74
|
+
}
|
|
75
|
+
async observeHandler(payloads = []) {
|
|
76
|
+
var _a;
|
|
77
|
+
const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({ schema: UrlSchema2, url }))) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
|
|
78
|
+
return { schema: UrlSchema2, url: p.url };
|
|
79
|
+
});
|
|
80
|
+
const hashed = await Promise.all(
|
|
81
|
+
urls.map(async (url) => {
|
|
82
|
+
return { ...url, hash: await hashUrl(url.url) };
|
|
83
|
+
})
|
|
84
|
+
);
|
|
85
|
+
return hashed;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
export {
|
|
89
|
+
UrlWitness
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=Witness.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/Witness/Witness.ts","../../../src/util/hashFile.ts","../../../src/util/hashHttpUrl.ts","../../../src/util/hashUrl.ts","../../../src/Witness/Config.ts"],"sourcesContent":["import { Payload } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { AbstractWitness } from '@xyo-network/witness'\n\nimport { hashUrl } from '../util'\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\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\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 hashUrl(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import Crypto from '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 { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { WitnessConfig } from '@xyo-network/witness'\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"],"mappings":";AACA,SAAqB,aAAAA,kBAAiB;AACtC,SAAS,uBAAuB;;;ACFhC,OAAO,YAAY;AACnB,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,IAAM,WAAW,CAAC,QAAiC;AACxD,QAAM,OAAO,IAAI,WAAW,SAAS,IAAI,cAAc,GAAG,IAAI;AAC9D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAO,OAAO,WAAW,QAAQ;AACvC,UAAM,SAAS,iBAAiB,IAAI;AACpC,WAAO,GAAG,QAAQ,CAAC,SAAS;AAC1B,WAAK,OAAO,IAAI;AAAA,IAClB,CAAC;AACD,WAAO,GAAG,OAAO,MAAM;AACrB,cAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,IAC5B,CAAC;AACD,WAAO,GAAG,SAAS,CAAC,QAAQ;AAC1B,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;;;ACpBA,SAAS,UAAAC,eAAc;AACvB,OAAO,UAAU;AACjB,OAAO,WAAW;AAEX,IAAM,cAAc,CAAC,QAAiC;AAC3D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAOA,QAAO,WAAW,QAAQ;AACvC,UAAM,MAAM,IAAI,WAAW,OAAO,IAAI,QAAQ;AAC9C,QACG,IAAI,KAAK,CAAC,QAAQ;AACjB,UAAI,GAAG,QAAQ,CAAC,SAAS;AACvB,aAAK,OAAO,IAAI;AAAA,MAClB,CAAC;AACD,UAAI,GAAG,OAAO,MAAM;AAClB,gBAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,MAC5B,CAAC;AAAA,IACH,CAAC,EACA,GAAG,SAAS,CAAC,QAAQ;AACpB,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACL,CAAC;AACD,SAAO;AACT;;;ACnBO,IAAM,UAAU,CAAC,QAAiC;AAHzD;AAIE,QAAM,UAAS,SAAI,MAAM,KAAK,EAAE,CAAC,MAAlB,mBAAqB;AACpC,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,SAAS,GAAG;AAAA,IACrB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,YAAY,GAAG;AAAA,IACxB;AACE,YAAM,IAAI,MAAM,2BAA2B,MAAM,EAAE;AAAA,EACvD;AACF;;;ACdA,SAAS,iBAAiB;AAGnB,IAAM,yBAAyB,GAAG,SAAS;;;AJK3C,IAAM,aAAN,cAA8E,gBAAyB;AAAA,EAC5G,OAAgB,gBAAgB,CAAC,sBAAsB;AAAA,EAEvD,IAAI,OAAO;AAXb;AAYI,YAAO,UAAK,WAAL,mBAAa;AAAA,EACtB;AAAA,EAEA,MAAyB,eAAe,WAAsB,CAAC,GAAuB;AAfxF;AAgBI,UAAM,SACJ,UAAK,SAAL,mBAAW,IAAI,CAAC,SAAS,EAAE,QAAQC,YAAW,IAAI,QAClD,SACG,OAAO,CAAC,MAAuB,EAAE,WAAWA,UAAS,EACrD,IAAI,CAAC,MAAM;AACV,aAAO,EAAE,QAAQA,YAAW,KAAK,EAAE,IAAI;AAAA,IACzC,CAAC;AACL,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,KAAK,IAAI,OAAO,QAAQ;AAEtB,eAAO,EAAE,GAAG,KAAK,MAAM,MAAM,QAAQ,IAAI,GAAG,EAAE;AAAA,MAChD,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;","names":["UrlSchema","Crypto","UrlSchema"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/Witness/index.ts
|
|
31
|
+
var Witness_exports = {};
|
|
32
|
+
__export(Witness_exports, {
|
|
33
|
+
UrlWitness: () => UrlWitness,
|
|
34
|
+
UrlWitnessConfigSchema: () => UrlWitnessConfigSchema
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(Witness_exports);
|
|
37
|
+
|
|
38
|
+
// src/Witness/Config.ts
|
|
39
|
+
var import_url_payload_plugin = require("@xyo-network/url-payload-plugin");
|
|
40
|
+
var UrlWitnessConfigSchema = `${import_url_payload_plugin.UrlSchema}.witness.config`;
|
|
41
|
+
|
|
42
|
+
// src/Witness/Witness.ts
|
|
43
|
+
var import_url_payload_plugin2 = require("@xyo-network/url-payload-plugin");
|
|
44
|
+
var import_witness = require("@xyo-network/witness");
|
|
45
|
+
|
|
46
|
+
// src/util/hashFile.ts
|
|
47
|
+
var import_crypto = __toESM(require("crypto"));
|
|
48
|
+
var import_fs = require("fs");
|
|
49
|
+
var import_url = require("url");
|
|
50
|
+
var hashFile = (url) => {
|
|
51
|
+
const path = url.startsWith("file://") ? (0, import_url.fileURLToPath)(url) : url;
|
|
52
|
+
const ret = new Promise((resolve, reject) => {
|
|
53
|
+
const hash = import_crypto.default.createHash("sha256");
|
|
54
|
+
const stream = (0, import_fs.createReadStream)(path);
|
|
55
|
+
stream.on("data", (data) => {
|
|
56
|
+
hash.update(data);
|
|
57
|
+
});
|
|
58
|
+
stream.on("end", () => {
|
|
59
|
+
resolve(hash.digest("hex"));
|
|
60
|
+
});
|
|
61
|
+
stream.on("error", (err) => {
|
|
62
|
+
reject(err);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
return ret;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// src/util/hashHttpUrl.ts
|
|
69
|
+
var import_crypto2 = require("@xylabs/crypto");
|
|
70
|
+
var import_http = __toESM(require("http"));
|
|
71
|
+
var import_https = __toESM(require("https"));
|
|
72
|
+
var hashHttpUrl = (url) => {
|
|
73
|
+
const ret = new Promise((resolve, reject) => {
|
|
74
|
+
const hash = import_crypto2.Crypto.createHash("sha256");
|
|
75
|
+
const lib = url.startsWith("https") ? import_https.default : import_http.default;
|
|
76
|
+
lib.get(url, (res) => {
|
|
77
|
+
res.on("data", (data) => {
|
|
78
|
+
hash.update(data);
|
|
79
|
+
});
|
|
80
|
+
res.on("end", () => {
|
|
81
|
+
resolve(hash.digest("hex"));
|
|
82
|
+
});
|
|
83
|
+
}).on("error", (err) => {
|
|
84
|
+
reject(err);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
return ret;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// src/util/hashUrl.ts
|
|
91
|
+
var hashUrl = (url) => {
|
|
92
|
+
var _a;
|
|
93
|
+
const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
|
|
94
|
+
switch (scheme) {
|
|
95
|
+
case "file":
|
|
96
|
+
return hashFile(url);
|
|
97
|
+
case "http":
|
|
98
|
+
case "https":
|
|
99
|
+
return hashHttpUrl(url);
|
|
100
|
+
default:
|
|
101
|
+
throw new Error(`Unsupported URL scheme: ${scheme}`);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// src/Witness/Witness.ts
|
|
106
|
+
var UrlWitness = class extends import_witness.AbstractWitness {
|
|
107
|
+
static configSchemas = [UrlWitnessConfigSchema];
|
|
108
|
+
get urls() {
|
|
109
|
+
var _a;
|
|
110
|
+
return (_a = this.config) == null ? void 0 : _a.urls;
|
|
111
|
+
}
|
|
112
|
+
async observeHandler(payloads = []) {
|
|
113
|
+
var _a;
|
|
114
|
+
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) => {
|
|
115
|
+
return { schema: import_url_payload_plugin2.UrlSchema, url: p.url };
|
|
116
|
+
});
|
|
117
|
+
const hashed = await Promise.all(
|
|
118
|
+
urls.map(async (url) => {
|
|
119
|
+
return { ...url, hash: await hashUrl(url.url) };
|
|
120
|
+
})
|
|
121
|
+
);
|
|
122
|
+
return hashed;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
126
|
+
0 && (module.exports = {
|
|
127
|
+
UrlWitness,
|
|
128
|
+
UrlWitnessConfigSchema
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/Witness/index.ts","../../../src/Witness/Config.ts","../../../src/Witness/Witness.ts","../../../src/util/hashFile.ts","../../../src/util/hashHttpUrl.ts","../../../src/util/hashUrl.ts"],"sourcesContent":["export * from './Config'\nexport * from './Params'\nexport * from './Witness'\n","import { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { WitnessConfig } from '@xyo-network/witness'\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 { Payload } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { AbstractWitness } from '@xyo-network/witness'\n\nimport { hashUrl } from '../util'\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\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\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 hashUrl(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import Crypto from '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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,gCAA0B;AAGnB,IAAM,yBAAyB,GAAG,mCAAS;;;ACFlD,IAAAA,6BAAsC;AACtC,qBAAgC;;;ACFhC,oBAAmB;AACnB,gBAAiC;AACjC,iBAA8B;AAEvB,IAAM,WAAW,CAAC,QAAiC;AACxD,QAAM,OAAO,IAAI,WAAW,SAAS,QAAI,0BAAc,GAAG,IAAI;AAC9D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAO,cAAAC,QAAO,WAAW,QAAQ;AACvC,UAAM,aAAS,4BAAiB,IAAI;AACpC,WAAO,GAAG,QAAQ,CAAC,SAAS;AAC1B,WAAK,OAAO,IAAI;AAAA,IAClB,CAAC;AACD,WAAO,GAAG,OAAO,MAAM;AACrB,cAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,IAC5B,CAAC;AACD,WAAO,GAAG,SAAS,CAAC,QAAQ;AAC1B,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;;;ACpBA,IAAAC,iBAAuB;AACvB,kBAAiB;AACjB,mBAAkB;AAEX,IAAM,cAAc,CAAC,QAAiC;AAC3D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAO,sBAAO,WAAW,QAAQ;AACvC,UAAM,MAAM,IAAI,WAAW,OAAO,IAAI,aAAAC,UAAQ,YAAAC;AAC9C,QACG,IAAI,KAAK,CAAC,QAAQ;AACjB,UAAI,GAAG,QAAQ,CAAC,SAAS;AACvB,aAAK,OAAO,IAAI;AAAA,MAClB,CAAC;AACD,UAAI,GAAG,OAAO,MAAM;AAClB,gBAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,MAC5B,CAAC;AAAA,IACH,CAAC,EACA,GAAG,SAAS,CAAC,QAAQ;AACpB,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACL,CAAC;AACD,SAAO;AACT;;;ACnBO,IAAM,UAAU,CAAC,QAAiC;AAHzD;AAIE,QAAM,UAAS,SAAI,MAAM,KAAK,EAAE,CAAC,MAAlB,mBAAqB;AACpC,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,SAAS,GAAG;AAAA,IACrB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,YAAY,GAAG;AAAA,IACxB;AACE,YAAM,IAAI,MAAM,2BAA2B,MAAM,EAAE;AAAA,EACvD;AACF;;;AHNO,IAAM,aAAN,cAA8E,+BAAyB;AAAA,EAC5G,OAAgB,gBAAgB,CAAC,sBAAsB;AAAA,EAEvD,IAAI,OAAO;AAXb;AAYI,YAAO,UAAK,WAAL,mBAAa;AAAA,EACtB;AAAA,EAEA,MAAyB,eAAe,WAAsB,CAAC,GAAuB;AAfxF;AAgBI,UAAM,SACJ,UAAK,SAAL,mBAAW,IAAI,CAAC,SAAS,EAAE,QAAQ,sCAAW,IAAI,QAClD,SACG,OAAO,CAAC,MAAuB,EAAE,WAAW,oCAAS,EACrD,IAAI,CAAC,MAAM;AACV,aAAO,EAAE,QAAQ,sCAAW,KAAK,EAAE,IAAI;AAAA,IACzC,CAAC;AACL,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,KAAK,IAAI,OAAO,QAAQ;AAEtB,eAAO,EAAE,GAAG,KAAK,MAAM,MAAM,QAAQ,IAAI,GAAG,EAAE;AAAA,MAChD,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;","names":["import_url_payload_plugin","Crypto","import_crypto","https","http"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// src/Witness/Config.ts
|
|
2
|
+
import { UrlSchema } from "@xyo-network/url-payload-plugin";
|
|
3
|
+
var UrlWitnessConfigSchema = `${UrlSchema}.witness.config`;
|
|
4
|
+
|
|
5
|
+
// src/Witness/Witness.ts
|
|
6
|
+
import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
|
|
7
|
+
import { AbstractWitness } from "@xyo-network/witness";
|
|
8
|
+
|
|
9
|
+
// src/util/hashFile.ts
|
|
10
|
+
import Crypto from "crypto";
|
|
11
|
+
import { createReadStream } from "fs";
|
|
12
|
+
import { fileURLToPath } from "url";
|
|
13
|
+
var hashFile = (url) => {
|
|
14
|
+
const path = url.startsWith("file://") ? fileURLToPath(url) : url;
|
|
15
|
+
const ret = new Promise((resolve, reject) => {
|
|
16
|
+
const hash = Crypto.createHash("sha256");
|
|
17
|
+
const stream = createReadStream(path);
|
|
18
|
+
stream.on("data", (data) => {
|
|
19
|
+
hash.update(data);
|
|
20
|
+
});
|
|
21
|
+
stream.on("end", () => {
|
|
22
|
+
resolve(hash.digest("hex"));
|
|
23
|
+
});
|
|
24
|
+
stream.on("error", (err) => {
|
|
25
|
+
reject(err);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return ret;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// src/util/hashHttpUrl.ts
|
|
32
|
+
import { Crypto as Crypto2 } from "@xylabs/crypto";
|
|
33
|
+
import http from "http";
|
|
34
|
+
import https from "https";
|
|
35
|
+
var hashHttpUrl = (url) => {
|
|
36
|
+
const ret = new Promise((resolve, reject) => {
|
|
37
|
+
const hash = Crypto2.createHash("sha256");
|
|
38
|
+
const lib = url.startsWith("https") ? https : http;
|
|
39
|
+
lib.get(url, (res) => {
|
|
40
|
+
res.on("data", (data) => {
|
|
41
|
+
hash.update(data);
|
|
42
|
+
});
|
|
43
|
+
res.on("end", () => {
|
|
44
|
+
resolve(hash.digest("hex"));
|
|
45
|
+
});
|
|
46
|
+
}).on("error", (err) => {
|
|
47
|
+
reject(err);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
return ret;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// src/util/hashUrl.ts
|
|
54
|
+
var hashUrl = (url) => {
|
|
55
|
+
var _a;
|
|
56
|
+
const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
|
|
57
|
+
switch (scheme) {
|
|
58
|
+
case "file":
|
|
59
|
+
return hashFile(url);
|
|
60
|
+
case "http":
|
|
61
|
+
case "https":
|
|
62
|
+
return hashHttpUrl(url);
|
|
63
|
+
default:
|
|
64
|
+
throw new Error(`Unsupported URL scheme: ${scheme}`);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// src/Witness/Witness.ts
|
|
69
|
+
var UrlWitness = class extends AbstractWitness {
|
|
70
|
+
static configSchemas = [UrlWitnessConfigSchema];
|
|
71
|
+
get urls() {
|
|
72
|
+
var _a;
|
|
73
|
+
return (_a = this.config) == null ? void 0 : _a.urls;
|
|
74
|
+
}
|
|
75
|
+
async observeHandler(payloads = []) {
|
|
76
|
+
var _a;
|
|
77
|
+
const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({ schema: UrlSchema2, url }))) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
|
|
78
|
+
return { schema: UrlSchema2, url: p.url };
|
|
79
|
+
});
|
|
80
|
+
const hashed = await Promise.all(
|
|
81
|
+
urls.map(async (url) => {
|
|
82
|
+
return { ...url, hash: await hashUrl(url.url) };
|
|
83
|
+
})
|
|
84
|
+
);
|
|
85
|
+
return hashed;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
export {
|
|
89
|
+
UrlWitness,
|
|
90
|
+
UrlWitnessConfigSchema
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/Witness/Config.ts","../../../src/Witness/Witness.ts","../../../src/util/hashFile.ts","../../../src/util/hashHttpUrl.ts","../../../src/util/hashUrl.ts"],"sourcesContent":["import { UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { WitnessConfig } from '@xyo-network/witness'\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 { Payload } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { AbstractWitness } from '@xyo-network/witness'\n\nimport { hashUrl } from '../util'\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\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\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 hashUrl(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import Crypto from '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":";AAAA,SAAS,iBAAiB;AAGnB,IAAM,yBAAyB,GAAG,SAAS;;;ACFlD,SAAqB,aAAAA,kBAAiB;AACtC,SAAS,uBAAuB;;;ACFhC,OAAO,YAAY;AACnB,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,IAAM,WAAW,CAAC,QAAiC;AACxD,QAAM,OAAO,IAAI,WAAW,SAAS,IAAI,cAAc,GAAG,IAAI;AAC9D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAO,OAAO,WAAW,QAAQ;AACvC,UAAM,SAAS,iBAAiB,IAAI;AACpC,WAAO,GAAG,QAAQ,CAAC,SAAS;AAC1B,WAAK,OAAO,IAAI;AAAA,IAClB,CAAC;AACD,WAAO,GAAG,OAAO,MAAM;AACrB,cAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,IAC5B,CAAC;AACD,WAAO,GAAG,SAAS,CAAC,QAAQ;AAC1B,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;;;ACpBA,SAAS,UAAAC,eAAc;AACvB,OAAO,UAAU;AACjB,OAAO,WAAW;AAEX,IAAM,cAAc,CAAC,QAAiC;AAC3D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAOA,QAAO,WAAW,QAAQ;AACvC,UAAM,MAAM,IAAI,WAAW,OAAO,IAAI,QAAQ;AAC9C,QACG,IAAI,KAAK,CAAC,QAAQ;AACjB,UAAI,GAAG,QAAQ,CAAC,SAAS;AACvB,aAAK,OAAO,IAAI;AAAA,MAClB,CAAC;AACD,UAAI,GAAG,OAAO,MAAM;AAClB,gBAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,MAC5B,CAAC;AAAA,IACH,CAAC,EACA,GAAG,SAAS,CAAC,QAAQ;AACpB,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACL,CAAC;AACD,SAAO;AACT;;;ACnBO,IAAM,UAAU,CAAC,QAAiC;AAHzD;AAIE,QAAM,UAAS,SAAI,MAAM,KAAK,EAAE,CAAC,MAAlB,mBAAqB;AACpC,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,SAAS,GAAG;AAAA,IACrB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,YAAY,GAAG;AAAA,IACxB;AACE,YAAM,IAAI,MAAM,2BAA2B,MAAM,EAAE;AAAA,EACvD;AACF;;;AHNO,IAAM,aAAN,cAA8E,gBAAyB;AAAA,EAC5G,OAAgB,gBAAgB,CAAC,sBAAsB;AAAA,EAEvD,IAAI,OAAO;AAXb;AAYI,YAAO,UAAK,WAAL,mBAAa;AAAA,EACtB;AAAA,EAEA,MAAyB,eAAe,WAAsB,CAAC,GAAuB;AAfxF;AAgBI,UAAM,SACJ,UAAK,SAAL,mBAAW,IAAI,CAAC,SAAS,EAAE,QAAQC,YAAW,IAAI,QAClD,SACG,OAAO,CAAC,MAAuB,EAAE,WAAWA,UAAS,EACrD,IAAI,CAAC,MAAM;AACV,aAAO,EAAE,QAAQA,YAAW,KAAK,EAAE,IAAI;AAAA,IACzC,CAAC;AACL,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,KAAK,IAAI,OAAO,QAAQ;AAEtB,eAAO,EAAE,GAAG,KAAK,MAAM,MAAM,QAAQ,IAAI,GAAG,EAAE;AAAA,MAChD,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;","names":["UrlSchema","Crypto","UrlSchema"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,CAAA;AAGpB,eAAe,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,CAAA;AAGpB,eAAe,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,CAAA;AAGpB,eAAe,SAAS,CAAA"}
|
|
@@ -73,12 +73,12 @@ var hashFile = (url) => {
|
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
// src/util/hashHttpUrl.ts
|
|
76
|
-
var import_crypto2 =
|
|
76
|
+
var import_crypto2 = require("@xylabs/crypto");
|
|
77
77
|
var import_http = __toESM(require("http"));
|
|
78
78
|
var import_https = __toESM(require("https"));
|
|
79
79
|
var hashHttpUrl = (url) => {
|
|
80
80
|
const ret = new Promise((resolve, reject) => {
|
|
81
|
-
const hash = import_crypto2.
|
|
81
|
+
const hash = import_crypto2.Crypto.createHash("sha256");
|
|
82
82
|
const lib = url.startsWith("https") ? import_https.default : import_http.default;
|
|
83
83
|
lib.get(url, (res) => {
|
|
84
84
|
res.on("data", (data) => {
|
|
@@ -96,7 +96,8 @@ var hashHttpUrl = (url) => {
|
|
|
96
96
|
|
|
97
97
|
// src/util/hashUrl.ts
|
|
98
98
|
var hashUrl = (url) => {
|
|
99
|
-
|
|
99
|
+
var _a;
|
|
100
|
+
const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
|
|
100
101
|
switch (scheme) {
|
|
101
102
|
case "file":
|
|
102
103
|
return hashFile(url);
|
|
@@ -112,10 +113,12 @@ var hashUrl = (url) => {
|
|
|
112
113
|
var UrlWitness = class extends import_witness.AbstractWitness {
|
|
113
114
|
static configSchemas = [UrlWitnessConfigSchema];
|
|
114
115
|
get urls() {
|
|
115
|
-
|
|
116
|
+
var _a;
|
|
117
|
+
return (_a = this.config) == null ? void 0 : _a.urls;
|
|
116
118
|
}
|
|
117
119
|
async observeHandler(payloads = []) {
|
|
118
|
-
|
|
120
|
+
var _a;
|
|
121
|
+
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) => {
|
|
119
122
|
return { schema: import_url_payload_plugin2.UrlSchema, url: p.url };
|
|
120
123
|
});
|
|
121
124
|
const hashed = await Promise.all(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Plugin.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 './Plugin'\n\nexport * from './Witness'\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'\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 { Payload } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { AbstractWitness } from '@xyo-network/witness'\n\nimport { hashUrl } from '../util'\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\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\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 hashUrl(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import Crypto from '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","Crypto","import_crypto","https","http"]}
|
|
@@ -34,7 +34,7 @@ var hashFile = (url) => {
|
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
// src/util/hashHttpUrl.ts
|
|
37
|
-
import Crypto2 from "crypto";
|
|
37
|
+
import { Crypto as Crypto2 } from "@xylabs/crypto";
|
|
38
38
|
import http from "http";
|
|
39
39
|
import https from "https";
|
|
40
40
|
var hashHttpUrl = (url) => {
|
|
@@ -57,7 +57,8 @@ var hashHttpUrl = (url) => {
|
|
|
57
57
|
|
|
58
58
|
// src/util/hashUrl.ts
|
|
59
59
|
var hashUrl = (url) => {
|
|
60
|
-
|
|
60
|
+
var _a;
|
|
61
|
+
const scheme = (_a = url.split("://")[0]) == null ? void 0 : _a.toLowerCase();
|
|
61
62
|
switch (scheme) {
|
|
62
63
|
case "file":
|
|
63
64
|
return hashFile(url);
|
|
@@ -73,10 +74,12 @@ var hashUrl = (url) => {
|
|
|
73
74
|
var UrlWitness = class extends AbstractWitness {
|
|
74
75
|
static configSchemas = [UrlWitnessConfigSchema];
|
|
75
76
|
get urls() {
|
|
76
|
-
|
|
77
|
+
var _a;
|
|
78
|
+
return (_a = this.config) == null ? void 0 : _a.urls;
|
|
77
79
|
}
|
|
78
80
|
async observeHandler(payloads = []) {
|
|
79
|
-
|
|
81
|
+
var _a;
|
|
82
|
+
const urls = ((_a = this.urls) == null ? void 0 : _a.map((url) => ({ schema: UrlSchema2, url }))) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
|
|
80
83
|
return { schema: UrlSchema2, url: p.url };
|
|
81
84
|
});
|
|
82
85
|
const hashed = await Promise.all(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/Plugin.ts","../../src/Witness/Config.ts","../../src/Witness/Witness.ts","../../src/util/hashFile.ts","../../src/util/hashHttpUrl.ts","../../src/util/hashUrl.ts","../../src/index.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'\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 { Payload } from '@xyo-network/payload-model'\nimport { UrlPayload, UrlSchema } from '@xyo-network/url-payload-plugin'\nimport { AbstractWitness } from '@xyo-network/witness'\n\nimport { hashUrl } from '../util'\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\n get urls() {\n return this.config?.urls\n }\n\n protected override async observeHandler(payloads: Payload[] = []): Promise<Payload[]> {\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 hashUrl(url.url) }\n }),\n )\n // TODO: Handle partial success\n return hashed\n }\n}\n","import Crypto from '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 './Plugin'\n\nexport * from './Witness'\n\nexport { UrlPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default UrlPlugin\n"],"mappings":";AAAA,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;AAC9C,SAAS,aAAAA,kBAAiB;;;ACF1B,SAAS,iBAAiB;AAGnB,IAAM,yBAAyB,GAAG,SAAS;;;ACFlD,SAAqB,aAAAC,kBAAiB;AACtC,SAAS,uBAAuB;;;ACFhC,OAAO,YAAY;AACnB,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,IAAM,WAAW,CAAC,QAAiC;AACxD,QAAM,OAAO,IAAI,WAAW,SAAS,IAAI,cAAc,GAAG,IAAI;AAC9D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAO,OAAO,WAAW,QAAQ;AACvC,UAAM,SAAS,iBAAiB,IAAI;AACpC,WAAO,GAAG,QAAQ,CAAC,SAAS;AAC1B,WAAK,OAAO,IAAI;AAAA,IAClB,CAAC;AACD,WAAO,GAAG,OAAO,MAAM;AACrB,cAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,IAC5B,CAAC;AACD,WAAO,GAAG,SAAS,CAAC,QAAQ;AAC1B,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;;;ACpBA,SAAS,UAAAC,eAAc;AACvB,OAAO,UAAU;AACjB,OAAO,WAAW;AAEX,IAAM,cAAc,CAAC,QAAiC;AAC3D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAOA,QAAO,WAAW,QAAQ;AACvC,UAAM,MAAM,IAAI,WAAW,OAAO,IAAI,QAAQ;AAC9C,QACG,IAAI,KAAK,CAAC,QAAQ;AACjB,UAAI,GAAG,QAAQ,CAAC,SAAS;AACvB,aAAK,OAAO,IAAI;AAAA,MAClB,CAAC;AACD,UAAI,GAAG,OAAO,MAAM;AAClB,gBAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,MAC5B,CAAC;AAAA,IACH,CAAC,EACA,GAAG,SAAS,CAAC,QAAQ;AACpB,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACL,CAAC;AACD,SAAO;AACT;;;ACnBO,IAAM,UAAU,CAAC,QAAiC;AAHzD;AAIE,QAAM,UAAS,SAAI,MAAM,KAAK,EAAE,CAAC,MAAlB,mBAAqB;AACpC,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,SAAS,GAAG;AAAA,IACrB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,YAAY,GAAG;AAAA,IACxB;AACE,YAAM,IAAI,MAAM,2BAA2B,MAAM,EAAE;AAAA,EACvD;AACF;;;AHNO,IAAM,aAAN,cAA8E,gBAAyB;AAAA,EAC5G,OAAgB,gBAAgB,CAAC,sBAAsB;AAAA,EAEvD,IAAI,OAAO;AAXb;AAYI,YAAO,UAAK,WAAL,mBAAa;AAAA,EACtB;AAAA,EAEA,MAAyB,eAAe,WAAsB,CAAC,GAAuB;AAfxF;AAgBI,UAAM,SACJ,UAAK,SAAL,mBAAW,IAAI,CAAC,SAAS,EAAE,QAAQC,YAAW,IAAI,QAClD,SACG,OAAO,CAAC,MAAuB,EAAE,WAAWA,UAAS,EACrD,IAAI,CAAC,MAAM;AACV,aAAO,EAAE,QAAQA,YAAW,KAAK,EAAE,IAAI;AAAA,IACzC,CAAC;AACL,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,KAAK,IAAI,OAAO,QAAQ;AAEtB,eAAO,EAAE,GAAG,KAAK,MAAM,MAAM,QAAQ,IAAI,GAAG,EAAE;AAAA,MAChD,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;;;AF1BO,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;;;AMRF,IAAO,cAAQ;","names":["UrlSchema","UrlSchema","Crypto","UrlSchema","UrlSchema"]}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/util/hashFile.ts
|
|
31
|
+
var hashFile_exports = {};
|
|
32
|
+
__export(hashFile_exports, {
|
|
33
|
+
hashFile: () => hashFile
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(hashFile_exports);
|
|
36
|
+
var import_crypto = __toESM(require("crypto"));
|
|
37
|
+
var import_fs = require("fs");
|
|
38
|
+
var import_url = require("url");
|
|
39
|
+
var hashFile = (url) => {
|
|
40
|
+
const path = url.startsWith("file://") ? (0, import_url.fileURLToPath)(url) : url;
|
|
41
|
+
const ret = new Promise((resolve, reject) => {
|
|
42
|
+
const hash = import_crypto.default.createHash("sha256");
|
|
43
|
+
const stream = (0, import_fs.createReadStream)(path);
|
|
44
|
+
stream.on("data", (data) => {
|
|
45
|
+
hash.update(data);
|
|
46
|
+
});
|
|
47
|
+
stream.on("end", () => {
|
|
48
|
+
resolve(hash.digest("hex"));
|
|
49
|
+
});
|
|
50
|
+
stream.on("error", (err) => {
|
|
51
|
+
reject(err);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
return ret;
|
|
55
|
+
};
|
|
56
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
57
|
+
0 && (module.exports = {
|
|
58
|
+
hashFile
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=hashFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/hashFile.ts"],"sourcesContent":["import Crypto from '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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,gBAAiC;AACjC,iBAA8B;AAEvB,IAAM,WAAW,CAAC,QAAiC;AACxD,QAAM,OAAO,IAAI,WAAW,SAAS,QAAI,0BAAc,GAAG,IAAI;AAC9D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAO,cAAAA,QAAO,WAAW,QAAQ;AACvC,UAAM,aAAS,4BAAiB,IAAI;AACpC,WAAO,GAAG,QAAQ,CAAC,SAAS;AAC1B,WAAK,OAAO,IAAI;AAAA,IAClB,CAAC;AACD,WAAO,GAAG,OAAO,MAAM;AACrB,cAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,IAC5B,CAAC;AACD,WAAO,GAAG,SAAS,CAAC,QAAQ;AAC1B,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;","names":["Crypto"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// src/util/hashFile.ts
|
|
2
|
+
import Crypto from "crypto";
|
|
3
|
+
import { createReadStream } from "fs";
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
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
|
+
export {
|
|
23
|
+
hashFile
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=hashFile.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/hashFile.ts"],"sourcesContent":["import Crypto from '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"],"mappings":";AAAA,OAAO,YAAY;AACnB,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,IAAM,WAAW,CAAC,QAAiC;AACxD,QAAM,OAAO,IAAI,WAAW,SAAS,IAAI,cAAc,GAAG,IAAI;AAC9D,QAAM,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnD,UAAM,OAAO,OAAO,WAAW,QAAQ;AACvC,UAAM,SAAS,iBAAiB,IAAI;AACpC,WAAO,GAAG,QAAQ,CAAC,SAAS;AAC1B,WAAK,OAAO,IAAI;AAAA,IAClB,CAAC;AACD,WAAO,GAAG,OAAO,MAAM;AACrB,cAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,IAC5B,CAAC;AACD,WAAO,GAAG,SAAS,CAAC,QAAQ;AAC1B,aAAO,GAAG;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|