@fern-api/fdr-sdk 1.2.33-9d7e001fd0 → 1.2.33-e73a4c8a93

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.
Files changed (93) hide show
  1. package/dist/js/api-definition/index.js +170 -54
  2. package/dist/js/api-definition/index.js.map +1 -1
  3. package/dist/js/api-definition/index.mjs +169 -54
  4. package/dist/js/api-definition/index.mjs.map +1 -1
  5. package/dist/js/api-definition-lite/index.js.map +1 -1
  6. package/dist/js/client/FdrClient.js +17 -9
  7. package/dist/js/client/FdrClient.js.map +1 -1
  8. package/dist/js/client/FdrClient.mjs +17 -9
  9. package/dist/js/client/FdrClient.mjs.map +1 -1
  10. package/dist/js/client/types.js +22 -9
  11. package/dist/js/client/types.js.map +1 -1
  12. package/dist/js/client/types.mjs +22 -9
  13. package/dist/js/client/types.mjs.map +1 -1
  14. package/dist/js/converters/index.js +276 -71
  15. package/dist/js/converters/index.js.map +1 -1
  16. package/dist/js/converters/index.mjs +276 -71
  17. package/dist/js/converters/index.mjs.map +1 -1
  18. package/dist/js/index.js +276 -71
  19. package/dist/js/index.js.map +1 -1
  20. package/dist/js/index.mjs +276 -71
  21. package/dist/js/index.mjs.map +1 -1
  22. package/dist/js/navigation/index.js +273 -70
  23. package/dist/js/navigation/index.js.map +1 -1
  24. package/dist/js/navigation/index.mjs +273 -70
  25. package/dist/js/navigation/index.mjs.map +1 -1
  26. package/dist/js/navigation/ledger-root-builder.js +12 -8
  27. package/dist/js/navigation/ledger-root-builder.js.map +1 -1
  28. package/dist/js/navigation/ledger-root-builder.mjs +12 -8
  29. package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
  30. package/dist/js/navigation/types/latest.js.map +1 -1
  31. package/dist/js/navigation/types/latest.mjs.map +1 -1
  32. package/dist/js/navigation/types/v1.js.map +1 -1
  33. package/dist/js/navigation/types/v1.mjs.map +1 -1
  34. package/dist/js/orpc-client.js +20 -9
  35. package/dist/js/orpc-client.js.map +1 -1
  36. package/dist/js/orpc-client.mjs +19 -9
  37. package/dist/js/orpc-client.mjs.map +1 -1
  38. package/dist/tsconfig.tsbuildinfo +1 -1
  39. package/dist/types/api-definition/__test__/collect-type-tree.test.d.ts +2 -0
  40. package/dist/types/api-definition/__test__/collect-type-tree.test.d.ts.map +1 -0
  41. package/dist/types/api-definition/collect-referenced-types.d.ts.map +1 -1
  42. package/dist/types/api-definition/collect-type-tree.d.ts +4 -0
  43. package/dist/types/api-definition/collect-type-tree.d.ts.map +1 -1
  44. package/dist/types/api-definition/endpoint-context.d.ts +3 -0
  45. package/dist/types/api-definition/endpoint-context.d.ts.map +1 -1
  46. package/dist/types/api-definition/migrators/v1ToV2.d.ts +17 -7
  47. package/dist/types/api-definition/migrators/v1ToV2.d.ts.map +1 -1
  48. package/dist/types/api-definition/prune.d.ts +1 -0
  49. package/dist/types/api-definition/prune.d.ts.map +1 -1
  50. package/dist/types/api-definition/snippets/graphql-snippets.d.ts.map +1 -1
  51. package/dist/types/api-definition/typeid-visitor.d.ts.map +1 -1
  52. package/dist/types/api-definition-lite/index.d.ts +1 -1
  53. package/dist/types/api-definition-lite/index.d.ts.map +1 -1
  54. package/dist/types/converters/__test__/subtitle-round-trip.test.d.ts +2 -0
  55. package/dist/types/converters/__test__/subtitle-round-trip.test.d.ts.map +1 -0
  56. package/dist/types/converters/db/convertAPIDefinitionToDb.d.ts.map +1 -1
  57. package/dist/types/converters/read/convertDbAPIDefinitionToRead.d.ts +48 -14
  58. package/dist/types/converters/read/convertDbAPIDefinitionToRead.d.ts.map +1 -1
  59. package/dist/types/navigation/ApiDefinitionPruner.d.ts.map +1 -1
  60. package/dist/types/navigation/ApiTypeIdVisitor.d.ts.map +1 -1
  61. package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
  62. package/dist/types/navigation/migrators/v1ToV2.d.ts.map +1 -1
  63. package/dist/types/navigation/types/latest.d.ts +18 -2
  64. package/dist/types/navigation/types/latest.d.ts.map +1 -1
  65. package/dist/types/navigation/types/v1.d.ts +2 -0
  66. package/dist/types/navigation/types/v1.d.ts.map +1 -1
  67. package/dist/types/navigation/utils/getApiReferenceId.d.ts.map +1 -1
  68. package/dist/types/navigation/utils/toApis.d.ts +3 -1
  69. package/dist/types/navigation/utils/toApis.d.ts.map +1 -1
  70. package/dist/types/navigation/versions/latest/NavigationNode.d.ts +1 -1
  71. package/dist/types/navigation/versions/latest/NavigationNode.d.ts.map +1 -1
  72. package/dist/types/navigation/versions/latest/NavigationNodeApiLeaf.d.ts +2 -2
  73. package/dist/types/navigation/versions/latest/NavigationNodeApiLeaf.d.ts.map +1 -1
  74. package/dist/types/navigation/versions/latest/__test__/GraphQlTypeNode.test.d.ts +2 -0
  75. package/dist/types/navigation/versions/latest/__test__/GraphQlTypeNode.test.d.ts.map +1 -0
  76. package/dist/types/navigation/versions/latest/getPageId.d.ts.map +1 -1
  77. package/dist/types/navigation/versions/v1/converters/ApiReferenceNavigationConverter.d.ts +1 -0
  78. package/dist/types/navigation/versions/v1/converters/ApiReferenceNavigationConverter.d.ts.map +1 -1
  79. package/dist/types/navigation/versions/v1/converters/__test__/ApiReferenceNavigationConverter.graphql.test.d.ts +2 -0
  80. package/dist/types/navigation/versions/v1/converters/__test__/ApiReferenceNavigationConverter.graphql.test.d.ts.map +1 -0
  81. package/dist/types/orpc-client/api/contract-db.d.ts +1880 -216
  82. package/dist/types/orpc-client/api/contract-db.d.ts.map +1 -1
  83. package/dist/types/orpc-client/api/contract-latest.d.ts +37 -10
  84. package/dist/types/orpc-client/api/contract-latest.d.ts.map +1 -1
  85. package/dist/types/orpc-client/api/contract-read.d.ts +1727 -216
  86. package/dist/types/orpc-client/api/contract-read.d.ts.map +1 -1
  87. package/dist/types/orpc-client/api/contract-register.d.ts +1905 -216
  88. package/dist/types/orpc-client/api/contract-register.d.ts.map +1 -1
  89. package/dist/types/orpc-client/api/shared.d.ts +99 -53
  90. package/dist/types/orpc-client/api/shared.d.ts.map +1 -1
  91. package/dist/types/orpc-client/files/contract.d.ts +5 -1
  92. package/dist/types/orpc-client/files/contract.d.ts.map +1 -1
  93. package/package.json +3 -3
