@ctrl/magnet-link 2.0.2 → 3.1.0
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/src/bep53.d.ts +2 -0
- package/dist/src/bep53.js +23 -0
- package/dist/{index.d.ts → src/index.d.ts} +10 -1
- package/dist/{module → src}/index.js +91 -12
- package/package.json +40 -37
- package/dist/index.js +0 -146
- package/dist/index.js.map +0 -1
- package/dist/module/index.js.map +0 -1
@@ -0,0 +1,23 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/restrict-plus-operands */
|
2
|
+
export function composeRange(range) {
|
3
|
+
return range
|
4
|
+
.reduce((acc, cur, idx, arr) => {
|
5
|
+
// @ts-expect-error
|
6
|
+
if (idx === 0 || cur !== arr[idx - 1] + 1) {
|
7
|
+
acc.push([]);
|
8
|
+
}
|
9
|
+
// @ts-expect-error
|
10
|
+
acc[acc.length - 1].push(cur);
|
11
|
+
return acc;
|
12
|
+
}, [])
|
13
|
+
.map(cur => {
|
14
|
+
return cur.length > 1 ? `${cur[0]}-${cur[cur.length - 1]}` : `${cur[0]}`;
|
15
|
+
});
|
16
|
+
}
|
17
|
+
export function parseRange(range) {
|
18
|
+
const generateRange = (start, end = start) => Array.from({ length: end - start + 1 }, (_, idx) => idx + start);
|
19
|
+
return range.reduce((acc, cur) => {
|
20
|
+
const r = cur.split('-').map(cur => parseInt(cur, 10));
|
21
|
+
return acc.concat(generateRange(r[0], r[1]));
|
22
|
+
}, []);
|
23
|
+
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
/// <reference types="node" />
|
1
2
|
export interface MagnetData {
|
2
3
|
/**
|
3
4
|
* Is the info-hash hex encoded, for a total of 40 characters. For compatability with existing links in the wild, clients should also support the 32 character base32 encoded info-hash.
|
@@ -7,11 +8,14 @@ export interface MagnetData {
|
|
7
8
|
* Is the multihash formatted, hex encoded full infohash for torrents in the new metadata format. 'btmh' and 'btih' exact topics may exist in the same magnet if they describe the same hybrid torrent.
|
8
9
|
* @link http://www.bittorrent.org/beps/bep_0009.html
|
9
10
|
*/
|
10
|
-
xt
|
11
|
+
xt?: string | string[];
|
11
12
|
/**
|
12
13
|
* Parsed xt= parameter see xt
|
13
14
|
*/
|
14
15
|
infoHash?: string;
|
16
|
+
infoHashBuffer?: Buffer;
|
17
|
+
infoHashV2?: string;
|
18
|
+
infoHashV2Buffer?: Buffer;
|
15
19
|
/**
|
16
20
|
* The display name that may be used by the client to display while waiting for metadata
|
17
21
|
*/
|
@@ -44,6 +48,8 @@ export interface MagnetData {
|
|
44
48
|
* "keyword topic": a more general search, specifying search terms rather than a particular file
|
45
49
|
*/
|
46
50
|
kt?: string[];
|
51
|
+
so?: string[] | number[];
|
52
|
+
'x.pe'?: string | string[];
|
47
53
|
/**
|
48
54
|
* "keyword topic": a more general search, specifying search terms rather than a particular file
|
49
55
|
*/
|
@@ -60,6 +66,9 @@ export interface MagnetData {
|
|
60
66
|
* Combined as= and ws= parameters if they exist
|
61
67
|
*/
|
62
68
|
urlList?: string[];
|
69
|
+
peerAddresses?: string[];
|
70
|
+
publicKey?: string;
|
71
|
+
publicKeyBuffer?: Buffer;
|
63
72
|
}
|
64
73
|
export declare function magnetDecode(uri: string): MagnetData;
|
65
74
|
export declare function magnetEncode(data: MagnetData): string;
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { base32Decode } from '@ctrl/ts-base32';
|
2
|
+
import * as bep53Range from './bep53.js';
|
2
3
|
const start = 'magnet:?';
|
3
4
|
export function magnetDecode(uri) {
|
4
5
|
// Support 'stream-magnet:' as well
|
@@ -23,9 +24,12 @@ export function magnetDecode(uri) {
|
|
23
24
|
}
|
24
25
|
// If there are repeated parameters, return an array of values
|
25
26
|
if (r && Array.isArray(r)) {
|
26
|
-
|
27
|
+
r.push(val);
|
28
|
+
return;
|
27
29
|
}
|
28
30
|
result[key] = [r, val];
|
31
|
+
// eslint-disable-next-line no-useless-return
|
32
|
+
return;
|
29
33
|
});
|
30
34
|
if (result.xt) {
|
31
35
|
let m;
|
@@ -38,8 +42,30 @@ export function magnetDecode(uri) {
|
|
38
42
|
const decodedStr = base32Decode(m[1]);
|
39
43
|
result.infoHash = Buffer.from(decodedStr).toString('hex');
|
40
44
|
}
|
45
|
+
else if ((m = xt.match(/^urn:btmh:1220(.{64})/))) {
|
46
|
+
result.infoHashV2 = m[1].toLowerCase();
|
47
|
+
}
|
41
48
|
});
|
42
49
|
}
|
50
|
+
if (result.xs) {
|
51
|
+
let m;
|
52
|
+
const xss = Array.isArray(result.xs) ? result.xs : [result.xs];
|
53
|
+
xss.forEach(xs => {
|
54
|
+
var _a;
|
55
|
+
if ((m = /^urn:btpk:(.{64})/.exec(xs))) {
|
56
|
+
result.publicKey = (_a = m[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
57
|
+
}
|
58
|
+
});
|
59
|
+
}
|
60
|
+
if (result.infoHash) {
|
61
|
+
result.infoHashBuffer = Buffer.from(result.infoHash, 'hex');
|
62
|
+
}
|
63
|
+
if (result.infoHashV2) {
|
64
|
+
result.infoHashV2Buffer = Buffer.from(result.infoHashV2, 'hex');
|
65
|
+
}
|
66
|
+
if (result.publicKey) {
|
67
|
+
result.publicKeyBuffer = Buffer.from(result.publicKey, 'hex');
|
68
|
+
}
|
43
69
|
if (result.dn) {
|
44
70
|
result.name = result.dn;
|
45
71
|
}
|
@@ -62,8 +88,13 @@ export function magnetDecode(uri) {
|
|
62
88
|
if (typeof result.ws === 'string' || Array.isArray(result.ws)) {
|
63
89
|
result.urlList = result.urlList.concat(result.ws);
|
64
90
|
}
|
91
|
+
result.peerAddresses = [];
|
92
|
+
if (typeof result['x.pe'] === 'string' || Array.isArray(result['x.pe'])) {
|
93
|
+
result.peerAddresses = result.peerAddresses.concat(result['x.pe']);
|
94
|
+
}
|
65
95
|
result.announce = [...new Set(result.announce)].sort((a, b) => a.localeCompare(b));
|
66
96
|
result.urlList = [...new Set(result.urlList)].sort((a, b) => a.localeCompare(b));
|
97
|
+
result.peerAddresses = [...new Set(result.peerAddresses)];
|
67
98
|
return result;
|
68
99
|
}
|
69
100
|
/**
|
@@ -83,6 +114,10 @@ function parseQueryParamValue(key, val) {
|
|
83
114
|
if (key === 'kt') {
|
84
115
|
return decodeURIComponent(val).split('+');
|
85
116
|
}
|
117
|
+
// bep53
|
118
|
+
if (key === 'so') {
|
119
|
+
return bep53Range.parseRange(decodeURIComponent(val).split(','));
|
120
|
+
}
|
86
121
|
// Cast file index (ix) to a number
|
87
122
|
if (key === 'ix') {
|
88
123
|
return Number(val);
|
@@ -91,11 +126,44 @@ function parseQueryParamValue(key, val) {
|
|
91
126
|
}
|
92
127
|
export function magnetEncode(data) {
|
93
128
|
const obj = { ...data }; // Shallow clone object
|
129
|
+
// Deduplicate xt by using a set
|
130
|
+
let xts = new Set();
|
131
|
+
if (obj.xt && typeof obj.xt === 'string') {
|
132
|
+
xts.add(obj.xt);
|
133
|
+
}
|
134
|
+
if (obj.xt && Array.isArray(obj.xt)) {
|
135
|
+
xts = new Set(obj.xt);
|
136
|
+
}
|
137
|
+
if (obj.infoHashBuffer) {
|
138
|
+
xts.add(`urn:btih:${obj.infoHashBuffer.toString('hex')}`);
|
139
|
+
}
|
140
|
+
if (obj.infoHash) {
|
141
|
+
xts.add(`urn:btih:${obj.infoHash}`);
|
142
|
+
}
|
143
|
+
if (obj.infoHashV2Buffer) {
|
144
|
+
xts.add((obj.xt = `urn:btmh:1220${obj.infoHashV2Buffer.toString('hex')}`));
|
145
|
+
}
|
146
|
+
if (obj.infoHashV2) {
|
147
|
+
xts.add(`urn:btmh:1220${obj.infoHashV2}`);
|
148
|
+
}
|
149
|
+
const xtsDeduped = Array.from(xts);
|
150
|
+
if (xtsDeduped.length === 1) {
|
151
|
+
obj.xt = xtsDeduped[0];
|
152
|
+
}
|
153
|
+
if (xtsDeduped.length > 1) {
|
154
|
+
obj.xt = xtsDeduped;
|
155
|
+
}
|
94
156
|
// Support using convenience names, in addition to spec names
|
95
157
|
// (example: `infoHash` for `xt`, `name` for `dn`)
|
96
158
|
if (obj.infoHash) {
|
97
159
|
obj.xt = `urn:btih:${obj.infoHash}`;
|
98
160
|
}
|
161
|
+
if (obj.publicKeyBuffer) {
|
162
|
+
obj.xs = `urn:btpk:${obj.publicKeyBuffer.toString('hex')}`;
|
163
|
+
}
|
164
|
+
if (obj.publicKey) {
|
165
|
+
obj.xs = `urn:btpk:${obj.publicKey}`;
|
166
|
+
}
|
99
167
|
if (obj.name) {
|
100
168
|
obj.dn = obj.name;
|
101
169
|
}
|
@@ -109,33 +177,44 @@ export function magnetEncode(data) {
|
|
109
177
|
obj.ws = obj.urlList;
|
110
178
|
delete obj.as;
|
111
179
|
}
|
180
|
+
if (obj.peerAddresses) {
|
181
|
+
obj['x.pe'] = obj.peerAddresses;
|
182
|
+
}
|
112
183
|
return Object.keys(obj)
|
113
|
-
.filter(key => key.length === 2)
|
184
|
+
.filter(key => key.length === 2 || key === 'x.pe')
|
114
185
|
.reduce((prev, key, i) => {
|
115
186
|
let acc = prev;
|
116
187
|
const values = Array.isArray(obj[key]) ? obj[key] : [obj[key]];
|
117
188
|
values.forEach((val, j) => {
|
118
|
-
if ((i > 0 || j > 0) && (key !== 'kt' || j === 0)) {
|
119
|
-
acc
|
189
|
+
if ((i > 0 || j > 0) && ((key !== 'kt' && key !== 'so') || j === 0)) {
|
190
|
+
acc += '&';
|
120
191
|
}
|
121
|
-
let res = val;
|
122
192
|
if (key === 'dn') {
|
123
|
-
|
193
|
+
val = encodeURIComponent(val).replace(/%20/g, '+');
|
124
194
|
}
|
125
|
-
if (key === 'tr' || key === '
|
126
|
-
|
195
|
+
if (key === 'tr' || key === 'as' || key === 'ws') {
|
196
|
+
val = encodeURIComponent(val);
|
197
|
+
}
|
198
|
+
// Don't URI encode BEP46 keys
|
199
|
+
if (key === 'xs' && !val.startsWith('urn:btpk:')) {
|
200
|
+
val = encodeURIComponent(val);
|
127
201
|
}
|
128
202
|
if (key === 'kt') {
|
129
|
-
|
203
|
+
val = encodeURIComponent(val);
|
204
|
+
}
|
205
|
+
if (key === 'so') {
|
206
|
+
return;
|
130
207
|
}
|
131
208
|
if (key === 'kt' && j > 0) {
|
132
|
-
acc
|
209
|
+
acc += `+${val}`;
|
133
210
|
}
|
134
211
|
else {
|
135
|
-
acc
|
212
|
+
acc += `${key}=${val}`;
|
136
213
|
}
|
137
214
|
});
|
215
|
+
if (key === 'so') {
|
216
|
+
acc += `${key}=${bep53Range.composeRange(values)}`;
|
217
|
+
}
|
138
218
|
return acc;
|
139
219
|
}, `${start}`);
|
140
220
|
}
|
141
|
-
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ctrl/magnet-link",
|
3
|
-
"version": "
|
3
|
+
"version": "3.1.0",
|
4
4
|
"description": "Parse a magnet URI into an object",
|
5
5
|
"author": "Scott Cooper <scttcper@gmail.com>",
|
6
6
|
"homepage": "https://magnet-link.vercel.app",
|
@@ -12,55 +12,58 @@
|
|
12
12
|
"link",
|
13
13
|
"magnet-uri"
|
14
14
|
],
|
15
|
-
"
|
16
|
-
"
|
17
|
-
"
|
15
|
+
"type": "module",
|
16
|
+
"exports": "./dist/src/index.js",
|
17
|
+
"types": "./dist/src/index.d.ts",
|
18
18
|
"files": [
|
19
|
-
"dist"
|
19
|
+
"dist/src"
|
20
20
|
],
|
21
21
|
"sideEffects": false,
|
22
|
-
"publishConfig": {
|
23
|
-
"access": "public"
|
24
|
-
},
|
25
22
|
"scripts": {
|
26
|
-
"build
|
27
|
-
"watch
|
28
|
-
"lint": "eslint --ext .
|
29
|
-
"lint:fix": "eslint --fix --ext .
|
23
|
+
"demo:build": "npm run build --workspace=demo",
|
24
|
+
"demo:watch": "npm run dev --workspace=demo",
|
25
|
+
"lint": "eslint --ext .ts .",
|
26
|
+
"lint:fix": "eslint --fix --ext .ts .",
|
30
27
|
"prepare": "npm run build",
|
31
|
-
"build": "tsc
|
32
|
-
"test": "
|
33
|
-
"test:watch": "
|
34
|
-
"test:ci": "
|
28
|
+
"build": "tsc",
|
29
|
+
"test": "ava",
|
30
|
+
"test:watch": "ava --watch",
|
31
|
+
"test:ci": "c8 --reporter=text --reporter=lcov ava"
|
35
32
|
},
|
36
33
|
"dependencies": {
|
37
|
-
"@ctrl/ts-base32": "^1.
|
34
|
+
"@ctrl/ts-base32": "^2.1.1"
|
38
35
|
},
|
39
36
|
"devDependencies": {
|
40
|
-
"@ctrl/eslint-config": "
|
41
|
-
"@
|
42
|
-
"@
|
43
|
-
"
|
44
|
-
"buffer": "
|
45
|
-
"
|
46
|
-
"
|
47
|
-
"
|
48
|
-
|
49
|
-
|
50
|
-
"
|
51
|
-
|
52
|
-
|
53
|
-
"
|
54
|
-
|
37
|
+
"@ctrl/eslint-config": "3.3.1",
|
38
|
+
"@sindresorhus/tsconfig": "2.0.0",
|
39
|
+
"@types/node": "17.0.9",
|
40
|
+
"ava": "4.0.1",
|
41
|
+
"buffer": "6.0.3",
|
42
|
+
"c8": "7.11.0",
|
43
|
+
"ts-node": "10.4.0",
|
44
|
+
"typescript": "4.5.4"
|
45
|
+
},
|
46
|
+
"ava": {
|
47
|
+
"files": [
|
48
|
+
"test/**/*.spec.ts"
|
49
|
+
],
|
50
|
+
"extensions": {
|
51
|
+
"ts": "module"
|
52
|
+
},
|
53
|
+
"nodeArguments": [
|
54
|
+
"--loader=ts-node/esm"
|
55
|
+
]
|
56
|
+
},
|
57
|
+
"workspaces": [
|
58
|
+
"demo"
|
59
|
+
],
|
60
|
+
"publishConfig": {
|
61
|
+
"access": "public"
|
55
62
|
},
|
56
63
|
"release": {
|
57
64
|
"branch": "master"
|
58
65
|
},
|
59
|
-
"jest": {
|
60
|
-
"preset": "ts-jest",
|
61
|
-
"testEnvironment": "node"
|
62
|
-
},
|
63
66
|
"engines": {
|
64
|
-
"node": ">=
|
67
|
+
"node": ">=14.16"
|
65
68
|
}
|
66
69
|
}
|
package/dist/index.js
DELETED
@@ -1,146 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.magnetEncode = exports.magnetDecode = void 0;
|
4
|
-
const ts_base32_1 = require("@ctrl/ts-base32");
|
5
|
-
const start = 'magnet:?';
|
6
|
-
function magnetDecode(uri) {
|
7
|
-
// Support 'stream-magnet:' as well
|
8
|
-
const data = uri.substr(uri.indexOf(start) + start.length);
|
9
|
-
const params = data && data.length >= 0 ? data.split('&') : [];
|
10
|
-
const result = {};
|
11
|
-
params.forEach(param => {
|
12
|
-
const keyval = param.split('=');
|
13
|
-
// This keyval is invalid, skip it
|
14
|
-
if (keyval.length !== 2) {
|
15
|
-
return;
|
16
|
-
}
|
17
|
-
const key = keyval[0];
|
18
|
-
const val = parseQueryParamValue(key, keyval[1]);
|
19
|
-
if (val === undefined) {
|
20
|
-
return;
|
21
|
-
}
|
22
|
-
const r = result[key];
|
23
|
-
if (!r) {
|
24
|
-
result[key] = val;
|
25
|
-
return result;
|
26
|
-
}
|
27
|
-
// If there are repeated parameters, return an array of values
|
28
|
-
if (r && Array.isArray(r)) {
|
29
|
-
return r.push(val);
|
30
|
-
}
|
31
|
-
result[key] = [r, val];
|
32
|
-
});
|
33
|
-
if (result.xt) {
|
34
|
-
let m;
|
35
|
-
const xts = Array.isArray(result.xt) ? result.xt : [result.xt];
|
36
|
-
xts.forEach((xt) => {
|
37
|
-
if ((m = xt.match(/^urn:btih:(.{40})/))) {
|
38
|
-
result.infoHash = m[1].toLowerCase();
|
39
|
-
}
|
40
|
-
else if ((m = xt.match(/^urn:btih:(.{32})/))) {
|
41
|
-
const decodedStr = ts_base32_1.base32Decode(m[1]);
|
42
|
-
result.infoHash = Buffer.from(decodedStr).toString('hex');
|
43
|
-
}
|
44
|
-
});
|
45
|
-
}
|
46
|
-
if (result.dn) {
|
47
|
-
result.name = result.dn;
|
48
|
-
}
|
49
|
-
if (result.kt) {
|
50
|
-
result.keywords = result.kt;
|
51
|
-
}
|
52
|
-
if (typeof result.tr === 'string') {
|
53
|
-
result.announce = [result.tr];
|
54
|
-
}
|
55
|
-
else if (Array.isArray(result.tr)) {
|
56
|
-
result.announce = result.tr;
|
57
|
-
}
|
58
|
-
else {
|
59
|
-
result.announce = [];
|
60
|
-
}
|
61
|
-
result.urlList = [];
|
62
|
-
if (typeof result.as === 'string' || Array.isArray(result.as)) {
|
63
|
-
result.urlList = result.urlList.concat(result.as);
|
64
|
-
}
|
65
|
-
if (typeof result.ws === 'string' || Array.isArray(result.ws)) {
|
66
|
-
result.urlList = result.urlList.concat(result.ws);
|
67
|
-
}
|
68
|
-
result.announce = [...new Set(result.announce)].sort((a, b) => a.localeCompare(b));
|
69
|
-
result.urlList = [...new Set(result.urlList)].sort((a, b) => a.localeCompare(b));
|
70
|
-
return result;
|
71
|
-
}
|
72
|
-
exports.magnetDecode = magnetDecode;
|
73
|
-
/**
|
74
|
-
* Specific query parameters have expected formats, this attempts to parse them in the correct way
|
75
|
-
*/
|
76
|
-
function parseQueryParamValue(key, val) {
|
77
|
-
// Clean up torrent name
|
78
|
-
if (key === 'dn') {
|
79
|
-
return decodeURIComponent(val).replace(/\+/g, ' ');
|
80
|
-
}
|
81
|
-
// Address tracker (tr), exact source (xs), and acceptable source (as) are encoded
|
82
|
-
// URIs, so decode them
|
83
|
-
if (key === 'tr' || key === 'xs' || key === 'as' || key === 'ws') {
|
84
|
-
return decodeURIComponent(val);
|
85
|
-
}
|
86
|
-
// Return keywords as an array
|
87
|
-
if (key === 'kt') {
|
88
|
-
return decodeURIComponent(val).split('+');
|
89
|
-
}
|
90
|
-
// Cast file index (ix) to a number
|
91
|
-
if (key === 'ix') {
|
92
|
-
return Number(val);
|
93
|
-
}
|
94
|
-
return val;
|
95
|
-
}
|
96
|
-
function magnetEncode(data) {
|
97
|
-
const obj = { ...data }; // Shallow clone object
|
98
|
-
// Support using convenience names, in addition to spec names
|
99
|
-
// (example: `infoHash` for `xt`, `name` for `dn`)
|
100
|
-
if (obj.infoHash) {
|
101
|
-
obj.xt = `urn:btih:${obj.infoHash}`;
|
102
|
-
}
|
103
|
-
if (obj.name) {
|
104
|
-
obj.dn = obj.name;
|
105
|
-
}
|
106
|
-
if (obj.keywords) {
|
107
|
-
obj.kt = obj.keywords;
|
108
|
-
}
|
109
|
-
if (obj.announce) {
|
110
|
-
obj.tr = obj.announce;
|
111
|
-
}
|
112
|
-
if (obj.urlList) {
|
113
|
-
obj.ws = obj.urlList;
|
114
|
-
delete obj.as;
|
115
|
-
}
|
116
|
-
return Object.keys(obj)
|
117
|
-
.filter(key => key.length === 2)
|
118
|
-
.reduce((prev, key, i) => {
|
119
|
-
let acc = prev;
|
120
|
-
const values = Array.isArray(obj[key]) ? obj[key] : [obj[key]];
|
121
|
-
values.forEach((val, j) => {
|
122
|
-
if ((i > 0 || j > 0) && (key !== 'kt' || j === 0)) {
|
123
|
-
acc = `${acc}&`;
|
124
|
-
}
|
125
|
-
let res = val;
|
126
|
-
if (key === 'dn') {
|
127
|
-
res = encodeURIComponent(val).replace(/%20/g, '+');
|
128
|
-
}
|
129
|
-
if (key === 'tr' || key === 'xs' || key === 'as' || key === 'ws') {
|
130
|
-
res = encodeURIComponent(val);
|
131
|
-
}
|
132
|
-
if (key === 'kt') {
|
133
|
-
res = encodeURIComponent(val);
|
134
|
-
}
|
135
|
-
if (key === 'kt' && j > 0) {
|
136
|
-
acc = `${acc}+${res}`;
|
137
|
-
}
|
138
|
-
else {
|
139
|
-
acc = `${acc}${key}=${res}`;
|
140
|
-
}
|
141
|
-
});
|
142
|
-
return acc;
|
143
|
-
}, `${start}`);
|
144
|
-
}
|
145
|
-
exports.magnetEncode = magnetEncode;
|
146
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/module/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|