@marko/language-tools 2.1.6 → 2.1.7

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 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("rendered")}, ${renderId}, `
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(typeChecker.getTypeOfSymbol(valueType))
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${this.#dynamicAttrValueCounter++}"`);
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("rendered")}, ${renderId}, `
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(typeChecker.getTypeOfSymbol(valueType))
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${this.#dynamicAttrValueCounter++}"`);
3470
+ this.#extractor.write(`="dynamic"`);
3467
3471
  break;
3468
3472
  }
3469
3473
  }
@@ -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,20 +135,20 @@ 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<
@@ -159,10 +159,10 @@ declare global {
159
159
  ? Item
160
160
  : unknown,
161
161
  index: number,
162
- all: Value
162
+ all: Value,
163
163
  ],
164
164
  void
165
- >
165
+ >,
166
166
  >(input: {
167
167
  of: Value;
168
168
  renderBody: RenderBody;
@@ -173,7 +173,7 @@ 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;
@@ -183,7 +183,7 @@ declare global {
183
183
  From extends void | number,
184
184
  To extends number,
185
185
  Step extends void | number,
186
- RenderBody extends Marko.Body<[index: number], void>
186
+ RenderBody extends Marko.Body<[index: number], void>,
187
187
  >(input: {
188
188
  from?: From;
189
189
  to: To;
@@ -204,12 +204,12 @@ declare global {
204
204
  | {
205
205
  of: readonly unknown[] | Iterable<unknown>;
206
206
  }
207
- ) & { renderBody?: RenderBody }
207
+ ) & { renderBody?: RenderBody },
208
208
  ): ReturnAndScope<RenderBodyScope<RenderBody>, void>;
209
209
 
210
210
  export function forAttrTag<
211
211
  Value extends Iterable<any> | readonly any[],
212
- Return
212
+ Return,
213
213
  >(
214
214
  input: {
215
215
  of: Value;
@@ -219,8 +219,8 @@ declare global {
219
219
  ? Item
220
220
  : unknown,
221
221
  index: number,
222
- all: Value
223
- ) => Return
222
+ all: Value,
223
+ ) => Return,
224
224
  ): {
225
225
  [Key in keyof Return]: Return[Key] extends
226
226
  | readonly (infer Item)[]
@@ -233,7 +233,7 @@ declare global {
233
233
  input: {
234
234
  in: Value;
235
235
  },
236
- renderBody: (key: keyof Value, value: Value[keyof Value]) => Return
236
+ renderBody: (key: keyof Value, value: Value[keyof Value]) => Return,
237
237
  ): {
238
238
  [Key in keyof Return]: Return[Key] extends
239
239
  | readonly (infer Item)[]
@@ -246,14 +246,14 @@ declare global {
246
246
  From extends void | number,
247
247
  To extends number,
248
248
  Step extends void | number,
249
- Return
249
+ Return,
250
250
  >(
251
251
  input: {
252
252
  from?: From;
253
253
  to: To;
254
254
  step?: Step;
255
255
  },
256
- renderBody: (index: number) => Return
256
+ renderBody: (index: number) => Return,
257
257
  ): {
258
258
  [Key in keyof Return]: Return[Key] extends
259
259
  | readonly (infer Item)[]
@@ -261,10 +261,10 @@ declare global {
261
261
  ? number extends From | To | Step
262
262
  ? MaybeRepeatable<Item>
263
263
  : Step extends 0
264
- ? never
265
- : [To] extends [From extends void ? 0 : From]
266
- ? undefined
267
- : Repeatable<Item>
264
+ ? never
265
+ : [To] extends [From extends void ? 0 : From]
266
+ ? undefined
267
+ : Repeatable<Item>
268
268
  : never;
269
269
  };
270
270
 
@@ -299,29 +299,31 @@ declare global {
299
299
  export type DynamicRenderer<Name> = 0 extends 1 & Name
300
300
  ? DefaultRenderer
301
301
  : [Name] extends [Marko.Template]
302
- ? TemplateRenderer<Name>
303
- : [Name] extends [string]
304
- ? NativeTagRenderer<Name>
305
- : [Name] extends [AnyMarkoBody]
306
- ? BodyRenderer<Name>
307
- : [Name] extends [{ renderBody?: AnyMarkoBody }]
308
- ? [Name["renderBody"]] extends [AnyMarkoBody]
309
- ? BodyRenderer<Name["renderBody"]>
310
- : BaseRenderer<
311
- RenderBodyInput<BodyParameters<Exclude<Name["renderBody"], void>>>
312
- >
313
- : DefaultRenderer;
302
+ ? TemplateRenderer<Name>
303
+ : [Name] extends [string]
304
+ ? NativeTagRenderer<Name>
305
+ : [Name] extends [AnyMarkoBody]
306
+ ? BodyRenderer<Name>
307
+ : [Name] extends [{ renderBody?: AnyMarkoBody }]
308
+ ? [Name["renderBody"]] extends [AnyMarkoBody]
309
+ ? BodyRenderer<Name["renderBody"]>
310
+ : BaseRenderer<
311
+ RenderBodyInput<
312
+ BodyParameters<Exclude<Name["renderBody"], void>>
313
+ >
314
+ >
315
+ : DefaultRenderer;
314
316
 
315
317
  export type TemplateRenderer<Template> = Template extends {
316
318
  _: infer Renderer;
317
319
  }
318
320
  ? Renderer
319
321
  : Template extends Marko.Template<
320
- infer Input extends Record<string, unknown>,
321
- infer Return
322
- >
323
- ? BaseRenderer<Input, Return>
324
- : never;
322
+ infer Input extends Record<string, unknown>,
323
+ infer Return
324
+ >
325
+ ? BaseRenderer<Input, Return>
326
+ : never;
325
327
 
326
328
  export interface NativeTagRenderer<Name extends string> {
327
329
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
@@ -331,7 +333,7 @@ declare global {
331
333
  Relate<
332
334
  __marko_internal_input,
333
335
  Marko.Directives & Marko.NativeTags[Name]["input"]
334
- >
336
+ >,
335
337
  ) => ReturnAndScope<
336
338
  Scopes<__marko_internal_input>,
337
339
  Marko.NativeTags[Name]["return"]
@@ -346,7 +348,7 @@ declare global {
346
348
  Relate<
347
349
  __marko_internal_input,
348
350
  Marko.Directives & RenderBodyInput<BodyParameters<Body>>
349
- >
351
+ >,
350
352
  ) => ReturnAndScope<
351
353
  Scopes<__marko_internal_input>,
352
354
  BodyReturnType<Body>
@@ -355,19 +357,19 @@ declare global {
355
357
 
356
358
  export interface BaseRenderer<
357
359
  Input extends Record<PropertyKey, unknown>,
358
- Return = void
360
+ Return = void,
359
361
  > {
360
362
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
361
363
  (): () => <__marko_input_with_scope extends unknown>(
362
364
  input: Marko.Directives &
363
365
  Input &
364
- Relate<__marko_input_with_scope, Marko.Directives & Input>
366
+ Relate<__marko_input_with_scope, Marko.Directives & Input>,
365
367
  ) => ReturnAndScope<Scopes<__marko_input_with_scope>, Return>;
366
368
  }
367
369
 
368
370
  export interface DefaultRenderer {
369
371
  (): () => <Input extends Record<PropertyKey, unknown>>(
370
- input: Input
372
+ input: Input,
371
373
  ) => ReturnAndScope<Scopes<Input>, void>;
372
374
  }
373
375
 
@@ -399,15 +401,15 @@ type RenderBodyInput<Args extends readonly unknown[]> = Args extends {
399
401
  ? number extends Length
400
402
  ? { value?: Args }
401
403
  : 0 extends Length
402
- ? { value?: [] }
403
- : { value: Args }
404
+ ? { value?: [] }
405
+ : { value: Args }
404
406
  : never;
405
407
 
406
408
  type Scopes<Input> = 0 extends 1 & Input
407
409
  ? never
408
410
  : Input extends Record<any, unknown>
409
- ? MergeScopes<FlatScopes<Input>>
410
- : never;
411
+ ? MergeScopes<FlatScopes<Input>>
412
+ : never;
411
413
 
412
414
  type ComponentEventHandlers<Component extends Marko.Component> = {
413
415
  [K in Exclude<
@@ -424,14 +426,14 @@ type FlatScopes<Input extends object, Objects = Input> = Input[keyof Input &
424
426
  ? 0 extends 1 & Prop
425
427
  ? unknown
426
428
  : Prop extends (...args: any) => { [Marko._.scope]: infer Scope }
427
- ? unknown extends Scope
428
- ? never
429
- : Scope
430
- : Prop extends object
431
- ? Prop extends Extract<Objects, Prop>
432
- ? never
433
- : FlatScopes<Prop, Objects | Prop>
434
- : never
429
+ ? unknown extends Scope
430
+ ? never
431
+ : Scope
432
+ : Prop extends object
433
+ ? Prop extends Extract<Objects, Prop>
434
+ ? never
435
+ : FlatScopes<Prop, Objects | Prop>
436
+ : never
435
437
  : unknown;
436
438
 
437
439
  type MergeScopes<Scopes> = {
@@ -451,12 +453,12 @@ type MergeOptionalScopes<Scopes> = {
451
453
  type MergeAttrTags<Attrs extends readonly any[]> = Attrs extends readonly [
452
454
  infer A,
453
455
  infer B,
454
- ...infer Rest
456
+ ...infer Rest,
455
457
  ]
456
458
  ? MergeAttrTags<[MergeAttrTag<A, B>, ...Rest]>
457
459
  : Attrs extends readonly [infer A]
458
- ? A
459
- : never;
460
+ ? A
461
+ : never;
460
462
 
461
463
  type MergeAttrTag<A, B> = {
462
464
  [K in keyof A | keyof B]: K extends keyof A
@@ -464,21 +466,21 @@ type MergeAttrTag<A, B> = {
464
466
  ? MergeAttrTagValue<A[K], B[K]>
465
467
  : A[K]
466
468
  : K extends keyof B
467
- ? B[K]
468
- : never;
469
+ ? B[K]
470
+ : never;
469
471
  };
470
472
 
471
473
  type MergeAttrTagValue<A, B> = A extends readonly any[]
472
474
  ? B extends readonly any[]
473
475
  ? [...A, ...B]
474
476
  : B extends void
475
- ? A
476
- : [...A, B]
477
+ ? A
478
+ : [...A, B]
477
479
  : A extends void
478
- ? B
479
- : B extends void
480
- ? A
481
- : [A, B];
480
+ ? B
481
+ : B extends void
482
+ ? A
483
+ : [A, B];
482
484
 
483
485
  type AttrTagByListSize<T, Item> = T extends
484
486
  | readonly [any, any, ...any[]]
@@ -486,18 +488,18 @@ type AttrTagByListSize<T, Item> = T extends
486
488
  | readonly [any, ...any[], any]
487
489
  ? Repeated<Item>
488
490
  : T extends readonly [any]
489
- ? Item
490
- : T extends readonly [any, ...any[]] | readonly [...any[], any]
491
- ? Repeatable<Item>
492
- : T extends readonly []
493
- ? undefined
494
- : MaybeRepeatable<Item>;
491
+ ? Item
492
+ : T extends readonly [any, ...any[]] | readonly [...any[], any]
493
+ ? Repeatable<Item>
494
+ : T extends readonly []
495
+ ? undefined
496
+ : MaybeRepeatable<Item>;
495
497
 
496
498
  type AttrTagByObjectSize<
497
499
  Value,
498
500
  Item,
499
501
  Keys = RecordKeys<Value>,
500
- KnownKeys = KnownRecordKeys<Value>
502
+ KnownKeys = KnownRecordKeys<Value>,
501
503
  > = CheckNever<
502
504
  Keys,
503
505
  undefined,
@@ -527,16 +529,16 @@ type KnownRecordKeys<T> = keyof {
527
529
  [Key in keyof T as string extends Key
528
530
  ? never
529
531
  : number extends Key
530
- ? never
531
- : symbol extends Key
532
- ? never
533
- : CheckNever<T[Key], never, Key>]: 0;
532
+ ? never
533
+ : symbol extends Key
534
+ ? never
535
+ : CheckNever<T[Key], never, Key>]: 0;
534
536
  };
535
537
 
536
538
  type CheckNever<T, If, Else> = [T] extends [never] ? If : Else;
537
539
 
538
540
  type UnionToIntersection<T> = (T extends any ? (_: T) => any : never) extends (
539
- _: infer U
541
+ _: infer U,
540
542
  ) => any
541
543
  ? U
542
544
  : 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.6",
4
+ "version": "2.1.7",
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.0",
12
- "htmljs-parser": "^5.5.0",
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.22.13",
17
- "@marko/compiler": "^5.33.2",
18
- "@marko/translator-default": "^5.31.3",
19
- "@types/babel__code-frame": "^7.0.4",
20
- "@types/babel__helper-validator-identifier": "^7.15.0",
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.31.10",
22
+ "marko": "^5.32.0",
23
23
  "mitata": "^0.1.6",
24
- "tsx": "^3.13.0"
24
+ "tsx": "^4.6.2"
25
25
  },
26
26
  "exports": {
27
27
  ".": {