@bsv/overlay-discovery-services 1.4.0 → 1.4.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/cjs/package.json +4 -4
- package/dist/cjs/src/LegacyNinjaAdvertiser.js +235 -0
- package/dist/cjs/src/LegacyNinjaAdvertiser.js.map +1 -0
- package/dist/cjs/src/SHIP/SHIPLookupService.js +43 -11
- package/dist/cjs/src/SHIP/SHIPLookupService.js.map +1 -1
- package/dist/cjs/src/SHIP/SHIPStorage.js +33 -10
- package/dist/cjs/src/SHIP/SHIPStorage.js.map +1 -1
- package/dist/cjs/src/SHIP/SHIPTopicManager.js.map +1 -1
- package/dist/cjs/src/SLAP/SLAPLookupService.js +57 -22
- package/dist/cjs/src/SLAP/SLAPLookupService.js.map +1 -1
- package/dist/cjs/src/SLAP/SLAPStorage.js +29 -6
- package/dist/cjs/src/SLAP/SLAPStorage.js.map +1 -1
- package/dist/cjs/src/utils/generateDocs.js +81 -0
- package/dist/cjs/src/utils/generateDocs.js.map +1 -0
- package/dist/cjs/src/utils/getDocumentation.js +22 -0
- package/dist/cjs/src/utils/getDocumentation.js.map +1 -0
- package/dist/cjs/src/utils/isAdvertisableURI.js +21 -21
- package/dist/cjs/src/utils/isAdvertisableURI.js.map +1 -1
- package/dist/cjs/src/utils/isValidDomain.js +15 -0
- package/dist/cjs/src/utils/isValidDomain.js.map +1 -0
- package/dist/cjs/src/utils/isValidServiceName.js +14 -0
- package/dist/cjs/src/utils/isValidServiceName.js.map +1 -0
- package/dist/cjs/src/utils/verifyToken.js +22 -0
- package/dist/cjs/src/utils/verifyToken.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/LegacyNinjaAdvertiser.js +233 -0
- package/dist/esm/src/LegacyNinjaAdvertiser.js.map +1 -0
- package/dist/esm/src/SHIP/SHIPLookupService.js +43 -11
- package/dist/esm/src/SHIP/SHIPLookupService.js.map +1 -1
- package/dist/esm/src/SHIP/SHIPStorage.js +32 -10
- package/dist/esm/src/SHIP/SHIPStorage.js.map +1 -1
- package/dist/esm/src/SHIP/SHIPTopicManager.js.map +1 -1
- package/dist/esm/src/SLAP/SLAPLookupService.js +57 -22
- package/dist/esm/src/SLAP/SLAPLookupService.js.map +1 -1
- package/dist/esm/src/SLAP/SLAPStorage.js +28 -6
- package/dist/esm/src/SLAP/SLAPStorage.js.map +1 -1
- package/dist/esm/src/utils/generateDocs.js +46 -0
- package/dist/esm/src/utils/generateDocs.js.map +1 -0
- package/dist/esm/src/utils/getDocumentation.js +20 -0
- package/dist/esm/src/utils/getDocumentation.js.map +1 -0
- package/dist/esm/src/utils/isAdvertisableURI.js +21 -21
- package/dist/esm/src/utils/isAdvertisableURI.js.map +1 -1
- package/dist/esm/src/utils/isValidDomain.js +11 -0
- package/dist/esm/src/utils/isValidDomain.js.map +1 -0
- package/dist/esm/src/utils/isValidServiceName.js +10 -0
- package/dist/esm/src/utils/isValidServiceName.js.map +1 -0
- package/dist/esm/src/utils/verifyToken.js +18 -0
- package/dist/esm/src/utils/verifyToken.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/LegacyNinjaAdvertiser.d.ts +60 -0
- package/dist/types/src/LegacyNinjaAdvertiser.d.ts.map +1 -0
- package/dist/types/src/SHIP/SHIPLookupService.d.ts.map +1 -1
- package/dist/types/src/SHIP/SHIPStorage.d.ts +8 -5
- package/dist/types/src/SHIP/SHIPStorage.d.ts.map +1 -1
- package/dist/types/src/SHIP/SHIPTopicManager.d.ts.map +1 -1
- package/dist/types/src/SLAP/SLAPLookupService.d.ts.map +1 -1
- package/dist/types/src/SLAP/SLAPStorage.d.ts +4 -1
- package/dist/types/src/SLAP/SLAPStorage.d.ts.map +1 -1
- package/dist/types/src/SLAP/SLAPTopicManager.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +8 -0
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/utils/generateDocs.d.ts +2 -0
- package/dist/types/src/utils/generateDocs.d.ts.map +1 -0
- package/dist/types/src/utils/getDocumentation.d.ts +8 -0
- package/dist/types/src/utils/getDocumentation.d.ts.map +1 -0
- package/dist/types/src/utils/isAdvertisableURI.d.ts.map +1 -1
- package/dist/types/src/utils/isValidDomain.d.ts +7 -0
- package/dist/types/src/utils/isValidDomain.d.ts.map +1 -0
- package/dist/types/src/utils/isValidServiceName.d.ts +7 -0
- package/dist/types/src/utils/isValidServiceName.d.ts.map +1 -0
- package/dist/types/src/utils/verifyToken.d.ts +12 -0
- package/dist/types/src/utils/verifyToken.d.ts.map +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/SHIP/SHIPLookupService.ts +57 -17
- package/src/SHIP/SHIPStorage.ts +45 -15
- package/src/SHIP/SHIPTopicManager.ts +3 -3
- package/src/SLAP/SLAPLookup.docs.ts +1 -1
- package/src/SLAP/SLAPLookupService.ts +64 -26
- package/src/SLAP/SLAPStorage.ts +41 -11
- package/src/SLAP/SLAPTopicManager.ts +3 -3
- package/src/types.ts +8 -0
- package/src/utils/isAdvertisableURI.ts +50 -50
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
const execPromise = promisify(exec);
|
|
5
|
+
const docs = [
|
|
6
|
+
{
|
|
7
|
+
input: './src/SHIP/SHIPTopicManager.ts',
|
|
8
|
+
output: './docs/SHIP/ship-topic-manager.md'
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
input: './src/SHIP/SHIPLookupService.ts',
|
|
12
|
+
output: './docs/SHIP/ship-lookup-service.md'
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
input: './src/SHIP/SHIPStorage.ts',
|
|
16
|
+
output: './docs/SHIP/ship-storage.md'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
input: './src/SLAP/SLAPTopicManager.ts',
|
|
20
|
+
output: './docs/SLAP/slap-topic-manager.md'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
input: './src/SLAP/SLAPLookupService.ts',
|
|
24
|
+
output: './docs/SLAP/slap-lookup-service.md'
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
input: './src/SLAP/SLAPStorage.ts',
|
|
28
|
+
output: './docs/SLAP/slap-storage.md'
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
// Helper function for generating updated documentation
|
|
32
|
+
const generateDocs = async () => {
|
|
33
|
+
for (const doc of docs) {
|
|
34
|
+
const command = `npx ts2md --inputFilename ${path.resolve(doc.input)} --outputFilename ${path.resolve(doc.output)} --firstHeadingLevel 2 --noTitle true --readmeMerge true`;
|
|
35
|
+
try {
|
|
36
|
+
const { stdout, stderr } = await execPromise(command);
|
|
37
|
+
console.log(`stdout: ${stdout}`);
|
|
38
|
+
console.error(`stderr: ${stderr}`);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(`Error generating documentation for ${doc.input}:`, error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
generateDocs().then(() => console.log('Documentation generation complete')).catch(error => console.error('Error:', error));
|
|
46
|
+
//# sourceMappingURL=generateDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateDocs.js","sourceRoot":"","sources":["../../../../src/utils/generateDocs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;AAOnC,MAAM,IAAI,GAAgB;IACxB;QACE,KAAK,EAAE,gCAAgC;QACvC,MAAM,EAAE,mCAAmC;KAC5C;IACD;QACE,KAAK,EAAE,iCAAiC;QACxC,MAAM,EAAE,oCAAoC;KAC7C;IACD;QACE,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,6BAA6B;KACtC;IACD;QACE,KAAK,EAAE,gCAAgC;QACvC,MAAM,EAAE,mCAAmC;KAC5C;IACD;QACE,KAAK,EAAE,iCAAiC;QACxC,MAAM,EAAE,oCAAoC;KAC7C;IACD;QACE,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,6BAA6B;KACtC;CACF,CAAA;AAED,uDAAuD;AACvD,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,6BAA6B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,0DAA0D,CAAA;QAC3K,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;YACrD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAA;YAChC,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,EAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import { resolve, dirname } from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Returns documentation specific to the provided filename
|
|
5
|
+
* @param {string} filePath - The path of the markdown file
|
|
6
|
+
* @returns A promise that resolves to the documentation string
|
|
7
|
+
*/
|
|
8
|
+
async function getDocumentation(filePath) {
|
|
9
|
+
try {
|
|
10
|
+
const resolvedPath = resolve(dirname(require.resolve('@bsv/overlay-discovery-services')), '../../', filePath);
|
|
11
|
+
const data = await fs.readFile(resolvedPath, 'utf-8');
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.error('Error reading documentation file:', error);
|
|
16
|
+
throw new Error('Failed to read documentation file');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export { getDocumentation };
|
|
20
|
+
//# sourceMappingURL=getDocumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDocumentation.js","sourceRoot":"","sources":["../../../../src/utils/getDocumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACvC;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC7G,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACrD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;QACzD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;AACH,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -21,9 +21,9 @@ export const isAdvertisableURI = (uri) => {
|
|
|
21
21
|
// Helper function: validate a URL by substituting its scheme if needed.
|
|
22
22
|
const validateCustomHttpsURI = (uri, prefix) => {
|
|
23
23
|
try {
|
|
24
|
-
const modifiedURI = uri.replace(prefix,
|
|
24
|
+
const modifiedURI = uri.replace(prefix, 'https://');
|
|
25
25
|
const parsed = new URL(modifiedURI);
|
|
26
|
-
if (parsed.hostname.toLowerCase() ===
|
|
26
|
+
if (parsed.hostname.toLowerCase() === 'localhost')
|
|
27
27
|
return false;
|
|
28
28
|
if (parsed.pathname !== '/')
|
|
29
29
|
return false;
|
|
@@ -34,32 +34,32 @@ export const isAdvertisableURI = (uri) => {
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
// HTTPS-based schemes – disallow localhost.
|
|
37
|
-
if (uri.startsWith(
|
|
38
|
-
return validateCustomHttpsURI(uri,
|
|
37
|
+
if (uri.startsWith('https://')) {
|
|
38
|
+
return validateCustomHttpsURI(uri, 'https://');
|
|
39
39
|
}
|
|
40
40
|
// Plain auth over HTTPS, but no payment can be collected
|
|
41
|
-
else if (uri.startsWith(
|
|
42
|
-
return validateCustomHttpsURI(uri,
|
|
41
|
+
else if (uri.startsWith('https+bsvauth://')) {
|
|
42
|
+
return validateCustomHttpsURI(uri, 'https+bsvauth://');
|
|
43
43
|
}
|
|
44
44
|
// Auth and payment over HTTPS
|
|
45
|
-
else if (uri.startsWith(
|
|
46
|
-
return validateCustomHttpsURI(uri,
|
|
45
|
+
else if (uri.startsWith('https+bsvauth+smf://')) {
|
|
46
|
+
return validateCustomHttpsURI(uri, 'https+bsvauth+smf://');
|
|
47
47
|
}
|
|
48
48
|
// A protocol allowing you to also supply sCrypt off-chain values to the topical admissibility checking context
|
|
49
|
-
else if (uri.startsWith(
|
|
50
|
-
return validateCustomHttpsURI(uri,
|
|
49
|
+
else if (uri.startsWith('https+bsvauth+scrypt-offchain://')) {
|
|
50
|
+
return validateCustomHttpsURI(uri, 'https+bsvauth+scrypt-offchain://');
|
|
51
51
|
}
|
|
52
52
|
// A protocol allowing overlays that deal with real-time transactions (non-finals)
|
|
53
|
-
else if (uri.startsWith(
|
|
54
|
-
return validateCustomHttpsURI(uri,
|
|
53
|
+
else if (uri.startsWith('https+rtt://')) {
|
|
54
|
+
return validateCustomHttpsURI(uri, 'https+rtt://');
|
|
55
55
|
}
|
|
56
56
|
// WSS for real-time event-listening lookups.
|
|
57
|
-
else if (uri.startsWith(
|
|
57
|
+
else if (uri.startsWith('wss://')) {
|
|
58
58
|
try {
|
|
59
59
|
const parsed = new URL(uri);
|
|
60
|
-
if (parsed.protocol !==
|
|
60
|
+
if (parsed.protocol !== 'wss:')
|
|
61
61
|
return false;
|
|
62
|
-
if (parsed.hostname.toLowerCase() ===
|
|
62
|
+
if (parsed.hostname.toLowerCase() === 'localhost')
|
|
63
63
|
return false;
|
|
64
64
|
return true;
|
|
65
65
|
}
|
|
@@ -68,18 +68,18 @@ export const isAdvertisableURI = (uri) => {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
// JS8 Call–based advertisement.
|
|
71
|
-
else if (uri.startsWith(
|
|
71
|
+
else if (uri.startsWith('js8c+bsvauth+smf:')) {
|
|
72
72
|
// Expect a query string with parameters.
|
|
73
|
-
const queryIndex = uri.indexOf(
|
|
73
|
+
const queryIndex = uri.indexOf('?');
|
|
74
74
|
if (queryIndex === -1)
|
|
75
75
|
return false;
|
|
76
76
|
const queryStr = uri.substring(queryIndex);
|
|
77
77
|
const params = new URLSearchParams(queryStr);
|
|
78
78
|
// Required parameters: lat, long, freq, and radius.
|
|
79
|
-
const latStr = params.get(
|
|
80
|
-
const longStr = params.get(
|
|
81
|
-
const freqStr = params.get(
|
|
82
|
-
const radiusStr = params.get(
|
|
79
|
+
const latStr = params.get('lat');
|
|
80
|
+
const longStr = params.get('long');
|
|
81
|
+
const freqStr = params.get('freq');
|
|
82
|
+
const radiusStr = params.get('radius');
|
|
83
83
|
if (!latStr || !longStr || !freqStr || !radiusStr)
|
|
84
84
|
return false;
|
|
85
85
|
// Validate latitude and longitude ranges.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isAdvertisableURI.js","sourceRoot":"","sources":["../../../../src/utils/isAdvertisableURI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAW,EAAE;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"isAdvertisableURI.js","sourceRoot":"","sources":["../../../../src/utils/isAdvertisableURI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates if the provided domain name is valid.
|
|
3
|
+
* @param domain - The domain name to validate.
|
|
4
|
+
* @returns True if the domain name is valid, false otherwise.
|
|
5
|
+
*/
|
|
6
|
+
export const isValidDomain = (domain) => {
|
|
7
|
+
// Simple regex to validate domain name
|
|
8
|
+
const domainRegex = /^(https?:\/\/)?((([a-zA-Z0-9-]+)\.)+([a-zA-Z]{2,})|localhost(:[0-9]+))(\/.*)?$/;
|
|
9
|
+
return domainRegex.test(domain);
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=isValidDomain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isValidDomain.js","sourceRoot":"","sources":["../../../../src/utils/isValidDomain.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAW,EAAE;IACvD,uCAAuC;IACvC,MAAM,WAAW,GAAG,gFAAgF,CAAA;IACpG,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates if the provided service name is valid based on BRC-87 guidelines.
|
|
3
|
+
* @param service - The service name to validate.
|
|
4
|
+
* @returns True if the service name is valid, false otherwise.
|
|
5
|
+
*/
|
|
6
|
+
export const isValidServiceName = (service) => {
|
|
7
|
+
const serviceRegex = /^(?!_)(?!.*__)[a-z_]{1,50}(?<!_)$/;
|
|
8
|
+
return serviceRegex.test(service);
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=isValidServiceName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isValidServiceName.js","sourceRoot":"","sources":["../../../../src/utils/isValidServiceName.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAW,EAAE;IAC7D,MAAM,YAAY,GAAG,mCAAmC,CAAA;IACxD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PublicKey, Signature } from '@bsv/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Verifies the BRC-48 locking key and the signature.
|
|
4
|
+
* @private
|
|
5
|
+
* @param identityKey - The BRC-31 identity key of the advertiser.
|
|
6
|
+
* @param lockingPublicKey - The public key used in the output's locking script.
|
|
7
|
+
* @param fields - The fields of the token.
|
|
8
|
+
* @param signature - The signature over the token fields.
|
|
9
|
+
* @param protocolId - The protocol ID (e.g., 'SHIP' or 'SLAP').
|
|
10
|
+
* @throws Will throw an error if the locking key or signature is invalid.
|
|
11
|
+
*/
|
|
12
|
+
export const verifyToken = (identityKey, lockingPublicKey, fields, signature) => {
|
|
13
|
+
const pubKey = PublicKey.fromString(lockingPublicKey);
|
|
14
|
+
const hasValidSignature = pubKey.verify(Array.from(Buffer.concat(fields)), Signature.fromDER(signature, 'hex'));
|
|
15
|
+
if (!hasValidSignature)
|
|
16
|
+
throw new Error('Invalid signature!');
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=verifyToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyToken.js","sourceRoot":"","sources":["../../../../src/utils/verifyToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,WAAmB,EACnB,gBAAwB,EACxB,MAAgB,EAChB,SAAiB,EACX,EAAE;IACR,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IACrD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CACrC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACjC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CACpC,CAAA;IAED,IAAI,CAAC,iBAAiB;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;AAC/D,CAAC,CAAA"}
|