Skip to content

Commit e9c1a6c

Browse files
committed
v0.4.0
1 parent fee8399 commit e9c1a6c

File tree

3 files changed

+17
-19
lines changed

3 files changed

+17
-19
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.4.0](https://github.com/IBM/carbon-icons-svelte/releases/tag/v0.4.0) - 2020-11-25
9+
10+
- Output format for TypeScript definitions extends `SvelteComponent` instead of stubbing class internals used by the Svelte Language Server
11+
12+
**Breaking Changes**
13+
14+
- Requires svelte version 3.30 or greater
15+
816
## [0.3.0](https://github.com/IBM/carbon-icons-svelte/releases/tag/v0.3.0) - 2020-11-25
917

1018
- Export component `typedefs` in TypeScript definitions

README.md

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ The purpose of this project is to make third party Svelte components and librari
99

1010
The core of this library is extracted from [carbon-components-svelte](https://github.com/IBM/carbon-components-svelte).
1111

12+
**Note:** The generated TS definitions require [Svelte version 3.30](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md#3300) or greater.
13+
1214
---
1315

1416
Given a Svelte file, sveld can infer basic prop types to generate TypeScript definitions compatible with the [Svelte Language Server](https://github.com/sveltejs/language-tools):
@@ -26,10 +28,13 @@ Given a Svelte file, sveld can infer basic prop types to generate TypeScript def
2628
</button>
2729
```
2830

31+
The generated definition extends the typed `SvelteComponent` interface.
32+
2933
**Button.d.ts**
3034

3135
```ts
3236
/// <reference types="svelte" />
37+
import { SvelteComponent } from "svelte";
3338

3439
export interface ButtonProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap["button"]> {
3540
/**
@@ -43,15 +48,7 @@ export interface ButtonProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNam
4348
primary?: boolean;
4449
}
4550

46-
export default class Button {
47-
$$prop_def: ButtonProps;
48-
$$slot_def: {
49-
default: {};
50-
};
51-
52-
$on(eventname: "click", cb: (event: WindowEventMap["click"]) => void): () => void;
53-
$on(eventname: string, cb: (event: Event) => void): () => void;
54-
}
51+
export default class Button extends SvelteComponent<ButtonProps, { click: WindowEventMap["click"] }, { default: {} }> {}
5552
```
5653

5754
Sometimes, inferring prop types is insufficient.
@@ -72,6 +69,7 @@ The accompanying JSDoc annotations would generate the following:
7269

7370
```ts
7471
/// <reference types="svelte" />
72+
import { SvelteComponent } from "svelte";
7573

7674
export interface ButtonProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap["button"]> {
7775
/**
@@ -86,15 +84,7 @@ export interface ButtonProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNam
8684
primary?: boolean;
8785
}
8886

89-
export default class Button {
90-
$$prop_def: ButtonProps;
91-
$$slot_def: {
92-
default: {};
93-
};
94-
95-
$on(eventname: "click", cb: (event: WindowEventMap["click"]) => void): () => void;
96-
$on(eventname: string, cb: (event: Event) => void): () => void;
97-
}
87+
export default class Button extends SvelteComponent<ButtonProps, { click: WindowEventMap["click"] }, { default: {} }> {}
9888
```
9989

10090
---

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sveld",
3-
"version": "0.3.0",
3+
"version": "0.4.0",
44
"license": "Apache-2.0",
55
"description": "Generate TypeScript definitions for your Svelte components.",
66
"author": "Eric Liu (https://github.com/metonym)",

0 commit comments

Comments
 (0)