@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.mjs CHANGED
@@ -73,6 +73,7 @@ __export(api_definition_exports, {
73
73
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
74
74
  GraphQlOperationSchema: () => LatestGraphQlOperationSchema,
75
75
  GraphQlOperationTypeSchema: () => LatestGraphQlOperationTypeSchema,
76
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
76
77
  GrpcId: () => GrpcId,
77
78
  GrpcIdSchema: () => GrpcIdSchema,
78
79
  GrpcMethod: () => GrpcMethod,
@@ -1057,6 +1058,7 @@ var GraphQlOperationIdSchema = z2.string();
1057
1058
  function GraphQlOperationId(value) {
1058
1059
  return value;
1059
1060
  }
1061
+ var GraphQlTypeCategorySchema = z2.enum(["object", "input", "enum", "scalar", "interface", "union"]);
1060
1062
  var EnvironmentIdSchema = z2.string();
1061
1063
  function EnvironmentId(value) {
1062
1064
  return value;
@@ -1291,12 +1293,20 @@ var TypeReferenceSchema = z2.lazy(
1291
1293
  })
1292
1294
  ])
1293
1295
  );
1296
+ var GraphQlArgumentSchema = z2.object({
1297
+ description: z2.string().nullish(),
1298
+ availability: AvailabilitySchema.nullish(),
1299
+ name: z2.string(),
1300
+ type: TypeReferenceSchema,
1301
+ defaultValue: z2.unknown().nullish()
1302
+ });
1294
1303
  var ObjectPropertySchema = z2.object({
1295
1304
  description: z2.string().nullish(),
1296
1305
  availability: AvailabilitySchema.nullish(),
1297
1306
  key: PropertyKeySchema,
1298
1307
  valueType: TypeReferenceSchema,
1299
- propertyAccess: ObjectPropertyAccessSchema.nullish()
1308
+ propertyAccess: ObjectPropertyAccessSchema.nullish(),
1309
+ arguments: z2.array(GraphQlArgumentSchema).nullish()
1300
1310
  });
