diff --git a/docs/api.md b/docs/api.md index 0577f9a..b4f2895 100644 --- a/docs/api.md +++ b/docs/api.md @@ -11,7 +11,7 @@ * @param options - options * @returns absolute path to closest tsconfig.json or null if not found */ -export function find(filename: string, options?: TSConfckFindOptions | undefined): Promise; +function find(filename: string, options?: TSConfckFindOptions | undefined): Promise; ``` #### TSConfckFindOptions @@ -61,7 +61,7 @@ interface TSConfckFindOptions { * @param filename - path to a tsconfig .json or a source file or directory (absolute or relative to cwd) * @param options - options * */ -export function parse(filename: string, options?: TSConfckParseOptions | undefined): Promise; +function parse(filename: string, options?: TSConfckParseOptions | undefined): Promise; ``` #### TSConfckParseOptions @@ -108,7 +108,7 @@ interface TSConfckParseResult { #### TSConfckParseError ```ts -export class TSConfckParseError extends Error { +class TSConfckParseError extends Error { /** * * @param message - error message @@ -144,7 +144,7 @@ export class TSConfckParseError extends Error { * @param options - options * @returns absolute path to closest tsconfig.json */ -export function findNative(filename: string, options?: TSConfckFindOptions | undefined): Promise; +function findNative(filename: string, options?: TSConfckFindOptions | undefined): Promise; ``` ### parseNative @@ -158,7 +158,7 @@ export function findNative(filename: string, options?: TSConfckFindOptions | und * @param filename - path to a tsconfig .json or a source file (absolute or relative to cwd) * @param options - options * */ -export function parseNative(filename: string, options?: TSConfckParseNativeOptions | undefined): Promise; +function parseNative(filename: string, options?: TSConfckParseNativeOptions | undefined): Promise; ``` #### TSConfckParseNativeOptions @@ -211,14 +211,14 @@ interface TSConfckParseNativeResult { #### TSConfckParseNativeError ```ts -export class TSConfckParseNativeError extends Error { +class TSConfckParseNativeError extends Error { /** * * @param diagnostic - diagnostics of ts * @param tsconfigFile - file that errored * @param result - parsed result, if any */ - constructor(diagnostic: any, tsconfigFile: string, result: any | null); + constructor(diagnostic: TSDiagnosticError, tsconfigFile: string, result: any | null); /** * code of typescript diagnostic, prefixed with "TS " * */ @@ -226,7 +226,7 @@ export class TSConfckParseNativeError extends Error { /** * full ts diagnostic that caused this error * */ - diagnostic: any; + diagnostic: TSDiagnosticError; /** * native result if present, contains all errors in result.errors * */ @@ -248,7 +248,7 @@ export class TSConfckParseNativeError extends Error { * @param options - options * @returns list of absolute paths to all found tsconfig.json files */ -export function findAll(dir: string, options?: TSConfckFindAllOptions | undefined): Promise; +function findAll(dir: string, options?: TSConfckFindAllOptions | undefined): Promise; ``` #### TSConfckFindAllOptions @@ -279,13 +279,13 @@ interface TSConfckFindAllOptions { * @param tsconfigJson - content of tsconfig.json * @returns content as regular json, comments and dangling commas have been replaced with whitespace */ -export function toJson(tsconfigJson: string): string; +function toJson(tsconfigJson: string): string; ``` ### TSConfckCache ```ts -export class TSConfckCache { +class TSConfckCache { /** * clear cache, use this if you have a long running process and tsconfig files have been added,changed or deleted */ diff --git a/package.json b/package.json index 0f3dbb5..667a35a 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "@changesets/cli": "^2.27.5", "@eslint/js": "^9.4.0", "@svitejs/changesets-changelog-github-compact": "^1.1.0", - "dts-buddy": "^0.4.7", + "dts-buddy": "^0.5.0", "esbuild": "^0.21.5", "eslint": "^9.4.0", "eslint-config-prettier": "^9.1.0", diff --git a/packages/tsconfck/types/index.d.ts b/packages/tsconfck/types/index.d.ts index 35bfe0c..0c24c21 100644 --- a/packages/tsconfck/types/index.d.ts +++ b/packages/tsconfck/types/index.d.ts @@ -6,7 +6,7 @@ declare module 'tsconfck' { * @param options - options * @returns absolute path to closest tsconfig.json or null if not found */ - export function find(filename: string, options?: TSConfckFindOptions | undefined): Promise; + function find(filename: string, options?: TSConfckFindOptions | undefined): Promise; /** * find all tsconfig.json files in dir * @@ -14,14 +14,14 @@ declare module 'tsconfck' { * @param options - options * @returns list of absolute paths to all found tsconfig.json files */ - export function findAll(dir: string, options?: TSConfckFindAllOptions | undefined): Promise; + function findAll(dir: string, options?: TSConfckFindAllOptions | undefined): Promise; /** * convert content of tsconfig.json to regular json * * @param tsconfigJson - content of tsconfig.json * @returns content as regular json, comments and dangling commas have been replaced with whitespace */ - export function toJson(tsconfigJson: string): string; + function toJson(tsconfigJson: string): string; /** * find the closest tsconfig.json file using native ts.findConfigFile * @@ -31,8 +31,8 @@ declare module 'tsconfck' { * @param options - options * @returns absolute path to closest tsconfig.json */ - export function findNative(filename: string, options?: TSConfckFindOptions | undefined): Promise; - export class TSConfckCache { + function findNative(filename: string, options?: TSConfckFindOptions | undefined): Promise; + class TSConfckCache { /** * clear cache, use this if you have a long running process and tsconfig files have been added,changed or deleted */ @@ -69,8 +69,8 @@ declare module 'tsconfck' { * @param filename - path to a tsconfig .json or a source file or directory (absolute or relative to cwd) * @param options - options * */ - export function parse(filename: string, options?: TSConfckParseOptions | undefined): Promise; - export class TSConfckParseError extends Error { + function parse(filename: string, options?: TSConfckParseOptions | undefined): Promise; + class TSConfckParseError extends Error { /** * * @param message - error message @@ -100,15 +100,15 @@ declare module 'tsconfck' { * @param filename - path to a tsconfig .json or a source file (absolute or relative to cwd) * @param options - options * */ - export function parseNative(filename: string, options?: TSConfckParseNativeOptions | undefined): Promise; - export class TSConfckParseNativeError extends Error { + function parseNative(filename: string, options?: TSConfckParseNativeOptions | undefined): Promise; + class TSConfckParseNativeError extends Error { /** * * @param diagnostic - diagnostics of ts * @param tsconfigFile - file that errored * @param result - parsed result, if any */ - constructor(diagnostic: any, tsconfigFile: string, result: any | null); + constructor(diagnostic: TSDiagnosticError, tsconfigFile: string, result: any | null); /** * code of typescript diagnostic, prefixed with "TS " * */ @@ -116,7 +116,7 @@ declare module 'tsconfck' { /** * full ts diagnostic that caused this error * */ - diagnostic: any; + diagnostic: TSDiagnosticError; /** * native result if present, contains all errors in result.errors * */ @@ -126,6 +126,15 @@ declare module 'tsconfck' { * */ tsconfigFile: string; } + /** + * { + * code: number; + * category: number; + * messageText: string; + * start?: number; + * } TSDiagnosticError + */ + type TSDiagnosticError = any; interface TSConfckFindOptions { /** * A cache to improve performance for multiple calls in the same project @@ -246,6 +255,8 @@ declare module 'tsconfck' { */ result: any; } + + export { find, findAll, toJson, findNative, TSConfckCache, parse, TSConfckParseError, parseNative, TSConfckParseNativeError }; } //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/tsconfck/types/index.d.ts.map b/packages/tsconfck/types/index.d.ts.map index eb00355..b3169ab 100644 --- a/packages/tsconfck/types/index.d.ts.map +++ b/packages/tsconfck/types/index.d.ts.map @@ -11,6 +11,7 @@ "TSConfckParseError", "parseNative", "TSConfckParseNativeError", + "TSDiagnosticError", "TSConfckFindOptions", "TSConfckParseOptions", "TSConfckFindAllOptions", @@ -26,6 +27,7 @@ "../src/cache.js", "../src/parse.js", "../src/parse-native.js", + "../src/parse-native.d.ts", "../src/public.d.ts" ], "sourcesContent": [ @@ -36,7 +38,9 @@ null, null, null, + null, null ], - "mappings": ";;;;;;;;iBAUsBA,IAAIA;;;;;;;;iBCYJC,OAAOA;;;;;;;iBCTbC,MAAMA;;;;;;;;;;iBCDAC,UAAUA;cCXnBC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC2BJC,KAAKA;cA6VdC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC7VTC,WAAWA;cAkOpBC,wBAAwBA;;;;;;;;;;;;;;;;;;;;;;;;;WC5PpBC,mBAAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkCnBC,oBAAoBA;;;;WAIpBC,sBAAsBA;;;;;;;;;;;;;;;WAetBC,mBAAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BnBC,0BAA0BA;;;;;;;;;;;;WAY1BC,yBAAyBA" + "mappings": ";;;;;;;;UAUsBA,IAAIA;;;;;;;;UCYJC,OAAOA;;;;;;;UCTbC,MAAMA;;;;;;;;;;UCDAC,UAAUA;OCXnBC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UC2BJC,KAAKA;OA6VdC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UC7VTC,WAAWA;OAkOpBC,wBAAwBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC9MzBC,iBAAiBA;WC9CZC,mBAAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkCnBC,oBAAoBA;;;;WAIpBC,sBAAsBA;;;;;;;;;;;;;;;WAetBC,mBAAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BnBC,0BAA0BA;;;;;;;;;;;;WAY1BC,yBAAyBA", + "ignoreList": [] } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 763faa2..4ebb8e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^1.1.0 version: 1.1.0 dts-buddy: - specifier: ^0.4.7 - version: 0.4.7(typescript@5.4.5) + specifier: ^0.5.0 + version: 0.5.0(typescript@5.5.2) esbuild: specifier: ^0.21.5 version: 0.21.5 @@ -67,7 +67,7 @@ importers: version: link:packages/tsconfck tsconfck-2: specifier: npm:tsconfck@^2.1.2 - version: tsconfck@2.1.2(typescript@5.4.5) + version: tsconfck@2.1.2(typescript@5.5.2) vitest: specifier: ^1.6.0 version: 1.6.0 @@ -515,6 +515,10 @@ packages: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} @@ -523,8 +527,12 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -953,8 +961,8 @@ packages: resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} engines: {node: '>=12'} - dts-buddy@0.4.7: - resolution: {integrity: sha512-trSY5EWkWWKov9uf9nTPjmEoiIcrYPpNEVCu75drPX9Fus3OwQzN/WNXyO+w7cMteBrUqSoExAAud1KCzYv0SQ==} + dts-buddy@0.5.0: + resolution: {integrity: sha512-bKyWCdyt8Yd2bjZX6hKldUFt3SpLPjxw6lQwWHKY1szGxEfRUPWMc76SHtNT+m2aTCI3Zqw3CXhtjw2vKadFnQ==} hasBin: true peerDependencies: typescript: '>=5.0.4 <5.5' @@ -1590,6 +1598,9 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} @@ -2211,9 +2222,9 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - ts-api-utils@1.0.3: - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -2279,6 +2290,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.5.2: + resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} + engines: {node: '>=14.17'} + hasBin: true + ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} @@ -2845,14 +2861,22 @@ snapshots: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.1': {} '@jridgewell/set-array@1.1.2': {} - '@jridgewell/source-map@0.3.5': + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/sourcemap-codec@1.4.15': {} @@ -3276,18 +3300,18 @@ snapshots: dotenv@16.4.1: {} - dts-buddy@0.4.7(typescript@5.4.5): + dts-buddy@0.5.0(typescript@5.5.2): dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.6 '@jridgewell/sourcemap-codec': 1.4.15 globrex: 0.1.2 kleur: 4.1.5 locate-character: 3.0.0 - magic-string: 0.30.5 + magic-string: 0.30.10 sade: 1.8.1 tiny-glob: 0.2.9 - ts-api-utils: 1.0.3(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.5.2) + typescript: 5.5.2 emoji-regex@10.3.0: {} @@ -4027,6 +4051,10 @@ snapshots: dependencies: yallist: 4.0.0 + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + magic-string@0.30.5: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -4653,13 +4681,13 @@ snapshots: trim-newlines@3.0.1: {} - ts-api-utils@1.0.3(typescript@5.4.5): + ts-api-utils@1.3.0(typescript@5.5.2): dependencies: - typescript: 5.4.5 + typescript: 5.5.2 - tsconfck@2.1.2(typescript@5.4.5): + tsconfck@2.1.2(typescript@5.5.2): optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 tslib@2.6.2: {} @@ -4716,6 +4744,8 @@ snapshots: typescript@5.4.5: {} + typescript@5.5.2: {} + ufo@1.3.2: {} unbox-primitive@1.0.2: diff --git a/scripts/generate-api-docs.js b/scripts/generate-api-docs.js index 1e293c0..339f6c3 100644 --- a/scripts/generate-api-docs.js +++ b/scripts/generate-api-docs.js @@ -6,8 +6,21 @@ import fs from 'fs'; const header = '\n## API \n\n'; function parseBlock(block) { + const m = block.match(/(function|class|interface|type) ([a-zA-Z]+)/); + if (!m) { + return { + kind: 'ignored', + md: '' + }; + } // eslint-disable-next-line no-unused-vars - const [_, kind, title] = block.match(/(function|class|interface|type) ([a-zA-Z]+)/); + const [_, kind, title] = m; + if (title === 'TSDiagnosticError') { + return { + kind: 'ignored', + md: '' + }; + } const heading = '#'.repeat(blockHeadings[title] || 3); return { kind, @@ -25,8 +38,10 @@ const blockSeparator = '\n-- cut here --\n'; let dts = fs .readFileSync(typesFile, 'utf-8') .replace("declare module 'tsconfck' {\n", '') + .replace(/export \{[^}]+}/, '') .replace('}\n\n//# sourceMappingURL=index.d.ts.map', '') - .replace(/^\s+export function [a-zA-Z]+\(.*$/gm, `$&${blockSeparator}`) + .replace(/^\s*function [a-zA-Z]+\(.*$/gm, `$&${blockSeparator}`) + .replace(/^\s*interface [a-zA-Z]+\s*\{.*$/gm, `${blockSeparator}$&`) .replace(/^\s*}\s*$/gm, `$&${blockSeparator}`) .replace(/^\t/gm, ''); @@ -70,6 +85,7 @@ const md = header + blocks .map((block) => parseBlock(block)) + .filter((b) => b.md.length > 0) .sort(sortBlocks) .map((b) => b.md) .join('\n\n') +