@glint/template 1.5.2 → 1.6.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -128,19 +128,17 @@ export type ModifierLike<S = unknown> = Invokable<
128
128
  * consumers would still be obligated to provide a `@message`
129
129
  * arg when invoking the yielded component.
130
130
  */
131
- export type WithBoundArgs<
132
- T extends Invokable<AnyFunction>,
133
- BoundArgs extends NamedArgNames<T>
134
- > = T extends Invokable<(...args: [...positional: infer P, named: infer N]) => infer R>
135
- ? Invokable<
136
- (
137
- ...args: [
138
- ...positional: P,
139
- ...named: MaybeNamed<PrebindArgs<UnwrapNamedArgs<NonNullable<N>>, BoundArgs>>
140
- ]
141
- ) => R
142
- >
143
- : never;
131
+ export type WithBoundArgs<T extends Invokable<AnyFunction>, BoundArgs extends NamedArgNames<T>> =
132
+ T extends Invokable<(...args: [...positional: infer P, named: infer N]) => infer R>
133
+ ? Invokable<
134
+ (
135
+ ...args: [
136
+ ...positional: P,
137
+ ...named: MaybeNamed<PrebindArgs<UnwrapNamedArgs<NonNullable<N>>, BoundArgs>>,
138
+ ]
139
+ ) => R
140
+ >
141
+ : never;
144
142
 
145
143
  /**
146
144
  * Similar to `WithBoundArgs`, this utility type provides a shorthand
@@ -173,13 +171,14 @@ export type WithBoundArgs<
173
171
  */
174
172
  export type WithBoundPositionals<
175
173
  T extends Invokable<AnyFunction> | AnyFunction,
176
- Count extends number
177
- > = T extends Invokable<(el: infer El, ...args: infer A) => ModifierReturn>
178
- ? Invokable<(el: El, ...args: SliceFrom<A, Count>) => ModifierReturn>
179
- : T extends Invokable<(...args: infer A) => infer R>
180
- ? Invokable<(...args: SliceFrom<A, Count>) => R>
181
- : T extends (...args: infer A) => infer R
182
- ? Invokable<(...args: SliceFrom<A, Count>) => R>
183
- : never;
174
+ Count extends number,
175
+ > =
176
+ T extends Invokable<(el: infer El, ...args: infer A) => ModifierReturn>
177
+ ? Invokable<(el: El, ...args: SliceFrom<A, Count>) => ModifierReturn>
178
+ : T extends Invokable<(...args: infer A) => infer R>
179
+ ? Invokable<(...args: SliceFrom<A, Count>) => R>
180
+ : T extends (...args: infer A) => infer R
181
+ ? Invokable<(...args: SliceFrom<A, Count>) => R>
182
+ : never;
184
183
 
185
184
  export {};
@@ -69,12 +69,11 @@ export interface NamedArgsMarker {
69
69
  [NamedArgs]: true;
70
70
  }
71
71
 
72
- export type NamedArgNames<T extends Invokable<AnyFunction>> = T extends Invokable<
73
- (...args: infer A) => any
74
- >
75
- ? A extends [...positional: infer _, named?: infer N]
76
- ? Exclude<keyof NonNullable<N>, typeof NamedArgs>
77
- : never
78
- : never;
72
+ export type NamedArgNames<T extends Invokable<AnyFunction>> =
73
+ T extends Invokable<(...args: infer A) => any>
74
+ ? A extends [...positional: infer _, named?: infer N]
75
+ ? Exclude<keyof NonNullable<N>, typeof NamedArgs>
76
+ : never
77
+ : never;
79
78
 
80
79
  export type UnwrapNamedArgs<T> = T extends NamedArgs<infer U> ? U : T;