1301
1311
  var ObjectTypeSchema = z2.object({
1302
1312
  extends: z2.array(TypeIdSchema),
@@ -1444,13 +1454,6 @@ var ErrorExampleSchema = z2.object({
1444
1454
  responseBody: ExampleErrorResponseSchema
1445
1455
  });
1446
1456
  var GraphQlOperationTypeSchema = z2.enum(["QUERY", "MUTATION", "SUBSCRIPTION"]);
1447
- var GraphQlArgumentSchema = z2.object({
1448
- description: z2.string().nullish(),
1449
- availability: AvailabilitySchema.nullish(),
1450
- name: z2.string(),
1451
- type: TypeReferenceSchema,
1452
- defaultValue: z2.unknown().nullish()
1453
- });
1454
1457
  var GraphQlExampleSchema = z2.object({
1455
1458
  description: z2.string().nullish(),
1456
1459
  name: z2.string().nullish(),
@@ -1473,6 +1476,7 @@ var GraphQlOperationSchema = z2.object({
1473
1476
  operationType: GraphQlOperationTypeSchema,
1474
1477
  name: z2.string(),
1475
1478
  displayName: z2.string().nullish(),
1479
+ fieldPath: z2.array(z2.string()).nullish(),
1476
1480
  arguments: z2.array(GraphQlArgumentSchema).nullish(),
1477
1481
  returnType: TypeReferenceSchema,
1478
1482
  examples: z2.array(GraphQlExampleSchema).nullish(),
@@ -1704,6 +1708,7 @@ var RegisterErrorDeclarationV2Schema = z3.object({
1704
1708
  });
1705
1709
  var RegisterEndpointDefinitionSchema = z3.object({
1706
1710
  description: z3.string().nullish(),
1711
+ subtitle: z3.string().nullish(),
1707
1712
  availability: AvailabilitySchema.nullish(),
1708
1713
  slug: z3.string().nullish(),
1709
1714
  auth: z3.boolean().nullish(),
@@ -1922,7 +1927,8 @@ var LatestObjectPropertySchema = z4.lazy(
1922
1927
  availability: AvailabilitySchema.nullish(),
1923
1928
  key: PropertyKeySchema,
1924
1929
  valueShape: LatestTypeShapeSchema,
1925
- propertyAccess: LatestObjectPropertyAccessSchema.nullish()
1930
+ propertyAccess: LatestObjectPropertyAccessSchema.nullish(),
1931
+ arguments: z4.array(LatestGraphQlArgumentSchema).nullish()
1926
1932
  })
1927
1933
  );
1928
1934
  var LatestParameterPropertySchema = z4.lazy(
@@ -2231,6 +2237,7 @@ var LatestExampleEndpointCallSchema = z4.object({
2231
2237
  });
2232
2238
  var LatestEndpointDefinitionSchema = z4.object({
2233
2239
  description: z4.string().nullish(),
2240
+ subtitle: z4.string().nullish(),
2234
2241
  availability: AvailabilitySchema.nullish(),
2235
2242
  namespace: z4.array(z4.string()).nullish(),
2236
2243
  id: EndpointIdSchema,
@@ -2273,6 +2280,7 @@ var LatestGraphQlOperationSchema = z4.object({
2273
2280
  description: z4.string().nullish(),
2274
2281
  availability: AvailabilitySchema.nullish(),
2275
2282
  namespace: z4.array(z4.string()).nullish(),
2283
+ fieldPath: z4.array(z4.string()).nullish(),
2276
2284
  id: GraphQlOperationIdSchema,
2277
2285
  operationType: LatestGraphQlOperationTypeSchema,
2278
2286
  name: z4.string(),
@@ -2689,6 +2697,15 @@ function collectReferencedTypeIds(type, types, { maxDepth = 10 } = {}) {
2689
2697
  visitedTypeIds,
2690
2698
  depth: depth + 1
2691
2699
  });
2700
+ if (property.arguments) {
2701
+ for (const arg of property.arguments) {
2702
+ stack.push({
2703
+ shape: arg.type,
2704
+ visitedTypeIds,
2705
+ depth: depth + 1
2706
+ });
2707
+ }
2708
+ }
2692
2709
  }
2693
2710
  if (obj.extraProperties) {
2694
2711
  stack.push({
@@ -2799,6 +2816,27 @@ function collectTypeDefinitionTree(type, types, { availability: rootAvailability
2799
2816
  visitedTypeIds,
2800
2817
  availability
2801
2818
  });
2819
+ property.arguments?.forEach((arg) => {
2820
+ stack.push({
2821
+ type: arg.type,
2822
+ path: [
2823
+ ...parentpath,
2824
+ {
2825
+ type: "objectProperty",
2826
+ key: property.key,
2827
+ optional: unwrapReference(property.valueShape, types).isOptional
2828
+ },
2829
+ {
2830
+ type: "graphqlArgument",
2831
+ name: arg.name,
2832
+ optional: unwrapReference(arg.type, types).isOptional
2833
+ }
2834
+ ],
2835
+ descriptions: arg.description ? [arg.description] : [],
2836
+ visitedTypeIds,
2837
+ availability: coalesceAvailability([availability, property.availability, arg.availability])
2838
+ });
2839
+ });
2802
2840
  });
2803
2841
  if (obj.extraProperties) {
2804
2842
  stack.push({
@@ -2906,7 +2944,43 @@ function collectTypeDefinitionTreeForObjectProperty(property, types, rootPath =
2906
2944
  optional: unwrapReference(property.valueShape, types).isOptional
2907
2945
  }
2908
2946
  ]
2909
- })
2947
+ }),
2948
+ ...(property.arguments ?? []).flatMap((arg) => [
2949
+ {
2950
+ path: [
2951
+ ...rootPath,
2952
+ {
2953
+ type: "objectProperty",
2954
+ key: property.key,
2955
+ optional: unwrapReference(property.valueShape, types).isOptional
2956
+ },
2957
+ {
2958
+ type: "graphqlArgument",
2959
+ name: arg.name,
2960
+ optional: unwrapReference(arg.type, types).isOptional
2961
+ }
2962
+ ],
2963
+ descriptions: arg.description ? [arg.description] : [],
2964
+ availability: coalesceAvailability([property.availability, arg.availability])
2965
+ },
2966
+ ...collectTypeDefinitionTree(arg.type, types, {
2967
+ maxDepth: maxDepth - 1,
2968
+ availability: coalesceAvailability([property.availability, arg.availability]),
2969
+ path: [
2970
+ ...rootPath,
2971
+ {
2972
+ type: "objectProperty",
2973
+ key: property.key,
2974
+ optional: unwrapReference(property.valueShape, types).isOptional
2975
+ },
2976
+ {
2977
+ type: "graphqlArgument",
2978
+ name: arg.name,
2979
+ optional: unwrapReference(arg.type, types).isOptional
2980
+ }
2981
+ ]
2982
+ })
2983
+ ])
2910
2984
  ];
2911
2985
  }
2912
2986
 
@@ -3025,6 +3099,9 @@ var ApiTypeIdVisitor = class _ApiTypeIdVisitor {
3025
3099
  typeShape.extends.forEach(visit);
3026
3100
  typeShape.properties.forEach((property) => {
3027
3101
  _ApiTypeIdVisitor.visitTypeShape(property.valueShape, visit);
3102
+ property.arguments?.forEach((arg) => {
3103
+ _ApiTypeIdVisitor.visitTypeShape(arg.type, visit);
3104
+ });
3028
3105
  });
3029
3106
  }
3030
3107
  static visitTypeReference(typeReference, visit) {
@@ -3105,10 +3182,13 @@ var ApiDefinitionPruner = class _ApiDefinitionPruner {
3105
3182
  found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
3106
3183
  }
3107
3184
  } else if (node.type === "graphql") {
3108
- const found = this.api.graphqlOperations[node.graphqlOperationId];
3109
- if (found) {
3110
- toRet.graphqlOperations[node.graphqlOperationId] = found;
3111
- found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
3185
+ const idsToInclude = node.graphqlOperationIds ?? [node.graphqlOperationId];
3186
+ for (const opId of idsToInclude) {
3187
+ const found = this.api.graphqlOperations[opId];
3188
+ if (found) {
3189
+ toRet.graphqlOperations[opId] = found;
3190
+ found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
3191
+ }
3112
3192
  }
3113
3193
  }
3114
3194
  }
@@ -3410,9 +3490,21 @@ function createGraphqlContext(node, apiDefinition) {
3410
3490
  );
3411
3491
  return void 0;
3412
3492
  }
3493
+ const allIds = node.graphqlOperationIds ?? [node.graphqlOperationId];
3494
+ const operations = [];
3495
+ for (const id of allIds) {
3496
+ const op = api2.graphqlOperations[id];
3497
+ if (op) {
3498
+ operations.push(op);
3499
+ }
3500
+ }
3501
+ if (operations.length === 0) {
3502
+ operations.push(operation);
3503
+ }
3413
3504
  return {
3414
3505
  node,
3415
3506
  operation,
3507
+ operations,
3416
3508
  types: api2.types
3417
3509
  };
3418
3510
  }
@@ -4340,6 +4432,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
4340
4432
  displayName: v1?.name,
4341
4433
  operationId: v1?.urlSlug?.split("/")?.pop(),
4342
4434
  description: v1?.description,
4435
+ subtitle: v1?.subtitle,
4343
4436
  availability: v1?.availability,
4344
4437
  method: v1?.method,
4345
4438
  path: v1?.path?.parts?.filter((part) => part?.value !== "") ?? [],
@@ -4581,7 +4674,8 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
4581
4674
  },
4582
4675
  propertyAccess: value?.propertyAccess ?? void 0,
4583
4676
  description: value?.description ?? void 0,
4584
- availability: value?.availability ?? void 0
4677
+ availability: value?.availability ?? void 0,
4678
+ arguments: value?.arguments?.map((arg) => this.migrateGraphQlArgument(arg))
4585
4679
  }));