package/dist/js/index.js CHANGED
@@ -136,6 +136,7 @@ __export(api_definition_exports, {
136
136
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
137
137
  GraphQlOperationSchema: () => LatestGraphQlOperationSchema,
138
138
  GraphQlOperationTypeSchema: () => LatestGraphQlOperationTypeSchema,
139
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
139
140
  GrpcId: () => GrpcId,
140
141
  GrpcIdSchema: () => GrpcIdSchema,
141
142
  GrpcMethod: () => GrpcMethod,
@@ -1120,6 +1121,7 @@ var GraphQlOperationIdSchema = z2.string();
1120
1121
  function GraphQlOperationId(value) {
1121
1122
  return value;
1122
1123
  }
1124
+ var GraphQlTypeCategorySchema = z2.enum(["object", "input", "enum", "scalar", "interface", "union"]);
1123
1125
  var EnvironmentIdSchema = z2.string();
1124
1126
  function EnvironmentId(value) {
1125
1127
  return value;
@@ -1354,12 +1356,20 @@ var TypeReferenceSchema = z2.lazy(
1354
1356
  })
1355
1357
  ])
1356
1358
  );
1359
+ var GraphQlArgumentSchema = z2.object({
1360
+ description: z2.string().nullish(),
1361
+ availability: AvailabilitySchema.nullish(),
1362
+ name: z2.string(),
1363
+ type: TypeReferenceSchema,
1364
+ defaultValue: z2.unknown().nullish()
1365
+ });
1357
1366
  var ObjectPropertySchema = z2.object({
1358
1367
  description: z2.string().nullish(),
1359
1368
  availability: AvailabilitySchema.nullish(),
1360
1369
  key: PropertyKeySchema,
1361
1370
  valueType: TypeReferenceSchema,
1362
- propertyAccess: ObjectPropertyAccessSchema.nullish()
1371
+ propertyAccess: ObjectPropertyAccessSchema.nullish(),
1372
+ arguments: z2.array(GraphQlArgumentSchema).nullish()
1363
1373
  });
