@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
@@ -97,6 +97,7 @@ __export(navigation_exports, {
97
97
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
98
98
  GraphQlOperationSchema: () => GraphQlOperationSchema,
99
99
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
100
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
100
101
  GrpcId: () => GrpcId,
101
102
  GrpcIdSchema: () => GrpcIdSchema,
102
103
  GrpcMethod: () => GrpcMethod,
@@ -382,6 +383,7 @@ var GraphQlOperationIdSchema = z2.string();
382
383
  function GraphQlOperationId(value) {
383
384
  return value;
384
385
  }
386
+ var GraphQlTypeCategorySchema = z2.enum(["object", "input", "enum", "scalar", "interface", "union"]);
385
387
  var EnvironmentIdSchema = z2.string();
386
388
  function EnvironmentId(value) {
387
389
  return value;
@@ -616,12 +618,20 @@ var TypeReferenceSchema = z2.lazy(
616
618
  })
617
619
  ])
618
620
  );
621
+ var GraphQlArgumentSchema = z2.object({
622
+ description: z2.string().nullish(),
623
+ availability: AvailabilitySchema.nullish(),
624
+ name: z2.string(),
625
+ type: TypeReferenceSchema,
626
+ defaultValue: z2.unknown().nullish()
627
+ });
619
628
  var ObjectPropertySchema = z2.object({
620
629
  description: z2.string().nullish(),
621
630
  availability: AvailabilitySchema.nullish(),
622
631
  key: PropertyKeySchema,
623
632
  valueType: TypeReferenceSchema,
624
- propertyAccess: ObjectPropertyAccessSchema.nullish()
633
+ propertyAccess: ObjectPropertyAccessSchema.nullish(),
634
+ arguments: z2.array(GraphQlArgumentSchema).nullish()
625
635
  });
