@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 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 npm2yarn2pnpm: Plugin<[PluginOptions?]>;
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 npm2yarn2pnpm: Plugin<[PluginOptions?]>;
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/npm2pnpm.ts
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 npmToPnpmTable = {
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
- } else if (Object.prototype.hasOwnProperty.call(npmToPnpmTable, firstCommand) && npmToPnpmTable[firstCommand]) {
70
- if (typeof npmToPnpmTable[firstCommand] === "function") {
71
- return `pnpm ${npmToPnpmTable[firstCommand](command)}`;
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, npmToPnpmTable[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, convert);
128
+ return str.replace(/npm(?: +([^&\n\r]*))?/gm, convert2);
80
129
  }
81
130
 
82
131
  // src/npm2yarn.ts
83
- var unchangedCLICommands2 = ["test", "login", "logout", "link", "publish", "cache"];
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 parseNpmInstall2(command, isShortHand = false) {
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 parseNpmInstall2(command);
185
+ return parseNpmInstall3(command);
137
186
  },
138
187
  i(command) {
139
- return parseNpmInstall2(command, true);
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 && !unchangedCLICommands2.includes(data) && !yarnCLICommands.includes(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 && !unchangedCLICommands2.includes(data) && !yarnCLICommands.includes(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 convert2(_, command) {
272
+ function convert3(_, command) {
224
273
  command = (command || "").trim();
225
274
  const firstCommand = (/\w+/.exec(command) || [""])[0];
226
- if (unchangedCLICommands2.includes(firstCommand)) {
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, convert2);
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
- type: "jsx",
292
- value: "</TabItem>\n</Tabs>"
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 npm2yarn2pnpm = ({ sync = true } = { sync: true }) => (root) => {
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":"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","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/npm2pnpm.ts
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 npmToPnpmTable = {
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
- } else if (Object.prototype.hasOwnProperty.call(npmToPnpmTable, firstCommand) && npmToPnpmTable[firstCommand]) {
32
- if (typeof npmToPnpmTable[firstCommand] === "function") {
33
- return `pnpm ${npmToPnpmTable[firstCommand](command)}`;
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, npmToPnpmTable[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, convert);
88
+ return str.replace(/npm(?: +([^&\n\r]*))?/gm, convert2);
42
89
  }
43
90
 
44
91
  // src/npm2yarn.ts
45
- var unchangedCLICommands2 = ["test", "login", "logout", "link", "publish", "cache"];
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 parseNpmInstall2(command, isShortHand = false) {
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 parseNpmInstall2(command);
145
+ return parseNpmInstall3(command);
99
146
  },
100
147
  i(command) {
101
- return parseNpmInstall2(command, true);
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 && !unchangedCLICommands2.includes(data) && !yarnCLICommands.includes(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 && !unchangedCLICommands2.includes(data) && !yarnCLICommands.includes(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 convert2(_, command) {
232
+ function convert3(_, command) {
186
233
  command = (command || "").trim();
187
234
  const firstCommand = (/\w+/.exec(command) || [""])[0];
188
- if (unchangedCLICommands2.includes(firstCommand)) {
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, convert2);
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
- type: "jsx",
254
- value: "</TabItem>\n</Tabs>"
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 npm2yarn2pnpm = ({ sync = true } = { sync: true }) => (root) => {
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
  };
@@ -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":"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","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.1.6-next.fac34b1.0",
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.2",
67
+ "@favware/cliff-jumper": "^2.1.3",
68
68
  "tsup": "^7.2.0",
69
69
  "typescript": "^5.2.2",
70
- "vitest": "^0.34.3"
70
+ "vitest": "^0.34.4"
71
71
  }
72
72
  }