1364
1374
  var ObjectTypeSchema = z2.object({
1365
1375
  extends: z2.array(TypeIdSchema),
@@ -1507,13 +1517,6 @@ var ErrorExampleSchema = z2.object({
1507
1517
  responseBody: ExampleErrorResponseSchema
1508
1518
  });
1509
1519
  var GraphQlOperationTypeSchema = z2.enum(["QUERY", "MUTATION", "SUBSCRIPTION"]);
1510
- var GraphQlArgumentSchema = z2.object({
1511
- description: z2.string().nullish(),
1512
- availability: AvailabilitySchema.nullish(),
1513
- name: z2.string(),
1514
- type: TypeReferenceSchema,
1515
- defaultValue: z2.unknown().nullish()
1516
- });
1517
1520
  var GraphQlExampleSchema = z2.object({
1518
1521
  description: z2.string().nullish(),
1519
1522
  name: z2.string().nullish(),
@@ -1536,6 +1539,7 @@ var GraphQlOperationSchema = z2.object({
1536
1539
  operationType: GraphQlOperationTypeSchema,
1537
1540
  name: z2.string(),
1538
1541
  displayName: z2.string().nullish(),
1542
+ fieldPath: z2.array(z2.string()).nullish(),
1539
1543
  arguments: z2.array(GraphQlArgumentSchema).nullish(),
1540
1544
  returnType: TypeReferenceSchema,
1541
1545
  examples: z2.array(GraphQlExampleSchema).nullish(),
@@ -1767,6 +1771,7 @@ var RegisterErrorDeclarationV2Schema = z3.object({
1767
1771
  });
1768
1772
  var RegisterEndpointDefinitionSchema = z3.object({
1769
1773
  description: z3.string().nullish(),
1774
+ subtitle: z3.string().nullish(),
1770
1775
  availability: AvailabilitySchema.nullish(),
1771
1776
  slug: z3.string().nullish(),
1772
1777
  auth: z3.boolean().nullish(),
@@ -1985,7 +1990,8 @@ var LatestObjectPropertySchema = z4.lazy(
1985
1990
  availability: AvailabilitySchema.nullish(),
1986
1991
  key: PropertyKeySchema,
1987
1992
  valueShape: LatestTypeShapeSchema,
1988
- propertyAccess: LatestObjectPropertyAccessSchema.nullish()
1993
+ propertyAccess: LatestObjectPropertyAccessSchema.nullish(),
1994
+ arguments: z4.array(LatestGraphQlArgumentSchema).nullish()
1989
1995
  })
1990
1996
  );
1991
1997
  var LatestParameterPropertySchema = z4.lazy(
@@ -2294,6 +2300,7 @@ var LatestExampleEndpointCallSchema = z4.object({
2294
2300
  });
2295
2301
  var LatestEndpointDefinitionSchema = z4.object({
2296
2302
  description: z4.string().nullish(),
2303
+ subtitle: z4.string().nullish(),
2297
2304
  availability: AvailabilitySchema.nullish(),
2298
2305
  namespace: z4.array(z4.string()).nullish(),
2299
2306
  id: EndpointIdSchema,
@@ -2336,6 +2343,7 @@ var LatestGraphQlOperationSchema = z4.object({
2336
2343
  description: z4.string().nullish(),
2337
2344
  availability: AvailabilitySchema.nullish(),
2338
2345
  namespace: z4.array(z4.string()).nullish(),
2346
+ fieldPath: z4.array(z4.string()).nullish(),
2339
2347
  id: GraphQlOperationIdSchema,
2340
2348
  operationType: LatestGraphQlOperationTypeSchema,
2341
2349
  name: z4.string(),
@@ -2752,6 +2760,15 @@ function collectReferencedTypeIds(type, types, { maxDepth = 10 } = {}) {
2752
2760
  visitedTypeIds,
2753
2761
  depth: depth + 1
2754
2762
  });
2763
+ if (property.arguments) {
2764
+ for (const arg of property.arguments) {
2765
+ stack.push({
2766
+ shape: arg.type,
2767
+ visitedTypeIds,
2768
+ depth: depth + 1
2769
+ });
2770
+ }
2771
+ }
2755
2772
  }
2756
2773
  if (obj.extraProperties) {
2757
2774
  stack.push({
@@ -2862,6 +2879,27 @@ function collectTypeDefinitionTree(type, types, { availability: rootAvailability
2862
2879
  visitedTypeIds,
2863
2880
  availability
2864
2881
  });
2882
+ property.arguments?.forEach((arg) => {
2883
+ stack.push({
2884
+ type: arg.type,
2885
+ path: [
2886
+ ...parentpath,
2887
+ {
2888
+ type: "objectProperty",
2889
+ key: property.key,
2890
+ optional: unwrapReference(property.valueShape, types).isOptional
2891
+ },
2892
+ {
2893
+ type: "graphqlArgument",
2894
+ name: arg.name,
2895
+ optional: unwrapReference(arg.type, types).isOptional
2896
+ }
2897
+ ],
2898
+ descriptions: arg.description ? [arg.description] : [],
2899
+ visitedTypeIds,
2900
+ availability: coalesceAvailability([availability, property.availability, arg.availability])
2901
+ });
2902
+ });
2865
2903
  });
2866
2904
  if (obj.extraProperties) {
2867
2905
  stack.push({
@@ -2969,7 +3007,43 @@ function collectTypeDefinitionTreeForObjectProperty(property, types, rootPath =
2969
3007
  optional: unwrapReference(property.valueShape, types).isOptional
2970
3008
  }
2971
3009
  ]
2972
- })
3010
+ }),
3011
+ ...(property.arguments ?? []).flatMap((arg) => [
3012
+ {
3013
+ path: [
3014
+ ...rootPath,
3015
+ {
3016
+ type: "objectProperty",
3017
+ key: property.key,
3018
+ optional: unwrapReference(property.valueShape, types).isOptional
3019
+ },
3020
+ {
3021
+ type: "graphqlArgument",
3022
+ name: arg.name,
3023
+ optional: unwrapReference(arg.type, types).isOptional
3024
+ }
3025
+ ],
3026
+ descriptions: arg.description ? [arg.description] : [],
3027
+ availability: coalesceAvailability([property.availability, arg.availability])
3028
+ },
3029
+ ...collectTypeDefinitionTree(arg.type, types, {
3030
+ maxDepth: maxDepth - 1,
3031
+ availability: coalesceAvailability([property.availability, arg.availability]),
3032
+ path: [
3033
+ ...rootPath,
3034
+ {
3035
+ type: "objectProperty",
3036
+ key: property.key,
3037
+ optional: unwrapReference(property.valueShape, types).isOptional
3038
+ },
3039
+ {
3040
+ type: "graphqlArgument",
3041
+ name: arg.name,
3042
+ optional: unwrapReference(arg.type, types).isOptional
3043
+ }
3044
+ ]
3045
+ })
3046
+ ])
2973
3047
  ];
2974
3048
  }
2975
3049
 
@@ -3088,6 +3162,9 @@ var ApiTypeIdVisitor = class _ApiTypeIdVisitor {
3088
3162
  typeShape.extends.forEach(visit);
3089
3163
  typeShape.properties.forEach((property) => {
3090
3164
  _ApiTypeIdVisitor.visitTypeShape(property.valueShape, visit);
3165
+ property.arguments?.forEach((arg) => {
3166
+ _ApiTypeIdVisitor.visitTypeShape(arg.type, visit);
3167
+ });
3091
3168
  });
3092
3169
  }
3093
3170
  static visitTypeReference(typeReference, visit) {
@@ -3168,10 +3245,13 @@ var ApiDefinitionPruner = class _ApiDefinitionPruner {
3168
3245
  found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
3169
3246
  }
3170
3247
  } else if (node.type === "graphql") {
3171
- const found = this.api.graphqlOperations[node.graphqlOperationId];
3172
- if (found) {
3173
- toRet.graphqlOperations[node.graphqlOperationId] = found;
3174
- found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
3248
+ const idsToInclude = node.graphqlOperationIds ?? [node.graphqlOperationId];
3249
+ for (const opId of idsToInclude) {
3250
+ const found = this.api.graphqlOperations[opId];
3251
+ if (found) {
3252
+ toRet.graphqlOperations[opId] = found;
3253
+ found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
3254
+ }
3175
3255
  }
3176
3256
  }
3177
3257
  }
@@ -3473,9 +3553,21 @@ function createGraphqlContext(node, apiDefinition) {
3473
3553
  );
3474
3554
  return void 0;
3475
3555
  }
3556
+ const allIds = node.graphqlOperationIds ?? [node.graphqlOperationId];
3557
+ const operations = [];
3558
+ for (const id of allIds) {
3559
+ const op = api2.graphqlOperations[id];
3560
+ if (op) {
3561
+ operations.push(op);
3562
+ }
3563
+ }
3564
+ if (operations.length === 0) {
3565
+ operations.push(operation);
3566
+ }
3476
3567
  return {
3477
3568
  node,
3478
3569
  operation,
3570
+ operations,
3479
3571
  types: api2.types
3480
3572
  };
3481
3573
  }
@@ -4403,6 +4495,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
4403
4495
  displayName: v1?.name,
4404
4496
  operationId: v1?.urlSlug?.split("/")?.pop(),
4405
4497
  description: v1?.description,
4498
+ subtitle: v1?.subtitle,
4406
4499
  availability: v1?.availability,
4407
4500
  method: v1?.method,
4408
4501
  path: v1?.path?.parts?.filter((part) => part?.value !== "") ?? [],
@@ -4644,7 +4737,8 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
4644
4737
  },
4645
4738
  propertyAccess: value?.propertyAccess ?? void 0,
4646
4739
  description: value?.description ?? void 0,
4647
- availability: value?.availability ?? void 0
4740
+ availability: value?.availability ?? void 0,
4741
+ arguments: value?.arguments?.map((arg) => this.migrateGraphQlArgument(arg))
4648
4742
  }));
