From 48f27d8d73f96982d0e2f9b467e96263c0dd6cc0 Mon Sep 17 00:00:00 2001 From: Quentin Deroubaix Date: Thu, 1 Aug 2024 14:30:04 +0200 Subject: [PATCH 1/2] feat: support specifying tsconfig for emitDts --- packages/svelte2tsx/src/emitDts.ts | 3 ++- .../samples/typescript-custom-tsconfig/config.json | 3 +++ .../expected/runes.svelte.d.ts | 2 ++ .../typescript-custom-tsconfig/src/runes.svelte.ts | 10 ++++++++++ .../typescript-custom-tsconfig/tsconfig.build.json | 6 ++++++ .../typescript-custom-tsconfig/tsconfig.json | 14 ++++++++++++++ 6 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/config.json create mode 100644 packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/expected/runes.svelte.d.ts create mode 100644 packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/src/runes.svelte.ts create mode 100644 packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/tsconfig.build.json create mode 100644 packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/tsconfig.json diff --git a/packages/svelte2tsx/src/emitDts.ts b/packages/svelte2tsx/src/emitDts.ts index dd76a6d45..91b254f39 100644 --- a/packages/svelte2tsx/src/emitDts.ts +++ b/packages/svelte2tsx/src/emitDts.ts @@ -6,6 +6,7 @@ export interface EmitDtsConfig { declarationDir: string; svelteShimsPath: string; libRoot?: string; + tsconfig?: string; } export async function emitDts(config: EmitDtsConfig) { @@ -47,7 +48,7 @@ function loadTsconfig(config: EmitDtsConfig, svelteMap: SvelteMap) { const libRoot = config.libRoot || process.cwd(); const jsconfigFile = ts.findConfigFile(libRoot, ts.sys.fileExists, 'jsconfig.json'); - let tsconfigFile = ts.findConfigFile(libRoot, ts.sys.fileExists); + let tsconfigFile = ts.findConfigFile(libRoot, ts.sys.fileExists, config.tsconfig); if (!tsconfigFile && !jsconfigFile) { throw new Error('Failed to locate tsconfig or jsconfig'); diff --git a/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/config.json b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/config.json new file mode 100644 index 000000000..b69769f13 --- /dev/null +++ b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/config.json @@ -0,0 +1,3 @@ +{ + "tsconfig": "tsconfig.build.json" +} \ No newline at end of file diff --git a/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/expected/runes.svelte.d.ts b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/expected/runes.svelte.d.ts new file mode 100644 index 000000000..bee083017 --- /dev/null +++ b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/expected/runes.svelte.d.ts @@ -0,0 +1,2 @@ +/** Calculate how much someone earns in a week */ +export declare function weeklySalary(dayRate: number): number; diff --git a/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/src/runes.svelte.ts b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/src/runes.svelte.ts new file mode 100644 index 000000000..f6f1747fb --- /dev/null +++ b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/src/runes.svelte.ts @@ -0,0 +1,10 @@ +/** + * Days available in a week + * @internal + */ +export const daysInAWeek = 7; + +/** Calculate how much someone earns in a week */ +export function weeklySalary(dayRate: number) { + return daysInAWeek * dayRate; +} \ No newline at end of file diff --git a/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/tsconfig.build.json b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/tsconfig.build.json new file mode 100644 index 000000000..f5f815ffb --- /dev/null +++ b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/tsconfig.build.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "stripInternal": true + } +} diff --git a/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/tsconfig.json b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/tsconfig.json new file mode 100644 index 000000000..5b465a5c9 --- /dev/null +++ b/packages/svelte2tsx/test/emitDts/samples/typescript-custom-tsconfig/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "moduleResolution": "node", + "module": "es2020", + "lib": ["es2020", "DOM"], + "target": "es2019", + "isolatedModules": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "allowJs": true, + "checkJs": true + }, + "include": ["./src/**/*.d.ts", "./src/**/*.js", "./src/**/*.ts", "./src/**/*.svelte"] +} From 3151fa8580059c394d8837b77c5aed67ce3297c4 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:23:58 +0200 Subject: [PATCH 2/2] types --- packages/svelte2tsx/index.d.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/svelte2tsx/index.d.ts b/packages/svelte2tsx/index.d.ts index d9949e30f..162d7df45 100644 --- a/packages/svelte2tsx/index.d.ts +++ b/packages/svelte2tsx/index.d.ts @@ -108,6 +108,10 @@ export interface EmitDtsConfig { * set to `src/lib` by default. */ libRoot?: string; + /** + * Name of your tsconfig file, if it's not the standard `tsconfig.json` or `jsconfig.json` + */ + tsconfig?: string; } // to make typo fix non-breaking, continue to export the old name but mark it as deprecated