@ctrl/magnet-link 2.0.1 → 3.0.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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # magnet-link [![npm](https://badgen.net/npm/v/@ctrl/magnet-link)](https://www.npmjs.com/package/@ctrl/magnet-link) [![CircleCI](https://badgen.net/github/status/typectrl/magnet-link)](https://circleci.com/gh/TypeCtrl/magnet-link) [![coverage status](https://badgen.net/codecov/c/github/typectrl/magnet-link)](https://codecov.io/gh/typectrl/magnet-link)
1
+ # magnet-link [![npm](https://badgen.net/npm/v/@ctrl/magnet-link)](https://www.npmjs.com/package/@ctrl/magnet-link) [![CircleCI](https://badgen.net/circleci/github/scttcper/magnet-link)](https://circleci.com/gh/scttcper/magnet-link) [![coverage](https://badgen.net/codecov/c/github/scttcper/magnet-link)](https://codecov.io/gh/scttcper/magnet-link) [![bundlesize](https://badgen.net/bundlephobia/min/@ctrl/magnet-link)](https://bundlephobia.com/result?p=@ctrl/magnet-link)
2
2
 
3
3
  > Parse a magnet URI into an object
4
4
 
@@ -7,37 +7,37 @@ export interface MagnetData {
7
7
  * 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
8
  * @link http://www.bittorrent.org/beps/bep_0009.html
9
9
  */
10
- xt: string | string[];
10
+ xt?: string | string[];
11
11
  /**
12
- * parsed xt= parameter see xt
12
+ * Parsed xt= parameter see xt
13
13
  */
14
14
  infoHash?: string;
15
15
  /**
16
- * the display name that may be used by the client to display while waiting for metadata
16
+ * The display name that may be used by the client to display while waiting for metadata
17
17
  */
18
18
  name?: string | string[];
19
19
  /**
20
- * the display name that may be used by the client to display while waiting for metadata
20
+ * The display name that may be used by the client to display while waiting for metadata
21
21
  */
22
22
  dn?: string | string[];
23
23
  /**
24
- * tracker url, if there is one. If there are multiple trackers, multiple tr entries may be included
24
+ * Tracker url, if there is one. If there are multiple trackers, multiple tr entries may be included
25
25
  */
26
26
  tr?: string | string[];
27
27
  /**
28
- * tracker url, if there is one. If there are multiple trackers, multiple tr entries may be included
28
+ * Tracker url, if there is one. If there are multiple trackers, multiple tr entries may be included
29
29
  */
30
30
  announce?: string[];
31
31
  /**
32
- * an array of where the actual torrent file can be downloaded
32
+ * An array of where the actual torrent file can be downloaded
33
33
  */
34
34
  xs?: string | string[];
35
35
  /**
36
- * an array of where the actual torrent file can be downloaded
36
+ * An array of where the actual torrent file can be downloaded
37
37
  */
38
38
  as?: string | string[];
39
39
  /**
40
- * an array of where the actual torrent file can be downloaded
40
+ * An array of where the actual torrent file can be downloaded
41
41
  */
42
42
  ws?: string | string[];
43
43
  /**
@@ -49,15 +49,15 @@ export interface MagnetData {
49
49
  */
50
50
  keywords?: string | string[];
51
51
  /**
52
- * file index
52
+ * File index
53
53
  */
54
54
  ix?: number | number[];
55
55
  /**
56
- * size in bytes
56
+ * Size in bytes
57
57
  */
58
58
  xl?: string;
59
59
  /**
60
- * combined as= and ws= parameters if they exist
60
+ * Combined as= and ws= parameters if they exist
61
61
  */
62
62
  urlList?: string[];
63
63
  }
@@ -1,7 +1,7 @@
1
1
  import { base32Decode } from '@ctrl/ts-base32';
2
2
  const start = 'magnet:?';
3
3
  export function magnetDecode(uri) {
4
- // support 'stream-magnet:' as well
4
+ // Support 'stream-magnet:' as well
5
5
  const data = uri.substr(uri.indexOf(start) + start.length);
6
6
  const params = data && data.length >= 0 ? data.split('&') : [];
7
7
  const result = {};
@@ -23,18 +23,19 @@ export function magnetDecode(uri) {
23
23
  }
24
24
  // If there are repeated parameters, return an array of values
25
25
  if (r && Array.isArray(r)) {
26
- return r.push(val);
26
+ r.push(val);
27
+ return;
27
28
  }
28
29
  result[key] = [r, val];
30
+ // eslint-disable-next-line no-useless-return
31
+ return;
29
32
  });