4649
4743
  },
4650
4744
  [],
@@ -5085,6 +5179,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
5085
5179
  description: v1?.description,
5086
5180
  availability: v1?.availability,
5087
5181
  namespace,
5182
+ fieldPath: v1?.fieldPath,
5088
5183
  arguments: v1?.arguments?.map((arg) => this.migrateGraphQlArgument(arg)),
5089
5184
  returnType: {
5090
5185
  type: "alias",
@@ -5381,7 +5476,10 @@ function generateGraphQlSnippet(context) {
5381
5476
  return `$${arg.name}: ${graphqlType}`;
5382
5477
  });
5383
5478
  const argumentUsage = args.map((arg) => `${arg.name}: $${arg.name}`);
5384
- const selectionSet = generateSelectionSet(operation.returnType, types, 2);
5479
+ const fieldPath = operation.fieldPath;
5480
+ const hasFieldPath = fieldPath != null && fieldPath.length > 0;
5481
+ const selectionSetIndent = hasFieldPath ? 2 + fieldPath.length : 2;
5482
+ const selectionSet = generateSelectionSet(operation.returnType, types, 2, /* @__PURE__ */ new Set(), selectionSetIndent);
5385
5483
  let query = operationKeyword;
5386
5484
  if (operationName || variableDefinitions.length > 0) {
5387
5485
  query += ` ${operationName}`;
@@ -5390,15 +5488,32 @@ function generateGraphQlSnippet(context) {
5390
5488
  }
5391
5489
  }
