Skip to content

Commit fe1de32

Browse files
authored
Merge pull request #74 from emberjs/types
Introduce type definitions for render modifiers
2 parents 9d248fd + cd2a02d commit fe1de32

9 files changed

Lines changed: 83 additions & 1 deletion

File tree

.eslintignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,6 @@
2323
/package.json.ember-try
2424
/package-lock.json.ember-try
2525
/yarn.lock.ember-try
26+
27+
# types
28+
/types/

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,23 @@ Usage:
237237
</Root>
238238
```
239239

240+
## Glint usage
241+
If you are using [Glint](https://typed-ember.gitbook.io/glint/) and `environment-ember-loose`, you can add all the modifiers to your app at once by adding
242+
243+
```ts
244+
import type RenderModifiersRegistry from '@ember/render-modifiers/template-registry';
245+
```
246+
to your app's e.g. `types/glint.d.ts` file, and making sure your registry extends from RenderModifiersRegistry:
247+
248+
```ts
249+
declare module '@glint/environment-ember-loose/registry' {
250+
export default interface Registry
251+
extends RenderModifiersRegistry {
252+
// ...
253+
}
254+
}
255+
```
256+
240257
## Contributing
241258

242259
See the [Contributing](CONTRIBUTING.md) guide for details.

package.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"@embroider/util": "^1.0.0",
4040
"@glimmer/component": "^1.0.4",
4141
"@glimmer/tracking": "^1.0.4",
42+
"@glint/template": "^1.0.2",
4243
"babel-eslint": "^10.1.0",
4344
"ember-auto-import": "^2.2.4",
4445
"ember-cli": "~4.1.0",
@@ -71,7 +72,13 @@
7172
"webpack": "^5.65.0"
7273
},
7374
"peerDependencies": {
74-
"ember-source": "^3.8 || ^4.0.0 || ^5.0.0"
75+
"ember-source": "^3.8 || ^4.0.0 || ^5.0.0",
76+
"@glint/template": "^1.0.2"
77+
},
78+
"peerDependenciesMeta": {
79+
"@glint/template": {
80+
"optional": true
81+
}
7582
},
7683
"engines": {
7784
"node": "12.* || 14.* || >= 16"
@@ -99,5 +106,12 @@
99106
"github": {
100107
"release": true
101108
}
109+
},
110+
"typesVersions": {
111+
"*": {
112+
"*": [
113+
"types/*"
114+
]
115+
}
102116
}
103117
}

types/-private.d.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { ModifierLike } from '@glint/template';
2+
3+
export type RenderModifier<El extends Element, Args extends Array<any>> = InstanceType<
4+
ModifierLike<{
5+
Element: El;
6+
Args: {
7+
Positional: [callback: (element: El, args: Args) => unknown, ...callbackArgs: Args];
8+
};
9+
}>
10+
>;

types/modifiers/did-insert.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { RenderModifier } from '../-private';
2+
3+
declare const didInsert: abstract new <
4+
El extends Element,
5+
Args extends Array<any>
6+
>() => RenderModifier<El, Args>;
7+
8+
export default didInsert;

types/modifiers/did-update.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { RenderModifier } from '../-private';
2+
3+
declare const didUpdate: abstract new <
4+
El extends Element,
5+
Args extends Array<any>
6+
>() => RenderModifier<El, Args>;
7+
8+
export default didUpdate;

types/modifiers/will-destroy.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { RenderModifier } from '../-private';
2+
3+
declare const willDestroy: abstract new <
4+
El extends Element,
5+
Args extends Array<any>
6+
>() => RenderModifier<El, Args>;
7+
8+
export default willDestroy;

types/template-registry.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type didInsert from './modifiers/did-insert';
2+
import type didUpdate from './modifiers/did-update';
3+
import type willDestroy from './modifiers/will-destroy';
4+
5+
export default interface RenderModifiersRegistry {
6+
'did-insert': typeof didInsert;
7+
'did-update': typeof didUpdate;
8+
'will-destroy': typeof willDestroy;
9+
}

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,6 +1494,11 @@
14941494
"@glimmer/interfaces" "^0.42.2"
14951495
"@glimmer/util" "^0.42.2"
14961496

1497+
"@glint/template@^1.0.2":
1498+
version "1.0.2"
1499+
resolved "https://registry.yarnpkg.com/@glint/template/-/template-1.0.2.tgz#dcb96f048df52e7d0e78cf194fa07b3c42f15278"
1500+
integrity sha512-kFWfJrS7XM0NjC5YSN0CWA9FiN0mhUvWVlQ2O7YRz/uhrO8+TVYNLst0WKELRbfCXbdI7wyYQkazNgz6FoL9CA==
1501+
14971502
"@handlebars/parser@^1.1.0":
14981503
version "1.1.0"
14991504
resolved "https://registry.yarnpkg.com/@handlebars/parser/-/parser-1.1.0.tgz#d6dbc7574774b238114582410e8fee0dc3532bdf"

0 commit comments

Comments
 (0)