@formspec/build 0.1.0-alpha.34 → 0.1.0-alpha.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
@@ -3967,7 +3967,7 @@ function resolveRegisteredCustomTypeFromTypeNode(typeNode, extensionRegistry, ch
3967
3967
  };
3968
3968
  }
3969
3969
  if (ts3.isTypeReferenceNode(typeNode) && ts3.isIdentifier(typeNode.typeName)) {
3970
- const aliasDecl = checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
3970
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
3971
3971
  if (aliasDecl !== void 0) {
3972
3972
  return resolveRegisteredCustomTypeFromTypeNode(aliasDecl.type, extensionRegistry, checker);
3973
3973
  }
@@ -4160,22 +4160,23 @@ function getReferencedTypeAliasDeclaration(sourceNode, checker) {
4160
4160
  if (!typeNode || !ts3.isTypeReferenceNode(typeNode)) {
4161
4161
  return void 0;
4162
4162
  }
4163
- return checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
4163
+ return getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4164
4164
  }
4165
4165
  function shouldEmitPrimitiveAliasDefinition(typeNode, checker) {
4166
4166
  if (!ts3.isTypeReferenceNode(typeNode)) {
4167
4167
  return false;
4168
4168
  }
4169
- const aliasDecl = checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
4169
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4170
4170
  if (!aliasDecl) {
4171
4171
  return false;
4172
4172
  }
4173
4173
  const resolved = checker.getTypeFromTypeNode(aliasDecl.type);
4174
4174
  return !!(resolved.flags & (ts3.TypeFlags.String | ts3.TypeFlags.Number | ts3.TypeFlags.BigInt | ts3.TypeFlags.BigIntLiteral | ts3.TypeFlags.Boolean | ts3.TypeFlags.Null));
4175
4175
  }
4176
- function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiting, metadataPolicy = createAnalyzerMetadataPolicy(void 0), extensionRegistry, diagnostics) {
4176
+ function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiting, metadataPolicy = createAnalyzerMetadataPolicy(void 0), extensionRegistry, diagnostics, visitedAliases = /* @__PURE__ */ new Set()) {
4177
4177
  const nestedAliasDecl = type.aliasSymbol?.declarations?.find(ts3.isTypeAliasDeclaration);
4178
- if (nestedAliasDecl !== void 0) {
4178
+ if (nestedAliasDecl !== void 0 && !visitedAliases.has(nestedAliasDecl)) {
4179
+ visitedAliases.add(nestedAliasDecl);
4179
4180
  return resolveAliasedPrimitiveTarget(
4180
4181
  checker.getTypeFromTypeNode(nestedAliasDecl.type),
4181
4182
  checker,
@@ -4184,9 +4185,25 @@ function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiti
4184
4185
  visiting,
4185
4186
  metadataPolicy,
4186
4187
  extensionRegistry,
4187
- diagnostics
4188
+ diagnostics,
4189
+ visitedAliases
4188
4190
  );
4189
4191
  }
4192
+ if (type.flags & ts3.TypeFlags.String) {
4193
+ return { kind: "primitive", primitiveKind: "string" };
4194
+ }
4195
+ if (type.flags & ts3.TypeFlags.Number) {
4196
+ return { kind: "primitive", primitiveKind: "number" };
4197
+ }
4198
+ if (type.flags & (ts3.TypeFlags.BigInt | ts3.TypeFlags.BigIntLiteral)) {
4199
+ return { kind: "primitive", primitiveKind: "bigint" };
4200
+ }
4201
+ if (type.flags & ts3.TypeFlags.Boolean) {
4202
+ return { kind: "primitive", primitiveKind: "boolean" };
4203
+ }
4204
+ if (type.flags & ts3.TypeFlags.Null) {
4205
+ return { kind: "primitive", primitiveKind: "null" };
4206
+ }
4190
4207
  return resolveTypeNode(
4191
4208
  type,
4192
4209
  checker,
@@ -4718,8 +4735,7 @@ function resolveAliasedTypeNode(typeNode, checker, visited = /* @__PURE__ */ new
4718
4735
  if (!ts3.isTypeReferenceNode(typeNode) || !ts3.isIdentifier(typeNode.typeName)) {
4719
4736
  return typeNode;
4720
4737
  }
4721
- const symbol = checker.getSymbolAtLocation(typeNode.typeName);
4722
- const aliasDecl = symbol?.declarations?.find(ts3.isTypeAliasDeclaration);
4738
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4723
4739
  if (aliasDecl === void 0 || visited.has(aliasDecl)) {
4724
4740
  return typeNode;
4725
4741
  }
@@ -4769,8 +4785,7 @@ function extractTypeAliasConstraintNodes(typeNode, checker, file, extensionRegis
4769
4785
  );
4770
4786
  }
4771
4787
  const symbol = checker.getSymbolAtLocation(typeNode.typeName);
4772
- if (!symbol?.declarations) return [];
4773
- const aliasDecl = symbol.declarations.find(ts3.isTypeAliasDeclaration);
4788
+ const aliasDecl = getAliasedTypeAliasDeclaration(symbol, checker);
4774
4789
  if (!aliasDecl) return [];
4775
4790
  if (ts3.isTypeLiteralNode(aliasDecl.type)) return [];
4776
4791
  const aliasFieldType = resolveTypeNode(
@@ -4793,6 +4808,18 @@ function extractTypeAliasConstraintNodes(typeNode, checker, file, extensionRegis
4793
4808
  );
4794
4809
  return constraints;
4795
4810
  }
4811
+ function getAliasedSymbol(symbol, checker) {
4812
+ if (symbol === void 0) {
4813
+ return void 0;
4814
+ }
4815
+ return symbol.flags & ts3.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
4816
+ }
4817
+ function getAliasedTypeAliasDeclaration(symbol, checker) {
4818
+ return getAliasedSymbol(symbol, checker)?.declarations?.find(ts3.isTypeAliasDeclaration);
4819
+ }
4820
+ function getTypeAliasDeclarationFromTypeReference(typeNode, checker) {
4821
+ return getAliasedTypeAliasDeclaration(checker.getSymbolAtLocation(typeNode.typeName), checker);
4822
+ }
4796
4823
  function provenanceForNode(node, file) {
4797
4824
  const sourceFile = node.getSourceFile();
4798
4825
  const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());