5392
5490
  query += " {\n";
5393
- query += ` ${operation.name}`;
5491
+ const baseIndent = 2;
5492
+ if (hasFieldPath) {
5493
+ for (let i = 0; i < fieldPath.length; i++) {
5494
+ const indent = " ".repeat(baseIndent + i * 2);
5495
+ query += `${indent}${fieldPath[i]} {
5496
+ `;
5497
+ }
5498
+ }
5499
+ const operationIndent = hasFieldPath ? " ".repeat(baseIndent + fieldPath.length * 2) : " ";
5500
+ query += `${operationIndent}${operation.name}`;
5394
5501
  if (argumentUsage.length > 0) {
5395
5502
  query += `(${argumentUsage.join(", ")})`;
5396
5503
  }
5397
5504
  if (selectionSet) {
5398
5505
  query += ` ${selectionSet}`;
5399
5506
  }
5400
- query += "\n}";
5401
- const response = generateResponseExample(operation.name, operation.returnType, types);
5507
+ query += "\n";
5508
+ if (hasFieldPath) {
5509
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
5510
+ const indent = " ".repeat(baseIndent + i * 2);
5511
+ query += `${indent}}
5512
+ `;
5513
+ }
5514
+ }
5515
+ query += "}";
5516
+ const response = generateResponseExample(operation.name, operation.returnType, types, fieldPath);
5402
5517
  const result = { query, variables, response };
5403
5518
  snippetCache.set(operation, result);
5404
5519
  return result;
@@ -5427,49 +5542,44 @@ function getExampleOperationName(operationType) {
5427
5542
  return "ExampleQuery";
5428
5543
  }
5429
5544
  }
