From 64e798768881cb5dcc9b457b7d0161c214bc7414 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sun, 11 Jun 2023 21:41:14 +0545 Subject: [PATCH 01/17] fix:backwards compatibility for types --- packages/svelte/scripts/generate-dts.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 2139118de240..3d3353611b9e 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -1,11 +1,26 @@ import { createBundle } from 'dts-buddy'; +fs.mkdirSync('types/faux', { recursive: true }); +fs.readdirSync('src/runtime', { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .forEach((dirent) => + fs.writeFileSync(`types/faux/${dirent.name}.d.ts`, `import '../index.d.ts';`) + ); + +fs.writeFileSync('types/faux/index.d.ts', `import '../index.d.ts';`); +fs.writeFileSync('types/faux/compiler.d.ts', `import '../index.d.ts';`); + +// TODO: some way to mark these as deprecated +fs.writeFileSync('types/faux/types/compiler/preprocess.d.ts', `import '../index.d.ts';`); +fs.writeFileSync('types/faux/types/compiler/interfaces.d.ts', `import '../index.d.ts';`); + await createBundle({ output: 'types/index.d.ts', modules: { svelte: 'src/runtime/public.d.ts', 'svelte/compiler': 'src/compiler/public.d.ts', 'svelte/types/compiler/preprocess': 'src/compiler/preprocess/public.d.ts', + 'svelte/types/compiler/interfaces': 'src/compiler/interfaces.d.ts', 'svelte/action': 'src/runtime/action/public.d.ts', 'svelte/animate': 'src/runtime/animate/public.d.ts', 'svelte/easing': 'src/runtime/easing/index.js', From 94522ee70bb330dbb4fe73fe7bc163015a3ac87b Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sun, 11 Jun 2023 21:43:49 +0545 Subject: [PATCH 02/17] update package json --- packages/svelte/package.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index f3dfc00c8566..123d6b8e1c08 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -70,6 +70,13 @@ "node": ">=16" }, "types": "types/index.d.ts", + "typesVersions": { + "*": { + "*": [ + "types/faux/*" + ] + } + }, "scripts": { "format": "prettier . --cache --plugin-search-dir=. --write", "check": "prettier . --cache --plugin-search-dir=. --check", From 26c5568ae30d6c0db0ee11788d852e1a349eccd6 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sun, 11 Jun 2023 21:51:34 +0545 Subject: [PATCH 03/17] what an idiot --- packages/svelte/scripts/generate-dts.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 3d3353611b9e..ad817642ceb0 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -1,3 +1,4 @@ +import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; fs.mkdirSync('types/faux', { recursive: true }); @@ -11,6 +12,7 @@ fs.writeFileSync('types/faux/index.d.ts', `import '../index.d.ts';`); fs.writeFileSync('types/faux/compiler.d.ts', `import '../index.d.ts';`); // TODO: some way to mark these as deprecated +fs.mkdirSync('types/faux/types/compiler', { recursive: true }); fs.writeFileSync('types/faux/types/compiler/preprocess.d.ts', `import '../index.d.ts';`); fs.writeFileSync('types/faux/types/compiler/interfaces.d.ts', `import '../index.d.ts';`); From c3730b8129d5b8930cdb574ec746f02113cff623 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sun, 11 Jun 2023 22:01:32 +0545 Subject: [PATCH 04/17] replace SvelteComponentDev --- packages/svelte/src/runtime/ambient.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/src/runtime/ambient.d.ts b/packages/svelte/src/runtime/ambient.d.ts index 09cd9b72f21e..21c7b9687bfd 100644 --- a/packages/svelte/src/runtime/ambient.d.ts +++ b/packages/svelte/src/runtime/ambient.d.ts @@ -1,3 +1,3 @@ declare module '*.svelte' { - export { SvelteComponentDev as default } from 'svelte/internal'; + export { SvelteComponent as default } from 'svelte/internal'; } From d6b7b245c2a27ca84b00cabb0bffabfd6d7c04cc Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sun, 11 Jun 2023 22:12:29 +0545 Subject: [PATCH 05/17] work already --- packages/svelte/src/runtime/ambient.d.ts | 2 +- packages/svelte/src/runtime/tsconfig.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/runtime/ambient.d.ts b/packages/svelte/src/runtime/ambient.d.ts index 21c7b9687bfd..622c974b442a 100644 --- a/packages/svelte/src/runtime/ambient.d.ts +++ b/packages/svelte/src/runtime/ambient.d.ts @@ -1,3 +1,3 @@ declare module '*.svelte' { - export { SvelteComponent as default } from 'svelte/internal'; + export { SvelteComponent as default } from 'svelte'; } diff --git a/packages/svelte/src/runtime/tsconfig.json b/packages/svelte/src/runtime/tsconfig.json index 9da06d7d2e71..97efc7acb011 100644 --- a/packages/svelte/src/runtime/tsconfig.json +++ b/packages/svelte/src/runtime/tsconfig.json @@ -9,6 +9,7 @@ "baseUrl": ".", "paths": { + "svelte": ["."], "svelte/*": ["*"] }, "allowJs": true, From ba3140dede8c17b3571dcca3674b0f1b7a19821d Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Mon, 12 Jun 2023 08:36:00 +0545 Subject: [PATCH 06/17] remove indirection --- packages/svelte/.gitignore | 10 ++++++++++ packages/svelte/package.json | 7 ------- packages/svelte/scripts/generate-dts.js | 17 +++++++---------- .../svelte/src/runtime/internal/Component.js | 2 +- packages/svelte/src/runtime/internal/dev.js | 4 ++-- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/svelte/.gitignore b/packages/svelte/.gitignore index 13a9e4099990..b62e1f315d91 100644 --- a/packages/svelte/.gitignore +++ b/packages/svelte/.gitignore @@ -7,3 +7,13 @@ _actual*.* _output /types + +action.d.ts +animate.d.ts +compiler.d.ts +easing.d.ts +index.d.ts +internal.d.ts +motion.d.ts +store.d.ts +transition.d.ts diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 123d6b8e1c08..f3dfc00c8566 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -70,13 +70,6 @@ "node": ">=16" }, "types": "types/index.d.ts", - "typesVersions": { - "*": { - "*": [ - "types/faux/*" - ] - } - }, "scripts": { "format": "prettier . --cache --plugin-search-dir=. --write", "check": "prettier . --cache --plugin-search-dir=. --check", diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index ad817642ceb0..55e250547338 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -1,20 +1,17 @@ import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; -fs.mkdirSync('types/faux', { recursive: true }); fs.readdirSync('src/runtime', { withFileTypes: true }) - .filter((dirent) => dirent.isDirectory()) - .forEach((dirent) => - fs.writeFileSync(`types/faux/${dirent.name}.d.ts`, `import '../index.d.ts';`) - ); + .filter((dirent) => dirent.isDirectory() && !dirent.name.includes('internal')) + .forEach((dirent) => fs.writeFileSync(`${dirent.name}.d.ts`, `import 'types/index.d.ts';`)); -fs.writeFileSync('types/faux/index.d.ts', `import '../index.d.ts';`); -fs.writeFileSync('types/faux/compiler.d.ts', `import '../index.d.ts';`); +fs.writeFileSync('index.d.ts', `import 'types/index.d.ts';`); +fs.writeFileSync('compiler.d.ts', `import 'types/index.d.ts';`); // TODO: some way to mark these as deprecated -fs.mkdirSync('types/faux/types/compiler', { recursive: true }); -fs.writeFileSync('types/faux/types/compiler/preprocess.d.ts', `import '../index.d.ts';`); -fs.writeFileSync('types/faux/types/compiler/interfaces.d.ts', `import '../index.d.ts';`); +fs.mkdirSync('types/compiler', { recursive: true }); +fs.writeFileSync('types/compiler/preprocess.d.ts', `import '../index.d.ts';`); +fs.writeFileSync('types/compiler/interfaces.d.ts', `import '../index.d.ts';`); await createBundle({ output: 'types/index.d.ts', diff --git a/packages/svelte/src/runtime/internal/Component.js b/packages/svelte/src/runtime/internal/Component.js index 4512b3ab35f8..6732ca3545d7 100644 --- a/packages/svelte/src/runtime/internal/Component.js +++ b/packages/svelte/src/runtime/internal/Component.js @@ -424,7 +424,7 @@ export function create_custom_element( * * @template {Record} [Props=any] * @template {Record} [Events=any] - * @implements Record + * @implements {Record} */ export class SvelteComponent { /** diff --git a/packages/svelte/src/runtime/internal/dev.js b/packages/svelte/src/runtime/internal/dev.js index 8069141015f1..96fae89aca4f 100644 --- a/packages/svelte/src/runtime/internal/dev.js +++ b/packages/svelte/src/runtime/internal/dev.js @@ -295,7 +295,7 @@ export function construct_svelte_component_dev(component, props) { * @template {Record} [Props=any] * @template {Record} [Events=any] * @template {Record} [Slots=any] - * @extends SvelteComponent + * @extends {SvelteComponent} */ export class SvelteComponentDev extends SvelteComponent { /** @@ -350,7 +350,7 @@ export class SvelteComponentDev extends SvelteComponent { * @template {Record} [Events=any] * @template {Record} [Slots=any] * @deprecated Use `SvelteComponent` instead. See PR for more information: https://github.com/sveltejs/svelte/pull/8512 - * @extends SvelteComponentDev + * @extends {SvelteComponentDev} */ export class SvelteComponentTyped extends SvelteComponentDev {} From e9d9decb53a2fc1f04408a4e060bba1a13de5cc6 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Mon, 12 Jun 2023 09:56:09 +0545 Subject: [PATCH 07/17] this maybe? --- packages/svelte/scripts/generate-dts.js | 3 ++- packages/svelte/src/runtime/internal/public.d.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 55e250547338..6a59eed9b535 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -2,7 +2,7 @@ import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; fs.readdirSync('src/runtime', { withFileTypes: true }) - .filter((dirent) => dirent.isDirectory() && !dirent.name.includes('internal')) + .filter((dirent) => dirent.isDirectory()) .forEach((dirent) => fs.writeFileSync(`${dirent.name}.d.ts`, `import 'types/index.d.ts';`)); fs.writeFileSync('index.d.ts', `import 'types/index.d.ts';`); @@ -23,6 +23,7 @@ await createBundle({ 'svelte/action': 'src/runtime/action/public.d.ts', 'svelte/animate': 'src/runtime/animate/public.d.ts', 'svelte/easing': 'src/runtime/easing/index.js', + 'svelte/internal': 'src/runtime/internal/public.d.ts', 'svelte/motion': 'src/runtime/motion/public.d.ts', 'svelte/store': 'src/runtime/store/public.d.ts', 'svelte/transition': 'src/runtime/transition/public.d.ts' diff --git a/packages/svelte/src/runtime/internal/public.d.ts b/packages/svelte/src/runtime/internal/public.d.ts index 64a9a04675e1..23974e177bfb 100644 --- a/packages/svelte/src/runtime/internal/public.d.ts +++ b/packages/svelte/src/runtime/internal/public.d.ts @@ -92,4 +92,4 @@ export interface EventDispatcher> { ): boolean; } -export * from './index.js'; +export { SvelteComponent, SvelteComponentDev }; From b52339b87a44e76ddb913ddd97456aab9c2dcd8e Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Thu, 15 Jun 2023 11:50:58 +0545 Subject: [PATCH 08/17] hardcode directories --- packages/svelte/scripts/generate-dts.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 6a59eed9b535..8866f164328f 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -1,17 +1,17 @@ import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; -fs.readdirSync('src/runtime', { withFileTypes: true }) - .filter((dirent) => dirent.isDirectory()) - .forEach((dirent) => fs.writeFileSync(`${dirent.name}.d.ts`, `import 'types/index.d.ts';`)); +for (const name of ['action', 'animate', 'easing', 'internal', 'motion', 'store', 'transition']) { + fs.writeFileSync(`${name}.d.ts`, `import './types/index.d.ts';`); +} -fs.writeFileSync('index.d.ts', `import 'types/index.d.ts';`); -fs.writeFileSync('compiler.d.ts', `import 'types/index.d.ts';`); +fs.writeFileSync('index.d.ts', `import './types/index.d.ts';`); +fs.writeFileSync('compiler.d.ts', `import './types/index.d.ts';`); // TODO: some way to mark these as deprecated -fs.mkdirSync('types/compiler', { recursive: true }); -fs.writeFileSync('types/compiler/preprocess.d.ts', `import '../index.d.ts';`); -fs.writeFileSync('types/compiler/interfaces.d.ts', `import '../index.d.ts';`); +fs.mkdirSync('./types/compiler', { recursive: true }); +fs.writeFileSync('./types/compiler/preprocess.d.ts', `import '../index.d.ts';`); +fs.writeFileSync('./types/compiler/interfaces.d.ts', `import '../index.d.ts';`); await createBundle({ output: 'types/index.d.ts', From fbe3ba59a62addfc68a3cf9cfc283ed4e71d6ed5 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Thu, 15 Jun 2023 12:07:59 +0545 Subject: [PATCH 09/17] would this do anything? --- packages/svelte/scripts/generate-dts.js | 20 +++++++++++++++----- packages/svelte/src/compiler/public.d.ts | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 8866f164328f..d514f48558e8 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -2,16 +2,26 @@ import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; for (const name of ['action', 'animate', 'easing', 'internal', 'motion', 'store', 'transition']) { - fs.writeFileSync(`${name}.d.ts`, `import './types/index.d.ts';`); + fs.writeFileSync(`${name}.d.ts`, `import './types/index.d.ts'; +export * from "svelte/${name}"; +`); } -fs.writeFileSync('index.d.ts', `import './types/index.d.ts';`); -fs.writeFileSync('compiler.d.ts', `import './types/index.d.ts';`); +fs.writeFileSync('index.d.ts', `import './types/index.d.ts'; +export * from "svelte"; +`); +fs.writeFileSync('compiler.d.ts', `import './types/index.d.ts'; +export * from "svelte/compiler"; +`); // TODO: some way to mark these as deprecated fs.mkdirSync('./types/compiler', { recursive: true }); -fs.writeFileSync('./types/compiler/preprocess.d.ts', `import '../index.d.ts';`); -fs.writeFileSync('./types/compiler/interfaces.d.ts', `import '../index.d.ts';`); +fs.writeFileSync('./types/compiler/preprocess.d.ts', `import '../index.d.ts'; +export * from "svelte/types/compiler/preprocess"; +`); +fs.writeFileSync('./types/compiler/interfaces.d.ts', `import '../index.d.ts'; +export * from "svelte/types/compiler/interfaces"; +`); await createBundle({ output: 'types/index.d.ts', diff --git a/packages/svelte/src/compiler/public.d.ts b/packages/svelte/src/compiler/public.d.ts index 202582789d63..8d723453b37c 100644 --- a/packages/svelte/src/compiler/public.d.ts +++ b/packages/svelte/src/compiler/public.d.ts @@ -1,3 +1,3 @@ -export { CompileOptions, EnableSourcemap, CssHashGetter } from './interfaces'; +export { CompileOptions, EnableSourcemap, CssHashGetter, ParserOptions } from './interfaces'; export * from './preprocess/public.js'; export * from './index.js'; From 46c6c7705e07350a46d53430fe1c948e7e5116d8 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Thu, 15 Jun 2023 12:10:08 +0545 Subject: [PATCH 10/17] format --- packages/svelte/scripts/generate-dts.js | 35 ++++++++++++++++++------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index d514f48558e8..9611d8190123 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -2,26 +2,41 @@ import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; for (const name of ['action', 'animate', 'easing', 'internal', 'motion', 'store', 'transition']) { - fs.writeFileSync(`${name}.d.ts`, `import './types/index.d.ts'; + fs.writeFileSync( + `${name}.d.ts`, + `import './types/index.d.ts'; export * from "svelte/${name}"; -`); +` + ); } -fs.writeFileSync('index.d.ts', `import './types/index.d.ts'; +fs.writeFileSync( + 'index.d.ts', + `import './types/index.d.ts'; export * from "svelte"; -`); -fs.writeFileSync('compiler.d.ts', `import './types/index.d.ts'; +` +); +fs.writeFileSync( + 'compiler.d.ts', + `import './types/index.d.ts'; export * from "svelte/compiler"; -`); +` +); // TODO: some way to mark these as deprecated fs.mkdirSync('./types/compiler', { recursive: true }); -fs.writeFileSync('./types/compiler/preprocess.d.ts', `import '../index.d.ts'; +fs.writeFileSync( + './types/compiler/preprocess.d.ts', + `import '../index.d.ts'; export * from "svelte/types/compiler/preprocess"; -`); -fs.writeFileSync('./types/compiler/interfaces.d.ts', `import '../index.d.ts'; +` +); +fs.writeFileSync( + './types/compiler/interfaces.d.ts', + `import '../index.d.ts'; export * from "svelte/types/compiler/interfaces"; -`); +` +); await createBundle({ output: 'types/index.d.ts', From d8a1becfef2dac5211380b6e0aff0666f34f39d9 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Thu, 15 Jun 2023 12:24:34 +0545 Subject: [PATCH 11/17] Revert "would this do anything?" This reverts commit fbe3ba59a62addfc68a3cf9cfc283ed4e71d6ed5. --- packages/svelte/scripts/generate-dts.js | 35 ++++-------------------- packages/svelte/src/compiler/public.d.ts | 2 +- 2 files changed, 6 insertions(+), 31 deletions(-) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 9611d8190123..8866f164328f 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -2,41 +2,16 @@ import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; for (const name of ['action', 'animate', 'easing', 'internal', 'motion', 'store', 'transition']) { - fs.writeFileSync( - `${name}.d.ts`, - `import './types/index.d.ts'; -export * from "svelte/${name}"; -` - ); + fs.writeFileSync(`${name}.d.ts`, `import './types/index.d.ts';`); } -fs.writeFileSync( - 'index.d.ts', - `import './types/index.d.ts'; -export * from "svelte"; -` -); -fs.writeFileSync( - 'compiler.d.ts', - `import './types/index.d.ts'; -export * from "svelte/compiler"; -` -); +fs.writeFileSync('index.d.ts', `import './types/index.d.ts';`); +fs.writeFileSync('compiler.d.ts', `import './types/index.d.ts';`); // TODO: some way to mark these as deprecated fs.mkdirSync('./types/compiler', { recursive: true }); -fs.writeFileSync( - './types/compiler/preprocess.d.ts', - `import '../index.d.ts'; -export * from "svelte/types/compiler/preprocess"; -` -); -fs.writeFileSync( - './types/compiler/interfaces.d.ts', - `import '../index.d.ts'; -export * from "svelte/types/compiler/interfaces"; -` -); +fs.writeFileSync('./types/compiler/preprocess.d.ts', `import '../index.d.ts';`); +fs.writeFileSync('./types/compiler/interfaces.d.ts', `import '../index.d.ts';`); await createBundle({ output: 'types/index.d.ts', diff --git a/packages/svelte/src/compiler/public.d.ts b/packages/svelte/src/compiler/public.d.ts index 8d723453b37c..202582789d63 100644 --- a/packages/svelte/src/compiler/public.d.ts +++ b/packages/svelte/src/compiler/public.d.ts @@ -1,3 +1,3 @@ -export { CompileOptions, EnableSourcemap, CssHashGetter, ParserOptions } from './interfaces'; +export { CompileOptions, EnableSourcemap, CssHashGetter } from './interfaces'; export * from './preprocess/public.js'; export * from './index.js'; From e82821674e79f7643a9e75629b21a34ed4e1979b Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 15 Jun 2023 20:52:10 +0200 Subject: [PATCH 12/17] no internal.d.ts --- packages/svelte/.gitignore | 1 - packages/svelte/package.json | 2 -- packages/svelte/scripts/generate-dts.js | 3 +-- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/svelte/.gitignore b/packages/svelte/.gitignore index b62e1f315d91..2f5d67e7ded7 100644 --- a/packages/svelte/.gitignore +++ b/packages/svelte/.gitignore @@ -13,7 +13,6 @@ animate.d.ts compiler.d.ts easing.d.ts index.d.ts -internal.d.ts motion.d.ts store.d.ts transition.d.ts diff --git a/packages/svelte/package.json b/packages/svelte/package.json index df184d333b27..cd41a2b85b9a 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -11,7 +11,6 @@ "compiler.*", "register.js", "index.d.ts", - "internal.d.ts", "store.d.ts", "animate.d.ts", "transition.d.ts", @@ -47,7 +46,6 @@ "import": "./src/runtime/easing/index.js" }, "./internal": { - "types": "./types/index.d.ts", "import": "./src/runtime/internal/index.js" }, "./motion": { diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 8866f164328f..cb5f49b1069d 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -1,7 +1,7 @@ import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; -for (const name of ['action', 'animate', 'easing', 'internal', 'motion', 'store', 'transition']) { +for (const name of ['action', 'animate', 'easing', 'motion', 'store', 'transition']) { fs.writeFileSync(`${name}.d.ts`, `import './types/index.d.ts';`); } @@ -23,7 +23,6 @@ await createBundle({ 'svelte/action': 'src/runtime/action/public.d.ts', 'svelte/animate': 'src/runtime/animate/public.d.ts', 'svelte/easing': 'src/runtime/easing/index.js', - 'svelte/internal': 'src/runtime/internal/public.d.ts', 'svelte/motion': 'src/runtime/motion/public.d.ts', 'svelte/store': 'src/runtime/store/public.d.ts', 'svelte/transition': 'src/runtime/transition/public.d.ts' From 734bdd757468d33ed548454b63420951c4c2b738 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Fri, 16 Jun 2023 22:42:10 +0200 Subject: [PATCH 13/17] fix file endings --- packages/svelte/scripts/generate-dts.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index cb5f49b1069d..342d1c1c4d26 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -1,17 +1,18 @@ import * as fs from 'fs'; import { createBundle } from 'dts-buddy'; +// It may look weird, but the imports MUST be ending with index.js to be properly resolved in all TS modes for (const name of ['action', 'animate', 'easing', 'motion', 'store', 'transition']) { - fs.writeFileSync(`${name}.d.ts`, `import './types/index.d.ts';`); + fs.writeFileSync(`${name}.d.ts`, `import './types/index.js';`); } -fs.writeFileSync('index.d.ts', `import './types/index.d.ts';`); -fs.writeFileSync('compiler.d.ts', `import './types/index.d.ts';`); +fs.writeFileSync('index.d.ts', `import './types/index.js';`); +fs.writeFileSync('compiler.d.ts', `import './types/index.js';`); // TODO: some way to mark these as deprecated fs.mkdirSync('./types/compiler', { recursive: true }); -fs.writeFileSync('./types/compiler/preprocess.d.ts', `import '../index.d.ts';`); -fs.writeFileSync('./types/compiler/interfaces.d.ts', `import '../index.d.ts';`); +fs.writeFileSync('./types/compiler/preprocess.d.ts', `import '../index.js';`); +fs.writeFileSync('./types/compiler/interfaces.d.ts', `import '../index.js';`); await createBundle({ output: 'types/index.d.ts', From 0ad3db329f7a9b1310bb6b2151793dfa88e6894b Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Fri, 16 Jun 2023 23:21:25 +0200 Subject: [PATCH 14/17] generate index signature manually --- packages/svelte/scripts/generate-dts.js | 7 +++++++ packages/svelte/src/runtime/internal/Component.js | 1 - 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 342d1c1c4d26..30f285bd2d21 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -29,3 +29,10 @@ await createBundle({ 'svelte/transition': 'src/runtime/transition/public.d.ts' } }); + +// There's no way to tell in JS that a class can have arbitrary properties, so we need to add that manually +const types = fs.readFileSync('types/index.d.ts', 'utf-8'); +fs.writeFileSync( + 'types/index.d.ts', + types.replace(/export class SvelteComponent<[^{]*{/, '$&\n\t\t[prop: string]: any;') +); diff --git a/packages/svelte/src/runtime/internal/Component.js b/packages/svelte/src/runtime/internal/Component.js index 539ab50089ac..a1da213da3bd 100644 --- a/packages/svelte/src/runtime/internal/Component.js +++ b/packages/svelte/src/runtime/internal/Component.js @@ -424,7 +424,6 @@ export function create_custom_element( * * @template {Record} [Props=any] * @template {Record} [Events=any] - * @implements {Record} */ export class SvelteComponent { /** From d067e2e0b1feae5d2b1a11c9a09b64ac4a00507a Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Sat, 17 Jun 2023 22:28:01 +0200 Subject: [PATCH 15/17] work around dts-buddy bug --- packages/svelte/scripts/generate-dts.js | 3 ++- .../svelte/src/runtime/internal/public.d.ts | 2 -- packages/svelte/src/runtime/public.d.ts | 20 ++++++++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/svelte/scripts/generate-dts.js b/packages/svelte/scripts/generate-dts.js index 30f285bd2d21..fe4b70e09a61 100644 --- a/packages/svelte/scripts/generate-dts.js +++ b/packages/svelte/scripts/generate-dts.js @@ -34,5 +34,6 @@ await createBundle({ const types = fs.readFileSync('types/index.d.ts', 'utf-8'); fs.writeFileSync( 'types/index.d.ts', - types.replace(/export class SvelteComponent<[^{]*{/, '$&\n\t\t[prop: string]: any;') + // same line to not affect source map + types.replace(/export class SvelteComponent<[^{]*{/, '$& [prop: string]: any;') ); diff --git a/packages/svelte/src/runtime/internal/public.d.ts b/packages/svelte/src/runtime/internal/public.d.ts index 23974e177bfb..6eab766077b6 100644 --- a/packages/svelte/src/runtime/internal/public.d.ts +++ b/packages/svelte/src/runtime/internal/public.d.ts @@ -91,5 +91,3 @@ export interface EventDispatcher> { : [type: Type, parameter: EventMap[Type], options?: DispatchOptions] ): boolean; } - -export { SvelteComponent, SvelteComponentDev }; diff --git a/packages/svelte/src/runtime/public.d.ts b/packages/svelte/src/runtime/public.d.ts index 47bd1e8371d9..2b5eb980bab3 100644 --- a/packages/svelte/src/runtime/public.d.ts +++ b/packages/svelte/src/runtime/public.d.ts @@ -1,5 +1,11 @@ import './ambient.js'; +// Types written in this particular order to work around a dts-buddy bug where it doesn't handle the +// SvelteComponentDev as SvelteComponent alias correctly. If that's fixed, we can remove the +// export type .. from './internal/dev.js' line and do just export * from './index.js' below. + +export type { SvelteComponentDev as SvelteComponent } from './internal/dev.js'; + export type { ComponentConstructorOptions, ComponentEvents, @@ -7,4 +13,16 @@ export type { ComponentType } from './internal/public.js'; -export * from './index.js'; +export { + afterUpdate, + beforeUpdate, + createEventDispatcher, + getAllContexts, + getContext, + hasContext, + onDestroy, + onMount, + setContext, + tick, + SvelteComponentTyped +} from './index.js'; From d8570c2a61ab82220b5270be48c4cb57919cd949 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Sun, 18 Jun 2023 20:38:25 +0200 Subject: [PATCH 16/17] simplify a bit --- packages/svelte/src/runtime/index.js | 2 +- packages/svelte/src/runtime/public.d.ts | 33 ++++++++++++------------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/svelte/src/runtime/index.js b/packages/svelte/src/runtime/index.js index 9d17708fe461..7df6896b3bd8 100644 --- a/packages/svelte/src/runtime/index.js +++ b/packages/svelte/src/runtime/index.js @@ -1,4 +1,5 @@ export { + SvelteComponentDev as SvelteComponent, onMount, onDestroy, beforeUpdate, @@ -9,6 +10,5 @@ export { hasContext, tick, createEventDispatcher, - SvelteComponentDev as SvelteComponent, SvelteComponentTyped } from './internal/index.js'; diff --git a/packages/svelte/src/runtime/public.d.ts b/packages/svelte/src/runtime/public.d.ts index 2b5eb980bab3..aa7457de5849 100644 --- a/packages/svelte/src/runtime/public.d.ts +++ b/packages/svelte/src/runtime/public.d.ts @@ -1,10 +1,23 @@ import './ambient.js'; // Types written in this particular order to work around a dts-buddy bug where it doesn't handle the -// SvelteComponentDev as SvelteComponent alias correctly. If that's fixed, we can remove the -// export type .. from './internal/dev.js' line and do just export * from './index.js' below. +// SvelteComponentDev as SvelteComponent alias correctly. +// If that's fixed, we can do export * from './index.js' instead. -export type { SvelteComponentDev as SvelteComponent } from './internal/dev.js'; +export { + SvelteComponent, + SvelteComponentTyped, + onMount, + onDestroy, + beforeUpdate, + afterUpdate, + setContext, + getContext, + getAllContexts, + hasContext, + tick, + createEventDispatcher +} from './index.js'; export type { ComponentConstructorOptions, @@ -12,17 +25,3 @@ export type { ComponentProps, ComponentType } from './internal/public.js'; - -export { - afterUpdate, - beforeUpdate, - createEventDispatcher, - getAllContexts, - getContext, - hasContext, - onDestroy, - onMount, - setContext, - tick, - SvelteComponentTyped -} from './index.js'; From 01958834c5655f969c49bbbd783c8e2aba25b5a8 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Sun, 18 Jun 2023 20:39:43 +0200 Subject: [PATCH 17/17] changeset --- .changeset/mighty-suns-occur.md | 5 +++++ .changeset/tame-peaches-destroy.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/mighty-suns-occur.md create mode 100644 .changeset/tame-peaches-destroy.md diff --git a/.changeset/mighty-suns-occur.md b/.changeset/mighty-suns-occur.md new file mode 100644 index 000000000000..64d184f29628 --- /dev/null +++ b/.changeset/mighty-suns-occur.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure types are loaded with all TS settings diff --git a/.changeset/tame-peaches-destroy.md b/.changeset/tame-peaches-destroy.md new file mode 100644 index 000000000000..b5ba04e842c5 --- /dev/null +++ b/.changeset/tame-peaches-destroy.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: export correct SvelteComponent type