4586
4680
  },
4587
4681
  [],
@@ -5022,6 +5116,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
5022
5116
  description: v1?.description,
5023
5117
  availability: v1?.availability,
5024
5118
  namespace,
5119
+ fieldPath: v1?.fieldPath,
5025
5120
  arguments: v1?.arguments?.map((arg) => this.migrateGraphQlArgument(arg)),
5026
5121
  returnType: {
5027
5122
  type: "alias",
@@ -5318,7 +5413,10 @@ function generateGraphQlSnippet(context) {
5318
5413
  return `$${arg.name}: ${graphqlType}`;
5319
5414
  });
5320
5415
  const argumentUsage = args.map((arg) => `${arg.name}: $${arg.name}`);
5321
- const selectionSet = generateSelectionSet(operation.returnType, types, 2);
5416
+ const fieldPath = operation.fieldPath;
5417
+ const hasFieldPath = fieldPath != null && fieldPath.length > 0;
5418
+ const selectionSetIndent = hasFieldPath ? 2 + fieldPath.length : 2;
5419
+ const selectionSet = generateSelectionSet(operation.returnType, types, 2, /* @__PURE__ */ new Set(), selectionSetIndent);
5322
5420
  let query = operationKeyword;
5323
5421
  if (operationName || variableDefinitions.length > 0) {
5324
5422
  query += ` ${operationName}`;
@@ -5327,15 +5425,32 @@ function generateGraphQlSnippet(context) {
5327
5425
  }
5328
5426
  }
