@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/cli.js CHANGED
@@ -4072,7 +4072,7 @@ function resolveRegisteredCustomTypeFromTypeNode(typeNode, extensionRegistry, ch
4072
4072
  };
4073
4073
  }
4074
4074
  if (ts3.isTypeReferenceNode(typeNode) && ts3.isIdentifier(typeNode.typeName)) {
4075
- const aliasDecl = checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
4075
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4076
4076
  if (aliasDecl !== void 0) {
4077
4077
  return resolveRegisteredCustomTypeFromTypeNode(aliasDecl.type, extensionRegistry, checker);
4078
4078
  }
@@ -4265,22 +4265,23 @@ function getReferencedTypeAliasDeclaration(sourceNode, checker) {
4265
4265
  if (!typeNode || !ts3.isTypeReferenceNode(typeNode)) {
4266
4266
  return void 0;
4267
4267
  }
4268
- return checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
4268
+ return getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4269
4269
  }
4270
4270
  function shouldEmitPrimitiveAliasDefinition(typeNode, checker) {
4271
4271
  if (!ts3.isTypeReferenceNode(typeNode)) {
4272
4272
  return false;
4273
4273
  }
4274
- const aliasDecl = checker.getSymbolAtLocation(typeNode.typeName)?.declarations?.find(ts3.isTypeAliasDeclaration);
4274
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4275
4275
  if (!aliasDecl) {
4276
4276
  return false;
4277
4277
  }
4278
4278
  const resolved = checker.getTypeFromTypeNode(aliasDecl.type);
4279
4279
  return !!(resolved.flags & (ts3.TypeFlags.String | ts3.TypeFlags.Number | ts3.TypeFlags.BigInt | ts3.TypeFlags.BigIntLiteral | ts3.TypeFlags.Boolean | ts3.TypeFlags.Null));
4280
4280
  }
4281
- function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiting, metadataPolicy = createAnalyzerMetadataPolicy(void 0), extensionRegistry, diagnostics) {
4281
+ function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiting, metadataPolicy = createAnalyzerMetadataPolicy(void 0), extensionRegistry, diagnostics, visitedAliases = /* @__PURE__ */ new Set()) {
4282
4282
  const nestedAliasDecl = type.aliasSymbol?.declarations?.find(ts3.isTypeAliasDeclaration);
4283
- if (nestedAliasDecl !== void 0) {
4283
+ if (nestedAliasDecl !== void 0 && !visitedAliases.has(nestedAliasDecl)) {
4284
+ visitedAliases.add(nestedAliasDecl);
4284
4285
  return resolveAliasedPrimitiveTarget(
4285
4286
  checker.getTypeFromTypeNode(nestedAliasDecl.type),
4286
4287
  checker,
@@ -4289,9 +4290,25 @@ function resolveAliasedPrimitiveTarget(type, checker, file, typeRegistry, visiti
4289
4290
  visiting,
4290
4291
  metadataPolicy,
4291
4292
  extensionRegistry,
4292
- diagnostics
4293
+ diagnostics,
4294
+ visitedAliases
4293
4295
  );
4294
4296
  }
4297
+ if (type.flags & ts3.TypeFlags.String) {
4298
+ return { kind: "primitive", primitiveKind: "string" };
4299
+ }
4300
+ if (type.flags & ts3.TypeFlags.Number) {
4301
+ return { kind: "primitive", primitiveKind: "number" };
4302
+ }
4303
+ if (type.flags & (ts3.TypeFlags.BigInt | ts3.TypeFlags.BigIntLiteral)) {
4304
+ return { kind: "primitive", primitiveKind: "bigint" };
4305
+ }
4306
+ if (type.flags & ts3.TypeFlags.Boolean) {
4307
+ return { kind: "primitive", primitiveKind: "boolean" };
4308
+ }
4309
+ if (type.flags & ts3.TypeFlags.Null) {
4310
+ return { kind: "primitive", primitiveKind: "null" };
4311
+ }
4295
4312
  return resolveTypeNode(
4296
4313
  type,
4297
4314
  checker,
@@ -4823,8 +4840,7 @@ function resolveAliasedTypeNode(typeNode, checker, visited = /* @__PURE__ */ new
4823
4840
  if (!ts3.isTypeReferenceNode(typeNode) || !ts3.isIdentifier(typeNode.typeName)) {
4824
4841
  return typeNode;
4825
4842
  }
4826
- const symbol = checker.getSymbolAtLocation(typeNode.typeName);
4827
- const aliasDecl = symbol?.declarations?.find(ts3.isTypeAliasDeclaration);
4843
+ const aliasDecl = getTypeAliasDeclarationFromTypeReference(typeNode, checker);
4828
4844
  if (aliasDecl === void 0 || visited.has(aliasDecl)) {
4829
4845
  return typeNode;
4830
4846
  }
@@ -4873,8 +4889,7 @@ function extractTypeAliasConstraintNodes(typeNode, checker, file, extensionRegis
4873
4889
  );
4874
4890
  }
4875
4891
  const symbol = checker.getSymbolAtLocation(typeNode.typeName);
4876
- if (!symbol?.declarations) return [];
4877
- const aliasDecl = symbol.declarations.find(ts3.isTypeAliasDeclaration);
4892
+ const aliasDecl = getAliasedTypeAliasDeclaration(symbol, checker);
4878
4893
  if (!aliasDecl) return [];
4879
4894
  if (ts3.isTypeLiteralNode(aliasDecl.type)) return [];
4880
4895
  const aliasFieldType = resolveTypeNode(
@@ -4897,6 +4912,18 @@ function extractTypeAliasConstraintNodes(typeNode, checker, file, extensionRegis
4897
4912
  );
4898
4913
  return constraints;
4899
4914
  }
4915
+ function getAliasedSymbol(symbol, checker) {
4916
+ if (symbol === void 0) {
4917
+ return void 0;
4918
+ }
4919
+ return symbol.flags & ts3.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
4920
+ }
4921
+ function getAliasedTypeAliasDeclaration(symbol, checker) {
4922
+ return getAliasedSymbol(symbol, checker)?.declarations?.find(ts3.isTypeAliasDeclaration);
4923
+ }
4924
+ function getTypeAliasDeclarationFromTypeReference(typeNode, checker) {
4925
+ return getAliasedTypeAliasDeclaration(checker.getSymbolAtLocation(typeNode.typeName), checker);
4926
+ }
4900
4927
  function provenanceForNode(node, file) {
4901
4928
  const sourceFile = node.getSourceFile();
4902
4929
  const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());