30
33
  if (result.xt) {
31
34
  let m;
32
35
  const xts = Array.isArray(result.xt) ? result.xt : [result.xt];
33
36
  xts.forEach((xt) => {
34
- // tslint:disable-next-line:no-conditional-assignment
35
37
  if ((m = xt.match(/^urn:btih:(.{40})/))) {
36
38
  result.infoHash = m[1].toLowerCase();
37
- // tslint:disable-next-line:no-conditional-assignment
38
39
  }
39
40
  else if ((m = xt.match(/^urn:btih:(.{32})/))) {
40
41
  const decodedStr = base32Decode(m[1]);
@@ -69,7 +70,7 @@ export function magnetDecode(uri) {
69
70
  return result;
70
71
  }
71
72
  /**
72
- * specific query parameters have expected formats, this attempts to parse them in the correct way
73
+ * Specific query parameters have expected formats, this attempts to parse them in the correct way
73
74
  */
74
75
  function parseQueryParamValue(key, val) {
75
76
  // Clean up torrent name
@@ -92,7 +93,7 @@ function parseQueryParamValue(key, val) {
92
93
  return val;
93
94
  }
94
95
  export function magnetEncode(data) {
95
- const obj = { ...data }; // shallow clone object
96
+ const obj = { ...data }; // Shallow clone object
96
97
  // Support using convenience names, in addition to spec names
97
98
  // (example: `infoHash` for `xt`, `name` for `dn`)
98
99
  if (obj.infoHash) {
@@ -140,4 +141,3 @@ export function magnetEncode(data) {
140
141
  return acc;
141
142
  }, `${start}`);
142
143
  }
143
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,73 +1,69 @@
1
1
  {
2
2
  "name": "@ctrl/magnet-link",
3
- "version": "2.0.1",
3
+ "version": "3.0.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",
7
7
  "license": "MIT",
8
- "repository": "TypeCtrl/magnet-link",
8
+ "repository": "scttcper/magnet-link",
9
9
  "keywords": [
10
10
  "torrent",
11
11
  "magnet",
12
12
  "link",
13
13
  "magnet-uri"
14
14
  ],
15
- "main": "./dist/index.js",
16
- "module": "./dist/module/index.js",
17
- "typings": "./dist/index.d.ts",
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:demo": "rollup -c rollup.demo.js",
27
- "watch:demo": "rollup -c rollup.demo.js -w",
28
- "lint": "eslint --ext .js,.ts, .",
29
- "lint:fix": "eslint --fix --ext .js,.ts, .",
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 -p tsconfig.build.json && tsc -p tsconfig.module.json",
32
- "test": "jest",
33
- "test:watch": "jest --watch",
34
- "test:ci": "jest --coverage --no-cache",
35
- "semantic-release": "semantic-release"
28
+ "build": "tsc",
29
+ "test": "ava",
30
+ "test:watch": "ava --watch",
31
+ "test:ci": "c8 --reporter=text --reporter=lcov ava"
36
32
  },
37
33
  "dependencies": {
38
- "@ctrl/ts-base32": "^1.2.1"
34
+ "@ctrl/ts-base32": "^2.1.1"
39
35
  },
40
36
  "devDependencies": {
41
- "@types/jest": "26.0.3",
42
- "@types/node": "14.0.14",
43
- "@typescript-eslint/eslint-plugin": "3.5.0",
44
- "@typescript-eslint/parser": "3.5.0",
45
- "buffer": "5.6.0",
46
- "eslint": "7.3.1",
47
- "eslint-config-xo-space": "0.25.0",
48
- "eslint-config-xo-typescript": "0.31.0",
49
- "eslint-plugin-import": "2.22.0",
50
- "jest": "26.1.0",
51
- "rollup": "2.18.1",
52
- "rollup-plugin-livereload": "1.3.0",
53
- "rollup-plugin-node-builtins": "2.1.2",
54
- "rollup-plugin-node-globals": "1.4.0",
55
- "@rollup/plugin-node-resolve": "8.1.0",
56
- "rollup-plugin-serve": "1.0.1",
57
- "rollup-plugin-terser": "6.1.0",
58
- "rollup-plugin-typescript2": "0.27.1",
59
- "semantic-release": "17.1.1",
60
- "ts-jest": "26.1.1",
61
- "typescript": "3.9.5"
37
+ "@ctrl/eslint-config": "3.2.0",
38
+ "@sindresorhus/tsconfig": "2.0.0",
39
+ "@types/node": "17.0.1",
40
+ "ava": "4.0.0-rc.1",
41
+ "buffer": "6.0.3",
42
+ "c8": "7.10.0",
43
+ "tsm": "2.2.1",
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=tsm"
55
+ ]
56
+ },
57
+ "workspaces": [
58
+ "demo"
59
+ ],
60
+ "publishConfig": {
61
+ "access": "public"
62
62
  },
63
63
  "release": {
64
64
  "branch": "master"
65
65
  },
66
- "jest": {
67
- "preset": "ts-jest",
68
- "testEnvironment": "node"
69
- },
70
66
  "engines": {
71
- "node": ">=10.19.0"
67
+ "node": ">=14.16"
72
68
  }
73
69
  }
package/dist/index.js DELETED
@@ -1,148 +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
- // tslint:disable-next-line:no-conditional-assignment
38
- if ((m = xt.match(/^urn:btih:(.{40})/))) {
39
- result.infoHash = m[1].toLowerCase();
40
- // tslint:disable-next-line:no-conditional-assignment
41
- }
42
- else if ((m = xt.match(/^urn:btih:(.{32})/))) {
43
- const decodedStr = ts_base32_1.base32Decode(m[1]);
44
- result.infoHash = Buffer.from(decodedStr).toString('hex');
45
- }
46
- });
47
- }
48
- if (result.dn) {
49
- result.name = result.dn;
50
- }
51
- if (result.kt) {
52
- result.keywords = result.kt;
53
- }
54
- if (typeof result.tr === 'string') {
55
- result.announce = [result.tr];
56
- }
57
- else if (Array.isArray(result.tr)) {
58
- result.announce = result.tr;
59
- }
60
- else {
61
- result.announce = [];
62
- }
63
- result.urlList = [];
64
- if (typeof result.as === 'string' || Array.isArray(result.as)) {
65
- result.urlList = result.urlList.concat(result.as);
66
- }
67
- if (typeof result.ws === 'string' || Array.isArray(result.ws)) {
68
- result.urlList = result.urlList.concat(result.ws);
69
- }
70
- result.announce = [...new Set(result.announce)].sort((a, b) => a.localeCompare(b));
71
- result.urlList = [...new Set(result.urlList)].sort((a, b) => a.localeCompare(b));
72
- return result;
73
- }
74
- exports.magnetDecode = magnetDecode;
75
- /**
76
- * specific query parameters have expected formats, this attempts to parse them in the correct way
77
- */
78
- function parseQueryParamValue(key, val) {
79
- // Clean up torrent name
80
- if (key === 'dn') {
81
- return decodeURIComponent(val).replace(/\+/g, ' ');
82
- }
83
- // Address tracker (tr), exact source (xs), and acceptable source (as) are encoded
84
- // URIs, so decode them
85
- if (key === 'tr' || key === 'xs' || key === 'as' || key === 'ws') {
86
- return decodeURIComponent(val);
87
- }
88
- // Return keywords as an array
89
- if (key === 'kt') {
90
- return decodeURIComponent(val).split('+');
91
- }
92
- // Cast file index (ix) to a number
93
- if (key === 'ix') {
94
- return Number(val);
95
- }
96
- return val;
97
- }
98
- function magnetEncode(data) {
99
- const obj = { ...data }; // shallow clone object
100
- // Support using convenience names, in addition to spec names
101
- // (example: `infoHash` for `xt`, `name` for `dn`)
102
- if (obj.infoHash) {
103
- obj.xt = `urn:btih:${obj.infoHash}`;
104
- }
105
- if (obj.name) {
106
- obj.dn = obj.name;
107
- }
108
- if (obj.keywords) {
109
- obj.kt = obj.keywords;
110
- }
111
- if (obj.announce) {
112
- obj.tr = obj.announce;
113
- }
114
- if (obj.urlList) {
115
- obj.ws = obj.urlList;
116
- delete obj.as;
117
- }
118
- return Object.keys(obj)
119
- .filter(key => key.length === 2)
120
- .reduce((prev, key, i) => {
121
- let acc = prev;
122
- const values = Array.isArray(obj[key]) ? obj[key] : [obj[key]];
123
- values.forEach((val, j) => {
124
- if ((i > 0 || j > 0) && (key !== 'kt' || j === 0)) {
125
- acc = `${acc}&`;
126
- }
127
- let res = val;
128
- if (key === 'dn') {
129
- res = encodeURIComponent(val).replace(/%20/g, '+');
130
- }
131
- if (key === 'tr' || key === 'xs' || key === 'as' || key === 'ws') {
132
- res = encodeURIComponent(val);
133
- }
134
- if (key === 'kt') {
135
- res = encodeURIComponent(val);
136
- }
137
- if (key === 'kt' && j > 0) {
138
- acc = `${acc}+${res}`;
139
- }
140
- else {
141
- acc = `${acc}${key}=${res}`;
142
- }
143
- });
144
- return acc;
145
- }, `${start}`);
146
- }
147
- exports.magnetEncode = magnetEncode;
148
- //# 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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}