@xyo-network/url-plugin 2.73.3 → 2.73.4
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 +33 -33
- package/dist/index.d.mts +80 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.js +149 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +110 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +33 -20
- package/src/util/hashFile.ts +2 -2
- package/src/util/hashHttpUrl.ts +2 -2
- package/tsup.config.ts +16 -0
- package/dist/cjs/Plugin.js +0 -16
- package/dist/cjs/Plugin.js.map +0 -1
- package/dist/cjs/Witness/Config.js +0 -6
- package/dist/cjs/Witness/Config.js.map +0 -1
- package/dist/cjs/Witness/Params.js +0 -3
- package/dist/cjs/Witness/Params.js.map +0 -1
- package/dist/cjs/Witness/Witness.js +0 -33
- package/dist/cjs/Witness/Witness.js.map +0 -1
- package/dist/cjs/Witness/index.js +0 -7
- package/dist/cjs/Witness/index.js.map +0 -1
- package/dist/cjs/index.js +0 -10
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/util/hashFile.js +0 -25
- package/dist/cjs/util/hashFile.js.map +0 -1
- package/dist/cjs/util/hashHttpUrl.js +0 -28
- package/dist/cjs/util/hashHttpUrl.js.map +0 -1
- package/dist/cjs/util/hashUrl.js +0 -20
- package/dist/cjs/util/hashUrl.js.map +0 -1
- package/dist/cjs/util/index.js +0 -5
- package/dist/cjs/util/index.js.map +0 -1
- package/dist/esm/Plugin.js +0 -11
- package/dist/esm/Plugin.js.map +0 -1
- package/dist/esm/Witness/Config.js +0 -3
- package/dist/esm/Witness/Config.js.map +0 -1
- package/dist/esm/Witness/Params.js +0 -2
- package/dist/esm/Witness/Params.js.map +0 -1
- package/dist/esm/Witness/Witness.js +0 -25
- package/dist/esm/Witness/Witness.js.map +0 -1
- package/dist/esm/Witness/index.js +0 -4
- package/dist/esm/Witness/index.js.map +0 -1
- package/dist/esm/index.js +0 -6
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/util/hashFile.js +0 -21
- package/dist/esm/util/hashFile.js.map +0 -1
- package/dist/esm/util/hashHttpUrl.js +0 -23
- package/dist/esm/util/hashHttpUrl.js.map +0 -1
- package/dist/esm/util/hashUrl.js +0 -15
- package/dist/esm/util/hashUrl.js.map +0 -1
- package/dist/esm/util/index.js +0 -2
- package/dist/esm/util/index.js.map +0 -1
- package/dist/types/Plugin.d.ts +0 -55
- package/dist/types/Plugin.d.ts.map +0 -1
- package/dist/types/Witness/Config.d.ts +0 -8
- package/dist/types/Witness/Config.d.ts.map +0 -1
- package/dist/types/Witness/Params.d.ts +0 -5
- package/dist/types/Witness/Params.d.ts.map +0 -1
- package/dist/types/Witness/Witness.d.ts +0 -9
- package/dist/types/Witness/Witness.d.ts.map +0 -1
- package/dist/types/Witness/index.d.ts +0 -4
- package/dist/types/Witness/index.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/util/hashFile.d.ts +0 -2
- package/dist/types/util/hashFile.d.ts.map +0 -1
- package/dist/types/util/hashHttpUrl.d.ts +0 -2
- package/dist/types/util/hashHttpUrl.d.ts.map +0 -1
- package/dist/types/util/hashUrl.d.ts +0 -2
- package/dist/types/util/hashUrl.d.ts.map +0 -1
- package/dist/types/util/index.d.ts +0 -2
- package/dist/types/util/index.d.ts.map +0 -1
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// src/Plugin.ts
|
|
2
|
+
import { PayloadSetSchema } from "@xyo-network/payload-model";
|
|
3
|
+
import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
|
|
4
|
+
import { UrlSchema as UrlSchema3 } from "@xyo-network/url-payload-plugin";
|
|
5
|
+
|
|
6
|
+
// src/Witness/Config.ts
|
|
7
|
+
import { UrlSchema } from "@xyo-network/url-payload-plugin";
|
|
8
|
+
var UrlWitnessConfigSchema = `${UrlSchema}.witness.config`;
|
|
9
|
+
|
|
10
|
+
// src/Witness/Witness.ts
|
|
11
|
+
import { UrlSchema as UrlSchema2 } from "@xyo-network/url-payload-plugin";
|
|
12
|
+
import { AbstractWitness } from "@xyo-network/witness";
|
|
13
|
+
|
|
14
|
+
// src/util/hashFile.ts
|
|
15
|
+
import crypto from "crypto";
|
|
16
|
+
import { createReadStream } from "fs";
|
|
17
|
+
import { fileURLToPath } from "url";
|
|
18
|
+
var hashFile = (url) => {
|
|
19
|
+
const path = url.startsWith("file://") ? fileURLToPath(url) : url;
|
|
20
|
+
const ret = new Promise((resolve, reject) => {
|
|
21
|
+
const hash = crypto.createHash("sha256");
|
|
22
|
+
const stream = createReadStream(path);
|
|
23
|
+
stream.on("data", (data) => {
|
|
24
|
+
hash.update(data);
|
|
25
|
+
});
|
|
26
|
+
stream.on("end", () => {
|
|
27
|
+
resolve(hash.digest("hex"));
|
|
28
|
+
});
|
|
29
|
+
stream.on("error", (err) => {
|
|
30
|
+
reject(err);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
return ret;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// src/util/hashHttpUrl.ts
|
|
37
|
+
import crypto2 from "crypto";
|
|
38
|
+
import http from "http";
|
|
39
|
+
import https from "https";
|
|
40
|
+
var hashHttpUrl = (url) => {
|
|
41
|
+
const ret = new Promise((resolve, reject) => {
|
|
42
|
+
const hash = crypto2.createHash("sha256");
|
|
43
|
+
const lib = url.startsWith("https") ? https : http;
|
|
44
|
+
lib.get(url, (res) => {
|
|
45
|
+
res.on("data", (data) => {
|
|
46
|
+
hash.update(data);
|
|
47
|
+
});
|
|
48
|
+
res.on("end", () => {
|
|
49
|
+
resolve(hash.digest("hex"));
|
|
50
|
+
});
|
|
51
|
+
}).on("error", (err) => {
|
|
52
|
+
reject(err);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
return ret;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// src/util/hashUrl.ts
|
|
59
|
+
var hashUrl = (url) => {
|
|
60
|
+
const scheme = url.split("://")[0]?.toLowerCase();
|
|
61
|
+
switch (scheme) {
|
|
62
|
+
case "file":
|
|
63
|
+
return hashFile(url);
|
|
64
|
+
case "http":
|
|
65
|
+
case "https":
|
|
66
|
+
return hashHttpUrl(url);
|
|
67
|
+
default:
|
|
68
|
+
throw new Error(`Unsupported URL scheme: ${scheme}`);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/Witness/Witness.ts
|
|
73
|
+
var UrlWitness = class extends AbstractWitness {
|
|
74
|
+
static configSchemas = [UrlWitnessConfigSchema];
|
|
75
|
+
get urls() {
|
|
76
|
+
return this.config?.urls;
|
|
77
|
+
}
|
|
78
|
+
async observeHandler(payloads = []) {
|
|
79
|
+
const urls = this.urls?.map((url) => ({ schema: UrlSchema2, url })) ?? payloads.filter((p) => p.schema === UrlSchema2).map((p) => {
|
|
80
|
+
return { schema: UrlSchema2, url: p.url };
|
|
81
|
+
});
|
|
82
|
+
const hashed = await Promise.all(
|
|
83
|
+
urls.map(async (url) => {
|
|
84
|
+
return { ...url, hash: await hashUrl(url.url) };
|
|
85
|
+
})
|
|
86
|
+
);
|
|
87
|
+
return hashed;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// src/Plugin.ts
|
|
92
|
+
var UrlPlugin = () => createPayloadSetWitnessPlugin(
|
|
93
|
+
{ required: { [UrlSchema3]: 1 }, schema: PayloadSetSchema },
|
|
94
|
+
{
|
|
95
|
+
witness: async (params) => {
|
|
96
|
+
const result = await UrlWitness.create(params);
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
// src/index.ts
|
|
103
|
+
var src_default = UrlPlugin;
|
|
104
|
+
export {
|
|
105
|
+
UrlPlugin,
|
|
106
|
+
UrlWitness,
|
|
107
|
+
UrlWitnessConfigSchema,
|
|
108
|
+
src_default as default
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -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 '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":"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","names":["UrlSchema","UrlSchema","crypto","UrlSchema","UrlSchema"]}
|
package/package.json
CHANGED
|
@@ -10,39 +10,53 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xyo-network/module": "~2.73.
|
|
14
|
-
"@xyo-network/payload-model": "~2.73.
|
|
15
|
-
"@xyo-network/payloadset-plugin": "~2.73.
|
|
16
|
-
"@xyo-network/url-payload-plugin": "~2.73.
|
|
17
|
-
"@xyo-network/witness": "~2.73.
|
|
13
|
+
"@xyo-network/module": "~2.73.4",
|
|
14
|
+
"@xyo-network/payload-model": "~2.73.4",
|
|
15
|
+
"@xyo-network/payloadset-plugin": "~2.73.4",
|
|
16
|
+
"@xyo-network/url-payload-plugin": "~2.73.4",
|
|
17
|
+
"@xyo-network/witness": "~2.73.4"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@xylabs/ts-scripts-yarn3": "^2.19.
|
|
21
|
-
"@xylabs/tsconfig": "^2.19.
|
|
20
|
+
"@xylabs/ts-scripts-yarn3": "^2.19.12",
|
|
21
|
+
"@xylabs/tsconfig": "^2.19.12",
|
|
22
|
+
"publint": "^0.2.2",
|
|
23
|
+
"tsup": "^7.2.0",
|
|
22
24
|
"typescript": "^5.2.2"
|
|
23
25
|
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"package-compile": "tsup && publint",
|
|
28
|
+
"package-recompile": "tsup && publint"
|
|
29
|
+
},
|
|
24
30
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
25
|
-
"browser": "dist/esm/index.js",
|
|
26
31
|
"docs": "dist/docs.json",
|
|
32
|
+
"types": "dist/index.d.ts",
|
|
27
33
|
"exports": {
|
|
28
34
|
".": {
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
},
|
|
33
|
-
"browser": {
|
|
34
|
-
"import": "./dist/esm/index.js",
|
|
35
|
-
"require": "./dist/cjs/index.js"
|
|
35
|
+
"require": {
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"default": "./dist/index.js"
|
|
36
38
|
},
|
|
37
|
-
"
|
|
39
|
+
"import": {
|
|
40
|
+
"types": "./dist/index.d.mts",
|
|
41
|
+
"default": "./dist/index.mjs"
|
|
42
|
+
}
|
|
38
43
|
},
|
|
39
44
|
"./dist/docs.json": {
|
|
40
45
|
"default": "./dist/docs.json"
|
|
41
46
|
},
|
|
47
|
+
"./cjs": {
|
|
48
|
+
"default": "./dist/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./docs": {
|
|
51
|
+
"default": "./dist/docs.json"
|
|
52
|
+
},
|
|
53
|
+
"./esm": {
|
|
54
|
+
"default": "./dist/index.mjs"
|
|
55
|
+
},
|
|
42
56
|
"./package.json": "./package.json"
|
|
43
57
|
},
|
|
44
|
-
"main": "dist/
|
|
45
|
-
"module": "dist/
|
|
58
|
+
"main": "dist/index.js",
|
|
59
|
+
"module": "dist/index.mjs",
|
|
46
60
|
"homepage": "https://xyo.network",
|
|
47
61
|
"license": "LGPL-3.0",
|
|
48
62
|
"publishConfig": {
|
|
@@ -53,6 +67,5 @@
|
|
|
53
67
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
54
68
|
},
|
|
55
69
|
"sideEffects": false,
|
|
56
|
-
"
|
|
57
|
-
"version": "2.73.3"
|
|
70
|
+
"version": "2.73.4"
|
|
58
71
|
}
|
package/src/util/hashFile.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import crypto from 'crypto'
|
|
2
2
|
import { createReadStream } from 'fs'
|
|
3
3
|
import { fileURLToPath } from 'url'
|
|
4
4
|
|
|
5
5
|
export const hashFile = (url: string): Promise<string> => {
|
|
6
6
|
const path = url.startsWith('file://') ? fileURLToPath(url) : url
|
|
7
7
|
const ret = new Promise<string>((resolve, reject) => {
|
|
8
|
-
const hash = createHash('sha256')
|
|
8
|
+
const hash = crypto.createHash('sha256')
|
|
9
9
|
const stream = createReadStream(path)
|
|
10
10
|
stream.on('data', (data) => {
|
|
11
11
|
hash.update(data)
|
package/src/util/hashHttpUrl.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import crypto from 'crypto'
|
|
2
2
|
import http from 'http'
|
|
3
3
|
import https from 'https'
|
|
4
4
|
|
|
5
5
|
export const hashHttpUrl = (url: string): Promise<string> => {
|
|
6
6
|
const ret = new Promise<string>((resolve, reject) => {
|
|
7
|
-
const hash = createHash('sha256')
|
|
7
|
+
const hash = crypto.createHash('sha256')
|
|
8
8
|
const lib = url.startsWith('https') ? https : http
|
|
9
9
|
lib
|
|
10
10
|
.get(url, (res) => {
|
package/tsup.config.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineConfig } from 'tsup'
|
|
2
|
+
|
|
3
|
+
// eslint-disable-next-line import/no-default-export
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
bundle: true,
|
|
6
|
+
cjsInterop: true,
|
|
7
|
+
clean: false,
|
|
8
|
+
dts: {
|
|
9
|
+
entry: ['src/index.ts'],
|
|
10
|
+
},
|
|
11
|
+
entry: ['src/index.ts'],
|
|
12
|
+
format: ['cjs', 'esm'],
|
|
13
|
+
sourcemap: true,
|
|
14
|
+
splitting: false,
|
|
15
|
+
tsconfig: 'tsconfig.json',
|
|
16
|
+
})
|
package/dist/cjs/Plugin.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UrlPlugin = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const payload_model_1 = require("@xyo-network/payload-model");
|
|
6
|
-
const payloadset_plugin_1 = require("@xyo-network/payloadset-plugin");
|
|
7
|
-
const url_payload_plugin_1 = require("@xyo-network/url-payload-plugin");
|
|
8
|
-
const Witness_1 = require("./Witness");
|
|
9
|
-
const UrlPlugin = () => (0, payloadset_plugin_1.createPayloadSetWitnessPlugin)({ required: { [url_payload_plugin_1.UrlSchema]: 1 }, schema: payload_model_1.PayloadSetSchema }, {
|
|
10
|
-
witness: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
11
|
-
const result = yield Witness_1.UrlWitness.create(params);
|
|
12
|
-
return result;
|
|
13
|
-
}),
|
|
14
|
-
});
|
|
15
|
-
exports.UrlPlugin = UrlPlugin;
|
|
16
|
-
//# sourceMappingURL=Plugin.js.map
|
package/dist/cjs/Plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":";;;;AAAA,8DAA6D;AAC7D,sEAA8E;AAC9E,wEAA2D;AAE3D,uCAAsC;AAE/B,MAAM,SAAS,GAAG,GAAG,EAAE,CAC5B,IAAA,iDAA6B,EAC3B,EAAE,QAAQ,EAAE,EAAE,CAAC,8BAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gCAAgB,EAAE,EAC1D;IACE,OAAO,EAAE,CAAO,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,oBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC9C,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;CACF,CACF,CAAA;AATU,QAAA,SAAS,aASnB"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UrlWitnessConfigSchema = void 0;
|
|
4
|
-
const url_payload_plugin_1 = require("@xyo-network/url-payload-plugin");
|
|
5
|
-
exports.UrlWitnessConfigSchema = `${url_payload_plugin_1.UrlSchema}.witness.config`;
|
|
6
|
-
//# sourceMappingURL=Config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/Witness/Config.ts"],"names":[],"mappings":";;;AAAA,wEAA2D;AAG9C,QAAA,sBAAsB,GAAG,GAAG,8BAAS,iBAA0B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Params.js","sourceRoot":"","sources":["../../../src/Witness/Params.ts"],"names":[],"mappings":""}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UrlWitness = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const url_payload_plugin_1 = require("@xyo-network/url-payload-plugin");
|
|
6
|
-
const witness_1 = require("@xyo-network/witness");
|
|
7
|
-
const util_1 = require("../util");
|
|
8
|
-
const Config_1 = require("./Config");
|
|
9
|
-
class UrlWitness extends witness_1.AbstractWitness {
|
|
10
|
-
get urls() {
|
|
11
|
-
var _a;
|
|
12
|
-
return (_a = this.config) === null || _a === void 0 ? void 0 : _a.urls;
|
|
13
|
-
}
|
|
14
|
-
observeHandler(payloads = []) {
|
|
15
|
-
var _a, _b;
|
|
16
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const urls = (_b = (_a = this.urls) === null || _a === void 0 ? void 0 : _a.map((url) => ({ schema: url_payload_plugin_1.UrlSchema, url }))) !== null && _b !== void 0 ? _b : payloads
|
|
18
|
-
.filter((p) => p.schema === url_payload_plugin_1.UrlSchema)
|
|
19
|
-
.map((p) => {
|
|
20
|
-
return { schema: url_payload_plugin_1.UrlSchema, url: p.url };
|
|
21
|
-
});
|
|
22
|
-
const hashed = yield Promise.all(urls.map((url) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
// TODO: Different schema for hashed url
|
|
24
|
-
return Object.assign(Object.assign({}, url), { hash: yield (0, util_1.hashUrl)(url.url) });
|
|
25
|
-
})));
|
|
26
|
-
// TODO: Handle partial success
|
|
27
|
-
return hashed;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.UrlWitness = UrlWitness;
|
|
32
|
-
UrlWitness.configSchemas = [Config_1.UrlWitnessConfigSchema];
|
|
33
|
-
//# sourceMappingURL=Witness.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":";;;;AACA,wEAAuE;AACvE,kDAAsD;AAEtD,kCAAiC;AACjC,qCAAiD;AAGjD,MAAa,UAAgE,SAAQ,yBAAwB;IAG3G,IAAI,IAAI;;QACN,OAAO,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAA;IAC1B,CAAC;IAEwB,cAAc,CAAC,WAAsB,EAAE;;;YAC9D,MAAM,IAAI,GACR,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,8BAAS,EAAE,GAAG,EAAE,CAAC,CAAC,mCACrD,QAAQ;iBACL,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,8BAAS,CAAC;iBACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,OAAO,EAAE,MAAM,EAAE,8BAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;YAC1C,CAAC,CAAC,CAAA;YACN,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,CAAO,GAAG,EAAE,EAAE;gBACrB,wCAAwC;gBACxC,uCAAY,GAAG,KAAE,IAAI,EAAE,MAAM,IAAA,cAAO,EAAC,GAAG,CAAC,GAAG,CAAC,IAAE;YACjD,CAAC,CAAA,CAAC,CACH,CAAA;YACD,+BAA+B;YAC/B,OAAO,MAAM,CAAA;;KACd;;AAvBH,gCAwBC;AAvBiB,wBAAa,GAAG,CAAC,+BAAsB,CAAC,CAAA"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./Config"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./Params"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./Witness"), exports);
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":";;;AAAA,mDAAwB;AACxB,mDAAwB;AACxB,oDAAyB"}
|
package/dist/cjs/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UrlPlugin = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const Plugin_1 = require("./Plugin");
|
|
6
|
-
Object.defineProperty(exports, "UrlPlugin", { enumerable: true, get: function () { return Plugin_1.UrlPlugin; } });
|
|
7
|
-
tslib_1.__exportStar(require("./Witness"), exports);
|
|
8
|
-
// eslint-disable-next-line import/no-default-export
|
|
9
|
-
exports.default = Plugin_1.UrlPlugin;
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoC;AAI3B,0FAJA,kBAAS,OAIA;AAFlB,oDAAyB;AAIzB,oDAAoD;AACpD,kBAAe,kBAAS,CAAA"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hashFile = void 0;
|
|
4
|
-
const crypto_1 = require("crypto");
|
|
5
|
-
const fs_1 = require("fs");
|
|
6
|
-
const url_1 = require("url");
|
|
7
|
-
const hashFile = (url) => {
|
|
8
|
-
const path = url.startsWith('file://') ? (0, url_1.fileURLToPath)(url) : url;
|
|
9
|
-
const ret = new Promise((resolve, reject) => {
|
|
10
|
-
const hash = (0, crypto_1.createHash)('sha256');
|
|
11
|
-
const stream = (0, fs_1.createReadStream)(path);
|
|
12
|
-
stream.on('data', (data) => {
|
|
13
|
-
hash.update(data);
|
|
14
|
-
});
|
|
15
|
-
stream.on('end', () => {
|
|
16
|
-
resolve(hash.digest('hex'));
|
|
17
|
-
});
|
|
18
|
-
stream.on('error', (err) => {
|
|
19
|
-
reject(err);
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
return ret;
|
|
23
|
-
};
|
|
24
|
-
exports.hashFile = hashFile;
|
|
25
|
-
//# sourceMappingURL=hashFile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashFile.js","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,2BAAqC;AACrC,6BAAmC;AAE5B,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAmB,EAAE;IACvD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACjE,MAAM,GAAG,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,IAAA,qBAAgB,EAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAhBY,QAAA,QAAQ,YAgBpB"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hashHttpUrl = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const crypto_1 = require("crypto");
|
|
6
|
-
const http_1 = tslib_1.__importDefault(require("http"));
|
|
7
|
-
const https_1 = tslib_1.__importDefault(require("https"));
|
|
8
|
-
const hashHttpUrl = (url) => {
|
|
9
|
-
const ret = new Promise((resolve, reject) => {
|
|
10
|
-
const hash = (0, crypto_1.createHash)('sha256');
|
|
11
|
-
const lib = url.startsWith('https') ? https_1.default : http_1.default;
|
|
12
|
-
lib
|
|
13
|
-
.get(url, (res) => {
|
|
14
|
-
res.on('data', (data) => {
|
|
15
|
-
hash.update(data);
|
|
16
|
-
});
|
|
17
|
-
res.on('end', () => {
|
|
18
|
-
resolve(hash.digest('hex'));
|
|
19
|
-
});
|
|
20
|
-
})
|
|
21
|
-
.on('error', (err) => {
|
|
22
|
-
reject(err);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
return ret;
|
|
26
|
-
};
|
|
27
|
-
exports.hashHttpUrl = hashHttpUrl;
|
|
28
|
-
//# sourceMappingURL=hashHttpUrl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashHttpUrl.js","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":";;;;AAAA,mCAAmC;AACnC,wDAAuB;AACvB,0DAAyB;AAElB,MAAM,WAAW,GAAG,CAAC,GAAW,EAAmB,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,CAAC,CAAC,cAAI,CAAA;QAClD,GAAG;aACA,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC,CAAC,CAAA;YACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAlBY,QAAA,WAAW,eAkBvB"}
|
package/dist/cjs/util/hashUrl.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hashUrl = void 0;
|
|
4
|
-
const hashFile_1 = require("./hashFile");
|
|
5
|
-
const hashHttpUrl_1 = require("./hashHttpUrl");
|
|
6
|
-
const hashUrl = (url) => {
|
|
7
|
-
var _a;
|
|
8
|
-
const scheme = (_a = url.split('://')[0]) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
9
|
-
switch (scheme) {
|
|
10
|
-
case 'file':
|
|
11
|
-
return (0, hashFile_1.hashFile)(url);
|
|
12
|
-
case 'http':
|
|
13
|
-
case 'https':
|
|
14
|
-
return (0, hashHttpUrl_1.hashHttpUrl)(url);
|
|
15
|
-
default:
|
|
16
|
-
throw new Error(`Unsupported URL scheme: ${scheme}`);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
exports.hashUrl = hashUrl;
|
|
20
|
-
//# sourceMappingURL=hashUrl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashUrl.js","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,+CAA2C;AAEpC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAmB,EAAE;;IACtD,MAAM,MAAM,GAAG,MAAA,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,CAAA;IACjD,QAAQ,MAAM,EAAE;QACd,KAAK,MAAM;YACT,OAAO,IAAA,mBAAQ,EAAC,GAAG,CAAC,CAAA;QACtB,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAA;QACzB;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAA;KACvD;AACH,CAAC,CAAA;AAXY,QAAA,OAAO,WAWnB"}
|
package/dist/cjs/util/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB"}
|
package/dist/esm/Plugin.js
DELETED
|
@@ -1,11 +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
|
-
import { UrlWitness } from './Witness';
|
|
5
|
-
export const UrlPlugin = () => createPayloadSetWitnessPlugin({ required: { [UrlSchema]: 1 }, schema: PayloadSetSchema }, {
|
|
6
|
-
witness: async (params) => {
|
|
7
|
-
const result = await UrlWitness.create(params);
|
|
8
|
-
return result;
|
|
9
|
-
},
|
|
10
|
-
});
|
|
11
|
-
//# sourceMappingURL=Plugin.js.map
|
package/dist/esm/Plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAC5B,6BAA6B,CAC3B,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAC1D;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC9C,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/Witness/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAG3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,SAAS,iBAA0B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Params.js","sourceRoot":"","sources":["../../../src/Witness/Params.ts"],"names":[],"mappings":""}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { UrlSchema } from '@xyo-network/url-payload-plugin';
|
|
2
|
-
import { AbstractWitness } from '@xyo-network/witness';
|
|
3
|
-
import { hashUrl } from '../util';
|
|
4
|
-
import { UrlWitnessConfigSchema } from './Config';
|
|
5
|
-
export class UrlWitness extends AbstractWitness {
|
|
6
|
-
static configSchemas = [UrlWitnessConfigSchema];
|
|
7
|
-
get urls() {
|
|
8
|
-
return this.config?.urls;
|
|
9
|
-
}
|
|
10
|
-
async observeHandler(payloads = []) {
|
|
11
|
-
const urls = this.urls?.map((url) => ({ schema: UrlSchema, url })) ??
|
|
12
|
-
payloads
|
|
13
|
-
.filter((p) => p.schema === UrlSchema)
|
|
14
|
-
.map((p) => {
|
|
15
|
-
return { schema: UrlSchema, url: p.url };
|
|
16
|
-
});
|
|
17
|
-
const hashed = await Promise.all(urls.map(async (url) => {
|
|
18
|
-
// TODO: Different schema for hashed url
|
|
19
|
-
return { ...url, hash: await hashUrl(url.url) };
|
|
20
|
-
}));
|
|
21
|
-
// TODO: Handle partial success
|
|
22
|
-
return hashed;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=Witness.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGjD,MAAM,OAAO,UAAgE,SAAQ,eAAwB;IAC3G,MAAM,CAAU,aAAa,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAExD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAA;IAC1B,CAAC;IAEkB,KAAK,CAAC,cAAc,CAAC,WAAsB,EAAE;QAC9D,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACrD,QAAQ;iBACL,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;iBACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;YAC1C,CAAC,CAAC,CAAA;QACN,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACrB,wCAAwC;YACxC,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA;QACjD,CAAC,CAAC,CACH,CAAA;QACD,+BAA+B;QAC/B,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
|
package/dist/esm/index.js
DELETED
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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;AAEpB,oDAAoD;AACpD,eAAe,SAAS,CAAA"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'crypto';
|
|
2
|
-
import { createReadStream } from 'fs';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
export const hashFile = (url) => {
|
|
5
|
-
const path = url.startsWith('file://') ? fileURLToPath(url) : url;
|
|
6
|
-
const ret = new Promise((resolve, reject) => {
|
|
7
|
-
const hash = createHash('sha256');
|
|
8
|
-
const stream = createReadStream(path);
|
|
9
|
-
stream.on('data', (data) => {
|
|
10
|
-
hash.update(data);
|
|
11
|
-
});
|
|
12
|
-
stream.on('end', () => {
|
|
13
|
-
resolve(hash.digest('hex'));
|
|
14
|
-
});
|
|
15
|
-
stream.on('error', (err) => {
|
|
16
|
-
reject(err);
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
return ret;
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=hashFile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashFile.js","sourceRoot":"","sources":["../../../src/util/hashFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAmB,EAAE;IACvD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACjE,MAAM,GAAG,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'crypto';
|
|
2
|
-
import http from 'http';
|
|
3
|
-
import https from 'https';
|
|
4
|
-
export const hashHttpUrl = (url) => {
|
|
5
|
-
const ret = new Promise((resolve, reject) => {
|
|
6
|
-
const hash = createHash('sha256');
|
|
7
|
-
const lib = url.startsWith('https') ? https : http;
|
|
8
|
-
lib
|
|
9
|
-
.get(url, (res) => {
|
|
10
|
-
res.on('data', (data) => {
|
|
11
|
-
hash.update(data);
|
|
12
|
-
});
|
|
13
|
-
res.on('end', () => {
|
|
14
|
-
resolve(hash.digest('hex'));
|
|
15
|
-
});
|
|
16
|
-
})
|
|
17
|
-
.on('error', (err) => {
|
|
18
|
-
reject(err);
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
return ret;
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=hashHttpUrl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashHttpUrl.js","sourceRoot":"","sources":["../../../src/util/hashHttpUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAmB,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QAClD,GAAG;aACA,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC,CAAC,CAAA;YACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
package/dist/esm/util/hashUrl.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { hashFile } from './hashFile';
|
|
2
|
-
import { hashHttpUrl } from './hashHttpUrl';
|
|
3
|
-
export const hashUrl = (url) => {
|
|
4
|
-
const scheme = url.split('://')[0]?.toLowerCase();
|
|
5
|
-
switch (scheme) {
|
|
6
|
-
case 'file':
|
|
7
|
-
return hashFile(url);
|
|
8
|
-
case 'http':
|
|
9
|
-
case 'https':
|
|
10
|
-
return hashHttpUrl(url);
|
|
11
|
-
default:
|
|
12
|
-
throw new Error(`Unsupported URL scheme: ${scheme}`);
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=hashUrl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashUrl.js","sourceRoot":"","sources":["../../../src/util/hashUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAmB,EAAE;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;IACjD,QAAQ,MAAM,EAAE;QACd,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;QACtB,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;QACzB;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAA;KACvD;AACH,CAAC,CAAA"}
|
package/dist/esm/util/index.js
DELETED