@kubb/parser
Advanced tools
Comparing version 0.0.0-canary-20231215105835 to 0.0.0-canary-20231221145636
import ts, { PrinterOptions } from 'typescript'; | ||
export { default as ts } from 'typescript'; | ||
type ExportsResult = { | ||
name: string; | ||
isTypeOnly: boolean; | ||
}; | ||
/** | ||
* @link https://github.com/microsoft/TypeScript/issues/15840 | ||
*/ | ||
declare function getExports(filePath: string): undefined | Array<ExportsResult>; | ||
type ParseResult = { | ||
@@ -16,2 +25,2 @@ ast: ts.Node; | ||
export { parse, print }; | ||
export { getExports, parse, print }; |
import { createRequire } from 'module'; | ||
import ts from 'typescript'; | ||
import path from 'path'; | ||
import ts2 from 'typescript'; | ||
createRequire(import.meta.url); | ||
var { factory } = ts; | ||
function getExports(filePath) { | ||
const rootName = path.extname(filePath) ? filePath : `${filePath}.ts`; | ||
if (!rootName) { | ||
return void 0; | ||
} | ||
const program = ts2.createProgram({ | ||
rootNames: [rootName], | ||
options: {} | ||
}); | ||
const checker = program.getTypeChecker(); | ||
const sources = program.getSourceFiles(); | ||
const sourceFile = sources.find((sourceFile2) => sourceFile2.fileName === rootName); | ||
if (!sourceFile) { | ||
return void 0; | ||
} | ||
const symbol = checker.getSymbolAtLocation(sourceFile); | ||
if (!symbol?.flags) { | ||
return void 0; | ||
} | ||
const exports = checker.getExportsOfModule(symbol); | ||
return exports.map((e) => { | ||
const type = checker.getTypeOfSymbol(e); | ||
return { | ||
name: e.escapedName.toString(), | ||
isTypeOnly: type?.id === 5 | ||
}; | ||
}); | ||
} | ||
var { factory } = ts2; | ||
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.NewLineKind.LineFeed } = {}) { | ||
const sourceFile = ts.createSourceFile(baseName, escapeNewLines(source), ts.ScriptTarget.ES2022, false, ts.ScriptKind.TS); | ||
const printer = ts.createPrinter({ omitTrailingSemicolon: true, newLine, removeComments, noEmitHelpers }); | ||
function print(elements, { source = "", baseName = "print.ts", removeComments, noEmitHelpers, newLine = ts2.NewLineKind.LineFeed } = {}) { | ||
const sourceFile = ts2.createSourceFile(baseName, escapeNewLines(source), ts2.ScriptTarget.ES2022, false, ts2.ScriptKind.TS); | ||
const printer = ts2.createPrinter({ omitTrailingSemicolon: true, newLine, removeComments, noEmitHelpers }); | ||
let nodes = []; | ||
@@ -20,3 +49,3 @@ if (!elements) { | ||
} | ||
const outputFile = printer.printList(ts.ListFormat.MultiLine, factory.createNodeArray(nodes), sourceFile); | ||
const outputFile = printer.printList(ts2.ListFormat.MultiLine, factory.createNodeArray(nodes), sourceFile); | ||
const outputSource = printer.printFile(sourceFile); | ||
@@ -34,4 +63,4 @@ return [outputFile, restoreNewLines(outputSource)].filter(Boolean).join("\n"); | ||
export { parse, print }; | ||
export { getExports, parse, print }; | ||
//# sourceMappingURL=out.js.map | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@kubb/parser", | ||
"version": "0.0.0-canary-20231215105835", | ||
"version": "0.0.0-canary-20231221145636", | ||
"description": "Generator parser", | ||
@@ -47,3 +47,3 @@ "keywords": [ | ||
"devDependencies": { | ||
"eslint": "^8.55.0", | ||
"eslint": "^8.56.0", | ||
"tsup": "^8.0.1", | ||
@@ -50,0 +50,0 @@ "@kubb/eslint-config": "1.1.8", |
@@ -0,3 +1,4 @@ | ||
export { getExports } from './api.ts' | ||
export { parse } from './parse.ts' | ||
export { print } from './print.ts' | ||
export type { default as ts } from 'typescript' |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
115783
20
1444