Skip to content

Commit

Permalink
chore: new function for highlight
Browse files Browse the repository at this point in the history
  • Loading branch information
Jay-Karia committed Aug 11, 2024
1 parent b8f1959 commit a5291e2
Show file tree
Hide file tree
Showing 8 changed files with 198 additions and 105 deletions.
116 changes: 84 additions & 32 deletions dist/npm-to-yarn.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,57 @@
import { codeToHtml } from 'shiki/index.mjs';
import { codeToHtml } from 'shiki';

/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */

function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}

function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
}

var unchangedCLICommands = [
'test',
Expand Down Expand Up @@ -617,48 +670,47 @@ function npmToBun(_m, command) {
return "".concat(cmd, " ").concat(filtered.join(' ')).concat(cmd === 'npm' ? "\n# couldn't auto-convert command" : '').replace('=', ' ');
}

function highlight(command, theme) {
if (theme === void 0) { theme = "dark"; }
codeToHtml(command, {
lang: 'javascript',
theme: "github-".concat(theme)
}).then(function (html) {
return html;
});
return "";
}

/**
* Converts between npm and yarn command
*/
function convert(str, to, highlighting, theme) {
if (highlighting === void 0) { highlighting = false; }
if (theme === void 0) { theme = "dark"; }
function convert(str, to) {
if (to === 'npm') {
var convertedCommand = str.replace(/yarn(?: +([^&\n\r]*))?/gm, yarnToNPM);
if (highlighting)
return highlight(convertedCommand, theme);
return convertedCommand;
return str.replace(/yarn(?: +([^&\n\r]*))?/gm, yarnToNPM);
}
else if (to === 'pnpm') {
var convertedCommand = str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToPnpm);
if (highlighting)
return highlight(convertedCommand, theme);
return convertedCommand;
return str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToPnpm);
}
else if (to === 'bun') {
var convertedCommand = str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToBun);
if (highlighting)
return highlight(convertedCommand, theme);
return convertedCommand;
return str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToBun);
}
else {
var convertedCommand = str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToYarn);
if (highlighting)
return highlight(convertedCommand, theme);
return convertedCommand;
return str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToYarn);
}
}
/**
* Returns highlighted html string
*/
function highlight(command, theme) {
if (theme === void 0) { theme = "light"; }
return __awaiter(this, void 0, void 0, function () {
var html, _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0: return [4 /*yield*/, codeToHtml(command, {
lang: 'javascript',
theme: "github-".concat(theme)
})];
case 1:
html = _c.sent();
_b = (_a = console).log;
return [4 /*yield*/, html];
case 2:
_b.apply(_a, [_c.sent()]);
return [2 /*return*/];
}
});
});
}

export { convert as default };
export { convert, highlight };
//# sourceMappingURL=npm-to-yarn.mjs.map
2 changes: 1 addition & 1 deletion dist/npm-to-yarn.mjs.map

Large diffs are not rendered by default.

123 changes: 88 additions & 35 deletions dist/npm-to-yarn.umd.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/npm-to-yarn.umd.js.map

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion dist/types/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
/**
* Converts between npm and yarn command
*/
export default function convert(str: string, to: 'npm' | 'yarn' | 'pnpm' | 'bun', highlighting?: boolean, theme?: "light" | "dark"): string;
export declare function convert(str: string, to: 'npm' | 'yarn' | 'pnpm' | 'bun'): string;
/**
* Returns highlighted html string
*/
export declare function highlight(command: string, theme?: "light" | "dark"): Promise<void>;
12 changes: 0 additions & 12 deletions src/highlight.ts

This file was deleted.

40 changes: 18 additions & 22 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,31 @@ import { npmToYarn } from './npmToYarn'
import { npmToPnpm } from './npmToPnpm'
import { npmToBun } from './npmToBun'

import { highlight } from './highlight.js'
import { codeToHtml } from "shiki"

/**
* Converts between npm and yarn command
*/
export default function convert (str: string, to: 'npm' | 'yarn' | 'pnpm' | 'bun', highlighting = false, theme : "light" | "dark" = "dark"): string {
export function convert(str: string, to: 'npm' | 'yarn' | 'pnpm' | 'bun'): string {
if (to === 'npm') {
const convertedCommand = str.replace(/yarn(?: +([^&\n\r]*))?/gm, yarnToNPM)
if (highlighting)
return highlight(convertedCommand, theme)

return convertedCommand
return str.replace(/yarn(?: +([^&\n\r]*))?/gm, yarnToNPM)
} else if (to === 'pnpm') {
const convertedCommand = str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToPnpm)
if (highlighting)
return highlight(convertedCommand, theme)

return convertedCommand
return str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToPnpm)
} else if (to === 'bun') {
const convertedCommand = str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToBun)
if (highlighting)
return highlight(convertedCommand, theme)

return convertedCommand
return str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToBun)
} else {
const convertedCommand = str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToYarn)
if (highlighting)
return highlight(convertedCommand, theme)

return convertedCommand
return str.replace(/npm(?: +([^&\n\r]*))?/gm, npmToYarn)
}
}

/**
* Returns highlighted html string
*/
export async function highlight(command: string, theme: "light" | "dark" = "light") {
const html = await codeToHtml(command, {
lang: 'javascript',
theme: `github-${theme}`
})

console.log(await html)
}
2 changes: 1 addition & 1 deletion test/index.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* global it, expect, describe */

import convert from '../src'
import { convert } from '../src'

describe('NPM tests', () => {
const tests: [npm: string, yarn: string, pnpm: string, bun: string][] = [
Expand Down

0 comments on commit a5291e2

Please sign in to comment.