626
636
  var ObjectTypeSchema = z2.object({
627
637
  extends: z2.array(TypeIdSchema),
@@ -769,13 +779,6 @@ var ErrorExampleSchema = z2.object({
769
779
  responseBody: ExampleErrorResponseSchema
770
780
  });
771
781
  var GraphQlOperationTypeSchema = z2.enum(["QUERY", "MUTATION", "SUBSCRIPTION"]);
772
- var GraphQlArgumentSchema = z2.object({
773
- description: z2.string().nullish(),
774
- availability: AvailabilitySchema.nullish(),
775
- name: z2.string(),
776
- type: TypeReferenceSchema,
777
- defaultValue: z2.unknown().nullish()
778
- });
779
782
  var GraphQlExampleSchema = z2.object({
780
783
  description: z2.string().nullish(),
781
784
  name: z2.string().nullish(),
@@ -798,6 +801,7 @@ var GraphQlOperationSchema = z2.object({
798
801
  operationType: GraphQlOperationTypeSchema,
799
802
  name: z2.string(),
800
803
  displayName: z2.string().nullish(),
804
+ fieldPath: z2.array(z2.string()).nullish(),
801
805
  arguments: z2.array(GraphQlArgumentSchema).nullish(),
802
806
  returnType: TypeReferenceSchema,
803
807
  examples: z2.array(GraphQlExampleSchema).nullish(),
@@ -926,7 +930,7 @@ var import_ts_essentials = require("ts-essentials");
926
930
 
927
931
  // src/navigation/versions/latest/NavigationNodeApiLeaf.ts
928
932
  function isApiLeaf(node) {
929
- return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql";
933
+ return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql" || node.type === "graphqlType";
930
934
  }
931
935
 
932
936
  // src/navigation/versions/latest/NavigationNodePageLeaf.ts
@@ -1020,7 +1024,8 @@ function getPageId(node) {
1020
1024
  webSocket: RETURN_UNDEFINED,
1021
1025
  webhook: RETURN_UNDEFINED,
1022
1026
  grpc: RETURN_UNDEFINED,
1023
- graphql: RETURN_UNDEFINED
1027
+ graphql: RETURN_UNDEFINED,
1028
+ graphqlType: RETURN_UNDEFINED
1024
1029
  // changelogYear: RETURN_UNDEFINED,
1025
1030
  // changelogMonth: RETURN_UNDEFINED,
1026
1031
  });
@@ -2051,6 +2056,9 @@ var ApiTypeIdVisitor = class _ApiTypeIdVisitor {
2051
2056
  typeShape.extends.forEach(visit);
2052
2057
  typeShape.properties.forEach((property) => {
2053
2058
  _ApiTypeIdVisitor.visitTypeReference(property.valueType, visit);
2059
+ property.arguments?.forEach((arg) => {
2060
+ _ApiTypeIdVisitor.visitTypeReference(arg.type, visit);
2061
+ });
2054
2062
  });
2055
2063
  }
2056
2064
  static visitTypeReference(typeReference, visit) {
@@ -2207,11 +2215,8 @@ var ApiDefinitionPruner = class {
2207
2215
  if (node.type !== "graphql" || graphqlOperations == null) {
2208
2216
  return [];
2209
2217
  }
2210
- const graphqlOperationId = node.graphqlOperationId;
2211
- const found = graphqlOperations.find(
2212
- (graphqlOperation) => ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation) === graphqlOperationId
2213
- );
2214
- return found ? [found] : [];
2218
+ const idsToInclude = new Set(node.graphqlOperationIds ?? [node.graphqlOperationId]);
2219
+ return graphqlOperations.filter((op) => idsToInclude.has(ApiDefinitionHolder.createGraphQlOperationId(op)));
2215
2220
  }
2216
2221
  };
2217
2222
 
@@ -2287,6 +2292,7 @@ __export(api_definition_exports, {
2287
2292
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
2288
2293
  GraphQlOperationSchema: () => LatestGraphQlOperationSchema,
2289
2294
  GraphQlOperationTypeSchema: () => LatestGraphQlOperationTypeSchema,
2295
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
2290
2296
  GrpcId: () => GrpcId,
2291
2297
  GrpcIdSchema: () => GrpcIdSchema,
2292
2298
  GrpcMethod: () => GrpcMethod,
@@ -2548,6 +2554,7 @@ var RegisterErrorDeclarationV2Schema = z3.object({
2548
2554
  });
2549
2555
  var RegisterEndpointDefinitionSchema = z3.object({
2550
2556
  description: z3.string().nullish(),
2557
+ subtitle: z3.string().nullish(),
2551
2558
  availability: AvailabilitySchema.nullish(),
2552
2559
  slug: z3.string().nullish(),
2553
2560
  auth: z3.boolean().nullish(),
@@ -2766,7 +2773,8 @@ var LatestObjectPropertySchema = z4.lazy(
2766
2773
  availability: AvailabilitySchema.nullish(),
2767
2774
  key: PropertyKeySchema,
2768
2775
  valueShape: LatestTypeShapeSchema,
2769
- propertyAccess: LatestObjectPropertyAccessSchema.nullish()
2776
+ propertyAccess: LatestObjectPropertyAccessSchema.nullish(),
2777
+ arguments: z4.array(LatestGraphQlArgumentSchema).nullish()
2770
2778
  })
2771
2779
  );
2772
2780
  var LatestParameterPropertySchema = z4.lazy(
@@ -3075,6 +3083,7 @@ var LatestExampleEndpointCallSchema = z4.object({
3075
3083
  });
3076
3084
  var LatestEndpointDefinitionSchema = z4.object({
3077
3085
  description: z4.string().nullish(),
3086
+ subtitle: z4.string().nullish(),
3078
3087
  availability: AvailabilitySchema.nullish(),
3079
3088
  namespace: z4.array(z4.string()).nullish(),
3080
3089
  id: EndpointIdSchema,
@@ -3117,6 +3126,7 @@ var LatestGraphQlOperationSchema = z4.object({
3117
3126
  description: z4.string().nullish(),
3118
3127
  availability: AvailabilitySchema.nullish(),
3119
3128
  namespace: z4.array(z4.string()).nullish(),
3129
+ fieldPath: z4.array(z4.string()).nullish(),
3120
3130
  id: GraphQlOperationIdSchema,
3121
3131
  operationType: LatestGraphQlOperationTypeSchema,
3122
3132
  name: z4.string(),
@@ -3533,6 +3543,15 @@ function collectReferencedTypeIds(type, types, { maxDepth = 10 } = {}) {
3533
3543
  visitedTypeIds,
3534
3544
  depth: depth + 1
3535
3545
  });
3546
+ if (property.arguments) {
3547
+ for (const arg of property.arguments) {
3548
+ stack.push({
3549
+ shape: arg.type,
3550
+ visitedTypeIds,
3551
+ depth: depth + 1
3552
+ });
3553
+ }
3554
+ }
3536
3555
  }
3537
3556
  if (obj.extraProperties) {
3538
3557
  stack.push({
@@ -3643,6 +3662,27 @@ function collectTypeDefinitionTree(type, types, { availability: rootAvailability
3643
3662
  visitedTypeIds,
3644
3663
  availability
3645
3664
  });
3665
+ property.arguments?.forEach((arg) => {
3666
+ stack.push({
3667
+ type: arg.type,
3668
+ path: [
3669
+ ...parentpath,
3670
+ {
3671
+ type: "objectProperty",
3672
+ key: property.key,
3673
+ optional: unwrapReference(property.valueShape, types).isOptional
3674
+ },
3675
+ {
3676
+ type: "graphqlArgument",
3677
+ name: arg.name,
3678
+ optional: unwrapReference(arg.type, types).isOptional
3679
+ }
3680
+ ],
3681
+ descriptions: arg.description ? [arg.description] : [],
3682
+ visitedTypeIds,
3683
+ availability: coalesceAvailability([availability, property.availability, arg.availability])
3684
+ });
3685
+ });
3646
3686
  });
3647
3687
  if (obj.extraProperties) {
3648
3688
  stack.push({
@@ -3750,7 +3790,43 @@ function collectTypeDefinitionTreeForObjectProperty(property, types, rootPath =
3750
3790
  optional: unwrapReference(property.valueShape, types).isOptional
3751
3791
  }
3752
3792
  ]
3753
- })
3793
+ }),
3794
+ ...(property.arguments ?? []).flatMap((arg) => [
3795
+ {
3796
+ path: [
3797
+ ...rootPath,
3798
+ {
3799
+ type: "objectProperty",
3800
+ key: property.key,
3801
+ optional: unwrapReference(property.valueShape, types).isOptional
3802
+ },
3803
+ {
3804
+ type: "graphqlArgument",
3805
+ name: arg.name,
3806
+ optional: unwrapReference(arg.type, types).isOptional
3807
+ }
3808
+ ],
3809
+ descriptions: arg.description ? [arg.description] : [],
3810
+ availability: coalesceAvailability([property.availability, arg.availability])
3811
+ },
3812
+ ...collectTypeDefinitionTree(arg.type, types, {
3813
+ maxDepth: maxDepth - 1,
3814
+ availability: coalesceAvailability([property.availability, arg.availability]),
3815
+ path: [
3816
+ ...rootPath,
3817
+ {
3818
+ type: "objectProperty",
3819
+ key: property.key,
3820
+ optional: unwrapReference(property.valueShape, types).isOptional
3821
+ },
3822
+ {
3823
+ type: "graphqlArgument",
3824
+ name: arg.name,
3825
+ optional: unwrapReference(arg.type, types).isOptional
3826
+ }
3827
+ ]
3828
+ })
3829
+ ])
3754
3830
  ];
3755
3831
  }
3756
3832
 
@@ -3869,6 +3945,9 @@ var ApiTypeIdVisitor2 = class _ApiTypeIdVisitor {
3869
3945
  typeShape.extends.forEach(visit);
3870
3946
  typeShape.properties.forEach((property) => {
3871
3947
  _ApiTypeIdVisitor.visitTypeShape(property.valueShape, visit);
3948
+ property.arguments?.forEach((arg) => {
3949
+ _ApiTypeIdVisitor.visitTypeShape(arg.type, visit);
3950
+ });
3872
3951
  });
3873
3952
  }
3874
3953
  static visitTypeReference(typeReference, visit) {
@@ -3949,10 +4028,13 @@ var ApiDefinitionPruner2 = class _ApiDefinitionPruner {
3949
4028
  found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
3950
4029
  }
3951
4030
  } else if (node.type === "graphql") {
3952
- const found = this.api.graphqlOperations[node.graphqlOperationId];
3953
- if (found) {
3954
- toRet.graphqlOperations[node.graphqlOperationId] = found;
3955
- found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
4031
+ const idsToInclude = node.graphqlOperationIds ?? [node.graphqlOperationId];
4032
+ for (const opId of idsToInclude) {
4033
+ const found = this.api.graphqlOperations[opId];
4034
+ if (found) {
4035
+ toRet.graphqlOperations[opId] = found;
4036
+ found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
4037
+ }
3956
4038
  }
3957
4039
  }
3958
4040
  }
@@ -4254,9 +4336,21 @@ function createGraphqlContext(node, apiDefinition) {
4254
4336
  );
4255
4337
  return void 0;
4256
4338
  }
4339
+ const allIds = node.graphqlOperationIds ?? [node.graphqlOperationId];
4340
+ const operations = [];
4341
+ for (const id of allIds) {
4342
+ const op = api2.graphqlOperations[id];
4343
+ if (op) {
4344
+ operations.push(op);
4345
+ }
4346
+ }
4347
+ if (operations.length === 0) {
4348
+ operations.push(operation);
4349
+ }
4257
4350
  return {
4258
4351
  node,
4259
4352
  operation,
4353
+ operations,
4260
4354
  types: api2.types
4261
4355
  };
4262
4356
  }
@@ -5181,6 +5275,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
5181
5275
  displayName: v1?.name,
5182
5276
  operationId: v1?.urlSlug?.split("/")?.pop(),
5183
5277
  description: v1?.description,
5278
+ subtitle: v1?.subtitle,
5184
5279
  availability: v1?.availability,
5185
5280
  method: v1?.method,
5186
5281
  path: v1?.path?.parts?.filter((part) => part?.value !== "") ?? [],
@@ -5422,7 +5517,8 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
5422
5517
  },
5423
5518
  propertyAccess: value?.propertyAccess ?? void 0,
5424
5519
  description: value?.description ?? void 0,
5425
- availability: value?.availability ?? void 0
5520
+ availability: value?.availability ?? void 0,
5521
+ arguments: value?.arguments?.map((arg) => this.migrateGraphQlArgument(arg))
5426
5522
  }));
