react-dev-inspector
Version:
dev-tool for inspect react components and jump to local IDE for component code.
80 lines (79 loc) • 3.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.gotoWebStorm = exports.gotoVSCodeInsiders = exports.gotoVSCode = exports.gotoServerEditor = void 0;
/**
* https://github.com/facebook/create-react-app/blob/v5.0.1/packages/react-dev-utils/launchEditorEndpoint.js
* used in https://github.com/facebook/create-react-app/blob/v5.0.1/packages/react-dev-utils/errorOverlayMiddleware.js#L14
*/
// @ts-expect-error import from deep path for reduce load files
const launchEditorEndpoint_1 = __importDefault(require("react-dev-utils/launchEditorEndpoint"));
const getCodeInfo = (_codeInfo) => ('codeInfo' in _codeInfo
? _codeInfo.codeInfo
: _codeInfo);
/**
* fetch server api to open the code editor
*/
const gotoServerEditor = (_codeInfo) => {
if (!_codeInfo)
return;
const codeInfo = getCodeInfo(_codeInfo);
const { lineNumber, columnNumber, relativePath, absolutePath, } = codeInfo;
const isRelative = Boolean(relativePath);
const fileName = isRelative ? relativePath : absolutePath;
if (!fileName) {
console.error(`[react-dev-inspector] Cannot open editor without source fileName`, codeInfo);
return;
}
const launchParams = {
fileName,
lineNumber,
colNumber: columnNumber,
};
/**
* api path in '@react-dev-inspector/middlewares' launchEditorMiddleware
*/
const apiRoute = isRelative
? `${launchEditorEndpoint_1.default}/relative`
: launchEditorEndpoint_1.default;
fetch(`${apiRoute}?${new URLSearchParams(launchParams)}`);
};
exports.gotoServerEditor = gotoServerEditor;
/**
* open source file in VSCode via it's url schema
*
* https://code.visualstudio.com/docs/editor/command-line#_opening-vs-code-with-urls
*/
const gotoVSCode = (_codeInfo, options) => {
const codeInfo = getCodeInfo(_codeInfo);
if (!codeInfo.absolutePath) {
console.error(`[react-dev-inspector] Cannot open editor without source fileName`, codeInfo);
return;
}
const { absolutePath, lineNumber, columnNumber } = codeInfo;
const schema = (options === null || options === void 0 ? void 0 : options.insiders) ? 'vscode-insiders' : 'vscode';
window.open(`${schema}://file/${absolutePath}:${lineNumber}:${columnNumber}`);
};
exports.gotoVSCode = gotoVSCode;
/**
* open source file in VSCode via it's url schema
*/
const gotoVSCodeInsiders = (codeInfo) => {
return (0, exports.gotoVSCode)(codeInfo, { insiders: true });
};
exports.gotoVSCodeInsiders = gotoVSCodeInsiders;
/**
* open source file in WebStorm via it's url schema
*/
const gotoWebStorm = (_codeInfo) => {
const codeInfo = getCodeInfo(_codeInfo);
if (!codeInfo.absolutePath) {
console.error(`[react-dev-inspector] Cannot open editor without source fileName`, codeInfo);
return;
}
const { absolutePath, lineNumber, columnNumber } = codeInfo;
window.open(`webstorm://open?file=${absolutePath}&line=${lineNumber}&column=${columnNumber}`);
};
exports.gotoWebStorm = gotoWebStorm;