@@ -7,16 +7,16 @@ type PrefixOf<T extends unknown[]> = T extends [arg: infer Arg, ...rest: infer R
7
7
 
8
8
  export type BindInvokableKeyword<Prefix extends number, Kind> = DirectInvokable<{
9
9
  // {{bind invokable}}
10
- <Args extends unknown[], T extends Kind>(invokable: (...args: Args) => T): Invokable<
11
- (...args: Args) => T
12
- >;
13
10
  <Args extends unknown[], T extends Kind>(
14
- invokable: ((...args: Args) => T) | null | undefined
11
+ invokable: (...args: Args) => T,
12
+ ): Invokable<(...args: Args) => T>;
13
+ <Args extends unknown[], T extends Kind>(
14
+ invokable: ((...args: Args) => T) | null | undefined,
15
15
  ): null | Invokable<(...args: Args) => T>;
16
16
  // {{bind invokableWithOnlyNamedArgs name="foo"}}
17
17
  <Named, Return extends Kind, GivenNamed>(
18
18
  invokable: (named: NamedArgs<Named>) => Return,
19
- named: NamedArgs<Partial<Named> & GivenNamed>
19
+ named: NamedArgs<Partial<Named> & GivenNamed>,
20
20
  ): Invokable<
21
21
  (
22
22
  ...named: MaybeNamed<
@@ -26,7 +26,7 @@ export type BindInvokableKeyword<Prefix extends number, Kind> = DirectInvokable<
26
26
  >;
27
27
  <Named, Return extends Kind, GivenNamed>(
28
28
  invokable: null | undefined | ((named: NamedArgs<Named>) => Return),
29
- named: NamedArgs<Partial<Named> & GivenNamed>
29
+ named: NamedArgs<Partial<Named> & GivenNamed>,
30
30
  ): null | Invokable<
31
31
  (
32
32
  ...named: MaybeNamed<
@@ -37,27 +37,27 @@ export type BindInvokableKeyword<Prefix extends number, Kind> = DirectInvokable<
37
37
  // {{bind invokableWithNamedAndPositionalArgs name="foo"}}
38
38
  <Named, Positional extends unknown[], Return extends Kind, GivenNamed extends Partial<Named>>(
39
39
  invokable: (...args: [...Positional, NamedArgs<Named>]) => Return,
40
- named: GivenNamed
40
+ named: GivenNamed,
41
41
  ): Invokable<
42
42
  (
43
43
  ...args: [
44
44
  ...Positional,
45
45
  ...MaybeNamed<
46
46
  PrebindArgs<NonNullable<Named>, keyof GivenNamed & keyof UnwrapNamedArgs<Named>>
47
- >
47
+ >,
48
48
  ]
49
49
  ) => Return
50
50
  >;
51
51
  <Named, Positional extends unknown[], Return extends Kind, GivenNamed extends Partial<Named>>(
52
52
  invokable: (...args: [...Positional, NamedArgs<Named>]) => Return,
53
- named: GivenNamed
53
+ named: GivenNamed,
54
54
  ): Invokable<
55
55
  (
56
56
  ...args: [
57
57
  ...Positional,
58
58
  ...MaybeNamed<
59
59
  PrebindArgs<NonNullable<Named>, keyof GivenNamed & keyof UnwrapNamedArgs<Named>>
60
- >
60
+ >,
61
61
  ]
62
62
  ) => Return
63
63
  >;
@@ -65,7 +65,7 @@ export type BindInvokableKeyword<Prefix extends number, Kind> = DirectInvokable<
65
65
  <
66
66
  Positional extends any[],
67
67
  Return extends Kind,
68
- GivenPositional extends PrefixOf<SliceFrom<Positional, Prefix>>
68
+ GivenPositional extends PrefixOf<SliceFrom<Positional, Prefix>>,
69
69
  >(
70
70
  invokable: (...args: [...Positional]) => Return,
71
71
  ...args: GivenPositional
@@ -73,14 +73,14 @@ export type BindInvokableKeyword<Prefix extends number, Kind> = DirectInvokable<
73
73
  (
74
74
  ...args: [
75
75
  ...SliceTo<Positional, Prefix>,
76
- ...SliceFrom<SliceFrom<Positional, Prefix>, GivenPositional['length']>
76
+ ...SliceFrom<SliceFrom<Positional, Prefix>, GivenPositional['length']>,
77
77
  ]
78
78
  ) => Return
79
79
  >;
80
80
  <
81
81
  Positional extends any[],
82
82
  Return extends Kind,
83
- GivenPositional extends PrefixOf<SliceFrom<Positional, Prefix>>
83
+ GivenPositional extends PrefixOf<SliceFrom<Positional, Prefix>>,
84
84
  >(
85
85
  invokable: null | undefined | ((...args: [...Positional]) => Return),
86
86
  ...args: GivenPositional
@@ -88,7 +88,7 @@ export type BindInvokableKeyword<Prefix extends number, Kind> = DirectInvokable<
88
88
  (
89
89
  ...args: [
90
90
  ...SliceTo<Positional, Prefix>,
91
- ...SliceFrom<SliceFrom<Positional, Prefix>, GivenPositional['length']>
91
+ ...SliceFrom<SliceFrom<Positional, Prefix>, GivenPositional['length']>,
92
92
  ]
93
93
  ) => Return
94
94
  >;
@@ -1,7 +1,9 @@
1
1
  import { ComponentReturn, DirectInvokable } from '../integration';
2
2
 
3
3
  export type LetKeyword = DirectInvokable<{
4
- <T extends unknown[]>(...values: T): ComponentReturn<{
4
+ <T extends unknown[]>(
5
+ ...values: T
6
+ ): ComponentReturn<{
5
7
  default: T;
6
8
  }>;
7
9
  }>;
@@ -10,7 +10,7 @@ import { NamedArgs, UnwrapNamedArgs } from './integration';
10
10
  */
11
11
  export type InvokableArgs<Args> = [
12
12
  ...positional: Constrain<Get<Args, 'Positional'>, Array<unknown>, []>,
13
- ...named: MaybeNamed<NamedArgs<Get<Args, 'Named'>>>
13
+ ...named: MaybeNamed<NamedArgs<Get<Args, 'Named'>>>,
14
14
  ];
15
15
 
16
16
  /** Given a signature `S`, get back the normalized `Args` type. */
@@ -72,12 +72,12 @@ export type TupleOfSize<Len extends number, Acc extends unknown[] = []> = Acc['l
72
72
  export type SliceTo<T extends unknown[], Index extends number> = T['length'] extends Index
73
73
  ? T
74
74
  : T extends [...infer Rest, any?]
75
- ? SliceTo<Rest, Index>
76
- : [];
75
+ ? SliceTo<Rest, Index>
76
+ : [];
77
77
 
78
78
  export type SliceFrom<T extends unknown[], Index extends number> = T extends [
79
79
  ...TupleOfSize<Index>,
80
- ...infer Rest
80
+ ...infer Rest,
81
81
  ]
82
82
  ? Rest
83
83
  : [];
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 The Ember TypeScript team and contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/package.json CHANGED
@@ -1,13 +1,18 @@
1
1
  {
2
2
  "name": "@glint/template",
3
- "version": "1.5.2",
3
+ "version": "1.6.0-alpha.0",
4
4
  "repository": "typed-ember/glint",
5
5
  "description": "Type definitions to back typechecking for Glimmer templates",
6
6
  "license": "MIT",
7
7
  "author": "Dan Freeman (https://github.com/dfreeman)",
8
8
  "types": "-private/index.d.ts",
9
- "scripts": {
10
- "test": "tsc --project __tests__"
9
+ "exports": {
10
+ ".": {
11
+ "types": "./-private/index.d.ts"
12
+ },
13
+ "./*": {
14
+ "types": "./*.d.ts"
15
+ }
11
16
  },
12
17
  "files": [
13
18
  "README.md",
@@ -16,12 +21,31 @@
16
21
  ],
17
22
  "devDependencies": {
18
23
  "@glimmer/component": "^1.1.2",
19
- "@glimmerx/component": "^0.6.7",
20
- "@types/ember__component": "~4.0.8",
21
- "expect-type": "^0.15.0",
22
- "sums-up": "^2.1.0"
24
+ "expect-type": "^1.2.1",
25
+ "sums-up": "^2.1.0",
26
+ "ember-source": "^6.2.0",
27
+ "typescript": ">=5.6.0",
28
+ "aria-attributes": "^2.0.1",
29
+ "html-element-attributes": "^3.3.0",
30
+ "html-event-attributes": "^2.2.0",
31
+ "svg-element-attributes": "^2.1.0",
32
+ "svg-event-attributes": "^2.0.2"
33
+ },
34
+ "release-plan": {
35
+ "semverIncrementAs": {
36
+ "major": "preminor",
37
+ "minor": "prerelease",
38
+ "patch": "prerelease"
39
+ },
40
+ "semverIncrementTag": "alpha",
41
+ "publishTag": "alpha"
23
42
  },
24
43
  "publishConfig": {
25
44
  "access": "public"
45
+ },
46
+ "scripts": {
47
+ "test": "echo 'no standalone tests within this project'",
48
+ "test:typecheck": "tsc --project __tests__",
49
+ "test:tsc": "echo 'no standalone typecheck within this project'"
26
50
  }
27
- }
51
+ }