@glint/template 1.4.1-unstable.2e45a79 → 1.4.1-unstable.34c4510
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.
- package/-private/dsl/emit.d.ts +17 -15
- package/-private/dsl/resolve.d.ts +3 -3
- package/-private/dsl/types.d.ts +2 -2
- package/-private/index.d.ts +20 -21
- package/-private/integration.d.ts +6 -7
- package/-private/keywords/-bind-invokable.d.ts +14 -14
- package/-private/keywords/let.d.ts +3 -1
- package/-private/signature.d.ts +4 -4
- package/package.json +4 -2
package/-private/dsl/emit.d.ts
CHANGED
|
@@ -38,14 +38,14 @@ export declare function emitContent(value: ContentValue): void;
|
|
|
38
38
|
*
|
|
39
39
|
* Would produce code like:
|
|
40
40
|
*
|
|
41
|
-
* emitElement('div', (
|
|
42
|
-
* applySplattributes(
|
|
43
|
-
* applyAttributes(
|
|
44
|
-
* applyModifier(
|
|
41
|
+
* emitElement('div', (__glintY__) => {
|
|
42
|
+
* applySplattributes(__glintRef__.element, __glintY__.element);
|
|
43
|
+
* applyAttributes(__glintY__.element, { class: 'hello' });
|
|
44
|
+
* applyModifier(__glintY__.element, resolve(on)({}, 'click', this.clicked));
|
|
45
45
|
* });
|
|
46
46
|
*/
|
|
47
47
|
export declare function emitElement<Name extends string>(
|
|
48
|
-
name: Name
|
|
48
|
+
name: Name,
|
|
49
49
|
): { element: ElementForTagName<Name> };
|
|
50
50
|
|
|
51
51
|
/*
|
|
@@ -60,12 +60,12 @@ export declare function emitElement<Name extends string>(
|
|
|
60
60
|
* This form of invocation is the only one in a template that may have
|
|
61
61
|
* blocks bound to it. The final line above would produce code like:
|
|
62
62
|
*
|
|
63
|
-
* emitComponent(resolve(Value)({ foo: bar })), (
|
|
64
|
-
* applyModifier(
|
|
63
|
+
* emitComponent(resolve(Value)({ foo: bar })), (__glintY__) => {
|
|
64
|
+
* applyModifier(__glintY__.element, resolve(baz)({}));
|
|
65
65
|
* });
|
|
66
66
|
*/
|
|
67
67
|
export declare function emitComponent<T extends ComponentReturn<any, any>>(
|
|
68
|
-
component: T
|
|
68
|
+
component: T,
|
|
69
69
|
): {
|
|
70
70
|
element: T extends ComponentReturn<any, infer El> ? El : any;
|
|
71
71
|
blockParams: T extends ComponentReturn<infer Yields, any> ? Required<Yields> : any;
|
|
@@ -80,8 +80,10 @@ export declare function emitComponent<T extends ComponentReturn<any, any>>(
|
|
|
80
80
|
*/
|
|
81
81
|
export declare function templateExpression<
|
|
82
82
|
Signature extends AnyFunction = () => ComponentReturn<{}>,
|
|
83
|
-
Context extends AnyContext = TemplateContext<void, {}, {}, void
|
|
84
|
-
>(
|
|
83
|
+
Context extends AnyContext = TemplateContext<void, {}, {}, void>,
|
|
84
|
+
>(
|
|
85
|
+
f: (__glintRef__: Context, __glintDSL__: never) => void,
|
|
86
|
+
): new () => InvokableInstance<Signature> & HasContext<Context>;
|
|
85
87
|
|
|
86
88
|
/*
|
|
87
89
|
* Wraps a template body that's backed by a known value (typically a class), either
|
|
@@ -98,7 +100,7 @@ export declare function templateExpression<
|
|
|
98
100
|
*/
|
|
99
101
|
export declare function templateForBackingValue<Args extends unknown[], Context extends AnyContext>(
|
|
100
102
|
backingValue: abstract new (...args: Args) => HasContext<Context>,
|
|
101
|
-
body: (
|
|
103
|
+
body: (__glintRef__: Context, __glintDSL__: never) => void,
|
|
102
104
|
): abstract new () => unknown;
|
|
103
105
|
|
|
104
106
|
/*
|
|
@@ -108,11 +110,11 @@ export declare function templateForBackingValue<Args extends unknown[], Context
|
|
|
108
110
|
*
|
|
109
111
|
* Is equivalent to:
|
|
110
112
|
*
|
|
111
|
-
* yieldToBlock(
|
|
113
|
+
* yieldToBlock(__glintRef__, 'name')(foo, bar);
|
|
112
114
|
*/
|
|
113
115
|
export declare function yieldToBlock<Context extends AnyContext, K extends keyof Context['blocks']>(
|
|
114
|
-
|
|
115
|
-
to: K
|
|
116
|
+
__glintRef__: Context,
|
|
117
|
+
to: K,
|
|
116
118
|
): (...values: NonNullable<Context['blocks'][K]>) => void;
|
|
117
119
|
|
|
118
120
|
/*
|
|
@@ -124,7 +126,7 @@ export declare function yieldToBlock<Context extends AnyContext, K extends keyof
|
|
|
124
126
|
*/
|
|
125
127
|
export declare function applySplattributes<
|
|
126
128
|
SourceElement extends Element,
|
|
127
|
-
TargetElement extends SourceElement
|
|
129
|
+
TargetElement extends SourceElement,
|
|
128
130
|
>(source: SourceElement, target: TargetElement): void;
|
|
129
131
|
|
|
130
132
|
/*
|
|
@@ -33,7 +33,7 @@ import { ResolveOrReturn } from './types';
|
|
|
33
33
|
|
|
34
34
|
export declare function resolve<T extends DirectInvokable>(item: T): T[typeof InvokeDirect];
|
|
35
35
|
export declare function resolve<Args extends unknown[], Instance extends InvokableInstance>(
|
|
36
|
-
item: (abstract new (...args: Args) => Instance) | null | undefined
|
|
36
|
+
item: (abstract new (...args: Args) => Instance) | null | undefined,
|
|
37
37
|
): (...args: Parameters<Instance[typeof Invoke]>) => ReturnType<Instance[typeof Invoke]>;
|
|
38
38
|
|
|
39
39
|
/*
|
|
@@ -59,8 +59,8 @@ export declare const resolveOrReturn: ResolveOrReturn<typeof resolve>;
|
|
|
59
59
|
|
|
60
60
|
export declare function resolveForBind<T extends DirectInvokable>(item: T): T[typeof InvokeDirect];
|
|
61
61
|
export declare function resolveForBind<Args extends unknown[], Instance extends InvokableInstance>(
|
|
62
|
-
item: abstract new (...args: Args) => Instance
|
|
62
|
+
item: abstract new (...args: Args) => Instance,
|
|
63
63
|
): (...args: Parameters<Instance[typeof Invoke]>) => ReturnType<Instance[typeof Invoke]>;
|
|
64
64
|
export declare function resolveForBind<Args extends unknown[], Instance extends InvokableInstance>(
|
|
65
|
-
item: null | undefined | (abstract new (...args: Args) => Instance)
|
|
65
|
+
item: null | undefined | (abstract new (...args: Args) => Instance),
|
|
66
66
|
): null | ((...args: Parameters<Instance[typeof Invoke]>) => ReturnType<Instance[typeof Invoke]>);
|
package/-private/dsl/types.d.ts
CHANGED
|
@@ -13,5 +13,5 @@ export type ElementForTagName<Name extends string> = Name extends keyof HTMLElem
|
|
|
13
13
|
? HTMLElementTagNameMap[Name] & SVGElementTagNameMap[Name]
|
|
14
14
|
: HTMLElementTagNameMap[Name]
|
|
15
15
|
: Name extends keyof SVGElementTagNameMap
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
? SVGElementTagNameMap[Name]
|
|
17
|
+
: Element;
|
package/-private/index.d.ts
CHANGED
|
@@ -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<
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
> =
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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>> =
|
|
73
|
-
(...args: infer A) => any
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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: (
|
|
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
|
>;
|
package/-private/signature.d.ts
CHANGED
|
@@ -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
|
-
|
|
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/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glint/template",
|
|
3
|
-
"version": "1.4.1-unstable.
|
|
3
|
+
"version": "1.4.1-unstable.34c4510",
|
|
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
9
|
"scripts": {
|
|
10
|
-
"test": "
|
|
10
|
+
"test": "echo 'no standalone tests within this project'",
|
|
11
|
+
"test:typecheck": "tsc --project __tests__",
|
|
12
|
+
"test:tsc": "echo 'no standalone typecheck within this project'"
|
|
11
13
|
},
|
|
12
14
|
"files": [
|
|
13
15
|
"README.md",
|