5427
5523
  },
5428
5524
  [],
@@ -5863,6 +5959,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
5863
5959
  description: v1?.description,
5864
5960
  availability: v1?.availability,
5865
5961
  namespace,
5962
+ fieldPath: v1?.fieldPath,
5866
5963
  arguments: v1?.arguments?.map((arg) => this.migrateGraphQlArgument(arg)),
5867
5964
  returnType: {
5868
5965
  type: "alias",
@@ -6159,7 +6256,10 @@ function generateGraphQlSnippet(context) {
6159
6256
  return `$${arg.name}: ${graphqlType}`;
6160
6257
  });
6161
6258
  const argumentUsage = args.map((arg) => `${arg.name}: $${arg.name}`);
6162
- const selectionSet = generateSelectionSet(operation.returnType, types, 2);
6259
+ const fieldPath = operation.fieldPath;
6260
+ const hasFieldPath = fieldPath != null && fieldPath.length > 0;
6261
+ const selectionSetIndent = hasFieldPath ? 2 + fieldPath.length : 2;
6262
+ const selectionSet = generateSelectionSet(operation.returnType, types, 2, /* @__PURE__ */ new Set(), selectionSetIndent);
6163
6263
  let query = operationKeyword;
6164
6264
  if (operationName || variableDefinitions.length > 0) {
6165
6265
  query += ` ${operationName}`;
@@ -6168,15 +6268,32 @@ function generateGraphQlSnippet(context) {
6168
6268
  }
6169
6269
  }
