@marko/language-tools 2.1.6 → 2.1.8
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/dist/index.js +9 -5
- package/dist/index.mjs +9 -5
- package/marko.internal.d.ts +94 -90
- package/package.json +10 -10
package/dist/index.js
CHANGED
|
@@ -2148,7 +2148,9 @@ constructor(_?: Return) {}
|
|
|
2148
2148
|
const renderId = this.#getRenderId(tag);
|
|
2149
2149
|
if (renderId) {
|
|
2150
2150
|
this.#extractor.write(
|
|
2151
|
-
`${varShared("assertRendered")}(${varShared(
|
|
2151
|
+
`${varShared("assertRendered")}(${varShared(
|
|
2152
|
+
"rendered"
|
|
2153
|
+
)}, ${renderId}, `
|
|
2152
2154
|
);
|
|
2153
2155
|
}
|
|
2154
2156
|
if (tagName) {
|
|
@@ -3276,7 +3278,9 @@ var marko_default = {
|
|
|
3276
3278
|
code += "<return ";
|
|
3277
3279
|
if (valueType) {
|
|
3278
3280
|
code += `= ${castType(
|
|
3279
|
-
typeChecker.typeToString(
|
|
3281
|
+
typeChecker.typeToString(
|
|
3282
|
+
typeChecker.getTypeOfSymbol(valueType)
|
|
3283
|
+
)
|
|
3280
3284
|
)}`;
|
|
3281
3285
|
} else {
|
|
3282
3286
|
code += `...${castType(typeChecker.typeToString(returnType))}`;
|
|
@@ -3384,13 +3388,11 @@ var HTMLExtractor = class {
|
|
|
3384
3388
|
#read;
|
|
3385
3389
|
#nodeDetails;
|
|
3386
3390
|
#nodeIdCounter;
|
|
3387
|
-
#dynamicAttrValueCounter;
|
|
3388
3391
|
constructor(parsed) {
|
|
3389
3392
|
this.#extractor = new Extractor(parsed);
|
|
3390
3393
|
this.#read = parsed.read.bind(parsed);
|
|
3391
3394
|
this.#nodeDetails = {};
|
|
3392
3395
|
this.#nodeIdCounter = 0;
|
|
3393
|
-
this.#dynamicAttrValueCounter = 0;
|
|
3394
3396
|
parsed.program.body.forEach((node) => this.#visitNode(node));
|
|
3395
3397
|
}
|
|
3396
3398
|
end() {
|
|
@@ -3423,6 +3425,8 @@ var HTMLExtractor = class {
|
|
|
3423
3425
|
start: node.start + 1,
|
|
3424
3426
|
end: node.start + 2
|
|
3425
3427
|
}) === "!";
|
|
3428
|
+
this.#extractor.write("placeholder");
|
|
3429
|
+
break;
|
|
3426
3430
|
}
|
|
3427
3431
|
return isDynamic || hasDynamicBody;
|
|
3428
3432
|
}
|
|
@@ -3495,7 +3499,7 @@ var HTMLExtractor = class {
|
|
|
3495
3499
|
this.#extractor.write('"');
|
|
3496
3500
|
break;
|
|
3497
3501
|
case 3 /* Dynamic */:
|
|
3498
|
-
this.#extractor.write(`="dynamic
|
|
3502
|
+
this.#extractor.write(`="dynamic"`);
|
|
3499
3503
|
break;
|
|
3500
3504
|
}
|
|
3501
3505
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -2116,7 +2116,9 @@ constructor(_?: Return) {}
|
|
|
2116
2116
|
const renderId = this.#getRenderId(tag);
|
|
2117
2117
|
if (renderId) {
|
|
2118
2118
|
this.#extractor.write(
|
|
2119
|
-
`${varShared("assertRendered")}(${varShared(
|
|
2119
|
+
`${varShared("assertRendered")}(${varShared(
|
|
2120
|
+
"rendered"
|
|
2121
|
+
)}, ${renderId}, `
|
|
2120
2122
|
);
|
|
2121
2123
|
}
|
|
2122
2124
|
if (tagName) {
|
|
@@ -3244,7 +3246,9 @@ var marko_default = {
|
|
|
3244
3246
|
code += "<return ";
|
|
3245
3247
|
if (valueType) {
|
|
3246
3248
|
code += `= ${castType(
|
|
3247
|
-
typeChecker.typeToString(
|
|
3249
|
+
typeChecker.typeToString(
|
|
3250
|
+
typeChecker.getTypeOfSymbol(valueType)
|
|
3251
|
+
)
|
|
3248
3252
|
)}`;
|
|
3249
3253
|
} else {
|
|
3250
3254
|
code += `...${castType(typeChecker.typeToString(returnType))}`;
|
|
@@ -3352,13 +3356,11 @@ var HTMLExtractor = class {
|
|
|
3352
3356
|
#read;
|
|
3353
3357
|
#nodeDetails;
|
|
3354
3358
|
#nodeIdCounter;
|
|
3355
|
-
#dynamicAttrValueCounter;
|
|
3356
3359
|
constructor(parsed) {
|
|
3357
3360
|
this.#extractor = new Extractor(parsed);
|
|
3358
3361
|
this.#read = parsed.read.bind(parsed);
|
|
3359
3362
|
this.#nodeDetails = {};
|
|
3360
3363
|
this.#nodeIdCounter = 0;
|
|
3361
|
-
this.#dynamicAttrValueCounter = 0;
|
|
3362
3364
|
parsed.program.body.forEach((node) => this.#visitNode(node));
|
|
3363
3365
|
}
|
|
3364
3366
|
end() {
|
|
@@ -3391,6 +3393,8 @@ var HTMLExtractor = class {
|
|
|
3391
3393
|
start: node.start + 1,
|
|
3392
3394
|
end: node.start + 2
|
|
3393
3395
|
}) === "!";
|
|
3396
|
+
this.#extractor.write("placeholder");
|
|
3397
|
+
break;
|
|
3394
3398
|
}
|
|
3395
3399
|
return isDynamic || hasDynamicBody;
|
|
3396
3400
|
}
|
|
@@ -3463,7 +3467,7 @@ var HTMLExtractor = class {
|
|
|
3463
3467
|
this.#extractor.write('"');
|
|
3464
3468
|
break;
|
|
3465
3469
|
case 3 /* Dynamic */:
|
|
3466
|
-
this.#extractor.write(`="dynamic
|
|
3470
|
+
this.#extractor.write(`="dynamic"`);
|
|
3467
3471
|
break;
|
|
3468
3472
|
}
|
|
3469
3473
|
}
|
package/marko.internal.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ declare global {
|
|
|
7
7
|
// Extend the Body type to keep track of what is yielded (used for scope hoisted types).
|
|
8
8
|
export interface Body<
|
|
9
9
|
in Params extends readonly any[] = [],
|
|
10
|
-
out Return = void
|
|
10
|
+
out Return = void,
|
|
11
11
|
> {
|
|
12
12
|
(...params: Params): MarkoReturn<Return>;
|
|
13
13
|
}
|
|
@@ -23,11 +23,11 @@ declare global {
|
|
|
23
23
|
export const any: any;
|
|
24
24
|
|
|
25
25
|
export function getGlobal<Override>(
|
|
26
|
-
override: Override
|
|
26
|
+
override: Override,
|
|
27
27
|
): 1 extends Override & 0 ? Marko.Global : Override;
|
|
28
28
|
|
|
29
29
|
export function attrTagNames<Input, Keys extends keyof Input>(
|
|
30
|
-
input: Input
|
|
30
|
+
input: Input,
|
|
31
31
|
): Record<string, never> & {
|
|
32
32
|
[Key in Keys as `@${Input[Key] extends infer Value
|
|
33
33
|
? Value extends { renderBody?: any }
|
|
@@ -58,7 +58,7 @@ declare global {
|
|
|
58
58
|
): string;
|
|
59
59
|
|
|
60
60
|
export function state<Component>(
|
|
61
|
-
component: Component
|
|
61
|
+
component: Component,
|
|
62
62
|
): Component extends {
|
|
63
63
|
state: infer State extends object;
|
|
64
64
|
}
|
|
@@ -71,13 +71,13 @@ declare global {
|
|
|
71
71
|
>;
|
|
72
72
|
|
|
73
73
|
export function instance<Constructor>(
|
|
74
|
-
constructor: Constructor
|
|
74
|
+
constructor: Constructor,
|
|
75
75
|
): Constructor extends abstract new (...args: any) => infer Instance
|
|
76
76
|
? Instance
|
|
77
77
|
: never;
|
|
78
78
|
|
|
79
79
|
export function readScopes<Rendered>(
|
|
80
|
-
rendered: Rendered
|
|
80
|
+
rendered: Rendered,
|
|
81
81
|
): MergeScopes<
|
|
82
82
|
Rendered extends { scopes: Record<any, infer Scope> } ? Scope : never
|
|
83
83
|
> &
|
|
@@ -86,7 +86,7 @@ declare global {
|
|
|
86
86
|
export function assertRendered<Index extends number, Rendered, Result>(
|
|
87
87
|
rendered: Rendered,
|
|
88
88
|
index: Index,
|
|
89
|
-
result: Result
|
|
89
|
+
result: Result,
|
|
90
90
|
): asserts rendered is Rendered & {
|
|
91
91
|
scopes: Record<
|
|
92
92
|
Index,
|
|
@@ -123,7 +123,7 @@ declare global {
|
|
|
123
123
|
| ((...args: any) => any)
|
|
124
124
|
| false
|
|
125
125
|
| void,
|
|
126
|
-
Args extends readonly any[]
|
|
126
|
+
Args extends readonly any[],
|
|
127
127
|
>(
|
|
128
128
|
owner: Owner,
|
|
129
129
|
handler: Handler,
|
|
@@ -135,37 +135,37 @@ declare global {
|
|
|
135
135
|
: (...args: any) => any; // If typescript ever actually supports partial application maybe we do this.
|
|
136
136
|
|
|
137
137
|
export function renderTemplate<Name extends Marko.Template>(
|
|
138
|
-
imported: Promise<{ default: Name }
|
|
138
|
+
imported: Promise<{ default: Name }>,
|
|
139
139
|
): TemplateRenderer<Name>;
|
|
140
140
|
export function renderNativeTag<Name extends string>(
|
|
141
|
-
tag: Name
|
|
141
|
+
tag: Name,
|
|
142
142
|
): NativeTagRenderer<Name>;
|
|
143
143
|
export const missingTag: DefaultRenderer;
|
|
144
144
|
export function renderPreferLocal<Name, Fallback>(
|
|
145
145
|
name: Name,
|
|
146
|
-
fallback: Fallback
|
|
146
|
+
fallback: Fallback,
|
|
147
147
|
): 0 extends 1 & Name ? Fallback : DynamicRenderer<Name>;
|
|
148
148
|
export function renderDynamicTag<Name>(tag: Name): DynamicRenderer<Name>;
|
|
149
149
|
|
|
150
150
|
export function returnTag<
|
|
151
|
-
Input extends { value: unknown; valueChange?: (value: any) => void }
|
|
151
|
+
Input extends { value: unknown; valueChange?: (value: any) => void },
|
|
152
152
|
>(input: Input): Input;
|
|
153
153
|
|
|
154
154
|
export function forTag<
|
|
155
155
|
Value,
|
|
156
|
+
Item extends Value extends
|
|
157
|
+
| readonly (infer Item)[]
|
|
158
|
+
| Iterable<infer Item>
|
|
159
|
+
? Item
|
|
160
|
+
: unknown,
|
|
156
161
|
RenderBody extends Marko.Body<
|
|
157
|
-
[
|
|
158
|
-
value: Value extends readonly (infer Item)[] | Iterable<infer Item>
|
|
159
|
-
? Item
|
|
160
|
-
: unknown,
|
|
161
|
-
index: number,
|
|
162
|
-
all: Value
|
|
163
|
-
],
|
|
162
|
+
[item: Item, index: number, all: Value],
|
|
164
163
|
void
|
|
165
|
-
|
|
164
|
+
>,
|
|
166
165
|
>(input: {
|
|
167
166
|
of: Value;
|
|
168
167
|
renderBody: RenderBody;
|
|
168
|
+
by?: (item: Item, index: number) => string;
|
|
169
169
|
}): ReturnAndScope<RenderBodyScope<RenderBody>, void>;
|
|
170
170
|
|
|
171
171
|
export function forTag<
|
|
@@ -173,22 +173,24 @@ declare global {
|
|
|
173
173
|
RenderBody extends Marko.Body<
|
|
174
174
|
[key: keyof Value, value: Value[keyof Value]],
|
|
175
175
|
void
|
|
176
|
-
|
|
176
|
+
>,
|
|
177
177
|
>(input: {
|
|
178
178
|
in: Value;
|
|
179
179
|
renderBody: RenderBody;
|
|
180
|
+
by?: (value: Value[keyof Value], key: keyof Value) => string;
|
|
180
181
|
}): ReturnAndScope<RenderBodyScope<RenderBody>, void>;
|
|
181
182
|
|
|
182
183
|
export function forTag<
|
|
183
184
|
From extends void | number,
|
|
184
185
|
To extends number,
|
|
185
186
|
Step extends void | number,
|
|
186
|
-
RenderBody extends Marko.Body<[index: number], void
|
|
187
|
+
RenderBody extends Marko.Body<[index: number], void>,
|
|
187
188
|
>(input: {
|
|
188
189
|
from?: From;
|
|
189
190
|
to: To;
|
|
190
191
|
step?: Step;
|
|
191
192
|
renderBody: RenderBody;
|
|
193
|
+
by?: (index: number) => string;
|
|
192
194
|
}): ReturnAndScope<RenderBodyScope<RenderBody>, void>;
|
|
193
195
|
|
|
194
196
|
export function forTag<RenderBody extends AnyMarkoBody>(
|
|
@@ -204,12 +206,12 @@ declare global {
|
|
|
204
206
|
| {
|
|
205
207
|
of: readonly unknown[] | Iterable<unknown>;
|
|
206
208
|
}
|
|
207
|
-
) & { renderBody?: RenderBody }
|
|
209
|
+
) & { renderBody?: RenderBody; by?: (...args: unknown[]) => string },
|
|
208
210
|
): ReturnAndScope<RenderBodyScope<RenderBody>, void>;
|
|
209
211
|
|
|
210
212
|
export function forAttrTag<
|
|
211
213
|
Value extends Iterable<any> | readonly any[],
|
|
212
|
-
Return
|
|
214
|
+
Return,
|
|
213
215
|
>(
|
|
214
216
|
input: {
|
|
215
217
|
of: Value;
|
|
@@ -219,8 +221,8 @@ declare global {
|
|
|
219
221
|
? Item
|
|
220
222
|
: unknown,
|
|
221
223
|
index: number,
|
|
222
|
-
all: Value
|
|
223
|
-
) => Return
|
|
224
|
+
all: Value,
|
|
225
|
+
) => Return,
|
|
224
226
|
): {
|
|
225
227
|
[Key in keyof Return]: Return[Key] extends
|
|
226
228
|
| readonly (infer Item)[]
|
|
@@ -233,7 +235,7 @@ declare global {
|
|
|
233
235
|
input: {
|
|
234
236
|
in: Value;
|
|
235
237
|
},
|
|
236
|
-
renderBody: (key: keyof Value, value: Value[keyof Value]) => Return
|
|
238
|
+
renderBody: (key: keyof Value, value: Value[keyof Value]) => Return,
|
|
237
239
|
): {
|
|
238
240
|
[Key in keyof Return]: Return[Key] extends
|
|
239
241
|
| readonly (infer Item)[]
|
|
@@ -246,14 +248,14 @@ declare global {
|
|
|
246
248
|
From extends void | number,
|
|
247
249
|
To extends number,
|
|
248
250
|
Step extends void | number,
|
|
249
|
-
Return
|
|
251
|
+
Return,
|
|
250
252
|
>(
|
|
251
253
|
input: {
|
|
252
254
|
from?: From;
|
|
253
255
|
to: To;
|
|
254
256
|
step?: Step;
|
|
255
257
|
},
|
|
256
|
-
renderBody: (index: number) => Return
|
|
258
|
+
renderBody: (index: number) => Return,
|
|
257
259
|
): {
|
|
258
260
|
[Key in keyof Return]: Return[Key] extends
|
|
259
261
|
| readonly (infer Item)[]
|
|
@@ -261,10 +263,10 @@ declare global {
|
|
|
261
263
|
? number extends From | To | Step
|
|
262
264
|
? MaybeRepeatable<Item>
|
|
263
265
|
: Step extends 0
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
266
|
+
? never
|
|
267
|
+
: [To] extends [From extends void ? 0 : From]
|
|
268
|
+
? undefined
|
|
269
|
+
: Repeatable<Item>
|
|
268
270
|
: never;
|
|
269
271
|
};
|
|
270
272
|
|
|
@@ -299,29 +301,31 @@ declare global {
|
|
|
299
301
|
export type DynamicRenderer<Name> = 0 extends 1 & Name
|
|
300
302
|
? DefaultRenderer
|
|
301
303
|
: [Name] extends [Marko.Template]
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
304
|
+
? TemplateRenderer<Name>
|
|
305
|
+
: [Name] extends [string]
|
|
306
|
+
? NativeTagRenderer<Name>
|
|
307
|
+
: [Name] extends [AnyMarkoBody]
|
|
308
|
+
? BodyRenderer<Name>
|
|
309
|
+
: [Name] extends [{ renderBody?: AnyMarkoBody }]
|
|
310
|
+
? [Name["renderBody"]] extends [AnyMarkoBody]
|
|
311
|
+
? BodyRenderer<Name["renderBody"]>
|
|
312
|
+
: BaseRenderer<
|
|
313
|
+
RenderBodyInput<
|
|
314
|
+
BodyParameters<Exclude<Name["renderBody"], void>>
|
|
315
|
+
>
|
|
316
|
+
>
|
|
317
|
+
: DefaultRenderer;
|
|
314
318
|
|
|
315
319
|
export type TemplateRenderer<Template> = Template extends {
|
|
316
320
|
_: infer Renderer;
|
|
317
321
|
}
|
|
318
322
|
? Renderer
|
|
319
323
|
: Template extends Marko.Template<
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
324
|
+
infer Input extends Record<string, unknown>,
|
|
325
|
+
infer Return
|
|
326
|
+
>
|
|
327
|
+
? BaseRenderer<Input, Return>
|
|
328
|
+
: never;
|
|
325
329
|
|
|
326
330
|
export interface NativeTagRenderer<Name extends string> {
|
|
327
331
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
@@ -331,7 +335,7 @@ declare global {
|
|
|
331
335
|
Relate<
|
|
332
336
|
__marko_internal_input,
|
|
333
337
|
Marko.Directives & Marko.NativeTags[Name]["input"]
|
|
334
|
-
|
|
338
|
+
>,
|
|
335
339
|
) => ReturnAndScope<
|
|
336
340
|
Scopes<__marko_internal_input>,
|
|
337
341
|
Marko.NativeTags[Name]["return"]
|
|
@@ -346,7 +350,7 @@ declare global {
|
|
|
346
350
|
Relate<
|
|
347
351
|
__marko_internal_input,
|
|
348
352
|
Marko.Directives & RenderBodyInput<BodyParameters<Body>>
|
|
349
|
-
|
|
353
|
+
>,
|
|
350
354
|
) => ReturnAndScope<
|
|
351
355
|
Scopes<__marko_internal_input>,
|
|
352
356
|
BodyReturnType<Body>
|
|
@@ -355,19 +359,19 @@ declare global {
|
|
|
355
359
|
|
|
356
360
|
export interface BaseRenderer<
|
|
357
361
|
Input extends Record<PropertyKey, unknown>,
|
|
358
|
-
Return = void
|
|
362
|
+
Return = void,
|
|
359
363
|
> {
|
|
360
364
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
361
365
|
(): () => <__marko_input_with_scope extends unknown>(
|
|
362
366
|
input: Marko.Directives &
|
|
363
367
|
Input &
|
|
364
|
-
Relate<__marko_input_with_scope, Marko.Directives & Input
|
|
368
|
+
Relate<__marko_input_with_scope, Marko.Directives & Input>,
|
|
365
369
|
) => ReturnAndScope<Scopes<__marko_input_with_scope>, Return>;
|
|
366
370
|
}
|
|
367
371
|
|
|
368
372
|
export interface DefaultRenderer {
|
|
369
373
|
(): () => <Input extends Record<PropertyKey, unknown>>(
|
|
370
|
-
input: Input
|
|
374
|
+
input: Input,
|
|
371
375
|
) => ReturnAndScope<Scopes<Input>, void>;
|
|
372
376
|
}
|
|
373
377
|
|
|
@@ -399,15 +403,15 @@ type RenderBodyInput<Args extends readonly unknown[]> = Args extends {
|
|
|
399
403
|
? number extends Length
|
|
400
404
|
? { value?: Args }
|
|
401
405
|
: 0 extends Length
|
|
402
|
-
|
|
403
|
-
|
|
406
|
+
? { value?: [] }
|
|
407
|
+
: { value: Args }
|
|
404
408
|
: never;
|
|
405
409
|
|
|
406
410
|
type Scopes<Input> = 0 extends 1 & Input
|
|
407
411
|
? never
|
|
408
412
|
: Input extends Record<any, unknown>
|
|
409
|
-
|
|
410
|
-
|
|
413
|
+
? MergeScopes<FlatScopes<Input>>
|
|
414
|
+
: never;
|
|
411
415
|
|
|
412
416
|
type ComponentEventHandlers<Component extends Marko.Component> = {
|
|
413
417
|
[K in Exclude<
|
|
@@ -424,14 +428,14 @@ type FlatScopes<Input extends object, Objects = Input> = Input[keyof Input &
|
|
|
424
428
|
? 0 extends 1 & Prop
|
|
425
429
|
? unknown
|
|
426
430
|
: Prop extends (...args: any) => { [Marko._.scope]: infer Scope }
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
431
|
+
? unknown extends Scope
|
|
432
|
+
? never
|
|
433
|
+
: Scope
|
|
434
|
+
: Prop extends object
|
|
435
|
+
? Prop extends Extract<Objects, Prop>
|
|
436
|
+
? never
|
|
437
|
+
: FlatScopes<Prop, Objects | Prop>
|
|
438
|
+
: never
|
|
435
439
|
: unknown;
|
|
436
440
|
|
|
437
441
|
type MergeScopes<Scopes> = {
|
|
@@ -451,12 +455,12 @@ type MergeOptionalScopes<Scopes> = {
|
|
|
451
455
|
type MergeAttrTags<Attrs extends readonly any[]> = Attrs extends readonly [
|
|
452
456
|
infer A,
|
|
453
457
|
infer B,
|
|
454
|
-
...infer Rest
|
|
458
|
+
...infer Rest,
|
|
455
459
|
]
|
|
456
460
|
? MergeAttrTags<[MergeAttrTag<A, B>, ...Rest]>
|
|
457
461
|
: Attrs extends readonly [infer A]
|
|
458
|
-
|
|
459
|
-
|
|
462
|
+
? A
|
|
463
|
+
: never;
|
|
460
464
|
|
|
461
465
|
type MergeAttrTag<A, B> = {
|
|
462
466
|
[K in keyof A | keyof B]: K extends keyof A
|
|
@@ -464,21 +468,21 @@ type MergeAttrTag<A, B> = {
|
|
|
464
468
|
? MergeAttrTagValue<A[K], B[K]>
|
|
465
469
|
: A[K]
|
|
466
470
|
: K extends keyof B
|
|
467
|
-
|
|
468
|
-
|
|
471
|
+
? B[K]
|
|
472
|
+
: never;
|
|
469
473
|
};
|
|
470
474
|
|
|
471
475
|
type MergeAttrTagValue<A, B> = A extends readonly any[]
|
|
472
476
|
? B extends readonly any[]
|
|
473
477
|
? [...A, ...B]
|
|
474
478
|
: B extends void
|
|
475
|
-
|
|
476
|
-
|
|
479
|
+
? A
|
|
480
|
+
: [...A, B]
|
|
477
481
|
: A extends void
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
+
? B
|
|
483
|
+
: B extends void
|
|
484
|
+
? A
|
|
485
|
+
: [A, B];
|
|
482
486
|
|
|
483
487
|
type AttrTagByListSize<T, Item> = T extends
|
|
484
488
|
| readonly [any, any, ...any[]]
|
|
@@ -486,18 +490,18 @@ type AttrTagByListSize<T, Item> = T extends
|
|
|
486
490
|
| readonly [any, ...any[], any]
|
|
487
491
|
? Repeated<Item>
|
|
488
492
|
: T extends readonly [any]
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
493
|
+
? Item
|
|
494
|
+
: T extends readonly [any, ...any[]] | readonly [...any[], any]
|
|
495
|
+
? Repeatable<Item>
|
|
496
|
+
: T extends readonly []
|
|
497
|
+
? undefined
|
|
498
|
+
: MaybeRepeatable<Item>;
|
|
495
499
|
|
|
496
500
|
type AttrTagByObjectSize<
|
|
497
501
|
Value,
|
|
498
502
|
Item,
|
|
499
503
|
Keys = RecordKeys<Value>,
|
|
500
|
-
KnownKeys = KnownRecordKeys<Value
|
|
504
|
+
KnownKeys = KnownRecordKeys<Value>,
|
|
501
505
|
> = CheckNever<
|
|
502
506
|
Keys,
|
|
503
507
|
undefined,
|
|
@@ -527,16 +531,16 @@ type KnownRecordKeys<T> = keyof {
|
|
|
527
531
|
[Key in keyof T as string extends Key
|
|
528
532
|
? never
|
|
529
533
|
: number extends Key
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
+
? never
|
|
535
|
+
: symbol extends Key
|
|
536
|
+
? never
|
|
537
|
+
: CheckNever<T[Key], never, Key>]: 0;
|
|
534
538
|
};
|
|
535
539
|
|
|
536
540
|
type CheckNever<T, If, Else> = [T] extends [never] ? If : Else;
|
|
537
541
|
|
|
538
542
|
type UnionToIntersection<T> = (T extends any ? (_: T) => any : never) extends (
|
|
539
|
-
_: infer U
|
|
543
|
+
_: infer U,
|
|
540
544
|
) => any
|
|
541
545
|
? U
|
|
542
546
|
: never;
|
package/package.json
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marko/language-tools",
|
|
3
3
|
"description": "Marko Language Tools",
|
|
4
|
-
"version": "2.1.
|
|
4
|
+
"version": "2.1.8",
|
|
5
5
|
"bugs": "https://github.com/marko-js/language-server/issues/new?template=Bug_report.md",
|
|
6
6
|
"peerDependencies": {
|
|
7
7
|
"@marko/compiler": "^5.28.4"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@babel/helper-validator-identifier": "^7.22.20",
|
|
11
|
-
"@babel/parser": "^7.23.
|
|
12
|
-
"htmljs-parser": "^5.5.
|
|
11
|
+
"@babel/parser": "^7.23.5",
|
|
12
|
+
"htmljs-parser": "^5.5.1",
|
|
13
13
|
"relative-import-path": "^1.0.0"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@babel/code-frame": "^7.
|
|
17
|
-
"@marko/compiler": "^5.
|
|
18
|
-
"@marko/translator-default": "^5.31.
|
|
19
|
-
"@types/babel__code-frame": "^7.0.
|
|
20
|
-
"@types/babel__helper-validator-identifier": "^7.15.
|
|
16
|
+
"@babel/code-frame": "^7.23.5",
|
|
17
|
+
"@marko/compiler": "^5.34.1",
|
|
18
|
+
"@marko/translator-default": "^5.31.8",
|
|
19
|
+
"@types/babel__code-frame": "^7.0.6",
|
|
20
|
+
"@types/babel__helper-validator-identifier": "^7.15.2",
|
|
21
21
|
"@typescript/vfs": "^1.5.0",
|
|
22
|
-
"marko": "^5.
|
|
22
|
+
"marko": "^5.32.0",
|
|
23
23
|
"mitata": "^0.1.6",
|
|
24
|
-
"tsx": "^
|
|
24
|
+
"tsx": "^4.6.2"
|
|
25
25
|
},
|
|
26
26
|
"exports": {
|
|
27
27
|
".": {
|