@marko/language-tools 2.5.34 → 2.5.36

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
@@ -2101,7 +2101,7 @@ var ScriptExtractor = class {
2101
2101
  );
2102
2102
  } else {
2103
2103
  this.#extractor.write(
2104
- `/** @typedef {${isExternalComponentFile ? "Component['input']" : "Record<string, unknown>"}} Input */
2104
+ `/** @typedef {Record<string, unknown>} Input */
2105
2105
  `
2106
2106
  );
2107
2107
  }
@@ -2113,13 +2113,14 @@ var ScriptExtractor = class {
2113
2113
  `import type Component from "${stripExt(
2114
2114
  (0, import_relative_import_path.relativeImportPath)(this.#filename, componentFileName)
2115
2115
  )}";
2116
+ export { type Component }
2116
2117
  `
2117
2118
  );
2118
2119
  } else {
2119
2120
  this.#extractor.write(
2120
- `/** @typedef {import("${stripExt(
2121
+ `/** @typedef {${varShared("resolveComponent")}(import("${stripExt(
2121
2122
  (0, import_relative_import_path.relativeImportPath)(this.#filename, componentFileName)
2122
- )}") extends infer Component ? Component extends { default: infer Component } ? Component : Component : never} Component */
2123
+ )}"))} Component */
2123
2124
  `
2124
2125
  );
2125
2126
  }
@@ -3915,7 +3916,12 @@ var marko_default = {
3915
3916
  return ts.isTypeAliasDeclaration(statement) && statement.name.escapedText === "Input" && ts.isTypeLiteralNode(statement.type) && !statement.typeParameters && statement.type.members.length === 0 || ts.isInterfaceDeclaration(statement) && statement.name.escapedText === "Input" && !statement.heritageClauses && !statement.typeParameters && statement.members.length === 0;
3916
3917
  }
3917
3918
  function isExportComponentType(statement) {
3918
- return ts.isExportDeclaration(statement) && statement.exportClause && ts.isNamedExports(statement.exportClause) && statement.exportClause.elements.length === 1 && ts.isIdentifier(statement.exportClause.elements[0].name) && statement.exportClause.elements[0].name.escapedText === "Component";
3919
+ if (ts.isExportDeclaration(statement)) {
3920
+ return statement.exportClause && ts.isNamedExports(statement.exportClause) && statement.exportClause.elements.length === 1 && ts.isIdentifier(statement.exportClause.elements[0].name) && statement.exportClause.elements[0].name.escapedText === "Component";
3921
+ } else if (ts.isTypeAliasDeclaration(statement)) {
3922
+ return statement.name.text === "Component";
3923
+ }
3924
+ return false;
3919
3925
  }
3920
3926
  function isVariableStatementForName(statement, name) {
3921
3927
  if (ts.isVariableStatement(statement)) {
package/dist/index.mjs CHANGED
@@ -2064,7 +2064,7 @@ var ScriptExtractor = class {
2064
2064
  );
2065
2065
  } else {
2066
2066
  this.#extractor.write(
2067
- `/** @typedef {${isExternalComponentFile ? "Component['input']" : "Record<string, unknown>"}} Input */
2067
+ `/** @typedef {Record<string, unknown>} Input */
2068
2068
  `
2069
2069
  );
2070
2070
  }
@@ -2076,13 +2076,14 @@ var ScriptExtractor = class {
2076
2076
  `import type Component from "${stripExt(
2077
2077
  relativeImportPath(this.#filename, componentFileName)
2078
2078
  )}";
2079
+ export { type Component }
2079
2080
  `
2080
2081
  );
2081
2082
  } else {
2082
2083
  this.#extractor.write(
2083
- `/** @typedef {import("${stripExt(
2084
+ `/** @typedef {${varShared("resolveComponent")}(import("${stripExt(
2084
2085
  relativeImportPath(this.#filename, componentFileName)
2085
- )}") extends infer Component ? Component extends { default: infer Component } ? Component : Component : never} Component */
2086
+ )}"))} Component */
2086
2087
  `
2087
2088
  );
2088
2089
  }
@@ -3878,7 +3879,12 @@ var marko_default = {
3878
3879
  return ts.isTypeAliasDeclaration(statement) && statement.name.escapedText === "Input" && ts.isTypeLiteralNode(statement.type) && !statement.typeParameters && statement.type.members.length === 0 || ts.isInterfaceDeclaration(statement) && statement.name.escapedText === "Input" && !statement.heritageClauses && !statement.typeParameters && statement.members.length === 0;
3879
3880
  }
3880
3881
  function isExportComponentType(statement) {
3881
- return ts.isExportDeclaration(statement) && statement.exportClause && ts.isNamedExports(statement.exportClause) && statement.exportClause.elements.length === 1 && ts.isIdentifier(statement.exportClause.elements[0].name) && statement.exportClause.elements[0].name.escapedText === "Component";
3882
+ if (ts.isExportDeclaration(statement)) {
3883
+ return statement.exportClause && ts.isNamedExports(statement.exportClause) && statement.exportClause.elements.length === 1 && ts.isIdentifier(statement.exportClause.elements[0].name) && statement.exportClause.elements[0].name.escapedText === "Component";
3884
+ } else if (ts.isTypeAliasDeclaration(statement)) {
3885
+ return statement.name.text === "Component";
3886
+ }
3887
+ return false;
3882
3888
  }
3883
3889
  function isVariableStatementForName(statement, name) {
3884
3890
  if (ts.isVariableStatement(statement)) {
@@ -162,6 +162,15 @@ 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
+ >;
165
174
  export function fallbackTemplate<Tag, Template>(
166
175
  tag: Tag,
167
176
  fallback: Promise<{ default: Template }>,
@@ -621,7 +630,7 @@ type KnownRecordKeys<T> = keyof {
621
630
  : CheckNever<T[Key], never, Key>]: 0;
622
631
  };
623
632
 
624
- type CheckNever<T, If, Else> = [T] extends [never] ? If : Else;
633
+ type CheckNever<T, If, Else = T> = [T] extends [never] ? If : Else;
625
634
 
626
635
  type UnionToIntersection<T> = (T extends any ? (_: T) => any : never) extends (
627
636
  _: 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.34",
4
+ "version": "2.5.36",
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"