6170
6270
  query += " {\n";
6171
- query += ` ${operation.name}`;
6271
+ const baseIndent = 2;
6272
+ if (hasFieldPath) {
6273
+ for (let i = 0; i < fieldPath.length; i++) {
6274
+ const indent = " ".repeat(baseIndent + i * 2);
6275
+ query += `${indent}${fieldPath[i]} {
6276
+ `;
6277
+ }
6278
+ }
6279
+ const operationIndent = hasFieldPath ? " ".repeat(baseIndent + fieldPath.length * 2) : " ";
6280
+ query += `${operationIndent}${operation.name}`;
6172
6281
  if (argumentUsage.length > 0) {
6173
6282
  query += `(${argumentUsage.join(", ")})`;
6174
6283
  }
6175
6284
  if (selectionSet) {
6176
6285
  query += ` ${selectionSet}`;
6177
6286
  }
6178
- query += "\n}";
6179
- const response = generateResponseExample(operation.name, operation.returnType, types);
6287
+ query += "\n";
6288
+ if (hasFieldPath) {
6289
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
6290
+ const indent = " ".repeat(baseIndent + i * 2);
6291
+ query += `${indent}}
6292
+ `;
6293
+ }
6294
+ }
6295
+ query += "}";
6296
+ const response = generateResponseExample(operation.name, operation.returnType, types, fieldPath);
6180
6297
  const result = { query, variables, response };