5329
5427
  query += " {\n";
5330
- query += ` ${operation.name}`;
5428
+ const baseIndent = 2;
5429
+ if (hasFieldPath) {
5430
+ for (let i = 0; i < fieldPath.length; i++) {
5431
+ const indent = " ".repeat(baseIndent + i * 2);
5432
+ query += `${indent}${fieldPath[i]} {
5433
+ `;
5434
+ }
5435
+ }
5436
+ const operationIndent = hasFieldPath ? " ".repeat(baseIndent + fieldPath.length * 2) : " ";
5437
+ query += `${operationIndent}${operation.name}`;
5331
5438
  if (argumentUsage.length > 0) {
5332
5439
  query += `(${argumentUsage.join(", ")})`;
5333
5440
  }
5334
5441
  if (selectionSet) {
5335
5442
  query += ` ${selectionSet}`;
5336
5443
  }
5337
- query += "\n}";
5338
- const response = generateResponseExample(operation.name, operation.returnType, types);
5444
+ query += "\n";
5445
+ if (hasFieldPath) {
5446
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
5447
+ const indent = " ".repeat(baseIndent + i * 2);
5448
+ query += `${indent}}
5449
+ `;
5450
+ }
5451
+ }
5452
+ query += "}";
5453
+ const response = generateResponseExample(operation.name, operation.returnType, types, fieldPath);
5339
5454
  const result = { query, variables, response };
5340
5455
  snippetCache.set(operation, result);
5341
5456
  return result;
@@ -5364,49 +5479,44 @@ function getExampleOperationName(operationType) {
5364
5479
  return "ExampleQuery";
5365
5480
  }
5366
5481
  }
