@marko/language-tools 2.5.35 → 2.5.37

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
@@ -2118,9 +2118,9 @@ export { type Component }
2118
2118
  );
2119
2119
  } else {
2120
2120
  this.#extractor.write(
2121
- `/** @typedef {import("${stripExt(
2121
+ `/** @typedef {${varShared("ResolveComponent")}<typeof import("${stripExt(
2122
2122
  (0, import_relative_import_path.relativeImportPath)(this.#filename, componentFileName)
2123
- )}") extends infer Component ? Component extends { default: infer Component } ? Component : Component : Marko.Component<Input${typeArgsStr}>} Component */
2123
+ )}")>} Component */
2124
2124
  `
2125
2125
  );
2126
2126
  }
package/dist/index.mjs CHANGED
@@ -2081,9 +2081,9 @@ export { type Component }
2081
2081
  );
2082
2082
  } else {
2083
2083
  this.#extractor.write(
2084
- `/** @typedef {import("${stripExt(
2084
+ `/** @typedef {${varShared("ResolveComponent")}<typeof import("${stripExt(
2085
2085
  relativeImportPath(this.#filename, componentFileName)
2086
- )}") extends infer Component ? Component extends { default: infer Component } ? Component : Component : Marko.Component<Input${typeArgsStr}>} Component */
2086
+ )}")>} Component */
2087
2087
  `
2088
2088
  );
2089
2089
  }
@@ -461,6 +461,17 @@ declare global {
461
461
  (): () => <Input>(input: Input) => ReturnAndScope<Scopes<Input>, void>;
462
462
  }
463
463
 
464
+ export type ResolveComponent<Component> = CheckNever<
465
+ ComponentOf<
466
+ InstanceOf<
467
+ Component extends { default: infer Component }
468
+ ? Component
469
+ : Component
470
+ >
471
+ >,
472
+ Marko.Component
473
+ >;
474
+
464
475
  export type Relate<A, B> = B extends A ? A : B;
465
476
  }
466
477
  }
@@ -621,7 +632,9 @@ type KnownRecordKeys<T> = keyof {
621
632
  : CheckNever<T[Key], never, Key>]: 0;
622
633
  };
623
634
 
624
- type CheckNever<T, If, Else> = [T] extends [never] ? If : Else;
635
+ type CheckNever<T, If, Else = T> = [T] extends [never] ? If : Else;
636
+ type ComponentOf<T> = T extends Marko.Component ? T : T & Marko.Component;
637
+ type InstanceOf<T> = T extends abstract new () => infer R ? R : T;
625
638
 
626
639
  type UnionToIntersection<T> = (T extends any ? (_: T) => any : never) extends (
627
640
  _: infer U,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@marko/language-tools",
3
3
  "description": "Marko Language Tools",
4
- "version": "2.5.35",
4
+ "version": "2.5.37",
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"