6181
6298
  snippetCache.set(operation, result);
6182
6299
  return result;
@@ -6205,49 +6322,44 @@ function getExampleOperationName(operationType) {
6205
6322
  return "ExampleQuery";
6206
6323
  }
6207
6324
  }
6208
- function typeShapeToGraphQlType(shape, types) {
6325
+ function typeShapeToGraphQlType(shape, types, nonNull = true) {
6209
6326
  if (shape.type === "alias") {
6210
- return typeReferenceToGraphQlType(shape.value, types);
6211
- }
6212
- if (shape.type === "enum") {
6213
- return "String";
6327
+ return typeReferenceToGraphQlType(shape.value, types, nonNull);
6214
6328
  }
6215
- if (shape.type === "object") {
6216
- return "Object";
6217
- }
6218
- if (shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion") {
6219
- return "Object";
6220
- }
6221
- return "String";
6329
+ const base = shape.type === "enum" ? "String" : shape.type === "object" || shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion" ? "Object" : "String";
6330
+ return nonNull ? `${base}!` : base;
6222
6331
  }
6223
- function typeReferenceToGraphQlType(ref, types) {
6332
+ function typeReferenceToGraphQlType(ref, types, nonNull = true) {
6224
6333
  switch (ref.type) {
6225
- case "primitive":
6226
- return primitiveToGraphQlType(ref.value);
6334
+ case "primitive": {
6335
+ const base = primitiveToGraphQlType(ref.value);
6336
+ return nonNull ? `${base}!` : base;
6337
+ }
6227
6338
  case "id": {
6228
6339
  const typeDef = types[ref.id];
6229
- if (typeDef) {
6230
- return typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object";
6231
- }
6232
- return "Object";
6340
+ const base = typeDef ? typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object" : "Object";
6341
+ return nonNull ? `${base}!` : base;
6233
6342
  }
6234
6343
  case "optional":
6235
- return typeShapeToGraphQlType(ref.shape, types);
6344
+ return typeShapeToGraphQlType(ref.shape, types, false);
6236
6345
  case "nullable":
6237
- return typeShapeToGraphQlType(ref.shape, types);
6238
- case "list":
6239
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
6240
- case "set":
6241
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
6346
+ return typeShapeToGraphQlType(ref.shape, types, false);
6347
+ case "list": {
6348
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
6349
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
6350
+ }
6351
+ case "set": {
6352
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
6353
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
6354
+ }
6242
6355
  case "map":
6243
- return "Object";
6244
- // Maps don't have direct GraphQL equivalent
6356
+ return nonNull ? "Object!" : "Object";
6245
6357
  case "literal":
6246
- return "String";
6358
+ return nonNull ? "String!" : "String";
6247
6359
  case "unknown":
6248
- return "Object";
6360
+ return nonNull ? "Object!" : "Object";
6249
6361
  default:
6250
- return "String";
6362
+ return nonNull ? "String!" : "String";
6251
6363
  }
6252
6364
  }
6253
6365
  function unnamespacedName(name) {
@@ -6465,13 +6577,18 @@ function generateSelectionSetFromReference(ref, types, depth, visited, indentLev
6465
6577
  return "";
6466
6578
  }
6467
6579
  }
6468
- function generateResponseExample(operationName, returnType, types) {
6580
+ function generateResponseExample(operationName, returnType, types, fieldPath) {
6469
6581
  const data = generateResponseData(returnType, types, 3, /* @__PURE__ */ new Set());
6470
- return {
6471
- data: {
6472
- [operationName]: data
6582
+ let responseData = { [operationName]: data };
6583
+ if (fieldPath != null && fieldPath.length > 0) {
6584
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
6585
+ const key = fieldPath[i];
6586
+ if (key != null) {
6587
+ responseData = { [key]: responseData };
6588
+ }
6473
6589
  }
6474
- };
6590
+ }
6591
+ return { data: responseData };
6475
6592
  }
6476
6593
  function generateResponseData(shape, types, depth, visited) {
6477
6594
  if (depth <= 0) {
@@ -7535,6 +7652,7 @@ var ReadErrorDeclarationV2Schema = z5.object({
7535
7652
  });
7536
7653
  var ReadEndpointDefinitionSchema = z5.object({
7537
7654
  description: z5.string().nullish(),
7655
+ subtitle: z5.string().nullish(),
7538
7656
  availability: AvailabilitySchema.nullish(),
7539
7657
  authed: z5.boolean(),
7540
7658
  authV2: z5.array(AuthSchemeIdSchema).nullish(),
@@ -9139,6 +9257,7 @@ __export(APIV1Db_exports, {
9139
9257
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
9140
9258
  GraphQlOperationSchema: () => GraphQlOperationSchema,
9141
9259
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
9260
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
9142
9261
  GrpcMethodSchema: () => GrpcMethodSchema,
9143
9262
  GrpcProtocolSchema: () => GrpcProtocolSchema,
9144
9263
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -9249,6 +9368,7 @@ var DbHttpRequestsV2Schema = z15.object({
9249
9368
  });
9250
9369
  var DbEndpointDefinitionSchema = z15.object({
9251
9370
  description: z15.string().nullish(),
9371
+ subtitle: z15.string().nullish(),
9252
9372
  availability: AvailabilitySchema.nullish(),
9253
9373
  authed: z15.boolean().nullish(),
9254
9374
  authV2: z15.array(AuthSchemeIdSchema).nullish(),
@@ -9392,6 +9512,7 @@ __export(APIV1Read_exports, {
9392
9512
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
9393
9513
  GraphQlOperationSchema: () => GraphQlOperationSchema,
9394
9514
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
9515
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
9395
9516
  GrpcMethod: () => GrpcMethod,
9396
9517
  GrpcMethodSchema: () => GrpcMethodSchema,
9397
9518
  GrpcProtocolSchema: () => GrpcProtocolSchema,
@@ -9619,6 +9740,7 @@ __export(APIV1Write_exports, {
9619
9740
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
9620
9741
  GraphQlOperationSchema: () => GraphQlOperationSchema,
9621
9742
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
9743
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
9622
9744
  GrpcMethodSchema: () => GrpcMethodSchema,
9623
9745
  GrpcProtocolSchema: () => GrpcProtocolSchema,
9624
9746
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -10526,6 +10648,7 @@ __export(FdrAPI_exports, {
10526
10648
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
10527
10649
  GraphQlOperationSchema: () => GraphQlOperationSchema,
10528
10650
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
10651
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
10529
10652
  GrpcId: () => GrpcId,
10530
10653
  GrpcIdSchema: () => GrpcIdSchema,
10531
10654
  GrpcMethod: () => GrpcMethod,
@@ -11263,6 +11386,7 @@ __export(v1_exports2, {
11263
11386
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
11264
11387
  GraphQlOperationSchema: () => GraphQlOperationSchema,
11265
11388
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
11389
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
11266
11390
  GrpcId: () => GrpcId,
11267
11391
  GrpcIdSchema: () => GrpcIdSchema,
11268
11392
  GrpcMethod: () => GrpcMethod,
@@ -11881,12 +12005,15 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
11881
12005
  }));
11882
12006
  }
11883
12007
  convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug) {
12008
+ const fieldPath = graphqlOperation.fieldPath;
12009
+ const urlSlug = fieldPath != null && fieldPath.length > 0 ? [...fieldPath, graphqlOperation.name].join("-") : graphqlOperation.name;
11884
12010
  return this.#idgen.with(graphqlOperationId, (id) => ({
11885
12011
  id,
11886
12012
  type: "graphql",
11887
12013
  title: graphqlOperation.displayName ?? graphqlOperation.name,
11888
12014
  graphqlOperationId,
11889
- slug: parentSlug.apply({ urlSlug: graphqlOperation.name }).get(),
12015
+ graphqlOperationIds: void 0,
12016
+ slug: parentSlug.apply({ urlSlug }).get(),
11890
12017
  icon: void 0,
11891
12018
  hidden: void 0,
11892
12019
  operationType: graphqlOperation.operationType,
@@ -11900,6 +12027,86 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
11900
12027
  featureFlags: void 0
11901
12028
  }));
11902
12029
  }
12030
+ convertGraphQlOperationsToChildren(graphqlOperations, parentSlug) {
12031
+ const groupedByParent = /* @__PURE__ */ new Map();
12032
+ const insertionOrder = [];
12033
+ for (const op of graphqlOperations) {
12034
+ const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(op);
12035
+ if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
12036
+ continue;
12037
+ }
12038
+ this.#visitedGraphqlOperations.add(graphqlOperationId);
12039
+ const parentField = op.fieldPath?.[0];
12040
+ if (parentField != null && op.operationType === "QUERY") {
12041
+ const group = groupedByParent.get(parentField);
12042
+ if (group != null) {
12043
+ group.push(op);
12044
+ } else {
12045
+ groupedByParent.set(parentField, [op]);
12046
+ insertionOrder.push({ type: "group", parentField });
12047
+ }
12048
+ } else {
12049
+ insertionOrder.push({ type: "flat", op });
12050
+ }
12051
+ }
12052
+ const children = [];
12053
+ const allSlugs = /* @__PURE__ */ new Set();
12054
+ for (const entry of insertionOrder) {
12055
+ if (entry.type === "flat") {
12056
+ const fp = entry.op.fieldPath;
12057
+ allSlugs.add(fp != null && fp.length > 0 ? [...fp, entry.op.name].join("-") : entry.op.name);
12058
+ } else {
12059
+ allSlugs.add(entry.parentField);
12060
+ }
12061
+ }
12062
+ for (const entry of insertionOrder) {
12063
+ if (entry.type === "flat") {
12064
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(entry.op);
12065
+ children.push(this.convertGraphQlNode(opId, entry.op, parentSlug));
12066
+ } else {
12067
+ const operations = groupedByParent.get(entry.parentField);
12068
+ if (operations == null) {
12069
+ continue;
12070
+ }
12071
+ const firstOp = operations[0];
12072
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(firstOp);
12073
+ const allOpIds = operations.map((op) => ApiDefinitionHolder.createGraphQlOperationId(op));
12074
+ let slugSegment = entry.parentField;
12075
+ const flatHasSameSlug = insertionOrder.some(
12076
+ (e) => e.type === "flat" && (() => {
12077
+ const fp = e.op.fieldPath;
12078
+ const s = fp != null && fp.length > 0 ? [...fp, e.op.name].join("-") : e.op.name;
12079
+ return s === slugSegment;
12080
+ })()
12081
+ );
12082
+ if (flatHasSameSlug) {
12083
+ slugSegment = `${entry.parentField}-fields`;
12084
+ }
12085
+ children.push(
12086
+ this.#idgen.with(opId, (id) => ({
12087
+ id,
12088
+ type: "graphql",
12089
+ title: entry.parentField,
12090
+ graphqlOperationId: opId,
12091
+ graphqlOperationIds: allOpIds.length > 1 ? allOpIds : void 0,
12092
+ slug: parentSlug.apply({ urlSlug: slugSegment }).get(),
12093
+ icon: void 0,
12094
+ hidden: void 0,
12095
+ operationType: firstOp.operationType,
12096
+ apiDefinitionId: this.apiDefinitionId,
12097
+ availability: navigation_exports.V1.convertAvailability(firstOp.availability),
12098
+ playground: void 0,
12099
+ authed: void 0,
12100
+ collapsed: void 0,
12101
+ viewers: void 0,
12102
+ orphaned: void 0,
12103
+ featureFlags: void 0
12104
+ }))
12105
+ );
12106
+ }
12107
+ }
12108
+ return children;
12109
+ }
11903
12110
  convertPackageToChildren(package_, parentSlug) {
11904
12111
  const children = [];
11905
12112
  let subpackageId = isSubpackage(package_) ? package_.subpackageId : "__package__";
@@ -11947,14 +12154,7 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
11947
12154
  children.push(this.convertWebhookNode(webhookId, webhook, parentSlug));
11948
12155
  this.#visitedWebhooks.add(webhookId);
11949
12156
  });
11950
- (package_.graphqlOperations ?? []).forEach((graphqlOperation) => {
11951
- const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation);
11952
- if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
11953
- return;
11954
- }
11955
- children.push(this.convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug));
11956
- this.#visitedGraphqlOperations.add(graphqlOperationId);
11957
- });
12157
+ children.push(...this.convertGraphQlOperationsToChildren(package_.graphqlOperations ?? [], parentSlug));
11958
12158
  (package_.subpackages ?? []).forEach((subpackageId2) => {
11959
12159
  const subpackage = this.api.subpackages[subpackageId2];
11960
12160
  if (subpackage == null) {
@@ -13897,6 +14097,7 @@ var FernNavigationV1ToLatest = class _FernNavigationV1ToLatest {
13897
14097
  collapsed: node.collapsed,
13898
14098
  apiDefinitionId: node.apiDefinitionId,
13899
14099
  graphqlOperationId: node.graphqlOperationId,
14100
+ graphqlOperationIds: node.graphqlOperationIds,
13900
14101
  operationType: node.operationType,
13901
14102
  playground: node.playground,
13902
14103
  availability: this.#availability(node.availability),
@@ -14402,6 +14603,7 @@ function getApiReferenceId(node) {
14402
14603
  webhook: RETURN_API_DEFINITION_ID,
14403
14604
  grpc: RETURN_API_DEFINITION_ID,
14404
14605
  graphql: RETURN_API_DEFINITION_ID,
14606
+ graphqlType: RETURN_API_DEFINITION_ID,
14405
14607
  apiPackage: RETURN_API_DEFINITION_ID,
14406
14608
  unversioned: RETURN_UNDEFINED3,
14407
14609
  landingPage: RETURN_UNDEFINED3
@@ -14801,6 +15003,7 @@ var Pruner = class _Pruner {
14801
15003
  GraphQlOperationIdSchema,
14802
15004
  GraphQlOperationSchema,
14803
15005
  GraphQlOperationTypeSchema,
15006
+ GraphQlTypeCategorySchema,
14804
15007
  GrpcId,
14805
15008
  GrpcIdSchema,
14806
15009
  GrpcMethod,