@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/internals.js CHANGED
@@ -2688,7 +2688,7 @@ function resolveRegisteredCustomTypeFromTypeNode(typeNode, extensionRegistry, ch
2688
2688
  };
2689
2689
  }
2690
2690
  if (ts3.isTypeReferenceNode(typeNode) && ts3.isIdentifier(typeNode.typeName)) {
2691
- const aliasDecl = checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
2691
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
2692
2692
  if (aliasDecl !== void 0) {
2693
2693
  return resolveRegisteredCustomTypeFromTypeNode(aliasDecl.type, extensionRegistry, checker);
2694
2694
  }
@@ -2881,22 +2881,23 @@ function getReferencedTypeAliasDeclaration(sourceNode, checker) {
2881
2881
  if (!typeNode || !ts3.isTypeReferenceNode(typeNode)) {
2882
2882
  return void 0;
2883
2883
  }
2884
- return checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
2884
+ return getTypeAliasDeclarationFromTypeReference(typeNode, checker);
2885
2885
  }
2886
2886
  function shouldEmitPrimitiveAliasDefinition(typeNode, checker) {
2887
2887
  if (!ts3.isTypeReferenceNode(typeNode)) {
2888
2888
  return false;
2889
2889
  }
2890
- const aliasDecl = checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
2890
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
2891
2891
  if (!aliasDecl) {
2892
2892
  return false;
2893
2893
  }
2894
2894
  const resolved = checker.getTypeFromTypeNode(aliasDecl.type);
2895
2895
  return !!(resolved.flags & (ts3.TypeFlags.String | ts3.TypeFlags.Number | ts3.TypeFlags.BigInt | ts3.TypeFlags.BigIntLiteral | ts3.TypeFlags.Boolean | ts3.TypeFlags.Null));
2896
2896
  }
2897
- function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiting, metadataPolicy = createAnalyzerMetadataPolicy(void 0), extensionRegistry, diagnostics) {
2897
+ function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiting, metadataPolicy = createAnalyzerMetadataPolicy(void 0), extensionRegistry, diagnostics, visitedAliases = /* @__PURE__ */ new Set()) {
2898
2898
  const nestedAliasDecl = type.aliasSymbol?.declarations?.find(ts3.isTypeAliasDeclaration);
2899
- if (nestedAliasDecl !== void 0) {
2899
+ if (nestedAliasDecl !== void 0 && !visitedAliases.has(nestedAliasDecl)) {
2900
+ visitedAliases.add(nestedAliasDecl);
2900
2901
  return resolveAliasedPrimitiveTarget(
2901
2902
  checker.getTypeFromTypeNode(nestedAliasDecl.type),
2902
2903
  checker,
@@ -2905,9 +2906,25 @@ function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiti
2905
2906
  visiting,
2906
2907
  metadataPolicy,
2907
2908
  extensionRegistry,
2908
- diagnostics
2909
+ diagnostics,
2910
+ visitedAliases
2909
2911
  );
2910
2912
  }
2913
+ if (type.flags & ts3.TypeFlags.String) {
2914
+ return { kind: "primitive", primitiveKind: "string" };
2915
+ }
2916
+ if (type.flags & ts3.TypeFlags.Number) {
2917
+ return { kind: "primitive", primitiveKind: "number" };
2918
+ }
2919
+ if (type.flags & (ts3.TypeFlags.BigInt | ts3.TypeFlags.BigIntLiteral)) {
2920
+ return { kind: "primitive", primitiveKind: "bigint" };
2921
+ }
2922
+ if (type.flags & ts3.TypeFlags.Boolean) {
2923
+ return { kind: "primitive", primitiveKind: "boolean" };
2924
+ }
2925
+ if (type.flags & ts3.TypeFlags.Null) {
2926
+ return { kind: "primitive", primitiveKind: "null" };
2927
+ }
2911
2928
  return resolveTypeNode(
2912
2929
  type,
2913
2930
  checker,
@@ -3439,8 +3456,7 @@ function resolveAliasedTypeNode(typeNode, checker, visited = /* @__PURE__ */ new
3439
3456
  if (!ts3.isTypeReferenceNode(typeNode) || !ts3.isIdentifier(typeNode.typeName)) {
3440
3457
  return typeNode;
3441
3458
  }
3442
- const symbol = checker.getSymbolAtLocation(typeNode.typeName);
3443
- const aliasDecl = symbol?.declarations?.find(ts3.isTypeAliasDeclaration);
3459
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
3444
3460
  if (aliasDecl === void 0 || visited.has(aliasDecl)) {
3445
3461
  return typeNode;
3446
3462
  }
@@ -3490,8 +3506,7 @@ function extractTypeAliasConstraintNodes(typeNode, checker, file, extensionRegis
3490
3506
  );
3491
3507
  }
3492
3508
  const symbol = checker.getSymbolAtLocation(typeNode.typeName);
3493
- if (!symbol?.declarations) return [];
3494
- const aliasDecl = symbol.declarations.find(ts3.isTypeAliasDeclaration);
3509
+ const aliasDecl = getAliasedTypeAliasDeclaration(symbol, checker);
3495
3510
  if (!aliasDecl) return [];
3496
3511
  if (ts3.isTypeLiteralNode(aliasDecl.type)) return [];
3497
3512
  const aliasFieldType = resolveTypeNode(
@@ -3514,6 +3529,18 @@ function extractTypeAliasConstraintNodes(typeNode, checker, file, extensionRegis
3514
3529
  );
3515
3530
  return constraints;
3516
3531
  }
3532
+ function getAliasedSymbol(symbol, checker) {
3533
+ if (symbol === void 0) {
3534
+ return void 0;
3535
+ }
3536
+ return symbol.flags & ts3.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
3537
+ }
3538
+ function getAliasedTypeAliasDeclaration(symbol, checker) {
3539
+ return getAliasedSymbol(symbol, checker)?.declarations?.find(ts3.isTypeAliasDeclaration);
3540
+ }
3541
+ function getTypeAliasDeclarationFromTypeReference(typeNode, checker) {
3542
+ return getAliasedTypeAliasDeclaration(checker.getSymbolAtLocation(typeNode.typeName), checker);
3543
+ }
3517
3544
  function provenanceForNode(node, file) {
3518
3545
  const sourceFile = node.getSourceFile();
3519
3546
  const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());