@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.cjs CHANGED
@@ -3986,7 +3986,7 @@ function resolveRegisteredCustomTypeFromTypeNode(typeNode, extensionRegistry, ch
3986
3986
  };
3987
3987
  }
3988
3988
  if (ts3.isTypeReferenceNode(typeNode) && ts3.isIdentifier(typeNode.typeName)) {
3989
- const aliasDecl = checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
3989
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
3990
3990
  if (aliasDecl !== void 0) {
3991
3991
  return resolveRegisteredCustomTypeFromTypeNode(aliasDecl.type, extensionRegistry, checker);
3992
3992
  }
@@ -4179,22 +4179,23 @@ function getReferencedTypeAliasDeclaration(sourceNode, checker) {
4179
4179
  if (!typeNode || !ts3.isTypeReferenceNode(typeNode)) {
4180
4180
  return void 0;
4181
4181
  }
4182
- return checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
4182
+ return getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4183
4183
  }
4184
4184
  function shouldEmitPrimitiveAliasDefinition(typeNode, checker) {
4185
4185
  if (!ts3.isTypeReferenceNode(typeNode)) {
4186
4186
  return false;
4187
4187
  }
4188
- const aliasDecl = checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
4188
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4189
4189
  if (!aliasDecl) {
4190
4190
  return false;
4191
4191
  }
4192
4192
  const resolved = checker.getTypeFromTypeNode(aliasDecl.type);
4193
4193
  return !!(resolved.flags & (ts3.TypeFlags.String | ts3.TypeFlags.Number | ts3.TypeFlags.BigInt | ts3.TypeFlags.BigIntLiteral | ts3.TypeFlags.Boolean | ts3.TypeFlags.Null));
4194
4194
  }
4195
- function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiting, metadataPolicy = createAnalyzerMetadataPolicy(void 0), extensionRegistry, diagnostics) {
4195
+ function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiting, metadataPolicy = createAnalyzerMetadataPolicy(void 0), extensionRegistry, diagnostics, visitedAliases = /* @__PURE__ */ new Set()) {
4196
4196
  const nestedAliasDecl = type.aliasSymbol?.declarations?.find(ts3.isTypeAliasDeclaration);
4197
- if (nestedAliasDecl !== void 0) {
4197
+ if (nestedAliasDecl !== void 0 && !visitedAliases.has(nestedAliasDecl)) {
4198
+ visitedAliases.add(nestedAliasDecl);
4198
4199
  return resolveAliasedPrimitiveTarget(
4199
4200
  checker.getTypeFromTypeNode(nestedAliasDecl.type),
4200
4201
  checker,
@@ -4203,9 +4204,25 @@ function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiti
4203
4204
  visiting,
4204
4205
  metadataPolicy,
4205
4206
  extensionRegistry,
4206
- diagnostics
4207
+ diagnostics,
4208
+ visitedAliases
4207
4209
  );
4208
4210
  }
4211
+ if (type.flags & ts3.TypeFlags.String) {
4212
+ return { kind: "primitive", primitiveKind: "string" };
4213
+ }
4214
+ if (type.flags & ts3.TypeFlags.Number) {
4215
+ return { kind: "primitive", primitiveKind: "number" };
4216
+ }
4217
+ if (type.flags & (ts3.TypeFlags.BigInt | ts3.TypeFlags.BigIntLiteral)) {
4218
+ return { kind: "primitive", primitiveKind: "bigint" };
4219
+ }
4220
+ if (type.flags & ts3.TypeFlags.Boolean) {
4221
+ return { kind: "primitive", primitiveKind: "boolean" };
4222
+ }
4223
+ if (type.flags & ts3.TypeFlags.Null) {
4224
+ return { kind: "primitive", primitiveKind: "null" };
4225
+ }
4209
4226
  return resolveTypeNode(
4210
4227
  type,
4211
4228
  checker,
@@ -4737,8 +4754,7 @@ function resolveAliasedTypeNode(typeNode, checker, visited = /* @__PURE__ */ new
4737
4754
  if (!ts3.isTypeReferenceNode(typeNode) || !ts3.isIdentifier(typeNode.typeName)) {
4738
4755
  return typeNode;
4739
4756
  }
4740
- const symbol = checker.getSymbolAtLocation(typeNode.typeName);
4741
- const aliasDecl = symbol?.declarations?.find(ts3.isTypeAliasDeclaration);
4757
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4742
4758
  if (aliasDecl === void 0 || visited.has(aliasDecl)) {
4743
4759
  return typeNode;
4744
4760
  }
@@ -4788,8 +4804,7 @@ function extractTypeAliasConstraintNodes(typeNode, checker, file, extensionRegis
4788
4804
  );
4789
4805
  }
4790
4806
  const symbol = checker.getSymbolAtLocation(typeNode.typeName);
4791
- if (!symbol?.declarations) return [];
4792
- const aliasDecl = symbol.declarations.find(ts3.isTypeAliasDeclaration);
4807
+ const aliasDecl = getAliasedTypeAliasDeclaration(symbol, checker);
4793
4808
  if (!aliasDecl) return [];
4794
4809
  if (ts3.isTypeLiteralNode(aliasDecl.type)) return [];
4795
4810
  const aliasFieldType = resolveTypeNode(
@@ -4812,6 +4827,18 @@ function extractTypeAliasConstraintNodes(typeNode, checker, file, extensionRegis
4812
4827
  );
4813
4828
  return constraints;
4814
4829
  }
4830
+ function getAliasedSymbol(symbol, checker) {
4831
+ if (symbol === void 0) {
4832
+ return void 0;
4833
+ }
4834
+ return symbol.flags & ts3.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
4835
+ }
4836
+ function getAliasedTypeAliasDeclaration(symbol, checker) {
4837
+ return getAliasedSymbol(symbol, checker)?.declarations?.find(ts3.isTypeAliasDeclaration);
4838
+ }
4839
+ function getTypeAliasDeclarationFromTypeReference(typeNode, checker) {
4840
+ return getAliasedTypeAliasDeclaration(checker.getSymbolAtLocation(typeNode.typeName), checker);
4841
+ }
4815
4842
  function provenanceForNode(node, file) {
4816
4843
  const sourceFile = node.getSourceFile();
4817
4844
  const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());