5430
- function typeShapeToGraphQlType(shape, types) {
5545
+ function typeShapeToGraphQlType(shape, types, nonNull = true) {
5431
5546
  if (shape.type === "alias") {
5432
- return typeReferenceToGraphQlType(shape.value, types);
5433
- }
5434
- if (shape.type === "enum") {
5435
- return "String";
5436
- }
5437
- if (shape.type === "object") {
5438
- return "Object";
5439
- }
5440
- if (shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion") {
5441
- return "Object";
5547
+ return typeReferenceToGraphQlType(shape.value, types, nonNull);
5442
5548
  }
5443
- return "String";
5549
+ const base = shape.type === "enum" ? "String" : shape.type === "object" || shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion" ? "Object" : "String";
5550
+ return nonNull ? `${base}!` : base;
5444
5551
  }
5445
- function typeReferenceToGraphQlType(ref, types) {
5552
+ function typeReferenceToGraphQlType(ref, types, nonNull = true) {
5446
5553
  switch (ref.type) {
5447
- case "primitive":
5448
- return primitiveToGraphQlType(ref.value);
5554
+ case "primitive": {
5555
+ const base = primitiveToGraphQlType(ref.value);
5556
+ return nonNull ? `${base}!` : base;
5557
+ }
5449
5558
  case "id": {
5450
5559
  const typeDef = types[ref.id];
5451
- if (typeDef) {
5452
- return typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object";
5453
- }
5454
- return "Object";
5560
+ const base = typeDef ? typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object" : "Object";
5561
+ return nonNull ? `${base}!` : base;
5455
5562
  }
5456
5563
  case "optional":
5457
- return typeShapeToGraphQlType(ref.shape, types);
5564
+ return typeShapeToGraphQlType(ref.shape, types, false);
5458
5565
  case "nullable":
5459
- return typeShapeToGraphQlType(ref.shape, types);
5460
- case "list":
5461
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
5462
- case "set":
5463
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
5566
+ return typeShapeToGraphQlType(ref.shape, types, false);
5567
+ case "list": {
5568
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
5569
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
5570
+ }
5571
+ case "set": {
5572
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
5573
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
5574
+ }
5464
5575
  case "map":
5465
- return "Object";
5466
- // Maps don't have direct GraphQL equivalent
5576
+ return nonNull ? "Object!" : "Object";
5467
5577
  case "literal":
5468
- return "String";
5578
+ return nonNull ? "String!" : "String";
5469
5579
  case "unknown":
5470
- return "Object";
5580
+ return nonNull ? "Object!" : "Object";
5471
5581
  default:
5472
- return "String";
5582
+ return nonNull ? "String!" : "String";
5473
5583
  }
5474
5584
  }
5475
5585
  function unnamespacedName(name) {
@@ -5687,13 +5797,18 @@ function generateSelectionSetFromReference(ref, types, depth, visited, indentLev
5687
5797
  return "";
5688
5798
  }
5689
5799
  }
5690
- function generateResponseExample(operationName, returnType, types) {
5800
+ function generateResponseExample(operationName, returnType, types, fieldPath) {
5691
5801
  const data = generateResponseData(returnType, types, 3, /* @__PURE__ */ new Set());
5692
- return {
5693
- data: {
5694
- [operationName]: data
5802
+ let responseData = { [operationName]: data };
5803
+ if (fieldPath != null && fieldPath.length > 0) {
5804
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
5805
+ const key = fieldPath[i];
5806
+ if (key != null) {
5807
+ responseData = { [key]: responseData };
5808
+ }
5695
5809
  }
5696
- };
5810
+ }
5811
+ return { data: responseData };
5697
5812
  }
5698
5813
  function generateResponseData(shape, types, depth, visited) {
5699
5814
  if (depth <= 0) {
@@ -6763,6 +6878,7 @@ var ReadErrorDeclarationV2Schema = z5.object({
6763
6878
  });
6764
6879
  var ReadEndpointDefinitionSchema = z5.object({
6765
6880
  description: z5.string().nullish(),
6881
+ subtitle: z5.string().nullish(),
6766
6882
  availability: AvailabilitySchema.nullish(),
6767
6883
  authed: z5.boolean(),
6768
6884
  authV2: z5.array(AuthSchemeIdSchema).nullish(),
@@ -10440,6 +10556,7 @@ __export(APIV1Db_exports, {
10440
10556
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
10441
10557
  GraphQlOperationSchema: () => GraphQlOperationSchema,
10442
10558
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
10559
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
10443
10560
  GrpcMethodSchema: () => GrpcMethodSchema,
10444
10561
  GrpcProtocolSchema: () => GrpcProtocolSchema,
10445
10562
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -10550,6 +10667,7 @@ var DbHttpRequestsV2Schema = z31.object({
10550
10667
  });
10551
10668
  var DbEndpointDefinitionSchema = z31.object({
10552
10669
  description: z31.string().nullish(),
10670
+ subtitle: z31.string().nullish(),
10553
10671
  availability: AvailabilitySchema.nullish(),
10554
10672
  authed: z31.boolean().nullish(),
10555
10673
  authV2: z31.array(AuthSchemeIdSchema).nullish(),
@@ -10693,6 +10811,7 @@ __export(APIV1Read_exports, {
10693
10811
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
10694
10812
  GraphQlOperationSchema: () => GraphQlOperationSchema,
10695
10813
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
10814
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
10696
10815
  GrpcMethod: () => GrpcMethod,
10697
10816
  GrpcMethodSchema: () => GrpcMethodSchema,
10698
10817
  GrpcProtocolSchema: () => GrpcProtocolSchema,
@@ -10920,6 +11039,7 @@ __export(APIV1Write_exports, {
10920
11039
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
10921
11040
  GraphQlOperationSchema: () => GraphQlOperationSchema,
10922
11041
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
11042
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
10923
11043
  GrpcMethodSchema: () => GrpcMethodSchema,
10924
11044
  GrpcProtocolSchema: () => GrpcProtocolSchema,
10925
11045
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -11827,6 +11947,7 @@ __export(FdrAPI_exports, {
11827
11947
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
11828
11948
  GraphQlOperationSchema: () => GraphQlOperationSchema,
11829
11949
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
11950
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
11830
11951
  GrpcId: () => GrpcId,
11831
11952
  GrpcIdSchema: () => GrpcIdSchema,
11832
11953
  GrpcMethod: () => GrpcMethod,
@@ -13373,6 +13494,7 @@ function transformEndpoint({
13373
13494
  snippets
13374
13495
  }),
13375
13496
  description: writeShape.description,
13497
+ subtitle: writeShape.subtitle,
13376
13498
  // htmlDescription,
13377
13499
  authed: writeShape.auth,
13378
13500
  authV2: writeShape.authV2,
@@ -13712,7 +13834,8 @@ function transformProperty({ writeShape }) {
13712
13834
  // htmlDescription,
13713
13835
  key: writeShape.key,
13714
13836
  valueType: writeShape.valueType,
13715
- propertyAccess: writeShape.propertyAccess
13837
+ propertyAccess: writeShape.propertyAccess,
13838
+ ...writeShape.arguments != null ? { arguments: writeShape.arguments } : {}
13716
13839
  // descriptionContainsMarkdown: true,
13717
13840
  };
13718
13841
  }
@@ -14604,6 +14727,7 @@ function transformEndpoint2({
14604
14727
  (example) => convertExampleEndpointCall({ dbShape: example })
14605
14728
  ),
14606
14729
  description: dbShape.description,
14730
+ subtitle: dbShape.subtitle,
14607
14731
  // htmlDescription: dbShape.htmlDescription,
14608
14732
  authed: dbShape.authed ?? false,
14609
14733
  authV2: dbShape.authV2,
@@ -15217,6 +15341,7 @@ __export(navigation_exports, {
15217
15341
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
15218
15342
  GraphQlOperationSchema: () => GraphQlOperationSchema,
15219
15343
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
15344
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
15220
15345
  GrpcId: () => GrpcId,
15221
15346
  GrpcIdSchema: () => GrpcIdSchema,
15222
15347
  GrpcMethod: () => GrpcMethod,
@@ -15340,7 +15465,7 @@ var import_ts_essentials4 = require("ts-essentials");
15340
15465
 
15341
15466
  // src/navigation/versions/latest/NavigationNodeApiLeaf.ts
15342
15467
  function isApiLeaf(node) {
15343
- return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql";
15468
+ return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql" || node.type === "graphqlType";
15344
15469
  }
15345
15470
 
15346
15471
  // src/navigation/versions/latest/NavigationNodePageLeaf.ts
@@ -15410,7 +15535,8 @@ function getPageId(node) {
15410
15535
  webSocket: RETURN_UNDEFINED,
15411
15536
  webhook: RETURN_UNDEFINED,
15412
15537
  grpc: RETURN_UNDEFINED,
15413
- graphql: RETURN_UNDEFINED
15538
+ graphql: RETURN_UNDEFINED,
15539
+ graphqlType: RETURN_UNDEFINED
15414
15540
  // changelogYear: RETURN_UNDEFINED,
15415
15541
  // changelogMonth: RETURN_UNDEFINED,
15416
15542
  });
@@ -15772,6 +15898,9 @@ var ApiTypeIdVisitor2 = class _ApiTypeIdVisitor {
15772
15898
  typeShape.extends.forEach(visit);
15773
15899
  typeShape.properties.forEach((property) => {
15774
15900
  _ApiTypeIdVisitor.visitTypeReference(property.valueType, visit);
15901
+ property.arguments?.forEach((arg) => {
15902
+ _ApiTypeIdVisitor.visitTypeReference(arg.type, visit);
15903
+ });
15775
15904
  });
15776
15905
  }
15777
15906
  static visitTypeReference(typeReference, visit) {
@@ -15928,11 +16057,8 @@ var ApiDefinitionPruner2 = class {
15928
16057
  if (node.type !== "graphql" || graphqlOperations == null) {
15929
16058
  return [];
15930
16059
  }
15931
- const graphqlOperationId = node.graphqlOperationId;
15932
- const found = graphqlOperations.find(
15933
- (graphqlOperation) => ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation) === graphqlOperationId
15934
- );
15935
- return found ? [found] : [];
16060
+ const idsToInclude = new Set(node.graphqlOperationIds ?? [node.graphqlOperationId]);
16061
+ return graphqlOperations.filter((op) => idsToInclude.has(ApiDefinitionHolder.createGraphQlOperationId(op)));
15936
16062
  }
15937
16063
  };
15938
16064
 
@@ -16038,6 +16164,7 @@ __export(v1_exports2, {
16038
16164
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
16039
16165
  GraphQlOperationSchema: () => GraphQlOperationSchema,
16040
16166
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
16167
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
16041
16168
  GrpcId: () => GrpcId,
16042
16169
  GrpcIdSchema: () => GrpcIdSchema,
16043
16170
  GrpcMethod: () => GrpcMethod,
@@ -16656,12 +16783,15 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
16656
16783
  }));
16657
16784
  }
16658
16785
  convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug) {
16786
+ const fieldPath = graphqlOperation.fieldPath;
16787
+ const urlSlug = fieldPath != null && fieldPath.length > 0 ? [...fieldPath, graphqlOperation.name].join("-") : graphqlOperation.name;
16659
16788
  return this.#idgen.with(graphqlOperationId, (id) => ({
16660
16789
  id,
16661
16790
  type: "graphql",
16662
16791
  title: graphqlOperation.displayName ?? graphqlOperation.name,
16663
16792
  graphqlOperationId,
16664
- slug: parentSlug.apply({ urlSlug: graphqlOperation.name }).get(),
16793
+ graphqlOperationIds: void 0,
16794
+ slug: parentSlug.apply({ urlSlug }).get(),
16665
16795
  icon: void 0,
16666
16796
  hidden: void 0,
16667
16797
  operationType: graphqlOperation.operationType,
@@ -16675,6 +16805,86 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
16675
16805
  featureFlags: void 0
16676
16806
  }));
16677
16807
  }
16808
+ convertGraphQlOperationsToChildren(graphqlOperations, parentSlug) {
16809
+ const groupedByParent = /* @__PURE__ */ new Map();
16810
+ const insertionOrder = [];
16811
+ for (const op of graphqlOperations) {
16812
+ const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(op);
16813
+ if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
16814
+ continue;
16815
+ }
16816
+ this.#visitedGraphqlOperations.add(graphqlOperationId);
16817
+ const parentField = op.fieldPath?.[0];
16818
+ if (parentField != null && op.operationType === "QUERY") {
16819
+ const group = groupedByParent.get(parentField);
16820
+ if (group != null) {
16821
+ group.push(op);
16822
+ } else {
16823
+ groupedByParent.set(parentField, [op]);
16824
+ insertionOrder.push({ type: "group", parentField });
16825
+ }
16826
+ } else {
16827
+ insertionOrder.push({ type: "flat", op });
16828
+ }
16829
+ }
16830
+ const children = [];
16831
+ const allSlugs = /* @__PURE__ */ new Set();
16832
+ for (const entry of insertionOrder) {
16833
+ if (entry.type === "flat") {
16834
+ const fp = entry.op.fieldPath;
16835
+ allSlugs.add(fp != null && fp.length > 0 ? [...fp, entry.op.name].join("-") : entry.op.name);
16836
+ } else {
16837
+ allSlugs.add(entry.parentField);
16838
+ }
16839
+ }
16840
+ for (const entry of insertionOrder) {
16841
+ if (entry.type === "flat") {
16842
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(entry.op);
16843
+ children.push(this.convertGraphQlNode(opId, entry.op, parentSlug));
16844
+ } else {
16845
+ const operations = groupedByParent.get(entry.parentField);
16846
+ if (operations == null) {
16847
+ continue;
16848
+ }
16849
+ const firstOp = operations[0];
16850
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(firstOp);
16851
+ const allOpIds = operations.map((op) => ApiDefinitionHolder.createGraphQlOperationId(op));
16852
+ let slugSegment = entry.parentField;
16853
+ const flatHasSameSlug = insertionOrder.some(
16854
+ (e) => e.type === "flat" && (() => {
16855
+ const fp = e.op.fieldPath;
16856
+ const s = fp != null && fp.length > 0 ? [...fp, e.op.name].join("-") : e.op.name;
16857
+ return s === slugSegment;
16858
+ })()
16859
+ );
16860
+ if (flatHasSameSlug) {
16861
+ slugSegment = `${entry.parentField}-fields`;
16862
+ }
16863
+ children.push(
16864
+ this.#idgen.with(opId, (id) => ({
16865
+ id,
16866
+ type: "graphql",
16867
+ title: entry.parentField,
16868
+ graphqlOperationId: opId,
16869
+ graphqlOperationIds: allOpIds.length > 1 ? allOpIds : void 0,
16870
+ slug: parentSlug.apply({ urlSlug: slugSegment }).get(),
16871
+ icon: void 0,
16872
+ hidden: void 0,
16873
+ operationType: firstOp.operationType,
16874
+ apiDefinitionId: this.apiDefinitionId,
16875
+ availability: navigation_exports.V1.convertAvailability(firstOp.availability),
16876
+ playground: void 0,
16877
+ authed: void 0,
16878
+ collapsed: void 0,
16879
+ viewers: void 0,
16880
+ orphaned: void 0,
16881
+ featureFlags: void 0
16882
+ }))
16883
+ );
16884
+ }
16885
+ }
16886
+ return children;
16887
+ }
16678
16888
  convertPackageToChildren(package_, parentSlug) {
16679
16889
  const children = [];
16680
16890
  let subpackageId = isSubpackage2(package_) ? package_.subpackageId : "__package__";
@@ -16722,14 +16932,7 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
16722
16932
  children.push(this.convertWebhookNode(webhookId, webhook, parentSlug));
16723
16933
  this.#visitedWebhooks.add(webhookId);
16724
16934
  });
16725
- (package_.graphqlOperations ?? []).forEach((graphqlOperation) => {
16726
- const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation);
16727
- if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
16728
- return;
16729
- }
16730
- children.push(this.convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug));
16731
- this.#visitedGraphqlOperations.add(graphqlOperationId);
16732
- });
16935
+ children.push(...this.convertGraphQlOperationsToChildren(package_.graphqlOperations ?? [], parentSlug));
16733
16936
  (package_.subpackages ?? []).forEach((subpackageId2) => {
16734
16937
  const subpackage = this.api.subpackages[subpackageId2];
16735
16938
  if (subpackage == null) {
@@ -18672,6 +18875,7 @@ var FernNavigationV1ToLatest = class _FernNavigationV1ToLatest {
18672
18875
  collapsed: node.collapsed,
18673
18876
  apiDefinitionId: node.apiDefinitionId,
18674
18877
  graphqlOperationId: node.graphqlOperationId,
18878
+ graphqlOperationIds: node.graphqlOperationIds,
18675
18879
  operationType: node.operationType,
18676
18880
  playground: node.playground,
18677
18881
  availability: this.#availability(node.availability),
@@ -19177,6 +19381,7 @@ function getApiReferenceId(node) {
19177
19381
  webhook: RETURN_API_DEFINITION_ID,
19178
19382
  grpc: RETURN_API_DEFINITION_ID,
19179
19383
  graphql: RETURN_API_DEFINITION_ID,
19384
+ graphqlType: RETURN_API_DEFINITION_ID,
19180
19385
  apiPackage: RETURN_API_DEFINITION_ID,
19181
19386
  unversioned: RETURN_UNDEFINED3,
19182
19387
  landingPage: RETURN_UNDEFINED3