@marko/language-tools 2.5.36 → 2.5.38

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
@@ -2110,17 +2110,16 @@ var ScriptExtractor = class {
2110
2110
  if (isExternalComponentFile) {
2111
2111
  if (this.#scriptLang === "ts" /* ts */) {
2112
2112
  this.#extractor.write(
2113
- `import type Component from "${stripExt(
2113
+ `export interface Component extends ${varShared("ResolveComponent")}<typeof import("${stripExt(
2114
2114
  (0, import_relative_import_path.relativeImportPath)(this.#filename, componentFileName)
2115
- )}";
2116
- export { type Component }
2115
+ )}")> {}
2117
2116
  `
2118
2117
  );
2119
2118
  } else {
2120
2119
  this.#extractor.write(
2121
- `/** @typedef {${varShared("resolveComponent")}(import("${stripExt(
2120
+ `/** @typedef {${varShared("ResolveComponent")}<typeof import("${stripExt(
2122
2121
  (0, import_relative_import_path.relativeImportPath)(this.#filename, componentFileName)
2123
- )}"))} Component */
2122
+ )}")>} Component */
2124
2123
  `
2125
2124
  );
2126
2125
  }
package/dist/index.mjs CHANGED
@@ -2073,17 +2073,16 @@ var ScriptExtractor = class {
2073
2073
  if (isExternalComponentFile) {
2074
2074
  if (this.#scriptLang === "ts" /* ts */) {
2075
2075
  this.#extractor.write(
2076
- `import type Component from "${stripExt(
2076
+ `export interface Component extends ${varShared("ResolveComponent")}<typeof import("${stripExt(
2077
2077
  relativeImportPath(this.#filename, componentFileName)
2078
- )}";
2079
- export { type Component }
2078
+ )}")> {}
2080
2079
  `
2081
2080
  );
2082
2081
  } else {
2083
2082
  this.#extractor.write(
2084
- `/** @typedef {${varShared("resolveComponent")}(import("${stripExt(
2083
+ `/** @typedef {${varShared("ResolveComponent")}<typeof import("${stripExt(
2085
2084
  relativeImportPath(this.#filename, componentFileName)
2086
- )}"))} Component */
2085
+ )}")>} Component */
2087
2086
  `
2088
2087
  );
2089
2088
  }
@@ -162,15 +162,6 @@ declare global {
162
162
  export function resolveTemplate<Template>(
163
163
  imported: Promise<{ default: Template }>,
164
164
  ): Template;
165
- export function resolveComponent<Component>(
166
- component: Component,
167
- ): CheckNever<
168
- (Component extends { default: infer Component }
169
- ? Component
170
- : Component) &
171
- Marko.Component<unknown, unknown>,
172
- Marko.Component<unknown, unknown>
173
- >;
174
165
  export function fallbackTemplate<Tag, Template>(
175
166
  tag: Tag,
176
167
  fallback: Promise<{ default: Template }>,
@@ -470,6 +461,17 @@ declare global {
470
461
  (): () => <Input>(input: Input) => ReturnAndScope<Scopes<Input>, void>;
471
462
  }
472
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
+
473
475
  export type Relate<A, B> = B extends A ? A : B;
474
476
  }
475
477
  }
@@ -631,6 +633,8 @@ type KnownRecordKeys<T> = keyof {
631
633
  };
632
634
 
633
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;
634
638
 
635
639
  type UnionToIntersection<T> = (T extends any ? (_: T) => any : never) extends (
636
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.36",
4
+ "version": "2.5.38",
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"