UNPKG

@kubb/parser-ts

Version:

TypeScript parsing and manipulation utilities for Kubb, enabling code generation with proper TypeScript syntax and formatting.

52 lines (47 loc) 2 kB
'use strict'; var chunkFIHRQE7D_cjs = require('./chunk-FIHRQE7D.cjs'); var ts = require('typescript'); var prettier = require('prettier'); var pluginTypescript = require('prettier/plugins/typescript'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var ts__default = /*#__PURE__*/_interopDefault(ts); var pluginTypescript__default = /*#__PURE__*/_interopDefault(pluginTypescript); var { factory } = ts__default.default; var escapeNewLines = (code) => code.replace(/\n\n/g, "\n/* :newline: */"); var restoreNewLines = (code) => code.replace(/\/\* :newline: \*\//g, "\n"); function print(elements, { source = "", baseName = "print.ts", removeComments, noEmitHelpers, newLine = ts__default.default.NewLineKind.LineFeed, scriptKind = ts__default.default.ScriptKind.TS } = {}) { const sourceFile = ts__default.default.createSourceFile(baseName, escapeNewLines(source), ts__default.default.ScriptTarget.ES2022, false, scriptKind); const printer = ts__default.default.createPrinter({ omitTrailingSemicolon: true, newLine, removeComments, noEmitHelpers }); const nodes = (Array.isArray(elements) ? elements : [elements]).filter(Boolean).sort((a, b) => (a.pos ?? 0) - (b.pos ?? 0)); const output = printer.printList(ts__default.default.ListFormat.MultiLine, factory.createNodeArray(nodes), sourceFile); return restoreNewLines(output).replace(/\r\n/g, "\n"); } var formatOptions = { tabWidth: 2, printWidth: 160, parser: "typescript", singleQuote: true, semi: false, bracketSameLine: false, endOfLine: "auto", plugins: [pluginTypescript__default.default] }; async function format(source) { if (!source) { return ""; } return prettier.format(source, formatOptions); } Object.defineProperty(exports, "factory", { enumerable: true, get: function () { return chunkFIHRQE7D_cjs.factory_exports; } }); exports.format = format; exports.print = print; //# sourceMappingURL=index.cjs.map //# sourceMappingURL=index.cjs.map