5367
- function typeShapeToGraphQlType(shape, types) {
5482
+ function typeShapeToGraphQlType(shape, types, nonNull = true) {
5368
5483
  if (shape.type === "alias") {
5369
- return typeReferenceToGraphQlType(shape.value, types);
5370
- }
5371
- if (shape.type === "enum") {
5372
- return "String";
5373
- }
5374
- if (shape.type === "object") {
5375
- return "Object";
5376
- }
5377
- if (shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion") {
5378
- return "Object";
5484
+ return typeReferenceToGraphQlType(shape.value, types, nonNull);
5379
5485
  }
5380
- return "String";
5486
+ const base = shape.type === "enum" ? "String" : shape.type === "object" || shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion" ? "Object" : "String";
5487
+ return nonNull ? `${base}!` : base;
5381
5488
  }
5382
- function typeReferenceToGraphQlType(ref, types) {
5489
+ function typeReferenceToGraphQlType(ref, types, nonNull = true) {
5383
5490
  switch (ref.type) {
5384
- case "primitive":
5385
- return primitiveToGraphQlType(ref.value);
5491
+ case "primitive": {
5492
+ const base = primitiveToGraphQlType(ref.value);
5493
+ return nonNull ? `${base}!` : base;
5494
+ }
5386
5495
  case "id": {
5387
5496
  const typeDef = types[ref.id];
5388
- if (typeDef) {
5389
- return typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object";
5390
- }
5391
- return "Object";
5497
+ const base = typeDef ? typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object" : "Object";
5498
+ return nonNull ? `${base}!` : base;
5392
5499
  }
5393
5500
  case "optional":
5394
- return typeShapeToGraphQlType(ref.shape, types);
5501
+ return typeShapeToGraphQlType(ref.shape, types, false);
5395
5502
  case "nullable":
5396
- return typeShapeToGraphQlType(ref.shape, types);
5397
- case "list":
5398
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
5399
- case "set":
5400
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
5503
+ return typeShapeToGraphQlType(ref.shape, types, false);
5504
+ case "list": {
5505
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
5506
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
5507
+ }
5508
+ case "set": {
5509
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
5510
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
5511
+ }
5401
5512
  case "map":
5402
- return "Object";
5403
- // Maps don't have direct GraphQL equivalent
5513
+ return nonNull ? "Object!" : "Object";
5404
5514
  case "literal":
5405
- return "String";
5515
+ return nonNull ? "String!" : "String";
5406
5516
  case "unknown":
5407
- return "Object";
5517
+ return nonNull ? "Object!" : "Object";
5408
5518
  default:
5409
- return "String";
5519
+ return nonNull ? "String!" : "String";
5410
5520
  }
5411
5521
  }
5412
5522
  function unnamespacedName(name) {
@@ -5624,13 +5734,18 @@ function generateSelectionSetFromReference(ref, types, depth, visited, indentLev
5624
5734
  return "";
5625
5735
  }
5626
5736
  }
5627
- function generateResponseExample(operationName, returnType, types) {
5737
+ function generateResponseExample(operationName, returnType, types, fieldPath) {
5628
5738
  const data = generateResponseData(returnType, types, 3, /* @__PURE__ */ new Set());
5629
- return {
5630
- data: {
5631
- [operationName]: data
5739
+ let responseData = { [operationName]: data };
5740
+ if (fieldPath != null && fieldPath.length > 0) {
5741
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
5742
+ const key = fieldPath[i];
5743
+ if (key != null) {
5744
+ responseData = { [key]: responseData };
5745
+ }
5632
5746
  }
5633
- };
5747
+ }
5748
+ return { data: responseData };
5634
5749
  }
5635
5750
  function generateResponseData(shape, types, depth, visited) {
5636
5751
  if (depth <= 0) {
@@ -6700,6 +6815,7 @@ var ReadErrorDeclarationV2Schema = z5.object({
6700
6815
  });
6701
6816
  var ReadEndpointDefinitionSchema = z5.object({
6702
6817
  description: z5.string().nullish(),
6818
+ subtitle: z5.string().nullish(),
6703
6819
  availability: AvailabilitySchema.nullish(),
6704
6820
  authed: z5.boolean(),
6705
6821
  authV2: z5.array(AuthSchemeIdSchema).nullish(),
@@ -10377,6 +10493,7 @@ __export(APIV1Db_exports, {
10377
10493
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
10378
10494
  GraphQlOperationSchema: () => GraphQlOperationSchema,
10379
10495
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
10496
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
10380
10497
  GrpcMethodSchema: () => GrpcMethodSchema,
10381
10498
  GrpcProtocolSchema: () => GrpcProtocolSchema,
10382
10499
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -10487,6 +10604,7 @@ var DbHttpRequestsV2Schema = z31.object({
10487
10604
  });
10488
10605
  var DbEndpointDefinitionSchema = z31.object({
10489
10606
  description: z31.string().nullish(),
10607
+ subtitle: z31.string().nullish(),
10490
10608
  availability: AvailabilitySchema.nullish(),
10491
10609
  authed: z31.boolean().nullish(),
10492
10610
  authV2: z31.array(AuthSchemeIdSchema).nullish(),
@@ -10630,6 +10748,7 @@ __export(APIV1Read_exports, {
10630
10748
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
10631
10749
  GraphQlOperationSchema: () => GraphQlOperationSchema,
10632
10750
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
10751
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
10633
10752
  GrpcMethod: () => GrpcMethod,
10634
10753
  GrpcMethodSchema: () => GrpcMethodSchema,
10635
10754
  GrpcProtocolSchema: () => GrpcProtocolSchema,
@@ -10857,6 +10976,7 @@ __export(APIV1Write_exports, {
10857
10976
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
10858
10977
  GraphQlOperationSchema: () => GraphQlOperationSchema,
10859
10978
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
10979
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
10860
10980
  GrpcMethodSchema: () => GrpcMethodSchema,
10861
10981
  GrpcProtocolSchema: () => GrpcProtocolSchema,
10862
10982
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -11764,6 +11884,7 @@ __export(FdrAPI_exports, {
11764
11884
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
11765
11885
  GraphQlOperationSchema: () => GraphQlOperationSchema,
11766
11886
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
11887
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
11767
11888
  GrpcId: () => GrpcId,
11768
11889
  GrpcIdSchema: () => GrpcIdSchema,
11769
11890
  GrpcMethod: () => GrpcMethod,
@@ -13310,6 +13431,7 @@ function transformEndpoint({
13310
13431
  snippets
13311
13432
  }),
13312
13433
  description: writeShape.description,
13434
+ subtitle: writeShape.subtitle,
13313
13435
  // htmlDescription,
13314
13436
  authed: writeShape.auth,
13315
13437
  authV2: writeShape.authV2,
@@ -13649,7 +13771,8 @@ function transformProperty({ writeShape }) {
13649
13771
  // htmlDescription,
13650
13772
  key: writeShape.key,
13651
13773
  valueType: writeShape.valueType,
13652
- propertyAccess: writeShape.propertyAccess
13774
+ propertyAccess: writeShape.propertyAccess,
13775
+ ...writeShape.arguments != null ? { arguments: writeShape.arguments } : {}
13653
13776
  // descriptionContainsMarkdown: true,
13654
13777
  };
13655
13778
  }
@@ -14541,6 +14664,7 @@ function transformEndpoint2({
14541
14664
  (example) => convertExampleEndpointCall({ dbShape: example })
14542
14665
  ),
14543
14666
  description: dbShape.description,
14667
+ subtitle: dbShape.subtitle,
14544
14668
  // htmlDescription: dbShape.htmlDescription,
14545
14669
  authed: dbShape.authed ?? false,
14546
14670
  authV2: dbShape.authV2,
@@ -15154,6 +15278,7 @@ __export(navigation_exports, {
15154
15278
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
15155
15279
  GraphQlOperationSchema: () => GraphQlOperationSchema,
15156
15280
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
15281
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
15157
15282
  GrpcId: () => GrpcId,
15158
15283
  GrpcIdSchema: () => GrpcIdSchema,
15159
15284
  GrpcMethod: () => GrpcMethod,
@@ -15277,7 +15402,7 @@ import { UnreachableCaseError as UnreachableCaseError2 } from "ts-essentials";
15277
15402
 
15278
15403
  // src/navigation/versions/latest/NavigationNodeApiLeaf.ts
15279
15404
  function isApiLeaf(node) {
15280
- return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql";
15405
+ return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql" || node.type === "graphqlType";
15281
15406
  }
15282
15407
 
15283
15408
  // src/navigation/versions/latest/NavigationNodePageLeaf.ts
@@ -15347,7 +15472,8 @@ function getPageId(node) {
15347
15472
  webSocket: RETURN_UNDEFINED,
15348
15473
  webhook: RETURN_UNDEFINED,
15349
15474
  grpc: RETURN_UNDEFINED,
15350
- graphql: RETURN_UNDEFINED
15475
+ graphql: RETURN_UNDEFINED,
15476
+ graphqlType: RETURN_UNDEFINED
15351
15477
  // changelogYear: RETURN_UNDEFINED,
15352
15478
  // changelogMonth: RETURN_UNDEFINED,
15353
15479
  });
@@ -15709,6 +15835,9 @@ var ApiTypeIdVisitor2 = class _ApiTypeIdVisitor {
15709
15835
  typeShape.extends.forEach(visit);
15710
15836
  typeShape.properties.forEach((property) => {
15711
15837
  _ApiTypeIdVisitor.visitTypeReference(property.valueType, visit);
15838
+ property.arguments?.forEach((arg) => {
15839
+ _ApiTypeIdVisitor.visitTypeReference(arg.type, visit);
15840
+ });
15712
15841
  });
15713
15842
  }
15714
15843
  static visitTypeReference(typeReference, visit) {
@@ -15865,11 +15994,8 @@ var ApiDefinitionPruner2 = class {
15865
15994
  if (node.type !== "graphql" || graphqlOperations == null) {
15866
15995
  return [];
15867
15996
  }
15868
- const graphqlOperationId = node.graphqlOperationId;
15869
- const found = graphqlOperations.find(
15870
- (graphqlOperation) => ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation) === graphqlOperationId
15871
- );
15872
- return found ? [found] : [];
15997
+ const idsToInclude = new Set(node.graphqlOperationIds ?? [node.graphqlOperationId]);
15998
+ return graphqlOperations.filter((op) => idsToInclude.has(ApiDefinitionHolder.createGraphQlOperationId(op)));
15873
15999
  }
15874
16000
  };
15875
16001
 
@@ -15975,6 +16101,7 @@ __export(v1_exports2, {
15975
16101
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
15976
16102
  GraphQlOperationSchema: () => GraphQlOperationSchema,
15977
16103
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
16104
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
15978
16105
  GrpcId: () => GrpcId,
15979
16106
  GrpcIdSchema: () => GrpcIdSchema,
15980
16107
  GrpcMethod: () => GrpcMethod,
@@ -16593,12 +16720,15 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
16593
16720
  }));
16594
16721
  }
16595
16722
  convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug) {
16723
+ const fieldPath = graphqlOperation.fieldPath;
16724
+ const urlSlug = fieldPath != null && fieldPath.length > 0 ? [...fieldPath, graphqlOperation.name].join("-") : graphqlOperation.name;
16596
16725
  return this.#idgen.with(graphqlOperationId, (id) => ({
16597
16726
  id,
16598
16727
  type: "graphql",
16599
16728
  title: graphqlOperation.displayName ?? graphqlOperation.name,
16600
16729
  graphqlOperationId,
16601
- slug: parentSlug.apply({ urlSlug: graphqlOperation.name }).get(),
16730
+ graphqlOperationIds: void 0,
16731
+ slug: parentSlug.apply({ urlSlug }).get(),
16602
16732
  icon: void 0,
16603
16733
  hidden: void 0,
16604
16734
  operationType: graphqlOperation.operationType,
@@ -16612,6 +16742,86 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
16612
16742
  featureFlags: void 0
16613
16743
  }));
16614
16744
  }
16745
+ convertGraphQlOperationsToChildren(graphqlOperations, parentSlug) {
16746
+ const groupedByParent = /* @__PURE__ */ new Map();
16747
+ const insertionOrder = [];
16748
+ for (const op of graphqlOperations) {
16749
+ const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(op);
16750
+ if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
16751
+ continue;
16752
+ }
16753
+ this.#visitedGraphqlOperations.add(graphqlOperationId);
16754
+ const parentField = op.fieldPath?.[0];
16755
+ if (parentField != null && op.operationType === "QUERY") {
16756
+ const group = groupedByParent.get(parentField);
16757
+ if (group != null) {
16758
+ group.push(op);
16759
+ } else {
16760
+ groupedByParent.set(parentField, [op]);
16761
+ insertionOrder.push({ type: "group", parentField });
16762
+ }
16763
+ } else {
16764
+ insertionOrder.push({ type: "flat", op });
16765
+ }
16766
+ }
16767
+ const children = [];
16768
+ const allSlugs = /* @__PURE__ */ new Set();
16769
+ for (const entry of insertionOrder) {
16770
+ if (entry.type === "flat") {
16771
+ const fp = entry.op.fieldPath;
16772
+ allSlugs.add(fp != null && fp.length > 0 ? [...fp, entry.op.name].join("-") : entry.op.name);
16773
+ } else {
16774
+ allSlugs.add(entry.parentField);
16775
+ }
16776
+ }
16777
+ for (const entry of insertionOrder) {
16778
+ if (entry.type === "flat") {
16779
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(entry.op);
16780
+ children.push(this.convertGraphQlNode(opId, entry.op, parentSlug));
16781
+ } else {
16782
+ const operations = groupedByParent.get(entry.parentField);
16783
+ if (operations == null) {
16784
+ continue;
16785
+ }
16786
+ const firstOp = operations[0];
16787
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(firstOp);
16788
+ const allOpIds = operations.map((op) => ApiDefinitionHolder.createGraphQlOperationId(op));
16789
+ let slugSegment = entry.parentField;
16790
+ const flatHasSameSlug = insertionOrder.some(
16791
+ (e) => e.type === "flat" && (() => {
16792
+ const fp = e.op.fieldPath;
16793
+ const s = fp != null && fp.length > 0 ? [...fp, e.op.name].join("-") : e.op.name;
16794
+ return s === slugSegment;
16795
+ })()
16796
+ );
16797
+ if (flatHasSameSlug) {
16798
+ slugSegment = `${entry.parentField}-fields`;
16799
+ }
16800
+ children.push(
16801
+ this.#idgen.with(opId, (id) => ({
16802
+ id,
16803
+ type: "graphql",
16804
+ title: entry.parentField,
16805
+ graphqlOperationId: opId,
16806
+ graphqlOperationIds: allOpIds.length > 1 ? allOpIds : void 0,
16807
+ slug: parentSlug.apply({ urlSlug: slugSegment }).get(),
16808
+ icon: void 0,
16809
+ hidden: void 0,
16810
+ operationType: firstOp.operationType,
16811
+ apiDefinitionId: this.apiDefinitionId,
16812
+ availability: navigation_exports.V1.convertAvailability(firstOp.availability),
16813
+ playground: void 0,
16814
+ authed: void 0,
16815
+ collapsed: void 0,
16816
+ viewers: void 0,
16817
+ orphaned: void 0,
16818
+ featureFlags: void 0
16819
+ }))
16820
+ );
16821
+ }
16822
+ }
16823
+ return children;
16824
+ }
16615
16825
  convertPackageToChildren(package_, parentSlug) {
16616
16826
  const children = [];
16617
16827
  let subpackageId = isSubpackage2(package_) ? package_.subpackageId : "__package__";
@@ -16659,14 +16869,7 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
16659
16869
  children.push(this.convertWebhookNode(webhookId, webhook, parentSlug));
16660
16870
  this.#visitedWebhooks.add(webhookId);
16661
16871
  });
16662
- (package_.graphqlOperations ?? []).forEach((graphqlOperation) => {
16663
- const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation);
16664
- if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
16665
- return;
16666
- }
16667
- children.push(this.convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug));
16668
- this.#visitedGraphqlOperations.add(graphqlOperationId);
16669
- });
16872
+ children.push(...this.convertGraphQlOperationsToChildren(package_.graphqlOperations ?? [], parentSlug));
16670
16873
  (package_.subpackages ?? []).forEach((subpackageId2) => {
16671
16874
  const subpackage = this.api.subpackages[subpackageId2];
16672
16875
  if (subpackage == null) {
@@ -18609,6 +18812,7 @@ var FernNavigationV1ToLatest = class _FernNavigationV1ToLatest {
18609
18812
  collapsed: node.collapsed,
18610
18813
  apiDefinitionId: node.apiDefinitionId,
18611
18814
  graphqlOperationId: node.graphqlOperationId,
18815
+ graphqlOperationIds: node.graphqlOperationIds,
18612
18816
  operationType: node.operationType,
18613
18817
  playground: node.playground,
18614
18818
  availability: this.#availability(node.availability),
@@ -19114,6 +19318,7 @@ function getApiReferenceId(node) {
19114
19318
  webhook: RETURN_API_DEFINITION_ID,
19115
19319
  grpc: RETURN_API_DEFINITION_ID,
19116
19320
  graphql: RETURN_API_DEFINITION_ID,
19321
+ graphqlType: RETURN_API_DEFINITION_ID,
19117
19322
  apiPackage: RETURN_API_DEFINITION_ID,
19118
19323
  unversioned: RETURN_UNDEFINED3,
19119
19324
  landingPage: RETURN_UNDEFINED3