@sapphire/docusaurus-plugin-npm2yarn2pnpm 1.1.6-next.fac34b1.0 → 1.2.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/CHANGELOG.md +6 -0
- package/dist/index.d.mts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +93 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +91 -22
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
# [@sapphire/docusaurus-plugin-npm2yarn2pnpm@1.2.0](https://github.com/sapphiredev/documentation-plugins/compare/@sapphire/docusaurus-plugin-npm2yarn2pnpm@1.2.0...@sapphire/docusaurus-plugin-npm2yarn2pnpm@1.2.0) - (2023-09-16)
|
|
6
|
+
|
|
7
|
+
## 🚀 Features
|
|
8
|
+
|
|
9
|
+
- Support for the bun package manger (#187) ([7db8af9](https://github.com/sapphiredev/documentation-plugins/commit/7db8af9ab27fb79fbf1d70fdc9f7f8dcae2f529a))
|
|
10
|
+
|
|
5
11
|
# [@sapphire/docusaurus-plugin-npm2yarn2pnpm@1.1.5](https://github.com/sapphiredev/documentation-plugins/compare/@sapphire/docusaurus-plugin-npm2yarn2pnpm@1.1.4...@sapphire/docusaurus-plugin-npm2yarn2pnpm@1.1.5) - (2023-08-29)
|
|
6
12
|
|
|
7
13
|
## 🐛 Bug Fixes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Plugin } from 'unified';
|
|
2
2
|
|
|
3
|
+
declare function npmToBun(str: string): string;
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>
|
|
5
7
|
*
|
|
@@ -12,7 +14,13 @@ declare function npmToYarn(str: string): string;
|
|
|
12
14
|
|
|
13
15
|
interface PluginOptions {
|
|
14
16
|
sync?: boolean;
|
|
17
|
+
convertToBun?: boolean;
|
|
15
18
|
}
|
|
16
|
-
declare const
|
|
19
|
+
declare const convertNpmToPackageManagers: Plugin<[PluginOptions?]>;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated This function has been renamed to {@link convertNpmToPackageManagers}. Please update your code.
|
|
22
|
+
* The old name will be removed in the next major release.
|
|
23
|
+
*/
|
|
24
|
+
declare const npm2yarn2pnpm: Plugin<[(PluginOptions | undefined)?]>;
|
|
17
25
|
|
|
18
|
-
export { PluginOptions, npm2yarn2pnpm, npmToPnpm, npmToYarn };
|
|
26
|
+
export { PluginOptions, convertNpmToPackageManagers, npm2yarn2pnpm, npmToBun, npmToPnpm, npmToYarn };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Plugin } from 'unified';
|
|
2
2
|
|
|
3
|
+
declare function npmToBun(str: string): string;
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>
|
|
5
7
|
*
|
|
@@ -12,7 +14,13 @@ declare function npmToYarn(str: string): string;
|
|
|
12
14
|
|
|
13
15
|
interface PluginOptions {
|
|
14
16
|
sync?: boolean;
|
|
17
|
+
convertToBun?: boolean;
|
|
15
18
|
}
|
|
16
|
-
declare const
|
|
19
|
+
declare const convertNpmToPackageManagers: Plugin<[PluginOptions?]>;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated This function has been renamed to {@link convertNpmToPackageManagers}. Please update your code.
|
|
22
|
+
* The old name will be removed in the next major release.
|
|
23
|
+
*/
|
|
24
|
+
declare const npm2yarn2pnpm: Plugin<[(PluginOptions | undefined)?]>;
|
|
17
25
|
|
|
18
|
-
export { PluginOptions, npm2yarn2pnpm, npmToPnpm, npmToYarn };
|
|
26
|
+
export { PluginOptions, convertNpmToPackageManagers, npm2yarn2pnpm, npmToBun, npmToPnpm, npmToYarn };
|
package/dist/index.js
CHANGED
|
@@ -30,13 +30,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
+
convertNpmToPackageManagers: () => convertNpmToPackageManagers,
|
|
33
34
|
npm2yarn2pnpm: () => npm2yarn2pnpm,
|
|
35
|
+
npmToBun: () => npmToBun,
|
|
34
36
|
npmToPnpm: () => npmToPnpm,
|
|
35
37
|
npmToYarn: () => npmToYarn
|
|
36
38
|
});
|
|
37
39
|
module.exports = __toCommonJS(src_exports);
|
|
38
40
|
|
|
39
|
-
// src/
|
|
41
|
+
// src/npm2bun.ts
|
|
40
42
|
var unchangedCLICommands = ["init", "run", "test", "login", "logout", "link", "publish", "cache"];
|
|
41
43
|
function parseNpmInstall(command, isShortHand = false) {
|
|
42
44
|
if (/^install *$/.test(command)) {
|
|
@@ -44,7 +46,7 @@ function parseNpmInstall(command, isShortHand = false) {
|
|
|
44
46
|
}
|
|
45
47
|
return command.replace(isShortHand ? "i " : "install ", "add ").replace(/(\s*)--save(?!-)/, "$1--save-prod").replace("--no-package-lock", "");
|
|
46
48
|
}
|
|
47
|
-
var
|
|
49
|
+
var npmToBunTable = {
|
|
48
50
|
install(command) {
|
|
49
51
|
return parseNpmInstall(command);
|
|
50
52
|
},
|
|
@@ -65,22 +67,69 @@ function convert(_, command) {
|
|
|
65
67
|
command = (command ?? "").trim();
|
|
66
68
|
const firstCommand = (/\w+/.exec(command) || [""])[0];
|
|
67
69
|
if (unchangedCLICommands.includes(firstCommand)) {
|
|
70
|
+
return `bun ${command}`;
|
|
71
|
+
}
|
|
72
|
+
if (firstCommand in npmToBunTable) {
|
|
73
|
+
const converter = npmToBunTable[firstCommand];
|
|
74
|
+
if (typeof converter === "function") {
|
|
75
|
+
return `bun ${converter(command)}`;
|
|
76
|
+
}
|
|
77
|
+
return `bun ${command.replace(firstCommand, converter)}`;
|
|
78
|
+
}
|
|
79
|
+
return `bun ${command}
|
|
80
|
+
# couldn't auto-convert command`;
|
|
81
|
+
}
|
|
82
|
+
function npmToBun(str) {
|
|
83
|
+
return str.replace(/npm(?: +([^&\n\r]*))?/gm, convert);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// src/npm2pnpm.ts
|
|
87
|
+
var unchangedCLICommands2 = ["init", "run", "test", "login", "logout", "link", "publish", "cache"];
|
|
88
|
+
function parseNpmInstall2(command, isShortHand = false) {
|
|
89
|
+
if (/^install *$/.test(command)) {
|
|
90
|
+
return "install";
|
|
91
|
+
}
|
|
92
|
+
return command.replace(isShortHand ? "i " : "install ", "add ").replace(/(\s*)--save(?!-)/, "$1--save-prod").replace("--no-package-lock", "");
|
|
93
|
+
}
|
|
94
|
+
var npmToPnpmTable = {
|
|
95
|
+
install(command) {
|
|
96
|
+
return parseNpmInstall2(command);
|
|
97
|
+
},
|
|
98
|
+
i(command) {
|
|
99
|
+
return parseNpmInstall2(command, true);
|
|
100
|
+
},
|
|
101
|
+
uninstall(command) {
|
|
102
|
+
return command.replace("uninstall", "remove").replace(/(\s*)--save(?!-)/, "$1--save-prod").replace("--no-package-lock", "");
|
|
103
|
+
},
|
|
104
|
+
version(command) {
|
|
105
|
+
return command.replace(/(major|minor|patch)/, "--$1");
|
|
106
|
+
},
|
|
107
|
+
rebuild(command) {
|
|
108
|
+
return command.replace("rebuild", "add --force");
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
function convert2(_, command) {
|
|
112
|
+
command = (command ?? "").trim();
|
|
113
|
+
const firstCommand = (/\w+/.exec(command) || [""])[0];
|
|
114
|
+
if (unchangedCLICommands2.includes(firstCommand)) {
|
|
68
115
|
return `pnpm ${command}`;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
116
|
+
}
|
|
117
|
+
if (firstCommand in npmToPnpmTable) {
|
|
118
|
+
const converter = npmToPnpmTable[firstCommand];
|
|
119
|
+
if (typeof converter === "function") {
|
|
120
|
+
return `pnpm ${converter(command)}`;
|
|
72
121
|
}
|
|
73
|
-
return `pnpm ${command.replace(firstCommand,
|
|
122
|
+
return `pnpm ${command.replace(firstCommand, converter)}`;
|
|
74
123
|
}
|
|
75
124
|
return `pnpm ${command}
|
|
76
125
|
# couldn't auto-convert command`;
|
|
77
126
|
}
|
|
78
127
|
function npmToPnpm(str) {
|
|
79
|
-
return str.replace(/npm(?: +([^&\n\r]*))?/gm,
|
|
128
|
+
return str.replace(/npm(?: +([^&\n\r]*))?/gm, convert2);
|
|
80
129
|
}
|
|
81
130
|
|
|
82
131
|
// src/npm2yarn.ts
|
|
83
|
-
var
|
|
132
|
+
var unchangedCLICommands3 = ["test", "login", "logout", "link", "publish", "cache"];
|
|
84
133
|
var yarnCLICommands = [
|
|
85
134
|
"init",
|
|
86
135
|
"run",
|
|
@@ -120,7 +169,7 @@ var yarnCLICommands = [
|
|
|
120
169
|
"workspace",
|
|
121
170
|
"workspaces"
|
|
122
171
|
];
|
|
123
|
-
function
|
|
172
|
+
function parseNpmInstall3(command, isShortHand = false) {
|
|
124
173
|
if (/^install *$/.test(command)) {
|
|
125
174
|
return "install";
|
|
126
175
|
}
|
|
@@ -133,10 +182,10 @@ function parseNpmInstall2(command, isShortHand = false) {
|
|
|
133
182
|
}
|
|
134
183
|
var npmToYarnTable = {
|
|
135
184
|
install(command) {
|
|
136
|
-
return
|
|
185
|
+
return parseNpmInstall3(command);
|
|
137
186
|
},
|
|
138
187
|
i(command) {
|
|
139
|
-
return
|
|
188
|
+
return parseNpmInstall3(command, true);
|
|
140
189
|
},
|
|
141
190
|
uninstall(command) {
|
|
142
191
|
let yarnRemoveCommand = command.replace("uninstall", "remove").replace("--save-dev", "--dev").replace(/\s*--save(?!-)/, "").replace("--no-package-lock", "--no-lockfile");
|
|
@@ -152,7 +201,7 @@ var npmToYarnTable = {
|
|
|
152
201
|
exec(command) {
|
|
153
202
|
return command.replace(/^exec\s?([^\s]+)?(\s--\s--)?(.*)$/, (_, data, dash, rest) => {
|
|
154
203
|
let result = "";
|
|
155
|
-
if (data && !
|
|
204
|
+
if (data && !unchangedCLICommands3.includes(data) && !yarnCLICommands.includes(data)) {
|
|
156
205
|
result += data;
|
|
157
206
|
} else {
|
|
158
207
|
result += `run ${data || ""}`;
|
|
@@ -169,7 +218,7 @@ var npmToYarnTable = {
|
|
|
169
218
|
run(command) {
|
|
170
219
|
return command.replace(/^run\s?([^\s]+)?(\s--\s--)?(.*)$/, (_, data, dash, rest) => {
|
|
171
220
|
let result = "";
|
|
172
|
-
if (data && !
|
|
221
|
+
if (data && !unchangedCLICommands3.includes(data) && !yarnCLICommands.includes(data)) {
|
|
173
222
|
result += data;
|
|
174
223
|
} else {
|
|
175
224
|
result += `run ${data || ""}`;
|
|
@@ -220,10 +269,10 @@ var npmToYarnTable = {
|
|
|
220
269
|
return command.replace(" --scope", "");
|
|
221
270
|
}
|
|
222
271
|
};
|
|
223
|
-
function
|
|
272
|
+
function convert3(_, command) {
|
|
224
273
|
command = (command || "").trim();
|
|
225
274
|
const firstCommand = (/\w+/.exec(command) || [""])[0];
|
|
226
|
-
if (
|
|
275
|
+
if (unchangedCLICommands3.includes(firstCommand)) {
|
|
227
276
|
return `yarn ${command}`;
|
|
228
277
|
}
|
|
229
278
|
if (firstCommand in npmToYarnTable) {
|
|
@@ -237,7 +286,7 @@ function convert2(_, command) {
|
|
|
237
286
|
# couldn't auto-convert command`;
|
|
238
287
|
}
|
|
239
288
|
function npmToYarn(str) {
|
|
240
|
-
return str.replace(/npm(?: +([^&\n\r]*))?/gm,
|
|
289
|
+
return str.replace(/npm(?: +([^&\n\r]*))?/gm, convert3);
|
|
241
290
|
}
|
|
242
291
|
|
|
243
292
|
// src/npm2yarn2pnpm.ts
|
|
@@ -247,6 +296,7 @@ var transformNode = (node, options) => {
|
|
|
247
296
|
const npmCode = node.value;
|
|
248
297
|
const yarnCode = npmToYarn(node.value);
|
|
249
298
|
const pnpmCode = npmToPnpm(node.value);
|
|
299
|
+
const bunCode = options.convertToBun ? npmToBun(node.value) : "";
|
|
250
300
|
const [, highlight] = (node.meta ?? "").split("|");
|
|
251
301
|
return [
|
|
252
302
|
{
|
|
@@ -257,6 +307,7 @@ var transformNode = (node, options) => {
|
|
|
257
307
|
{ label: "npm", value: "npm" },
|
|
258
308
|
{ label: "yarn", value: "yarn" },
|
|
259
309
|
{ label: "pnpm", value: "pnpm" },
|
|
310
|
+
${options.convertToBun && '{ label: "bun", value: "bun" }'}
|
|
260
311
|
]}
|
|
261
312
|
>
|
|
262
313
|
<TabItem value="npm">`
|
|
@@ -287,10 +338,27 @@ var transformNode = (node, options) => {
|
|
|
287
338
|
meta: `${highlight} showLineNumbers`,
|
|
288
339
|
value: pnpmCode
|
|
289
340
|
},
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
341
|
+
...options.convertToBun ? [
|
|
342
|
+
{
|
|
343
|
+
type: "jsx",
|
|
344
|
+
value: '</TabItem>\n<TabItem value="bun">'
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
type: node.type,
|
|
348
|
+
lang: node.lang,
|
|
349
|
+
meta: `${highlight} showLineNumbers`,
|
|
350
|
+
value: bunCode
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
type: "jsx",
|
|
354
|
+
value: "</TabItem>\n</Tabs>"
|
|
355
|
+
}
|
|
356
|
+
] : [
|
|
357
|
+
{
|
|
358
|
+
type: "jsx",
|
|
359
|
+
value: "</TabItem>\n</Tabs>"
|
|
360
|
+
}
|
|
361
|
+
]
|
|
294
362
|
];
|
|
295
363
|
};
|
|
296
364
|
var isImport = (node) => node.type === "import";
|
|
@@ -300,7 +368,7 @@ var nodeForImport = {
|
|
|
300
368
|
type: "import",
|
|
301
369
|
value: "import Tabs from '@theme/Tabs';\nimport TabItem from '@theme/TabItem';"
|
|
302
370
|
};
|
|
303
|
-
var
|
|
371
|
+
var convertNpmToPackageManagers = ({ sync = true, convertToBun = false } = { sync: true, convertToBun: false }) => (root) => {
|
|
304
372
|
let transformed = false;
|
|
305
373
|
let alreadyImported = false;
|
|
306
374
|
(0, import_unist_util_visit.default)(root, (node) => {
|
|
@@ -312,7 +380,7 @@ var npm2yarn2pnpm = ({ sync = true } = { sync: true }) => (root) => {
|
|
|
312
380
|
while (index < node.children.length) {
|
|
313
381
|
const child = node.children[index];
|
|
314
382
|
if (matchNode(child)) {
|
|
315
|
-
const result = transformNode(child, { sync });
|
|
383
|
+
const result = transformNode(child, { sync, convertToBun });
|
|
316
384
|
node.children.splice(index, 1, ...result);
|
|
317
385
|
index += result.length;
|
|
318
386
|
transformed = true;
|
|
@@ -326,9 +394,12 @@ var npm2yarn2pnpm = ({ sync = true } = { sync: true }) => (root) => {
|
|
|
326
394
|
root.children.unshift(nodeForImport);
|
|
327
395
|
}
|
|
328
396
|
};
|
|
397
|
+
var npm2yarn2pnpm = convertNpmToPackageManagers;
|
|
329
398
|
// Annotate the CommonJS export names for ESM import in node:
|
|
330
399
|
0 && (module.exports = {
|
|
400
|
+
convertNpmToPackageManagers,
|
|
331
401
|
npm2yarn2pnpm,
|
|
402
|
+
npmToBun,
|
|
332
403
|
npmToPnpm,
|
|
333
404
|
npmToYarn
|
|
334
405
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/npm2pnpm.ts","../src/npm2yarn.ts","../src/npm2yarn2pnpm.ts"],"sourcesContent":["export { npmToPnpm } from './npm2pnpm';\nexport { npmToYarn } from './npm2yarn';\nexport { npm2yarn2pnpm, type PluginOptions } from './npm2yarn2pnpm';\n","/**\n * Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst unchangedCLICommands = ['init', 'run', 'test', 'login', 'logout', 'link', 'publish', 'cache'];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\treturn command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t.replace('--no-package-lock', '');\n}\n\nconst npmToPnpmTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\treturn command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t\t.replace('--no-package-lock', '');\n\t},\n\n\tversion(command: string) {\n\t\treturn command.replace(/(major|minor|patch)/, '--$1');\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command ?? '').trim();\n\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0] as keyof typeof npmToPnpmTable;\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `pnpm ${command}`;\n\t} else if (Object.prototype.hasOwnProperty.call(npmToPnpmTable, firstCommand) && npmToPnpmTable[firstCommand]) {\n\t\tif (typeof npmToPnpmTable[firstCommand] === 'function') {\n\t\t\treturn `pnpm ${npmToPnpmTable[firstCommand](command)}`;\n\t\t}\n\t\treturn `pnpm ${command.replace(firstCommand, npmToPnpmTable[firstCommand])}`;\n\t}\n\n\treturn `pnpm ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToPnpm(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","/**\n * Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport const unchangedCLICommands = ['test', 'login', 'logout', 'link', 'publish', 'cache'];\nexport const yarnCLICommands = [\n\t'init',\n\t'run',\n\t'add',\n\t'audit',\n\t'autoclean',\n\t'bin',\n\t'check',\n\t'config',\n\t'create',\n\t'dedupe',\n\t'generate-lock-entry',\n\t'global',\n\t'help',\n\t'import',\n\t'info',\n\t'install',\n\t'licenses',\n\t'list',\n\t'lockfile',\n\t'outdated',\n\t'owner',\n\t'pack',\n\t'policies',\n\t'prune',\n\t'remove',\n\t'self-update',\n\t'tag',\n\t'team',\n\t'link',\n\t'unlink',\n\t'upgrade',\n\t'upgrade-interactive',\n\t'version',\n\t'versions',\n\t'why',\n\t'workspace',\n\t'workspaces'\n];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\tlet yarnAddCommand = command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace('--save-dev', '--dev')\n\t\t.replace(/\\s*--save(?!-)/, '')\n\t\t.replace('--no-package-lock', '--no-lockfile')\n\t\t.replace('--save-optional', '--optional')\n\t\t.replace('--save-exact', '--exact');\n\n\tif (/ -(?:-global|g)(?![^\\b])/.test(yarnAddCommand)) {\n\t\tyarnAddCommand = yarnAddCommand.replace(/ -(?:-global|g)(?![^\\b])/, '');\n\t\tyarnAddCommand = `global ${yarnAddCommand}`;\n\t}\n\n\treturn yarnAddCommand;\n}\n\nconst npmToYarnTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\tlet yarnRemoveCommand = command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace('--save-dev', '--dev')\n\t\t\t.replace(/\\s*--save(?!-)/, '')\n\t\t\t.replace('--no-package-lock', '--no-lockfile');\n\n\t\tif (/ -(?:-global|g)(?![^\\b])/.test(yarnRemoveCommand)) {\n\t\t\tyarnRemoveCommand = yarnRemoveCommand.replace(/ -(?:-global|g)(?![^\\b])/, '');\n\t\t\tyarnRemoveCommand = `global ${yarnRemoveCommand}`;\n\t\t}\n\n\t\treturn yarnRemoveCommand;\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t},\n\n\texec(command: string) {\n\t\treturn command.replace(/^exec\\s?([^\\s]+)?(\\s--\\s--)?(.*)$/, (_, data?: string, dash?: string, rest?: string): string => {\n\t\t\tlet result = '';\n\n\t\t\tif (data && !unchangedCLICommands.includes(data) && !yarnCLICommands.includes(data)) {\n\t\t\t\tresult += data;\n\t\t\t} else {\n\t\t\t\tresult += `run ${data || ''}`;\n\t\t\t}\n\n\t\t\tif (dash) {\n\t\t\t\tresult += dash.replace(/^\\s--/, '');\n\t\t\t}\n\n\t\t\tif (rest) {\n\t\t\t\tresult += rest;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t},\n\n\trun(command: string) {\n\t\treturn command.replace(/^run\\s?([^\\s]+)?(\\s--\\s--)?(.*)$/, (_, data?: string, dash?: string, rest?: string): string => {\n\t\t\tlet result = '';\n\n\t\t\tif (data && !unchangedCLICommands.includes(data) && !yarnCLICommands.includes(data)) {\n\t\t\t\tresult += data;\n\t\t\t} else {\n\t\t\t\tresult += `run ${data || ''}`;\n\t\t\t}\n\n\t\t\tif (dash) {\n\t\t\t\tresult += dash.replace(/^\\s--/, '');\n\t\t\t}\n\n\t\t\tif (rest) {\n\t\t\t\tresult += rest;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t},\n\n\tls(command: string) {\n\t\treturn command.replace(/^(ls|list)(.*)$/, (_1, _2: string, args: string): string => {\n\t\t\tlet result = 'list';\n\n\t\t\tif (args) {\n\t\t\t\tlet ended = false;\n\t\t\t\tlet packages = [];\n\t\t\t\tconst items = args.split(' ').filter(Boolean);\n\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (ended) {\n\t\t\t\t\t\tresult += ` ${item}`;\n\t\t\t\t\t} else if (item.startsWith('-')) {\n\t\t\t\t\t\tresult += ` --pattern \"${packages.join('|')}\"`;\n\t\t\t\t\t\tpackages = [];\n\t\t\t\t\t\tended = true;\n\t\t\t\t\t\tresult += ` ${item}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpackages.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (packages.length > 0) {\n\t\t\t\t\tresult += ` --pattern \"${packages.join('|')}\"`;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn 'list';\n\t\t});\n\t},\n\n\tlist(command: string) {\n\t\treturn npmToYarnTable.ls(command);\n\t},\n\n\tinit(command: string) {\n\t\tif (/^init (?!-).*$/.test(command)) {\n\t\t\treturn command.replace('init', 'create');\n\t\t}\n\n\t\treturn command.replace(' --scope', '');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command || '').trim();\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0];\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `yarn ${command}`;\n\t}\n\n\tif (firstCommand in npmToYarnTable) {\n\t\tconst converter = npmToYarnTable[firstCommand as keyof typeof npmToYarnTable];\n\n\t\tif (typeof converter === 'function') {\n\t\t\treturn `yarn ${converter(command)}`;\n\t\t}\n\n\t\treturn `yarn ${command.replace(firstCommand, converter)}`;\n\t}\n\n\treturn `yarn ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToYarn(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","import type { Code, Content, Literal } from 'mdast';\nimport type { Plugin } from 'unified';\nimport type { Node, Parent } from 'unist';\nimport visit from 'unist-util-visit';\nimport { npmToPnpm } from './npm2pnpm';\nimport { npmToYarn } from './npm2yarn';\n\n/**\n * Transforms a Docusaurus node from NPM to Yarn and Pnpm\n * @param node The Docusaurus node to transform\n * @param options The plugin options to pass to the transformer\n * @returns The transformed node in the form of Tabs.\n */\nconst transformNode = (node: Code, options: PluginOptions) => {\n\tconst groupIdProp = options.sync ? ' groupId=\"npm2yarn2pnpm\"' : '';\n\tconst npmCode = node.value;\n\n\tconst yarnCode = npmToYarn(node.value);\n\tconst pnpmCode = npmToPnpm(node.value);\n\n\tconst [, highlight] = (node.meta ?? '').split('|');\n\n\treturn [\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: `<Tabs${groupIdProp}\n\t\t\t\t\t\tdefaultValue=\"npm\"\n\t\t\t\t\t\tvalues={[\n\t\t\t\t\t\t\t{ label: \"npm\", value: \"npm\" },\n\t\t\t\t\t\t\t{ label: \"yarn\", value: \"yarn\" },\n\t\t\t\t\t\t\t{ label: \"pnpm\", value: \"pnpm\" },\n\t\t\t\t\t\t]}\n\t\t\t>\\n<TabItem value=\"npm\">`\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: npmCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n<TabItem value=\"yarn\" label=\"Yarn\">'\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: yarnCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n<TabItem value=\"pnpm\">'\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: pnpmCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n</Tabs>'\n\t\t}\n\t] as Content[];\n};\n\nconst isImport = (node: Node): node is Literal => node.type === 'import';\nconst isParent = (node: Node): node is Parent => Array.isArray((node as Parent).children);\nconst matchNode = (node: Node): node is Code =>\n\tnode.type === 'code' && typeof (node as Code).meta === 'string' && ((node as Code).meta ?? '').startsWith('npm2yarn2pnpm');\nconst nodeForImport: Literal = {\n\ttype: 'import',\n\tvalue: \"import Tabs from '@theme/Tabs';\\nimport TabItem from '@theme/TabItem';\"\n};\n\nexport interface PluginOptions {\n\tsync?: boolean;\n}\n\nexport const npm2yarn2pnpm: Plugin<[PluginOptions?]> =\n\t({ sync = true } = { sync: true }) =>\n\t(root) => {\n\t\tlet transformed = false;\n\t\tlet alreadyImported = false;\n\t\tvisit(root, (node: Node) => {\n\t\t\tif (isImport(node) && node.value.includes('@theme/Tabs')) {\n\t\t\t\talreadyImported = true;\n\t\t\t}\n\t\t\tif (isParent(node)) {\n\t\t\t\tlet index = 0;\n\t\t\t\twhile (index < node.children.length) {\n\t\t\t\t\tconst child = node.children[index]!;\n\t\t\t\t\tif (matchNode(child)) {\n\t\t\t\t\t\tconst result = transformNode(child, { sync });\n\t\t\t\t\t\tnode.children.splice(index, 1, ...result);\n\t\t\t\t\t\tindex += result.length;\n\t\t\t\t\t\ttransformed = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (transformed && !alreadyImported) {\n\t\t\t(root as Parent).children.unshift(nodeForImport);\n\t\t}\n\t};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACOA,IAAM,uBAAuB,CAAC,QAAQ,OAAO,QAAQ,SAAS,UAAU,QAAQ,WAAW,OAAO;AAElG,SAAS,gBAAgB,SAAiB,cAAc,OAAO;AAC9D,MAAI,cAAc,KAAK,OAAO,GAAG;AAChC,WAAO;AAAA,EACR;AAEA,SAAO,QACL,QAAQ,cAAc,OAAO,YAAY,MAAM,EAC/C,QAAQ,oBAAoB,eAAe,EAC3C,QAAQ,qBAAqB,EAAE;AAClC;AAEA,IAAM,iBAAiB;AAAA,EACtB,QAAQ,SAAiB;AACxB,WAAO,gBAAgB,OAAO;AAAA,EAC/B;AAAA,EAEA,EAAE,SAAiB;AAClB,WAAO,gBAAgB,SAAS,IAAI;AAAA,EACrC;AAAA,EAEA,UAAU,SAAiB;AAC1B,WAAO,QACL,QAAQ,aAAa,QAAQ,EAC7B,QAAQ,oBAAoB,eAAe,EAC3C,QAAQ,qBAAqB,EAAE;AAAA,EAClC;AAAA,EAEA,QAAQ,SAAiB;AACxB,WAAO,QAAQ,QAAQ,uBAAuB,MAAM;AAAA,EACrD;AAAA,EAEA,QAAQ,SAAiB;AACxB,WAAO,QAAQ,QAAQ,WAAW,aAAa;AAAA,EAChD;AACD;AAEA,SAAS,QAAQ,GAAW,SAAiB;AAC5C,aAAW,WAAW,IAAI,KAAK;AAE/B,QAAM,gBAAgB,MAAM,KAAK,OAAO,KAAK,CAAC,EAAE,GAAG,CAAC;AAEpD,MAAI,qBAAqB,SAAS,YAAY,GAAG;AAChD,WAAO,QAAQ,OAAO;AAAA,EACvB,WAAW,OAAO,UAAU,eAAe,KAAK,gBAAgB,YAAY,KAAK,eAAe,YAAY,GAAG;AAC9G,QAAI,OAAO,eAAe,YAAY,MAAM,YAAY;AACvD,aAAO,QAAQ,eAAe,YAAY,EAAE,OAAO,CAAC;AAAA,IACrD;AACA,WAAO,QAAQ,QAAQ,QAAQ,cAAc,eAAe,YAAY,CAAC,CAAC;AAAA,EAC3E;AAEA,SAAO,QAAQ,OAAO;AAAA;AACvB;AAEO,SAAS,UAAU,KAAa;AACtC,SAAO,IAAI,QAAQ,2BAA2B,OAAO;AACtD;;;ACzDO,IAAMA,wBAAuB,CAAC,QAAQ,SAAS,UAAU,QAAQ,WAAW,OAAO;AACnF,IAAM,kBAAkB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,SAASC,iBAAgB,SAAiB,cAAc,OAAO;AAC9D,MAAI,cAAc,KAAK,OAAO,GAAG;AAChC,WAAO;AAAA,EACR;AAEA,MAAI,iBAAiB,QACnB,QAAQ,cAAc,OAAO,YAAY,MAAM,EAC/C,QAAQ,cAAc,OAAO,EAC7B,QAAQ,kBAAkB,EAAE,EAC5B,QAAQ,qBAAqB,eAAe,EAC5C,QAAQ,mBAAmB,YAAY,EACvC,QAAQ,gBAAgB,SAAS;AAEnC,MAAI,2BAA2B,KAAK,cAAc,GAAG;AACpD,qBAAiB,eAAe,QAAQ,4BAA4B,EAAE;AACtE,qBAAiB,UAAU,cAAc;AAAA,EAC1C;AAEA,SAAO;AACR;AAEA,IAAM,iBAAiB;AAAA,EACtB,QAAQ,SAAiB;AACxB,WAAOA,iBAAgB,OAAO;AAAA,EAC/B;AAAA,EAEA,EAAE,SAAiB;AAClB,WAAOA,iBAAgB,SAAS,IAAI;AAAA,EACrC;AAAA,EAEA,UAAU,SAAiB;AAC1B,QAAI,oBAAoB,QACtB,QAAQ,aAAa,QAAQ,EAC7B,QAAQ,cAAc,OAAO,EAC7B,QAAQ,kBAAkB,EAAE,EAC5B,QAAQ,qBAAqB,eAAe;AAE9C,QAAI,2BAA2B,KAAK,iBAAiB,GAAG;AACvD,0BAAoB,kBAAkB,QAAQ,4BAA4B,EAAE;AAC5E,0BAAoB,UAAU,iBAAiB;AAAA,IAChD;AAEA,WAAO;AAAA,EACR;AAAA,EAEA,QAAQ,SAAiB;AACxB,WAAO,QAAQ,QAAQ,WAAW,aAAa;AAAA,EAChD;AAAA,EAEA,KAAK,SAAiB;AACrB,WAAO,QAAQ,QAAQ,qCAAqC,CAAC,GAAG,MAAe,MAAe,SAA0B;AACvH,UAAI,SAAS;AAEb,UAAI,QAAQ,CAACD,sBAAqB,SAAS,IAAI,KAAK,CAAC,gBAAgB,SAAS,IAAI,GAAG;AACpF,kBAAU;AAAA,MACX,OAAO;AACN,kBAAU,OAAO,QAAQ,EAAE;AAAA,MAC5B;AAEA,UAAI,MAAM;AACT,kBAAU,KAAK,QAAQ,SAAS,EAAE;AAAA,MACnC;AAEA,UAAI,MAAM;AACT,kBAAU;AAAA,MACX;AAEA,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,SAAiB;AACpB,WAAO,QAAQ,QAAQ,oCAAoC,CAAC,GAAG,MAAe,MAAe,SAA0B;AACtH,UAAI,SAAS;AAEb,UAAI,QAAQ,CAACA,sBAAqB,SAAS,IAAI,KAAK,CAAC,gBAAgB,SAAS,IAAI,GAAG;AACpF,kBAAU;AAAA,MACX,OAAO;AACN,kBAAU,OAAO,QAAQ,EAAE;AAAA,MAC5B;AAEA,UAAI,MAAM;AACT,kBAAU,KAAK,QAAQ,SAAS,EAAE;AAAA,MACnC;AAEA,UAAI,MAAM;AACT,kBAAU;AAAA,MACX;AAEA,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EAEA,GAAG,SAAiB;AACnB,WAAO,QAAQ,QAAQ,mBAAmB,CAAC,IAAI,IAAY,SAAyB;AACnF,UAAI,SAAS;AAEb,UAAI,MAAM;AACT,YAAI,QAAQ;AACZ,YAAI,WAAW,CAAC;AAChB,cAAM,QAAQ,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAE5C,mBAAW,QAAQ,OAAO;AACzB,cAAI,OAAO;AACV,sBAAU,IAAI,IAAI;AAAA,UACnB,WAAW,KAAK,WAAW,GAAG,GAAG;AAChC,sBAAU,eAAe,SAAS,KAAK,GAAG,CAAC;AAC3C,uBAAW,CAAC;AACZ,oBAAQ;AACR,sBAAU,IAAI,IAAI;AAAA,UACnB,OAAO;AACN,qBAAS,KAAK,IAAI;AAAA,UACnB;AAAA,QACD;AAEA,YAAI,SAAS,SAAS,GAAG;AACxB,oBAAU,eAAe,SAAS,KAAK,GAAG,CAAC;AAAA,QAC5C;AAEA,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EAEA,KAAK,SAAiB;AACrB,WAAO,eAAe,GAAG,OAAO;AAAA,EACjC;AAAA,EAEA,KAAK,SAAiB;AACrB,QAAI,iBAAiB,KAAK,OAAO,GAAG;AACnC,aAAO,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,IACxC;AAEA,WAAO,QAAQ,QAAQ,YAAY,EAAE;AAAA,EACtC;AACD;AAEA,SAASE,SAAQ,GAAW,SAAiB;AAC5C,aAAW,WAAW,IAAI,KAAK;AAC/B,QAAM,gBAAgB,MAAM,KAAK,OAAO,KAAK,CAAC,EAAE,GAAG,CAAC;AAEpD,MAAIF,sBAAqB,SAAS,YAAY,GAAG;AAChD,WAAO,QAAQ,OAAO;AAAA,EACvB;AAEA,MAAI,gBAAgB,gBAAgB;AACnC,UAAM,YAAY,eAAe,YAA2C;AAE5E,QAAI,OAAO,cAAc,YAAY;AACpC,aAAO,QAAQ,UAAU,OAAO,CAAC;AAAA,IAClC;AAEA,WAAO,QAAQ,QAAQ,QAAQ,cAAc,SAAS,CAAC;AAAA,EACxD;AAEA,SAAO,QAAQ,OAAO;AAAA;AACvB;AAEO,SAAS,UAAU,KAAa;AACtC,SAAO,IAAI,QAAQ,2BAA2BE,QAAO;AACtD;;;AC/MA,8BAAkB;AAUlB,IAAM,gBAAgB,CAAC,MAAY,YAA2B;AAC7D,QAAM,cAAc,QAAQ,OAAO,6BAA6B;AAChE,QAAM,UAAU,KAAK;AAErB,QAAM,WAAW,UAAU,KAAK,KAAK;AACrC,QAAM,WAAW,UAAU,KAAK,KAAK;AAErC,QAAM,CAAC,EAAE,SAAS,KAAK,KAAK,QAAQ,IAAI,MAAM,GAAG;AAEjD,SAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,OAAO,QAAQ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQ3B;AAAA,IACA;AAAA,MACC,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,MAAM,GAAG,SAAS;AAAA,MAClB,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,MAAM,GAAG,SAAS;AAAA,MAClB,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,MAAM,GAAG,SAAS;AAAA,MAClB,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,EACD;AACD;AAEA,IAAM,WAAW,CAAC,SAAgC,KAAK,SAAS;AAChE,IAAM,WAAW,CAAC,SAA+B,MAAM,QAAS,KAAgB,QAAQ;AACxF,IAAM,YAAY,CAAC,SAClB,KAAK,SAAS,UAAU,OAAQ,KAAc,SAAS,aAAc,KAAc,QAAQ,IAAI,WAAW,eAAe;AAC1H,IAAM,gBAAyB;AAAA,EAC9B,MAAM;AAAA,EACN,OAAO;AACR;AAMO,IAAM,gBACZ,CAAC,EAAE,OAAO,KAAK,IAAI,EAAE,MAAM,KAAK,MAChC,CAAC,SAAS;AACT,MAAI,cAAc;AAClB,MAAI,kBAAkB;AACtB,8BAAAC,SAAM,MAAM,CAAC,SAAe;AAC3B,QAAI,SAAS,IAAI,KAAK,KAAK,MAAM,SAAS,aAAa,GAAG;AACzD,wBAAkB;AAAA,IACnB;AACA,QAAI,SAAS,IAAI,GAAG;AACnB,UAAI,QAAQ;AACZ,aAAO,QAAQ,KAAK,SAAS,QAAQ;AACpC,cAAM,QAAQ,KAAK,SAAS,KAAK;AACjC,YAAI,UAAU,KAAK,GAAG;AACrB,gBAAM,SAAS,cAAc,OAAO,EAAE,KAAK,CAAC;AAC5C,eAAK,SAAS,OAAO,OAAO,GAAG,GAAG,MAAM;AACxC,mBAAS,OAAO;AAChB,wBAAc;AAAA,QACf,OAAO;AACN,mBAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAC;AACD,MAAI,eAAe,CAAC,iBAAiB;AACpC,IAAC,KAAgB,SAAS,QAAQ,aAAa;AAAA,EAChD;AACD;","names":["unchangedCLICommands","parseNpmInstall","convert","visit"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/npm2bun.ts","../src/npm2pnpm.ts","../src/npm2yarn.ts","../src/npm2yarn2pnpm.ts"],"sourcesContent":["export { npmToBun } from './npm2bun';\nexport { npmToPnpm } from './npm2pnpm';\nexport { npmToYarn } from './npm2yarn';\nexport { convertNpmToPackageManagers, npm2yarn2pnpm, type PluginOptions } from './npm2yarn2pnpm';\n","const unchangedCLICommands = ['init', 'run', 'test', 'login', 'logout', 'link', 'publish', 'cache'];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\treturn command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t.replace('--no-package-lock', '');\n}\n\nconst npmToBunTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\treturn command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t\t.replace('--no-package-lock', '');\n\t},\n\n\tversion(command: string) {\n\t\treturn command.replace(/(major|minor|patch)/, '--$1');\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command ?? '').trim();\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0];\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `bun ${command}`;\n\t}\n\n\tif (firstCommand in npmToBunTable) {\n\t\tconst converter = npmToBunTable[firstCommand as keyof typeof npmToBunTable];\n\n\t\tif (typeof converter === 'function') {\n\t\t\treturn `bun ${converter(command)}`;\n\t\t}\n\n\t\treturn `bun ${command.replace(firstCommand, converter)}`;\n\t}\n\n\treturn `bun ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToBun(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","/**\n * Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst unchangedCLICommands = ['init', 'run', 'test', 'login', 'logout', 'link', 'publish', 'cache'];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\treturn command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t.replace('--no-package-lock', '');\n}\n\nconst npmToPnpmTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\treturn command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t\t.replace('--no-package-lock', '');\n\t},\n\n\tversion(command: string) {\n\t\treturn command.replace(/(major|minor|patch)/, '--$1');\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command ?? '').trim();\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0];\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `pnpm ${command}`;\n\t}\n\n\tif (firstCommand in npmToPnpmTable) {\n\t\tconst converter = npmToPnpmTable[firstCommand as keyof typeof npmToPnpmTable];\n\n\t\tif (typeof converter === 'function') {\n\t\t\treturn `pnpm ${converter(command)}`;\n\t\t}\n\n\t\treturn `pnpm ${command.replace(firstCommand, converter)}`;\n\t}\n\n\treturn `pnpm ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToPnpm(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","/**\n * Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport const unchangedCLICommands = ['test', 'login', 'logout', 'link', 'publish', 'cache'];\nexport const yarnCLICommands = [\n\t'init',\n\t'run',\n\t'add',\n\t'audit',\n\t'autoclean',\n\t'bin',\n\t'check',\n\t'config',\n\t'create',\n\t'dedupe',\n\t'generate-lock-entry',\n\t'global',\n\t'help',\n\t'import',\n\t'info',\n\t'install',\n\t'licenses',\n\t'list',\n\t'lockfile',\n\t'outdated',\n\t'owner',\n\t'pack',\n\t'policies',\n\t'prune',\n\t'remove',\n\t'self-update',\n\t'tag',\n\t'team',\n\t'link',\n\t'unlink',\n\t'upgrade',\n\t'upgrade-interactive',\n\t'version',\n\t'versions',\n\t'why',\n\t'workspace',\n\t'workspaces'\n];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\tlet yarnAddCommand = command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace('--save-dev', '--dev')\n\t\t.replace(/\\s*--save(?!-)/, '')\n\t\t.replace('--no-package-lock', '--no-lockfile')\n\t\t.replace('--save-optional', '--optional')\n\t\t.replace('--save-exact', '--exact');\n\n\tif (/ -(?:-global|g)(?![^\\b])/.test(yarnAddCommand)) {\n\t\tyarnAddCommand = yarnAddCommand.replace(/ -(?:-global|g)(?![^\\b])/, '');\n\t\tyarnAddCommand = `global ${yarnAddCommand}`;\n\t}\n\n\treturn yarnAddCommand;\n}\n\nconst npmToYarnTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\tlet yarnRemoveCommand = command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace('--save-dev', '--dev')\n\t\t\t.replace(/\\s*--save(?!-)/, '')\n\t\t\t.replace('--no-package-lock', '--no-lockfile');\n\n\t\tif (/ -(?:-global|g)(?![^\\b])/.test(yarnRemoveCommand)) {\n\t\t\tyarnRemoveCommand = yarnRemoveCommand.replace(/ -(?:-global|g)(?![^\\b])/, '');\n\t\t\tyarnRemoveCommand = `global ${yarnRemoveCommand}`;\n\t\t}\n\n\t\treturn yarnRemoveCommand;\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t},\n\n\texec(command: string) {\n\t\treturn command.replace(/^exec\\s?([^\\s]+)?(\\s--\\s--)?(.*)$/, (_, data?: string, dash?: string, rest?: string): string => {\n\t\t\tlet result = '';\n\n\t\t\tif (data && !unchangedCLICommands.includes(data) && !yarnCLICommands.includes(data)) {\n\t\t\t\tresult += data;\n\t\t\t} else {\n\t\t\t\tresult += `run ${data || ''}`;\n\t\t\t}\n\n\t\t\tif (dash) {\n\t\t\t\tresult += dash.replace(/^\\s--/, '');\n\t\t\t}\n\n\t\t\tif (rest) {\n\t\t\t\tresult += rest;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t},\n\n\trun(command: string) {\n\t\treturn command.replace(/^run\\s?([^\\s]+)?(\\s--\\s--)?(.*)$/, (_, data?: string, dash?: string, rest?: string): string => {\n\t\t\tlet result = '';\n\n\t\t\tif (data && !unchangedCLICommands.includes(data) && !yarnCLICommands.includes(data)) {\n\t\t\t\tresult += data;\n\t\t\t} else {\n\t\t\t\tresult += `run ${data || ''}`;\n\t\t\t}\n\n\t\t\tif (dash) {\n\t\t\t\tresult += dash.replace(/^\\s--/, '');\n\t\t\t}\n\n\t\t\tif (rest) {\n\t\t\t\tresult += rest;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t},\n\n\tls(command: string) {\n\t\treturn command.replace(/^(ls|list)(.*)$/, (_1, _2: string, args: string): string => {\n\t\t\tlet result = 'list';\n\n\t\t\tif (args) {\n\t\t\t\tlet ended = false;\n\t\t\t\tlet packages = [];\n\t\t\t\tconst items = args.split(' ').filter(Boolean);\n\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (ended) {\n\t\t\t\t\t\tresult += ` ${item}`;\n\t\t\t\t\t} else if (item.startsWith('-')) {\n\t\t\t\t\t\tresult += ` --pattern \"${packages.join('|')}\"`;\n\t\t\t\t\t\tpackages = [];\n\t\t\t\t\t\tended = true;\n\t\t\t\t\t\tresult += ` ${item}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpackages.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (packages.length > 0) {\n\t\t\t\t\tresult += ` --pattern \"${packages.join('|')}\"`;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn 'list';\n\t\t});\n\t},\n\n\tlist(command: string) {\n\t\treturn npmToYarnTable.ls(command);\n\t},\n\n\tinit(command: string) {\n\t\tif (/^init (?!-).*$/.test(command)) {\n\t\t\treturn command.replace('init', 'create');\n\t\t}\n\n\t\treturn command.replace(' --scope', '');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command || '').trim();\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0];\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `yarn ${command}`;\n\t}\n\n\tif (firstCommand in npmToYarnTable) {\n\t\tconst converter = npmToYarnTable[firstCommand as keyof typeof npmToYarnTable];\n\n\t\tif (typeof converter === 'function') {\n\t\t\treturn `yarn ${converter(command)}`;\n\t\t}\n\n\t\treturn `yarn ${command.replace(firstCommand, converter)}`;\n\t}\n\n\treturn `yarn ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToYarn(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","import type { Code, Literal, RootContent } from 'mdast';\nimport type { Plugin } from 'unified';\nimport type { Node, Parent } from 'unist';\nimport visit from 'unist-util-visit';\nimport { npmToBun } from './npm2bun';\nimport { npmToPnpm } from './npm2pnpm';\nimport { npmToYarn } from './npm2yarn';\n\n/**\n * A Docusaurus plugin that transforms code blocks from NPM to Yarn, Pnpm, and optionally to Bun.\n *\n * @param options - The plugin options to customize the transformation behavior.\n * - `sync` (optional): A boolean indicating whether to synchronize code examples (default: `true`).\n * - `convertToBun` (optional): A boolean indicating whether to include a Bun option (default: `false`).\n * Set this option to `true` to enable Bun code transformation.\n *\n * @returns A unified plugin function that can be used to transform Docusaurus content.\n *\n * @remarks This plugin searches for code blocks within the provided Markdown content and\n * converts them into Tabs, allowing users to switch between NPM, Yarn, and Pnpm examples.\n * Additionally, it can include a Bun option when the `convertToBun` option is set to `true`.\n * If the Tabs component is not already imported, it adds the necessary import statement.\n */\nconst transformNode = (node: Code, options: PluginOptions) => {\n\tconst groupIdProp = options.sync ? ' groupId=\"npm2yarn2pnpm\"' : '';\n\tconst npmCode = node.value;\n\n\tconst yarnCode = npmToYarn(node.value);\n\tconst pnpmCode = npmToPnpm(node.value);\n\tconst bunCode = options.convertToBun ? npmToBun(node.value) : '';\n\n\tconst [, highlight] = (node.meta ?? '').split('|');\n\n\treturn [\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: `<Tabs${groupIdProp}\n\t\t\t\t\t\tdefaultValue=\"npm\"\n\t\t\t\t\t\tvalues={[\n\t\t\t\t\t\t\t{ label: \"npm\", value: \"npm\" },\n\t\t\t\t\t\t\t{ label: \"yarn\", value: \"yarn\" },\n\t\t\t\t\t\t\t{ label: \"pnpm\", value: \"pnpm\" },\n\t\t\t\t\t\t\t${options.convertToBun && '{ label: \"bun\", value: \"bun\" }'}\n\t\t\t\t\t\t]}\n\t\t\t>\\n<TabItem value=\"npm\">`\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: npmCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n<TabItem value=\"yarn\" label=\"Yarn\">'\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: yarnCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n<TabItem value=\"pnpm\">'\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: pnpmCode\n\t\t},\n\t\t...(options.convertToBun\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'jsx',\n\t\t\t\t\t\tvalue: '</TabItem>\\n<TabItem value=\"bun\">'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: node.type,\n\t\t\t\t\t\tlang: node.lang,\n\t\t\t\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\t\t\t\tvalue: bunCode\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'jsx',\n\t\t\t\t\t\tvalue: '</TabItem>\\n</Tabs>'\n\t\t\t\t\t}\n\t\t\t ]\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'jsx',\n\t\t\t\t\t\tvalue: '</TabItem>\\n</Tabs>'\n\t\t\t\t\t}\n\t\t\t ])\n\t] as RootContent[];\n};\n\nconst isImport = (node: Node): node is Literal => node.type === 'import';\nconst isParent = (node: Node): node is Parent => Array.isArray((node as Parent).children);\nconst matchNode = (node: Node): node is Code =>\n\tnode.type === 'code' && typeof (node as Code).meta === 'string' && ((node as Code).meta ?? '').startsWith('npm2yarn2pnpm');\nconst nodeForImport: Literal = {\n\ttype: 'import',\n\tvalue: \"import Tabs from '@theme/Tabs';\\nimport TabItem from '@theme/TabItem';\"\n};\n\nexport interface PluginOptions {\n\tsync?: boolean;\n\tconvertToBun?: boolean;\n}\n\nexport const convertNpmToPackageManagers: Plugin<[PluginOptions?]> =\n\t({ sync = true, convertToBun = false } = { sync: true, convertToBun: false }) =>\n\t(root) => {\n\t\tlet transformed = false;\n\t\tlet alreadyImported = false;\n\t\tvisit(root, (node: Node) => {\n\t\t\tif (isImport(node) && node.value.includes('@theme/Tabs')) {\n\t\t\t\talreadyImported = true;\n\t\t\t}\n\t\t\tif (isParent(node)) {\n\t\t\t\tlet index = 0;\n\t\t\t\twhile (index < node.children.length) {\n\t\t\t\t\tconst child = node.children[index]!;\n\t\t\t\t\tif (matchNode(child)) {\n\t\t\t\t\t\tconst result = transformNode(child, { sync, convertToBun });\n\t\t\t\t\t\tnode.children.splice(index, 1, ...result);\n\t\t\t\t\t\tindex += result.length;\n\t\t\t\t\t\ttransformed = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (transformed && !alreadyImported) {\n\t\t\t(root as Parent).children.unshift(nodeForImport);\n\t\t}\n\t};\n\n/**\n * @deprecated This function has been renamed to {@link convertNpmToPackageManagers}. Please update your code.\n * The old name will be removed in the next major release.\n */\nexport const npm2yarn2pnpm = convertNpmToPackageManagers;\n"],"mappings":"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","names":["unchangedCLICommands","parseNpmInstall","convert","unchangedCLICommands","parseNpmInstall","convert","visit"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/
|
|
1
|
+
// src/npm2bun.ts
|
|
2
2
|
var unchangedCLICommands = ["init", "run", "test", "login", "logout", "link", "publish", "cache"];
|
|
3
3
|
function parseNpmInstall(command, isShortHand = false) {
|
|
4
4
|
if (/^install *$/.test(command)) {
|
|
@@ -6,7 +6,7 @@ function parseNpmInstall(command, isShortHand = false) {
|
|
|
6
6
|
}
|
|
7
7
|
return command.replace(isShortHand ? "i " : "install ", "add ").replace(/(\s*)--save(?!-)/, "$1--save-prod").replace("--no-package-lock", "");
|
|
8
8
|
}
|
|
9
|
-
var
|
|
9
|
+
var npmToBunTable = {
|
|
10
10
|
install(command) {
|
|
11
11
|
return parseNpmInstall(command);
|
|
12
12
|
},
|
|
@@ -27,22 +27,69 @@ function convert(_, command) {
|
|
|
27
27
|
command = (command ?? "").trim();
|
|
28
28
|
const firstCommand = (/\w+/.exec(command) || [""])[0];
|
|
29
29
|
if (unchangedCLICommands.includes(firstCommand)) {
|
|
30
|
+
return `bun ${command}`;
|
|
31
|
+
}
|
|
32
|
+
if (firstCommand in npmToBunTable) {
|
|
33
|
+
const converter = npmToBunTable[firstCommand];
|
|
34
|
+
if (typeof converter === "function") {
|
|
35
|
+
return `bun ${converter(command)}`;
|
|
36
|
+
}
|
|
37
|
+
return `bun ${command.replace(firstCommand, converter)}`;
|
|
38
|
+
}
|
|
39
|
+
return `bun ${command}
|
|
40
|
+
# couldn't auto-convert command`;
|
|
41
|
+
}
|
|
42
|
+
function npmToBun(str) {
|
|
43
|
+
return str.replace(/npm(?: +([^&\n\r]*))?/gm, convert);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// src/npm2pnpm.ts
|
|
47
|
+
var unchangedCLICommands2 = ["init", "run", "test", "login", "logout", "link", "publish", "cache"];
|
|
48
|
+
function parseNpmInstall2(command, isShortHand = false) {
|
|
49
|
+
if (/^install *$/.test(command)) {
|
|
50
|
+
return "install";
|
|
51
|
+
}
|
|
52
|
+
return command.replace(isShortHand ? "i " : "install ", "add ").replace(/(\s*)--save(?!-)/, "$1--save-prod").replace("--no-package-lock", "");
|
|
53
|
+
}
|
|
54
|
+
var npmToPnpmTable = {
|
|
55
|
+
install(command) {
|
|
56
|
+
return parseNpmInstall2(command);
|
|
57
|
+
},
|
|
58
|
+
i(command) {
|
|
59
|
+
return parseNpmInstall2(command, true);
|
|
60
|
+
},
|
|
61
|
+
uninstall(command) {
|
|
62
|
+
return command.replace("uninstall", "remove").replace(/(\s*)--save(?!-)/, "$1--save-prod").replace("--no-package-lock", "");
|
|
63
|
+
},
|
|
64
|
+
version(command) {
|
|
65
|
+
return command.replace(/(major|minor|patch)/, "--$1");
|
|
66
|
+
},
|
|
67
|
+
rebuild(command) {
|
|
68
|
+
return command.replace("rebuild", "add --force");
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
function convert2(_, command) {
|
|
72
|
+
command = (command ?? "").trim();
|
|
73
|
+
const firstCommand = (/\w+/.exec(command) || [""])[0];
|
|
74
|
+
if (unchangedCLICommands2.includes(firstCommand)) {
|
|
30
75
|
return `pnpm ${command}`;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
76
|
+
}
|
|
77
|
+
if (firstCommand in npmToPnpmTable) {
|
|
78
|
+
const converter = npmToPnpmTable[firstCommand];
|
|
79
|
+
if (typeof converter === "function") {
|
|
80
|
+
return `pnpm ${converter(command)}`;
|
|
34
81
|
}
|
|
35
|
-
return `pnpm ${command.replace(firstCommand,
|
|
82
|
+
return `pnpm ${command.replace(firstCommand, converter)}`;
|
|
36
83
|
}
|
|
37
84
|
return `pnpm ${command}
|
|
38
85
|
# couldn't auto-convert command`;
|
|
39
86
|
}
|
|
40
87
|
function npmToPnpm(str) {
|
|
41
|
-
return str.replace(/npm(?: +([^&\n\r]*))?/gm,
|
|
88
|
+
return str.replace(/npm(?: +([^&\n\r]*))?/gm, convert2);
|
|
42
89
|
}
|
|
43
90
|
|
|
44
91
|
// src/npm2yarn.ts
|
|
45
|
-
var
|
|
92
|
+
var unchangedCLICommands3 = ["test", "login", "logout", "link", "publish", "cache"];
|
|
46
93
|
var yarnCLICommands = [
|
|
47
94
|
"init",
|
|
48
95
|
"run",
|
|
@@ -82,7 +129,7 @@ var yarnCLICommands = [
|
|
|
82
129
|
"workspace",
|
|
83
130
|
"workspaces"
|
|
84
131
|
];
|
|
85
|
-
function
|
|
132
|
+
function parseNpmInstall3(command, isShortHand = false) {
|
|
86
133
|
if (/^install *$/.test(command)) {
|
|
87
134
|
return "install";
|
|
88
135
|
}
|
|
@@ -95,10 +142,10 @@ function parseNpmInstall2(command, isShortHand = false) {
|
|
|
95
142
|
}
|
|
96
143
|
var npmToYarnTable = {
|
|
97
144
|
install(command) {
|
|
98
|
-
return
|
|
145
|
+
return parseNpmInstall3(command);
|
|
99
146
|
},
|
|
100
147
|
i(command) {
|
|
101
|
-
return
|
|
148
|
+
return parseNpmInstall3(command, true);
|
|
102
149
|
},
|
|
103
150
|
uninstall(command) {
|
|
104
151
|
let yarnRemoveCommand = command.replace("uninstall", "remove").replace("--save-dev", "--dev").replace(/\s*--save(?!-)/, "").replace("--no-package-lock", "--no-lockfile");
|
|
@@ -114,7 +161,7 @@ var npmToYarnTable = {
|
|
|
114
161
|
exec(command) {
|
|
115
162
|
return command.replace(/^exec\s?([^\s]+)?(\s--\s--)?(.*)$/, (_, data, dash, rest) => {
|
|
116
163
|
let result = "";
|
|
117
|
-
if (data && !
|
|
164
|
+
if (data && !unchangedCLICommands3.includes(data) && !yarnCLICommands.includes(data)) {
|
|
118
165
|
result += data;
|
|
119
166
|
} else {
|
|
120
167
|
result += `run ${data || ""}`;
|
|
@@ -131,7 +178,7 @@ var npmToYarnTable = {
|
|
|
131
178
|
run(command) {
|
|
132
179
|
return command.replace(/^run\s?([^\s]+)?(\s--\s--)?(.*)$/, (_, data, dash, rest) => {
|
|
133
180
|
let result = "";
|
|
134
|
-
if (data && !
|
|
181
|
+
if (data && !unchangedCLICommands3.includes(data) && !yarnCLICommands.includes(data)) {
|
|
135
182
|
result += data;
|
|
136
183
|
} else {
|
|
137
184
|
result += `run ${data || ""}`;
|
|
@@ -182,10 +229,10 @@ var npmToYarnTable = {
|
|
|
182
229
|
return command.replace(" --scope", "");
|
|
183
230
|
}
|
|
184
231
|
};
|
|
185
|
-
function
|
|
232
|
+
function convert3(_, command) {
|
|
186
233
|
command = (command || "").trim();
|
|
187
234
|
const firstCommand = (/\w+/.exec(command) || [""])[0];
|
|
188
|
-
if (
|
|
235
|
+
if (unchangedCLICommands3.includes(firstCommand)) {
|
|
189
236
|
return `yarn ${command}`;
|
|
190
237
|
}
|
|
191
238
|
if (firstCommand in npmToYarnTable) {
|
|
@@ -199,7 +246,7 @@ function convert2(_, command) {
|
|
|
199
246
|
# couldn't auto-convert command`;
|
|
200
247
|
}
|
|
201
248
|
function npmToYarn(str) {
|
|
202
|
-
return str.replace(/npm(?: +([^&\n\r]*))?/gm,
|
|
249
|
+
return str.replace(/npm(?: +([^&\n\r]*))?/gm, convert3);
|
|
203
250
|
}
|
|
204
251
|
|
|
205
252
|
// src/npm2yarn2pnpm.ts
|
|
@@ -209,6 +256,7 @@ var transformNode = (node, options) => {
|
|
|
209
256
|
const npmCode = node.value;
|
|
210
257
|
const yarnCode = npmToYarn(node.value);
|
|
211
258
|
const pnpmCode = npmToPnpm(node.value);
|
|
259
|
+
const bunCode = options.convertToBun ? npmToBun(node.value) : "";
|
|
212
260
|
const [, highlight] = (node.meta ?? "").split("|");
|
|
213
261
|
return [
|
|
214
262
|
{
|
|
@@ -219,6 +267,7 @@ var transformNode = (node, options) => {
|
|
|
219
267
|
{ label: "npm", value: "npm" },
|
|
220
268
|
{ label: "yarn", value: "yarn" },
|
|
221
269
|
{ label: "pnpm", value: "pnpm" },
|
|
270
|
+
${options.convertToBun && '{ label: "bun", value: "bun" }'}
|
|
222
271
|
]}
|
|
223
272
|
>
|
|
224
273
|
<TabItem value="npm">`
|
|
@@ -249,10 +298,27 @@ var transformNode = (node, options) => {
|
|
|
249
298
|
meta: `${highlight} showLineNumbers`,
|
|
250
299
|
value: pnpmCode
|
|
251
300
|
},
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
301
|
+
...options.convertToBun ? [
|
|
302
|
+
{
|
|
303
|
+
type: "jsx",
|
|
304
|
+
value: '</TabItem>\n<TabItem value="bun">'
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
type: node.type,
|
|
308
|
+
lang: node.lang,
|
|
309
|
+
meta: `${highlight} showLineNumbers`,
|
|
310
|
+
value: bunCode
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
type: "jsx",
|
|
314
|
+
value: "</TabItem>\n</Tabs>"
|
|
315
|
+
}
|
|
316
|
+
] : [
|
|
317
|
+
{
|
|
318
|
+
type: "jsx",
|
|
319
|
+
value: "</TabItem>\n</Tabs>"
|
|
320
|
+
}
|
|
321
|
+
]
|
|
256
322
|
];
|
|
257
323
|
};
|
|
258
324
|
var isImport = (node) => node.type === "import";
|
|
@@ -262,7 +328,7 @@ var nodeForImport = {
|
|
|
262
328
|
type: "import",
|
|
263
329
|
value: "import Tabs from '@theme/Tabs';\nimport TabItem from '@theme/TabItem';"
|
|
264
330
|
};
|
|
265
|
-
var
|
|
331
|
+
var convertNpmToPackageManagers = ({ sync = true, convertToBun = false } = { sync: true, convertToBun: false }) => (root) => {
|
|
266
332
|
let transformed = false;
|
|
267
333
|
let alreadyImported = false;
|
|
268
334
|
visit(root, (node) => {
|
|
@@ -274,7 +340,7 @@ var npm2yarn2pnpm = ({ sync = true } = { sync: true }) => (root) => {
|
|
|
274
340
|
while (index < node.children.length) {
|
|
275
341
|
const child = node.children[index];
|
|
276
342
|
if (matchNode(child)) {
|
|
277
|
-
const result = transformNode(child, { sync });
|
|
343
|
+
const result = transformNode(child, { sync, convertToBun });
|
|
278
344
|
node.children.splice(index, 1, ...result);
|
|
279
345
|
index += result.length;
|
|
280
346
|
transformed = true;
|
|
@@ -288,8 +354,11 @@ var npm2yarn2pnpm = ({ sync = true } = { sync: true }) => (root) => {
|
|
|
288
354
|
root.children.unshift(nodeForImport);
|
|
289
355
|
}
|
|
290
356
|
};
|
|
357
|
+
var npm2yarn2pnpm = convertNpmToPackageManagers;
|
|
291
358
|
export {
|
|
359
|
+
convertNpmToPackageManagers,
|
|
292
360
|
npm2yarn2pnpm,
|
|
361
|
+
npmToBun,
|
|
293
362
|
npmToPnpm,
|
|
294
363
|
npmToYarn
|
|
295
364
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/npm2pnpm.ts","../src/npm2yarn.ts","../src/npm2yarn2pnpm.ts"],"sourcesContent":["/**\n * Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst unchangedCLICommands = ['init', 'run', 'test', 'login', 'logout', 'link', 'publish', 'cache'];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\treturn command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t.replace('--no-package-lock', '');\n}\n\nconst npmToPnpmTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\treturn command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t\t.replace('--no-package-lock', '');\n\t},\n\n\tversion(command: string) {\n\t\treturn command.replace(/(major|minor|patch)/, '--$1');\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command ?? '').trim();\n\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0] as keyof typeof npmToPnpmTable;\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `pnpm ${command}`;\n\t} else if (Object.prototype.hasOwnProperty.call(npmToPnpmTable, firstCommand) && npmToPnpmTable[firstCommand]) {\n\t\tif (typeof npmToPnpmTable[firstCommand] === 'function') {\n\t\t\treturn `pnpm ${npmToPnpmTable[firstCommand](command)}`;\n\t\t}\n\t\treturn `pnpm ${command.replace(firstCommand, npmToPnpmTable[firstCommand])}`;\n\t}\n\n\treturn `pnpm ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToPnpm(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","/**\n * Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport const unchangedCLICommands = ['test', 'login', 'logout', 'link', 'publish', 'cache'];\nexport const yarnCLICommands = [\n\t'init',\n\t'run',\n\t'add',\n\t'audit',\n\t'autoclean',\n\t'bin',\n\t'check',\n\t'config',\n\t'create',\n\t'dedupe',\n\t'generate-lock-entry',\n\t'global',\n\t'help',\n\t'import',\n\t'info',\n\t'install',\n\t'licenses',\n\t'list',\n\t'lockfile',\n\t'outdated',\n\t'owner',\n\t'pack',\n\t'policies',\n\t'prune',\n\t'remove',\n\t'self-update',\n\t'tag',\n\t'team',\n\t'link',\n\t'unlink',\n\t'upgrade',\n\t'upgrade-interactive',\n\t'version',\n\t'versions',\n\t'why',\n\t'workspace',\n\t'workspaces'\n];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\tlet yarnAddCommand = command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace('--save-dev', '--dev')\n\t\t.replace(/\\s*--save(?!-)/, '')\n\t\t.replace('--no-package-lock', '--no-lockfile')\n\t\t.replace('--save-optional', '--optional')\n\t\t.replace('--save-exact', '--exact');\n\n\tif (/ -(?:-global|g)(?![^\\b])/.test(yarnAddCommand)) {\n\t\tyarnAddCommand = yarnAddCommand.replace(/ -(?:-global|g)(?![^\\b])/, '');\n\t\tyarnAddCommand = `global ${yarnAddCommand}`;\n\t}\n\n\treturn yarnAddCommand;\n}\n\nconst npmToYarnTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\tlet yarnRemoveCommand = command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace('--save-dev', '--dev')\n\t\t\t.replace(/\\s*--save(?!-)/, '')\n\t\t\t.replace('--no-package-lock', '--no-lockfile');\n\n\t\tif (/ -(?:-global|g)(?![^\\b])/.test(yarnRemoveCommand)) {\n\t\t\tyarnRemoveCommand = yarnRemoveCommand.replace(/ -(?:-global|g)(?![^\\b])/, '');\n\t\t\tyarnRemoveCommand = `global ${yarnRemoveCommand}`;\n\t\t}\n\n\t\treturn yarnRemoveCommand;\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t},\n\n\texec(command: string) {\n\t\treturn command.replace(/^exec\\s?([^\\s]+)?(\\s--\\s--)?(.*)$/, (_, data?: string, dash?: string, rest?: string): string => {\n\t\t\tlet result = '';\n\n\t\t\tif (data && !unchangedCLICommands.includes(data) && !yarnCLICommands.includes(data)) {\n\t\t\t\tresult += data;\n\t\t\t} else {\n\t\t\t\tresult += `run ${data || ''}`;\n\t\t\t}\n\n\t\t\tif (dash) {\n\t\t\t\tresult += dash.replace(/^\\s--/, '');\n\t\t\t}\n\n\t\t\tif (rest) {\n\t\t\t\tresult += rest;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t},\n\n\trun(command: string) {\n\t\treturn command.replace(/^run\\s?([^\\s]+)?(\\s--\\s--)?(.*)$/, (_, data?: string, dash?: string, rest?: string): string => {\n\t\t\tlet result = '';\n\n\t\t\tif (data && !unchangedCLICommands.includes(data) && !yarnCLICommands.includes(data)) {\n\t\t\t\tresult += data;\n\t\t\t} else {\n\t\t\t\tresult += `run ${data || ''}`;\n\t\t\t}\n\n\t\t\tif (dash) {\n\t\t\t\tresult += dash.replace(/^\\s--/, '');\n\t\t\t}\n\n\t\t\tif (rest) {\n\t\t\t\tresult += rest;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t},\n\n\tls(command: string) {\n\t\treturn command.replace(/^(ls|list)(.*)$/, (_1, _2: string, args: string): string => {\n\t\t\tlet result = 'list';\n\n\t\t\tif (args) {\n\t\t\t\tlet ended = false;\n\t\t\t\tlet packages = [];\n\t\t\t\tconst items = args.split(' ').filter(Boolean);\n\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (ended) {\n\t\t\t\t\t\tresult += ` ${item}`;\n\t\t\t\t\t} else if (item.startsWith('-')) {\n\t\t\t\t\t\tresult += ` --pattern \"${packages.join('|')}\"`;\n\t\t\t\t\t\tpackages = [];\n\t\t\t\t\t\tended = true;\n\t\t\t\t\t\tresult += ` ${item}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpackages.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (packages.length > 0) {\n\t\t\t\t\tresult += ` --pattern \"${packages.join('|')}\"`;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn 'list';\n\t\t});\n\t},\n\n\tlist(command: string) {\n\t\treturn npmToYarnTable.ls(command);\n\t},\n\n\tinit(command: string) {\n\t\tif (/^init (?!-).*$/.test(command)) {\n\t\t\treturn command.replace('init', 'create');\n\t\t}\n\n\t\treturn command.replace(' --scope', '');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command || '').trim();\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0];\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `yarn ${command}`;\n\t}\n\n\tif (firstCommand in npmToYarnTable) {\n\t\tconst converter = npmToYarnTable[firstCommand as keyof typeof npmToYarnTable];\n\n\t\tif (typeof converter === 'function') {\n\t\t\treturn `yarn ${converter(command)}`;\n\t\t}\n\n\t\treturn `yarn ${command.replace(firstCommand, converter)}`;\n\t}\n\n\treturn `yarn ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToYarn(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","import type { Code, Content, Literal } from 'mdast';\nimport type { Plugin } from 'unified';\nimport type { Node, Parent } from 'unist';\nimport visit from 'unist-util-visit';\nimport { npmToPnpm } from './npm2pnpm';\nimport { npmToYarn } from './npm2yarn';\n\n/**\n * Transforms a Docusaurus node from NPM to Yarn and Pnpm\n * @param node The Docusaurus node to transform\n * @param options The plugin options to pass to the transformer\n * @returns The transformed node in the form of Tabs.\n */\nconst transformNode = (node: Code, options: PluginOptions) => {\n\tconst groupIdProp = options.sync ? ' groupId=\"npm2yarn2pnpm\"' : '';\n\tconst npmCode = node.value;\n\n\tconst yarnCode = npmToYarn(node.value);\n\tconst pnpmCode = npmToPnpm(node.value);\n\n\tconst [, highlight] = (node.meta ?? '').split('|');\n\n\treturn [\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: `<Tabs${groupIdProp}\n\t\t\t\t\t\tdefaultValue=\"npm\"\n\t\t\t\t\t\tvalues={[\n\t\t\t\t\t\t\t{ label: \"npm\", value: \"npm\" },\n\t\t\t\t\t\t\t{ label: \"yarn\", value: \"yarn\" },\n\t\t\t\t\t\t\t{ label: \"pnpm\", value: \"pnpm\" },\n\t\t\t\t\t\t]}\n\t\t\t>\\n<TabItem value=\"npm\">`\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: npmCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n<TabItem value=\"yarn\" label=\"Yarn\">'\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: yarnCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n<TabItem value=\"pnpm\">'\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: pnpmCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n</Tabs>'\n\t\t}\n\t] as Content[];\n};\n\nconst isImport = (node: Node): node is Literal => node.type === 'import';\nconst isParent = (node: Node): node is Parent => Array.isArray((node as Parent).children);\nconst matchNode = (node: Node): node is Code =>\n\tnode.type === 'code' && typeof (node as Code).meta === 'string' && ((node as Code).meta ?? '').startsWith('npm2yarn2pnpm');\nconst nodeForImport: Literal = {\n\ttype: 'import',\n\tvalue: \"import Tabs from '@theme/Tabs';\\nimport TabItem from '@theme/TabItem';\"\n};\n\nexport interface PluginOptions {\n\tsync?: boolean;\n}\n\nexport const npm2yarn2pnpm: Plugin<[PluginOptions?]> =\n\t({ sync = true } = { sync: true }) =>\n\t(root) => {\n\t\tlet transformed = false;\n\t\tlet alreadyImported = false;\n\t\tvisit(root, (node: Node) => {\n\t\t\tif (isImport(node) && node.value.includes('@theme/Tabs')) {\n\t\t\t\talreadyImported = true;\n\t\t\t}\n\t\t\tif (isParent(node)) {\n\t\t\t\tlet index = 0;\n\t\t\t\twhile (index < node.children.length) {\n\t\t\t\t\tconst child = node.children[index]!;\n\t\t\t\t\tif (matchNode(child)) {\n\t\t\t\t\t\tconst result = transformNode(child, { sync });\n\t\t\t\t\t\tnode.children.splice(index, 1, ...result);\n\t\t\t\t\t\tindex += result.length;\n\t\t\t\t\t\ttransformed = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (transformed && !alreadyImported) {\n\t\t\t(root as Parent).children.unshift(nodeForImport);\n\t\t}\n\t};\n"],"mappings":"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","names":["unchangedCLICommands","parseNpmInstall","convert"]}
|
|
1
|
+
{"version":3,"sources":["../src/npm2bun.ts","../src/npm2pnpm.ts","../src/npm2yarn.ts","../src/npm2yarn2pnpm.ts"],"sourcesContent":["const unchangedCLICommands = ['init', 'run', 'test', 'login', 'logout', 'link', 'publish', 'cache'];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\treturn command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t.replace('--no-package-lock', '');\n}\n\nconst npmToBunTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\treturn command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t\t.replace('--no-package-lock', '');\n\t},\n\n\tversion(command: string) {\n\t\treturn command.replace(/(major|minor|patch)/, '--$1');\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command ?? '').trim();\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0];\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `bun ${command}`;\n\t}\n\n\tif (firstCommand in npmToBunTable) {\n\t\tconst converter = npmToBunTable[firstCommand as keyof typeof npmToBunTable];\n\n\t\tif (typeof converter === 'function') {\n\t\t\treturn `bun ${converter(command)}`;\n\t\t}\n\n\t\treturn `bun ${command.replace(firstCommand, converter)}`;\n\t}\n\n\treturn `bun ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToBun(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","/**\n * Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst unchangedCLICommands = ['init', 'run', 'test', 'login', 'logout', 'link', 'publish', 'cache'];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\treturn command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t.replace('--no-package-lock', '');\n}\n\nconst npmToPnpmTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\treturn command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace(/(\\s*)--save(?!-)/, '$1--save-prod')\n\t\t\t.replace('--no-package-lock', '');\n\t},\n\n\tversion(command: string) {\n\t\treturn command.replace(/(major|minor|patch)/, '--$1');\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command ?? '').trim();\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0];\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `pnpm ${command}`;\n\t}\n\n\tif (firstCommand in npmToPnpmTable) {\n\t\tconst converter = npmToPnpmTable[firstCommand as keyof typeof npmToPnpmTable];\n\n\t\tif (typeof converter === 'function') {\n\t\t\treturn `pnpm ${converter(command)}`;\n\t\t}\n\n\t\treturn `pnpm ${command.replace(firstCommand, converter)}`;\n\t}\n\n\treturn `pnpm ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToPnpm(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","/**\n * Copyright (c) 2019 Ben Gubler <nebrelbug@gmail.com>\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport const unchangedCLICommands = ['test', 'login', 'logout', 'link', 'publish', 'cache'];\nexport const yarnCLICommands = [\n\t'init',\n\t'run',\n\t'add',\n\t'audit',\n\t'autoclean',\n\t'bin',\n\t'check',\n\t'config',\n\t'create',\n\t'dedupe',\n\t'generate-lock-entry',\n\t'global',\n\t'help',\n\t'import',\n\t'info',\n\t'install',\n\t'licenses',\n\t'list',\n\t'lockfile',\n\t'outdated',\n\t'owner',\n\t'pack',\n\t'policies',\n\t'prune',\n\t'remove',\n\t'self-update',\n\t'tag',\n\t'team',\n\t'link',\n\t'unlink',\n\t'upgrade',\n\t'upgrade-interactive',\n\t'version',\n\t'versions',\n\t'why',\n\t'workspace',\n\t'workspaces'\n];\n\nfunction parseNpmInstall(command: string, isShortHand = false) {\n\tif (/^install *$/.test(command)) {\n\t\treturn 'install';\n\t}\n\n\tlet yarnAddCommand = command\n\t\t.replace(isShortHand ? 'i ' : 'install ', 'add ')\n\t\t.replace('--save-dev', '--dev')\n\t\t.replace(/\\s*--save(?!-)/, '')\n\t\t.replace('--no-package-lock', '--no-lockfile')\n\t\t.replace('--save-optional', '--optional')\n\t\t.replace('--save-exact', '--exact');\n\n\tif (/ -(?:-global|g)(?![^\\b])/.test(yarnAddCommand)) {\n\t\tyarnAddCommand = yarnAddCommand.replace(/ -(?:-global|g)(?![^\\b])/, '');\n\t\tyarnAddCommand = `global ${yarnAddCommand}`;\n\t}\n\n\treturn yarnAddCommand;\n}\n\nconst npmToYarnTable = {\n\tinstall(command: string) {\n\t\treturn parseNpmInstall(command);\n\t},\n\n\ti(command: string) {\n\t\treturn parseNpmInstall(command, true);\n\t},\n\n\tuninstall(command: string) {\n\t\tlet yarnRemoveCommand = command\n\t\t\t.replace('uninstall', 'remove')\n\t\t\t.replace('--save-dev', '--dev')\n\t\t\t.replace(/\\s*--save(?!-)/, '')\n\t\t\t.replace('--no-package-lock', '--no-lockfile');\n\n\t\tif (/ -(?:-global|g)(?![^\\b])/.test(yarnRemoveCommand)) {\n\t\t\tyarnRemoveCommand = yarnRemoveCommand.replace(/ -(?:-global|g)(?![^\\b])/, '');\n\t\t\tyarnRemoveCommand = `global ${yarnRemoveCommand}`;\n\t\t}\n\n\t\treturn yarnRemoveCommand;\n\t},\n\n\trebuild(command: string) {\n\t\treturn command.replace('rebuild', 'add --force');\n\t},\n\n\texec(command: string) {\n\t\treturn command.replace(/^exec\\s?([^\\s]+)?(\\s--\\s--)?(.*)$/, (_, data?: string, dash?: string, rest?: string): string => {\n\t\t\tlet result = '';\n\n\t\t\tif (data && !unchangedCLICommands.includes(data) && !yarnCLICommands.includes(data)) {\n\t\t\t\tresult += data;\n\t\t\t} else {\n\t\t\t\tresult += `run ${data || ''}`;\n\t\t\t}\n\n\t\t\tif (dash) {\n\t\t\t\tresult += dash.replace(/^\\s--/, '');\n\t\t\t}\n\n\t\t\tif (rest) {\n\t\t\t\tresult += rest;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t},\n\n\trun(command: string) {\n\t\treturn command.replace(/^run\\s?([^\\s]+)?(\\s--\\s--)?(.*)$/, (_, data?: string, dash?: string, rest?: string): string => {\n\t\t\tlet result = '';\n\n\t\t\tif (data && !unchangedCLICommands.includes(data) && !yarnCLICommands.includes(data)) {\n\t\t\t\tresult += data;\n\t\t\t} else {\n\t\t\t\tresult += `run ${data || ''}`;\n\t\t\t}\n\n\t\t\tif (dash) {\n\t\t\t\tresult += dash.replace(/^\\s--/, '');\n\t\t\t}\n\n\t\t\tif (rest) {\n\t\t\t\tresult += rest;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t},\n\n\tls(command: string) {\n\t\treturn command.replace(/^(ls|list)(.*)$/, (_1, _2: string, args: string): string => {\n\t\t\tlet result = 'list';\n\n\t\t\tif (args) {\n\t\t\t\tlet ended = false;\n\t\t\t\tlet packages = [];\n\t\t\t\tconst items = args.split(' ').filter(Boolean);\n\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (ended) {\n\t\t\t\t\t\tresult += ` ${item}`;\n\t\t\t\t\t} else if (item.startsWith('-')) {\n\t\t\t\t\t\tresult += ` --pattern \"${packages.join('|')}\"`;\n\t\t\t\t\t\tpackages = [];\n\t\t\t\t\t\tended = true;\n\t\t\t\t\t\tresult += ` ${item}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpackages.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (packages.length > 0) {\n\t\t\t\t\tresult += ` --pattern \"${packages.join('|')}\"`;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn 'list';\n\t\t});\n\t},\n\n\tlist(command: string) {\n\t\treturn npmToYarnTable.ls(command);\n\t},\n\n\tinit(command: string) {\n\t\tif (/^init (?!-).*$/.test(command)) {\n\t\t\treturn command.replace('init', 'create');\n\t\t}\n\n\t\treturn command.replace(' --scope', '');\n\t}\n} as const;\n\nfunction convert(_: string, command: string) {\n\tcommand = (command || '').trim();\n\tconst firstCommand = (/\\w+/.exec(command) || [''])[0];\n\n\tif (unchangedCLICommands.includes(firstCommand)) {\n\t\treturn `yarn ${command}`;\n\t}\n\n\tif (firstCommand in npmToYarnTable) {\n\t\tconst converter = npmToYarnTable[firstCommand as keyof typeof npmToYarnTable];\n\n\t\tif (typeof converter === 'function') {\n\t\t\treturn `yarn ${converter(command)}`;\n\t\t}\n\n\t\treturn `yarn ${command.replace(firstCommand, converter)}`;\n\t}\n\n\treturn `yarn ${command}\\n# couldn't auto-convert command`;\n}\n\nexport function npmToYarn(str: string) {\n\treturn str.replace(/npm(?: +([^&\\n\\r]*))?/gm, convert);\n}\n","import type { Code, Literal, RootContent } from 'mdast';\nimport type { Plugin } from 'unified';\nimport type { Node, Parent } from 'unist';\nimport visit from 'unist-util-visit';\nimport { npmToBun } from './npm2bun';\nimport { npmToPnpm } from './npm2pnpm';\nimport { npmToYarn } from './npm2yarn';\n\n/**\n * A Docusaurus plugin that transforms code blocks from NPM to Yarn, Pnpm, and optionally to Bun.\n *\n * @param options - The plugin options to customize the transformation behavior.\n * - `sync` (optional): A boolean indicating whether to synchronize code examples (default: `true`).\n * - `convertToBun` (optional): A boolean indicating whether to include a Bun option (default: `false`).\n * Set this option to `true` to enable Bun code transformation.\n *\n * @returns A unified plugin function that can be used to transform Docusaurus content.\n *\n * @remarks This plugin searches for code blocks within the provided Markdown content and\n * converts them into Tabs, allowing users to switch between NPM, Yarn, and Pnpm examples.\n * Additionally, it can include a Bun option when the `convertToBun` option is set to `true`.\n * If the Tabs component is not already imported, it adds the necessary import statement.\n */\nconst transformNode = (node: Code, options: PluginOptions) => {\n\tconst groupIdProp = options.sync ? ' groupId=\"npm2yarn2pnpm\"' : '';\n\tconst npmCode = node.value;\n\n\tconst yarnCode = npmToYarn(node.value);\n\tconst pnpmCode = npmToPnpm(node.value);\n\tconst bunCode = options.convertToBun ? npmToBun(node.value) : '';\n\n\tconst [, highlight] = (node.meta ?? '').split('|');\n\n\treturn [\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: `<Tabs${groupIdProp}\n\t\t\t\t\t\tdefaultValue=\"npm\"\n\t\t\t\t\t\tvalues={[\n\t\t\t\t\t\t\t{ label: \"npm\", value: \"npm\" },\n\t\t\t\t\t\t\t{ label: \"yarn\", value: \"yarn\" },\n\t\t\t\t\t\t\t{ label: \"pnpm\", value: \"pnpm\" },\n\t\t\t\t\t\t\t${options.convertToBun && '{ label: \"bun\", value: \"bun\" }'}\n\t\t\t\t\t\t]}\n\t\t\t>\\n<TabItem value=\"npm\">`\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: npmCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n<TabItem value=\"yarn\" label=\"Yarn\">'\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: yarnCode\n\t\t},\n\t\t{\n\t\t\ttype: 'jsx',\n\t\t\tvalue: '</TabItem>\\n<TabItem value=\"pnpm\">'\n\t\t},\n\t\t{\n\t\t\ttype: node.type,\n\t\t\tlang: node.lang,\n\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\tvalue: pnpmCode\n\t\t},\n\t\t...(options.convertToBun\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'jsx',\n\t\t\t\t\t\tvalue: '</TabItem>\\n<TabItem value=\"bun\">'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: node.type,\n\t\t\t\t\t\tlang: node.lang,\n\t\t\t\t\t\tmeta: `${highlight} showLineNumbers`,\n\t\t\t\t\t\tvalue: bunCode\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'jsx',\n\t\t\t\t\t\tvalue: '</TabItem>\\n</Tabs>'\n\t\t\t\t\t}\n\t\t\t ]\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'jsx',\n\t\t\t\t\t\tvalue: '</TabItem>\\n</Tabs>'\n\t\t\t\t\t}\n\t\t\t ])\n\t] as RootContent[];\n};\n\nconst isImport = (node: Node): node is Literal => node.type === 'import';\nconst isParent = (node: Node): node is Parent => Array.isArray((node as Parent).children);\nconst matchNode = (node: Node): node is Code =>\n\tnode.type === 'code' && typeof (node as Code).meta === 'string' && ((node as Code).meta ?? '').startsWith('npm2yarn2pnpm');\nconst nodeForImport: Literal = {\n\ttype: 'import',\n\tvalue: \"import Tabs from '@theme/Tabs';\\nimport TabItem from '@theme/TabItem';\"\n};\n\nexport interface PluginOptions {\n\tsync?: boolean;\n\tconvertToBun?: boolean;\n}\n\nexport const convertNpmToPackageManagers: Plugin<[PluginOptions?]> =\n\t({ sync = true, convertToBun = false } = { sync: true, convertToBun: false }) =>\n\t(root) => {\n\t\tlet transformed = false;\n\t\tlet alreadyImported = false;\n\t\tvisit(root, (node: Node) => {\n\t\t\tif (isImport(node) && node.value.includes('@theme/Tabs')) {\n\t\t\t\talreadyImported = true;\n\t\t\t}\n\t\t\tif (isParent(node)) {\n\t\t\t\tlet index = 0;\n\t\t\t\twhile (index < node.children.length) {\n\t\t\t\t\tconst child = node.children[index]!;\n\t\t\t\t\tif (matchNode(child)) {\n\t\t\t\t\t\tconst result = transformNode(child, { sync, convertToBun });\n\t\t\t\t\t\tnode.children.splice(index, 1, ...result);\n\t\t\t\t\t\tindex += result.length;\n\t\t\t\t\t\ttransformed = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (transformed && !alreadyImported) {\n\t\t\t(root as Parent).children.unshift(nodeForImport);\n\t\t}\n\t};\n\n/**\n * @deprecated This function has been renamed to {@link convertNpmToPackageManagers}. Please update your code.\n * The old name will be removed in the next major release.\n */\nexport const npm2yarn2pnpm = convertNpmToPackageManagers;\n"],"mappings":";AAAA,IAAM,uBAAuB,CAAC,QAAQ,OAAO,QAAQ,SAAS,UAAU,QAAQ,WAAW,OAAO;AAElG,SAAS,gBAAgB,SAAiB,cAAc,OAAO;AAC9D,MAAI,cAAc,KAAK,OAAO,GAAG;AAChC,WAAO;AAAA,EACR;AAEA,SAAO,QACL,QAAQ,cAAc,OAAO,YAAY,MAAM,EAC/C,QAAQ,oBAAoB,eAAe,EAC3C,QAAQ,qBAAqB,EAAE;AAClC;AAEA,IAAM,gBAAgB;AAAA,EACrB,QAAQ,SAAiB;AACxB,WAAO,gBAAgB,OAAO;AAAA,EAC/B;AAAA,EAEA,EAAE,SAAiB;AAClB,WAAO,gBAAgB,SAAS,IAAI;AAAA,EACrC;AAAA,EAEA,UAAU,SAAiB;AAC1B,WAAO,QACL,QAAQ,aAAa,QAAQ,EAC7B,QAAQ,oBAAoB,eAAe,EAC3C,QAAQ,qBAAqB,EAAE;AAAA,EAClC;AAAA,EAEA,QAAQ,SAAiB;AACxB,WAAO,QAAQ,QAAQ,uBAAuB,MAAM;AAAA,EACrD;AAAA,EAEA,QAAQ,SAAiB;AACxB,WAAO,QAAQ,QAAQ,WAAW,aAAa;AAAA,EAChD;AACD;AAEA,SAAS,QAAQ,GAAW,SAAiB;AAC5C,aAAW,WAAW,IAAI,KAAK;AAC/B,QAAM,gBAAgB,MAAM,KAAK,OAAO,KAAK,CAAC,EAAE,GAAG,CAAC;AAEpD,MAAI,qBAAqB,SAAS,YAAY,GAAG;AAChD,WAAO,OAAO,OAAO;AAAA,EACtB;AAEA,MAAI,gBAAgB,eAAe;AAClC,UAAM,YAAY,cAAc,YAA0C;AAE1E,QAAI,OAAO,cAAc,YAAY;AACpC,aAAO,OAAO,UAAU,OAAO,CAAC;AAAA,IACjC;AAEA,WAAO,OAAO,QAAQ,QAAQ,cAAc,SAAS,CAAC;AAAA,EACvD;AAEA,SAAO,OAAO,OAAO;AAAA;AACtB;AAEO,SAAS,SAAS,KAAa;AACrC,SAAO,IAAI,QAAQ,2BAA2B,OAAO;AACtD;;;ACtDA,IAAMA,wBAAuB,CAAC,QAAQ,OAAO,QAAQ,SAAS,UAAU,QAAQ,WAAW,OAAO;AAElG,SAASC,iBAAgB,SAAiB,cAAc,OAAO;AAC9D,MAAI,cAAc,KAAK,OAAO,GAAG;AAChC,WAAO;AAAA,EACR;AAEA,SAAO,QACL,QAAQ,cAAc,OAAO,YAAY,MAAM,EAC/C,QAAQ,oBAAoB,eAAe,EAC3C,QAAQ,qBAAqB,EAAE;AAClC;AAEA,IAAM,iBAAiB;AAAA,EACtB,QAAQ,SAAiB;AACxB,WAAOA,iBAAgB,OAAO;AAAA,EAC/B;AAAA,EAEA,EAAE,SAAiB;AAClB,WAAOA,iBAAgB,SAAS,IAAI;AAAA,EACrC;AAAA,EAEA,UAAU,SAAiB;AAC1B,WAAO,QACL,QAAQ,aAAa,QAAQ,EAC7B,QAAQ,oBAAoB,eAAe,EAC3C,QAAQ,qBAAqB,EAAE;AAAA,EAClC;AAAA,EAEA,QAAQ,SAAiB;AACxB,WAAO,QAAQ,QAAQ,uBAAuB,MAAM;AAAA,EACrD;AAAA,EAEA,QAAQ,SAAiB;AACxB,WAAO,QAAQ,QAAQ,WAAW,aAAa;AAAA,EAChD;AACD;AAEA,SAASC,SAAQ,GAAW,SAAiB;AAC5C,aAAW,WAAW,IAAI,KAAK;AAC/B,QAAM,gBAAgB,MAAM,KAAK,OAAO,KAAK,CAAC,EAAE,GAAG,CAAC;AAEpD,MAAIF,sBAAqB,SAAS,YAAY,GAAG;AAChD,WAAO,QAAQ,OAAO;AAAA,EACvB;AAEA,MAAI,gBAAgB,gBAAgB;AACnC,UAAM,YAAY,eAAe,YAA2C;AAE5E,QAAI,OAAO,cAAc,YAAY;AACpC,aAAO,QAAQ,UAAU,OAAO,CAAC;AAAA,IAClC;AAEA,WAAO,QAAQ,QAAQ,QAAQ,cAAc,SAAS,CAAC;AAAA,EACxD;AAEA,SAAO,QAAQ,OAAO;AAAA;AACvB;AAEO,SAAS,UAAU,KAAa;AACtC,SAAO,IAAI,QAAQ,2BAA2BE,QAAO;AACtD;;;AC7DO,IAAMC,wBAAuB,CAAC,QAAQ,SAAS,UAAU,QAAQ,WAAW,OAAO;AACnF,IAAM,kBAAkB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,SAASC,iBAAgB,SAAiB,cAAc,OAAO;AAC9D,MAAI,cAAc,KAAK,OAAO,GAAG;AAChC,WAAO;AAAA,EACR;AAEA,MAAI,iBAAiB,QACnB,QAAQ,cAAc,OAAO,YAAY,MAAM,EAC/C,QAAQ,cAAc,OAAO,EAC7B,QAAQ,kBAAkB,EAAE,EAC5B,QAAQ,qBAAqB,eAAe,EAC5C,QAAQ,mBAAmB,YAAY,EACvC,QAAQ,gBAAgB,SAAS;AAEnC,MAAI,2BAA2B,KAAK,cAAc,GAAG;AACpD,qBAAiB,eAAe,QAAQ,4BAA4B,EAAE;AACtE,qBAAiB,UAAU,cAAc;AAAA,EAC1C;AAEA,SAAO;AACR;AAEA,IAAM,iBAAiB;AAAA,EACtB,QAAQ,SAAiB;AACxB,WAAOA,iBAAgB,OAAO;AAAA,EAC/B;AAAA,EAEA,EAAE,SAAiB;AAClB,WAAOA,iBAAgB,SAAS,IAAI;AAAA,EACrC;AAAA,EAEA,UAAU,SAAiB;AAC1B,QAAI,oBAAoB,QACtB,QAAQ,aAAa,QAAQ,EAC7B,QAAQ,cAAc,OAAO,EAC7B,QAAQ,kBAAkB,EAAE,EAC5B,QAAQ,qBAAqB,eAAe;AAE9C,QAAI,2BAA2B,KAAK,iBAAiB,GAAG;AACvD,0BAAoB,kBAAkB,QAAQ,4BAA4B,EAAE;AAC5E,0BAAoB,UAAU,iBAAiB;AAAA,IAChD;AAEA,WAAO;AAAA,EACR;AAAA,EAEA,QAAQ,SAAiB;AACxB,WAAO,QAAQ,QAAQ,WAAW,aAAa;AAAA,EAChD;AAAA,EAEA,KAAK,SAAiB;AACrB,WAAO,QAAQ,QAAQ,qCAAqC,CAAC,GAAG,MAAe,MAAe,SAA0B;AACvH,UAAI,SAAS;AAEb,UAAI,QAAQ,CAACD,sBAAqB,SAAS,IAAI,KAAK,CAAC,gBAAgB,SAAS,IAAI,GAAG;AACpF,kBAAU;AAAA,MACX,OAAO;AACN,kBAAU,OAAO,QAAQ,EAAE;AAAA,MAC5B;AAEA,UAAI,MAAM;AACT,kBAAU,KAAK,QAAQ,SAAS,EAAE;AAAA,MACnC;AAEA,UAAI,MAAM;AACT,kBAAU;AAAA,MACX;AAEA,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,SAAiB;AACpB,WAAO,QAAQ,QAAQ,oCAAoC,CAAC,GAAG,MAAe,MAAe,SAA0B;AACtH,UAAI,SAAS;AAEb,UAAI,QAAQ,CAACA,sBAAqB,SAAS,IAAI,KAAK,CAAC,gBAAgB,SAAS,IAAI,GAAG;AACpF,kBAAU;AAAA,MACX,OAAO;AACN,kBAAU,OAAO,QAAQ,EAAE;AAAA,MAC5B;AAEA,UAAI,MAAM;AACT,kBAAU,KAAK,QAAQ,SAAS,EAAE;AAAA,MACnC;AAEA,UAAI,MAAM;AACT,kBAAU;AAAA,MACX;AAEA,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EAEA,GAAG,SAAiB;AACnB,WAAO,QAAQ,QAAQ,mBAAmB,CAAC,IAAI,IAAY,SAAyB;AACnF,UAAI,SAAS;AAEb,UAAI,MAAM;AACT,YAAI,QAAQ;AACZ,YAAI,WAAW,CAAC;AAChB,cAAM,QAAQ,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAE5C,mBAAW,QAAQ,OAAO;AACzB,cAAI,OAAO;AACV,sBAAU,IAAI,IAAI;AAAA,UACnB,WAAW,KAAK,WAAW,GAAG,GAAG;AAChC,sBAAU,eAAe,SAAS,KAAK,GAAG,CAAC;AAC3C,uBAAW,CAAC;AACZ,oBAAQ;AACR,sBAAU,IAAI,IAAI;AAAA,UACnB,OAAO;AACN,qBAAS,KAAK,IAAI;AAAA,UACnB;AAAA,QACD;AAEA,YAAI,SAAS,SAAS,GAAG;AACxB,oBAAU,eAAe,SAAS,KAAK,GAAG,CAAC;AAAA,QAC5C;AAEA,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EAEA,KAAK,SAAiB;AACrB,WAAO,eAAe,GAAG,OAAO;AAAA,EACjC;AAAA,EAEA,KAAK,SAAiB;AACrB,QAAI,iBAAiB,KAAK,OAAO,GAAG;AACnC,aAAO,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,IACxC;AAEA,WAAO,QAAQ,QAAQ,YAAY,EAAE;AAAA,EACtC;AACD;AAEA,SAASE,SAAQ,GAAW,SAAiB;AAC5C,aAAW,WAAW,IAAI,KAAK;AAC/B,QAAM,gBAAgB,MAAM,KAAK,OAAO,KAAK,CAAC,EAAE,GAAG,CAAC;AAEpD,MAAIF,sBAAqB,SAAS,YAAY,GAAG;AAChD,WAAO,QAAQ,OAAO;AAAA,EACvB;AAEA,MAAI,gBAAgB,gBAAgB;AACnC,UAAM,YAAY,eAAe,YAA2C;AAE5E,QAAI,OAAO,cAAc,YAAY;AACpC,aAAO,QAAQ,UAAU,OAAO,CAAC;AAAA,IAClC;AAEA,WAAO,QAAQ,QAAQ,QAAQ,cAAc,SAAS,CAAC;AAAA,EACxD;AAEA,SAAO,QAAQ,OAAO;AAAA;AACvB;AAEO,SAAS,UAAU,KAAa;AACtC,SAAO,IAAI,QAAQ,2BAA2BE,QAAO;AACtD;;;AC/MA,OAAO,WAAW;AAoBlB,IAAM,gBAAgB,CAAC,MAAY,YAA2B;AAC7D,QAAM,cAAc,QAAQ,OAAO,6BAA6B;AAChE,QAAM,UAAU,KAAK;AAErB,QAAM,WAAW,UAAU,KAAK,KAAK;AACrC,QAAM,WAAW,UAAU,KAAK,KAAK;AACrC,QAAM,UAAU,QAAQ,eAAe,SAAS,KAAK,KAAK,IAAI;AAE9D,QAAM,CAAC,EAAE,SAAS,KAAK,KAAK,QAAQ,IAAI,MAAM,GAAG;AAEjD,SAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,OAAO,QAAQ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAMpB,QAAQ,gBAAgB,gCAAgC;AAAA;AAAA;AAAA;AAAA,IAG/D;AAAA,IACA;AAAA,MACC,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,MAAM,GAAG,SAAS;AAAA,MAClB,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,MAAM,GAAG,SAAS;AAAA,MAClB,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,MAAM,GAAG,SAAS;AAAA,MAClB,OAAO;AAAA,IACR;AAAA,IACA,GAAI,QAAQ,eACT;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,MACA;AAAA,QACC,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,MAAM,GAAG,SAAS;AAAA,QAClB,OAAO;AAAA,MACR;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,IACA,IACA;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,IACA;AAAA,EACJ;AACD;AAEA,IAAM,WAAW,CAAC,SAAgC,KAAK,SAAS;AAChE,IAAM,WAAW,CAAC,SAA+B,MAAM,QAAS,KAAgB,QAAQ;AACxF,IAAM,YAAY,CAAC,SAClB,KAAK,SAAS,UAAU,OAAQ,KAAc,SAAS,aAAc,KAAc,QAAQ,IAAI,WAAW,eAAe;AAC1H,IAAM,gBAAyB;AAAA,EAC9B,MAAM;AAAA,EACN,OAAO;AACR;AAOO,IAAM,8BACZ,CAAC,EAAE,OAAO,MAAM,eAAe,MAAM,IAAI,EAAE,MAAM,MAAM,cAAc,MAAM,MAC3E,CAAC,SAAS;AACT,MAAI,cAAc;AAClB,MAAI,kBAAkB;AACtB,QAAM,MAAM,CAAC,SAAe;AAC3B,QAAI,SAAS,IAAI,KAAK,KAAK,MAAM,SAAS,aAAa,GAAG;AACzD,wBAAkB;AAAA,IACnB;AACA,QAAI,SAAS,IAAI,GAAG;AACnB,UAAI,QAAQ;AACZ,aAAO,QAAQ,KAAK,SAAS,QAAQ;AACpC,cAAM,QAAQ,KAAK,SAAS,KAAK;AACjC,YAAI,UAAU,KAAK,GAAG;AACrB,gBAAM,SAAS,cAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAC1D,eAAK,SAAS,OAAO,OAAO,GAAG,GAAG,MAAM;AACxC,mBAAS,OAAO;AAChB,wBAAc;AAAA,QACf,OAAO;AACN,mBAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAC;AACD,MAAI,eAAe,CAAC,iBAAiB;AACpC,IAAC,KAAgB,SAAS,QAAQ,aAAa;AAAA,EAChD;AACD;AAMM,IAAM,gBAAgB;","names":["unchangedCLICommands","parseNpmInstall","convert","unchangedCLICommands","parseNpmInstall","convert"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sapphire/docusaurus-plugin-npm2yarn2pnpm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Docusaurus Remark plugin for converting NPM Commands to Yarn and Pnpm",
|
|
5
5
|
"author": "@sapphire",
|
|
6
6
|
"license": "MIT",
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"access": "public"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@favware/cliff-jumper": "^2.1.
|
|
67
|
+
"@favware/cliff-jumper": "^2.1.3",
|
|
68
68
|
"tsup": "^7.2.0",
|
|
69
69
|
"typescript": "^5.2.2",
|
|
70
|
-
"vitest": "^0.34.
|
|
70
|
+
"vitest": "^0.34.4"
|
|
71
71
|
}
|
|
72
72
|
}
|