@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
@@ -776,6 +776,7 @@ var GraphQlOperationIdSchema = z2.string();
776
776
  function GraphQlOperationId(value) {
777
777
  return value;
778
778
  }
779
+ var GraphQlTypeCategorySchema = z2.enum(["object", "input", "enum", "scalar", "interface", "union"]);
779
780
  var EnvironmentIdSchema = z2.string();
780
781
  function EnvironmentId(value) {
781
782
  return value;
@@ -1010,12 +1011,20 @@ var TypeReferenceSchema = z2.lazy(
1010
1011
  })
1011
1012
  ])
1012
1013
  );
1014
+ var GraphQlArgumentSchema = z2.object({
1015
+ description: z2.string().nullish(),
1016
+ availability: AvailabilitySchema.nullish(),
1017
+ name: z2.string(),
1018
+ type: TypeReferenceSchema,
1019
+ defaultValue: z2.unknown().nullish()
1020
+ });
1013
1021
  var ObjectPropertySchema = z2.object({
1014
1022
  description: z2.string().nullish(),
1015
1023
  availability: AvailabilitySchema.nullish(),
1016
1024
  key: PropertyKeySchema,
1017
1025
  valueType: TypeReferenceSchema,
1018
- propertyAccess: ObjectPropertyAccessSchema.nullish()
1026
+ propertyAccess: ObjectPropertyAccessSchema.nullish(),
1027
+ arguments: z2.array(GraphQlArgumentSchema).nullish()
1019
1028
  });
1020
1029
  var ObjectTypeSchema = z2.object({
1021
1030
  extends: z2.array(TypeIdSchema),
@@ -1163,13 +1172,6 @@ var ErrorExampleSchema = z2.object({
1163
1172
  responseBody: ExampleErrorResponseSchema
1164
1173
  });
1165
1174
  var GraphQlOperationTypeSchema = z2.enum(["QUERY", "MUTATION", "SUBSCRIPTION"]);
1166
- var GraphQlArgumentSchema = z2.object({
1167
- description: z2.string().nullish(),
1168
- availability: AvailabilitySchema.nullish(),
1169
- name: z2.string(),
1170
- type: TypeReferenceSchema,
1171
- defaultValue: z2.unknown().nullish()
1172
- });
1173
1175
  var GraphQlExampleSchema = z2.object({
1174
1176
  description: z2.string().nullish(),
1175
1177
  name: z2.string().nullish(),
@@ -1192,6 +1194,7 @@ var GraphQlOperationSchema = z2.object({
1192
1194
  operationType: GraphQlOperationTypeSchema,
1193
1195
  name: z2.string(),
1194
1196
  displayName: z2.string().nullish(),
1197
+ fieldPath: z2.array(z2.string()).nullish(),
1195
1198
  arguments: z2.array(GraphQlArgumentSchema).nullish(),
1196
1199
  returnType: TypeReferenceSchema,
1197
1200
  examples: z2.array(GraphQlExampleSchema).nullish(),
@@ -1423,6 +1426,7 @@ var RegisterErrorDeclarationV2Schema = z3.object({
1423
1426
  });
1424
1427
  var RegisterEndpointDefinitionSchema = z3.object({
1425
1428
  description: z3.string().nullish(),
1429
+ subtitle: z3.string().nullish(),
1426
1430
  availability: AvailabilitySchema.nullish(),
1427
1431
  slug: z3.string().nullish(),
1428
1432
  auth: z3.boolean().nullish(),
@@ -1641,7 +1645,8 @@ var LatestObjectPropertySchema = z4.lazy(
1641
1645
  availability: AvailabilitySchema.nullish(),
1642
1646
  key: PropertyKeySchema,
1643
1647
  valueShape: LatestTypeShapeSchema,
1644
- propertyAccess: LatestObjectPropertyAccessSchema.nullish()
1648
+ propertyAccess: LatestObjectPropertyAccessSchema.nullish(),
1649
+ arguments: z4.array(LatestGraphQlArgumentSchema).nullish()
1645
1650
  })
1646
1651
  );
1647
1652
  var LatestParameterPropertySchema = z4.lazy(
@@ -1950,6 +1955,7 @@ var LatestExampleEndpointCallSchema = z4.object({
1950
1955
  });
1951
1956
  var LatestEndpointDefinitionSchema = z4.object({
1952
1957
  description: z4.string().nullish(),
1958
+ subtitle: z4.string().nullish(),
1953
1959
  availability: AvailabilitySchema.nullish(),
1954
1960
  namespace: z4.array(z4.string()).nullish(),
1955
1961
  id: EndpointIdSchema,
@@ -1992,6 +1998,7 @@ var LatestGraphQlOperationSchema = z4.object({
1992
1998
  description: z4.string().nullish(),
1993
1999
  availability: AvailabilitySchema.nullish(),
1994
2000
  namespace: z4.array(z4.string()).nullish(),
2001
+ fieldPath: z4.array(z4.string()).nullish(),
1995
2002
  id: GraphQlOperationIdSchema,
1996
2003
  operationType: LatestGraphQlOperationTypeSchema,
1997
2004
  name: z4.string(),
@@ -2263,6 +2270,7 @@ var ReadErrorDeclarationV2Schema = z5.object({
2263
2270
  });
2264
2271
  var ReadEndpointDefinitionSchema = z5.object({
2265
2272
  description: z5.string().nullish(),
2273
+ subtitle: z5.string().nullish(),
2266
2274
  availability: AvailabilitySchema.nullish(),
2267
2275
  authed: z5.boolean(),
2268
2276
  authV2: z5.array(AuthSchemeIdSchema).nullish(),
@@ -3867,6 +3875,7 @@ __export(APIV1Db_exports, {
3867
3875
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
3868
3876
  GraphQlOperationSchema: () => GraphQlOperationSchema,
3869
3877
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
3878
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
3870
3879
  GrpcMethodSchema: () => GrpcMethodSchema,
3871
3880
  GrpcProtocolSchema: () => GrpcProtocolSchema,
3872
3881
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -3977,6 +3986,7 @@ var DbHttpRequestsV2Schema = z15.object({
3977
3986
  });
3978
3987
  var DbEndpointDefinitionSchema = z15.object({
3979
3988
  description: z15.string().nullish(),
3989
+ subtitle: z15.string().nullish(),
3980
3990
  availability: AvailabilitySchema.nullish(),
3981
3991
  authed: z15.boolean().nullish(),
3982
3992
  authV2: z15.array(AuthSchemeIdSchema).nullish(),
@@ -4120,6 +4130,7 @@ __export(APIV1Read_exports, {
4120
4130
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
4121
4131
  GraphQlOperationSchema: () => GraphQlOperationSchema,
4122
4132
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
4133
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
4123
4134
  GrpcMethod: () => GrpcMethod,
4124
4135
  GrpcMethodSchema: () => GrpcMethodSchema,
4125
4136
  GrpcProtocolSchema: () => GrpcProtocolSchema,
@@ -4347,6 +4358,7 @@ __export(APIV1Write_exports, {
4347
4358
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
4348
4359
  GraphQlOperationSchema: () => GraphQlOperationSchema,
4349
4360
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
4361
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
4350
4362
  GrpcMethodSchema: () => GrpcMethodSchema,
4351
4363
  GrpcProtocolSchema: () => GrpcProtocolSchema,
4352
4364
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -5254,6 +5266,7 @@ __export(FdrAPI_exports, {
5254
5266
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
5255
5267
  GraphQlOperationSchema: () => GraphQlOperationSchema,
5256
5268
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
5269
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
5257
5270
  GrpcId: () => GrpcId,
5258
5271
  GrpcIdSchema: () => GrpcIdSchema,
5259
5272
  GrpcMethod: () => GrpcMethod,
@@ -6789,6 +6802,7 @@ function transformEndpoint({
6789
6802
  snippets
6790
6803
  }),
6791
6804
  description: writeShape.description,
6805
+ subtitle: writeShape.subtitle,
6792
6806
  // htmlDescription,
6793
6807
  authed: writeShape.auth,
6794
6808
  authV2: writeShape.authV2,
@@ -7128,7 +7142,8 @@ function transformProperty({ writeShape }) {
7128
7142
  // htmlDescription,
7129
7143
  key: writeShape.key,
7130
7144
  valueType: writeShape.valueType,
7131
- propertyAccess: writeShape.propertyAccess
7145
+ propertyAccess: writeShape.propertyAccess,
7146
+ ...writeShape.arguments != null ? { arguments: writeShape.arguments } : {}
7132
7147
  // descriptionContainsMarkdown: true,
7133
7148
  };
7134
7149
  }
@@ -7277,6 +7292,7 @@ __export(api_definition_exports, {
7277
7292
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
7278
7293
  GraphQlOperationSchema: () => LatestGraphQlOperationSchema,
7279
7294
  GraphQlOperationTypeSchema: () => LatestGraphQlOperationTypeSchema,
7295
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
7280
7296
  GrpcId: () => GrpcId,
7281
7297
  GrpcIdSchema: () => GrpcIdSchema,
7282
7298
  GrpcMethod: () => GrpcMethod,
@@ -7808,6 +7824,15 @@ function collectReferencedTypeIds(type, types, { maxDepth = 10 } = {}) {
7808
7824
  visitedTypeIds,
7809
7825
  depth: depth + 1
7810
7826
  });
7827
+ if (property.arguments) {
7828
+ for (const arg of property.arguments) {
7829
+ stack.push({
7830
+ shape: arg.type,
7831
+ visitedTypeIds,
7832
+ depth: depth + 1
7833
+ });
7834
+ }
7835
+ }
7811
7836
  }
7812
7837
  if (obj.extraProperties) {
7813
7838
  stack.push({
@@ -7918,6 +7943,27 @@ function collectTypeDefinitionTree(type, types, { availability: rootAvailability
7918
7943
  visitedTypeIds,
7919
7944
  availability
7920
7945
  });
7946
+ property.arguments?.forEach((arg) => {
7947
+ stack.push({
7948
+ type: arg.type,
7949
+ path: [
7950
+ ...parentpath,
7951
+ {
7952
+ type: "objectProperty",
7953
+ key: property.key,
7954
+ optional: unwrapReference(property.valueShape, types).isOptional
7955
+ },
7956
+ {
7957
+ type: "graphqlArgument",
7958
+ name: arg.name,
7959
+ optional: unwrapReference(arg.type, types).isOptional
7960
+ }
7961
+ ],
7962
+ descriptions: arg.description ? [arg.description] : [],
7963
+ visitedTypeIds,
7964
+ availability: coalesceAvailability([availability, property.availability, arg.availability])
7965
+ });
7966
+ });
7921
7967
  });
7922
7968
  if (obj.extraProperties) {
7923
7969
  stack.push({
@@ -8025,7 +8071,43 @@ function collectTypeDefinitionTreeForObjectProperty(property, types, rootPath =
8025
8071
  optional: unwrapReference(property.valueShape, types).isOptional
8026
8072
  }
8027
8073
  ]
8028
- })
8074
+ }),
8075
+ ...(property.arguments ?? []).flatMap((arg) => [
8076
+ {
8077
+ path: [
8078
+ ...rootPath,
8079
+ {
8080
+ type: "objectProperty",
8081
+ key: property.key,
8082
+ optional: unwrapReference(property.valueShape, types).isOptional
8083
+ },
8084
+ {
8085
+ type: "graphqlArgument",
8086
+ name: arg.name,
8087
+ optional: unwrapReference(arg.type, types).isOptional
8088
+ }
8089
+ ],
8090
+ descriptions: arg.description ? [arg.description] : [],
8091
+ availability: coalesceAvailability([property.availability, arg.availability])
8092
+ },
8093
+ ...collectTypeDefinitionTree(arg.type, types, {
8094
+ maxDepth: maxDepth - 1,
8095
+ availability: coalesceAvailability([property.availability, arg.availability]),
8096
+ path: [
8097
+ ...rootPath,
8098
+ {
8099
+ type: "objectProperty",
8100
+ key: property.key,
8101
+ optional: unwrapReference(property.valueShape, types).isOptional
8102
+ },
8103
+ {
8104
+ type: "graphqlArgument",
8105
+ name: arg.name,
8106
+ optional: unwrapReference(arg.type, types).isOptional
8107
+ }
8108
+ ]
8109
+ })
8110
+ ])
8029
8111
  ];
8030
8112
  }
8031
8113
 
@@ -8144,6 +8226,9 @@ var ApiTypeIdVisitor = class _ApiTypeIdVisitor {
8144
8226
  typeShape.extends.forEach(visit);
8145
8227
  typeShape.properties.forEach((property) => {
8146
8228
  _ApiTypeIdVisitor.visitTypeShape(property.valueShape, visit);
8229
+ property.arguments?.forEach((arg) => {
8230
+ _ApiTypeIdVisitor.visitTypeShape(arg.type, visit);
8231
+ });
8147
8232
  });
8148
8233
  }
8149
8234
  static visitTypeReference(typeReference, visit) {
@@ -8224,10 +8309,13 @@ var ApiDefinitionPruner = class _ApiDefinitionPruner {
8224
8309
  found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
8225
8310
  }
8226
8311
  } else if (node.type === "graphql") {
8227
- const found = this.api.graphqlOperations[node.graphqlOperationId];
8228
- if (found) {
8229
- toRet.graphqlOperations[node.graphqlOperationId] = found;
8230
- found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
8312
+ const idsToInclude = node.graphqlOperationIds ?? [node.graphqlOperationId];
8313
+ for (const opId of idsToInclude) {
8314
+ const found = this.api.graphqlOperations[opId];
8315
+ if (found) {
8316
+ toRet.graphqlOperations[opId] = found;
8317
+ found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
8318
+ }
8231
8319
  }
8232
8320
  }
8233
8321
  }
@@ -8529,9 +8617,21 @@ function createGraphqlContext(node, apiDefinition) {
8529
8617
  );
8530
8618
  return void 0;
8531
8619
  }
8620
+ const allIds = node.graphqlOperationIds ?? [node.graphqlOperationId];
8621
+ const operations = [];
8622
+ for (const id of allIds) {
8623
+ const op = api2.graphqlOperations[id];
8624
+ if (op) {
8625
+ operations.push(op);
8626
+ }
8627
+ }
8628
+ if (operations.length === 0) {
8629
+ operations.push(operation);
8630
+ }
8532
8631
  return {
8533
8632
  node,
8534
8633
  operation,
8634
+ operations,
8535
8635
  types: api2.types
8536
8636
  };
8537
8637
  }
@@ -9459,6 +9559,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
9459
9559
  displayName: v1?.name,
9460
9560
  operationId: v1?.urlSlug?.split("/")?.pop(),
9461
9561
  description: v1?.description,
9562
+ subtitle: v1?.subtitle,
9462
9563
  availability: v1?.availability,
9463
9564
  method: v1?.method,
9464
9565
  path: v1?.path?.parts?.filter((part) => part?.value !== "") ?? [],
@@ -9700,7 +9801,8 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
9700
9801
  },
9701
9802
  propertyAccess: value?.propertyAccess ?? void 0,
9702
9803
  description: value?.description ?? void 0,
9703
- availability: value?.availability ?? void 0
9804
+ availability: value?.availability ?? void 0,
9805
+ arguments: value?.arguments?.map((arg) => this.migrateGraphQlArgument(arg))
9704
9806
  }));
9705
9807
  },
9706
9808
  [],
@@ -10141,6 +10243,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
10141
10243
  description: v1?.description,
10142
10244
  availability: v1?.availability,
10143
10245
  namespace,
10246
+ fieldPath: v1?.fieldPath,
10144
10247
  arguments: v1?.arguments?.map((arg) => this.migrateGraphQlArgument(arg)),
10145
10248
  returnType: {
10146
10249
  type: "alias",
@@ -10437,7 +10540,10 @@ function generateGraphQlSnippet(context) {
10437
10540
  return `$${arg.name}: ${graphqlType}`;
10438
10541
  });
10439
10542
  const argumentUsage = args.map((arg) => `${arg.name}: $${arg.name}`);
10440
- const selectionSet = generateSelectionSet(operation.returnType, types, 2);
10543
+ const fieldPath = operation.fieldPath;
10544
+ const hasFieldPath = fieldPath != null && fieldPath.length > 0;
10545
+ const selectionSetIndent = hasFieldPath ? 2 + fieldPath.length : 2;
10546
+ const selectionSet = generateSelectionSet(operation.returnType, types, 2, /* @__PURE__ */ new Set(), selectionSetIndent);
10441
10547
  let query = operationKeyword;
10442
10548
  if (operationName || variableDefinitions.length > 0) {
10443
10549
  query += ` ${operationName}`;
@@ -10446,15 +10552,32 @@ function generateGraphQlSnippet(context) {
10446
10552
  }
10447
10553
  }
10448
10554
  query += " {\n";
10449
- query += ` ${operation.name}`;
10555
+ const baseIndent = 2;
10556
+ if (hasFieldPath) {
10557
+ for (let i = 0; i < fieldPath.length; i++) {
10558
+ const indent = " ".repeat(baseIndent + i * 2);
10559
+ query += `${indent}${fieldPath[i]} {
10560
+ `;
10561
+ }
10562
+ }
10563
+ const operationIndent = hasFieldPath ? " ".repeat(baseIndent + fieldPath.length * 2) : " ";
10564
+ query += `${operationIndent}${operation.name}`;
10450
10565
  if (argumentUsage.length > 0) {
10451
10566
  query += `(${argumentUsage.join(", ")})`;
10452
10567
  }
10453
10568
  if (selectionSet) {
10454
10569
  query += ` ${selectionSet}`;
10455
10570
  }
10456
- query += "\n}";
10457
- const response = generateResponseExample(operation.name, operation.returnType, types);
10571
+ query += "\n";
10572
+ if (hasFieldPath) {
10573
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
10574
+ const indent = " ".repeat(baseIndent + i * 2);
10575
+ query += `${indent}}
10576
+ `;
10577
+ }
10578
+ }
10579
+ query += "}";
10580
+ const response = generateResponseExample(operation.name, operation.returnType, types, fieldPath);
10458
10581
  const result = { query, variables, response };
10459
10582
  snippetCache.set(operation, result);
10460
10583
  return result;
@@ -10483,49 +10606,44 @@ function getExampleOperationName(operationType) {
10483
10606
  return "ExampleQuery";
10484
10607
  }
10485
10608
  }
10486
- function typeShapeToGraphQlType(shape, types) {
10609
+ function typeShapeToGraphQlType(shape, types, nonNull = true) {
10487
10610
  if (shape.type === "alias") {
10488
- return typeReferenceToGraphQlType(shape.value, types);
10489
- }
10490
- if (shape.type === "enum") {
10491
- return "String";
10492
- }
10493
- if (shape.type === "object") {
10494
- return "Object";
10495
- }
10496
- if (shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion") {
10497
- return "Object";
10611
+ return typeReferenceToGraphQlType(shape.value, types, nonNull);
10498
10612
  }
10499
- return "String";
10613
+ const base = shape.type === "enum" ? "String" : shape.type === "object" || shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion" ? "Object" : "String";
10614
+ return nonNull ? `${base}!` : base;
10500
10615
  }
10501
- function typeReferenceToGraphQlType(ref, types) {
10616
+ function typeReferenceToGraphQlType(ref, types, nonNull = true) {
10502
10617
  switch (ref.type) {
10503
- case "primitive":
10504
- return primitiveToGraphQlType(ref.value);
10618
+ case "primitive": {
10619
+ const base = primitiveToGraphQlType(ref.value);
10620
+ return nonNull ? `${base}!` : base;
10621
+ }
10505
10622
  case "id": {
10506
10623
  const typeDef = types[ref.id];
10507
- if (typeDef) {
10508
- return typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object";
10509
- }
10510
- return "Object";
10624
+ const base = typeDef ? typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object" : "Object";
10625
+ return nonNull ? `${base}!` : base;
10511
10626
  }
10512
10627
  case "optional":
10513
- return typeShapeToGraphQlType(ref.shape, types);
10628
+ return typeShapeToGraphQlType(ref.shape, types, false);
10514
10629
  case "nullable":
10515
- return typeShapeToGraphQlType(ref.shape, types);
10516
- case "list":
10517
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
10518
- case "set":
10519
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
10630
+ return typeShapeToGraphQlType(ref.shape, types, false);
10631
+ case "list": {
10632
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
10633
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
10634
+ }
10635
+ case "set": {
10636
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
10637
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
10638
+ }
10520
10639
  case "map":
10521
- return "Object";
10522
- // Maps don't have direct GraphQL equivalent
10640
+ return nonNull ? "Object!" : "Object";
10523
10641
  case "literal":
10524
- return "String";
10642
+ return nonNull ? "String!" : "String";
10525
10643
  case "unknown":
10526
- return "Object";
10644
+ return nonNull ? "Object!" : "Object";
10527
10645
  default:
10528
- return "String";
10646
+ return nonNull ? "String!" : "String";
10529
10647
  }
10530
10648
  }
10531
10649
  function unnamespacedName(name) {
@@ -10743,13 +10861,18 @@ function generateSelectionSetFromReference(ref, types, depth, visited, indentLev
10743
10861
  return "";
10744
10862
  }
10745
10863
  }
10746
- function generateResponseExample(operationName, returnType, types) {
10864
+ function generateResponseExample(operationName, returnType, types, fieldPath) {
10747
10865
  const data = generateResponseData(returnType, types, 3, /* @__PURE__ */ new Set());
10748
- return {
10749
- data: {
10750
- [operationName]: data
10866
+ let responseData = { [operationName]: data };
10867
+ if (fieldPath != null && fieldPath.length > 0) {
10868
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
10869
+ const key = fieldPath[i];
10870
+ if (key != null) {
10871
+ responseData = { [key]: responseData };
10872
+ }
10751
10873
  }
10752
- };
10874
+ }
10875
+ return { data: responseData };
10753
10876
  }
10754
10877
  function generateResponseData(shape, types, depth, visited) {
10755
10878
  if (depth <= 0) {
@@ -11713,6 +11836,7 @@ __export(navigation_exports, {
11713
11836
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
11714
11837
  GraphQlOperationSchema: () => GraphQlOperationSchema,
11715
11838
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
11839
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
11716
11840
  GrpcId: () => GrpcId,
11717
11841
  GrpcIdSchema: () => GrpcIdSchema,
11718
11842
  GrpcMethod: () => GrpcMethod,
@@ -11836,7 +11960,7 @@ import { UnreachableCaseError as UnreachableCaseError2 } from "ts-essentials";
11836
11960
 
11837
11961
  // src/navigation/versions/latest/NavigationNodeApiLeaf.ts
11838
11962
  function isApiLeaf(node) {
11839
- return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql";
11963
+ return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql" || node.type === "graphqlType";
11840
11964
  }
11841
11965
 
11842
11966
  // src/navigation/versions/latest/NavigationNodePageLeaf.ts
@@ -11906,7 +12030,8 @@ function getPageId(node) {
11906
12030
  webSocket: RETURN_UNDEFINED,
11907
12031
  webhook: RETURN_UNDEFINED,
11908
12032
  grpc: RETURN_UNDEFINED,
11909
- graphql: RETURN_UNDEFINED
12033
+ graphql: RETURN_UNDEFINED,
12034
+ graphqlType: RETURN_UNDEFINED
11910
12035
  // changelogYear: RETURN_UNDEFINED,
11911
12036
  // changelogMonth: RETURN_UNDEFINED,
11912
12037
  });
@@ -12268,6 +12393,9 @@ var ApiTypeIdVisitor2 = class _ApiTypeIdVisitor {
12268
12393
  typeShape.extends.forEach(visit);
12269
12394
  typeShape.properties.forEach((property) => {
12270
12395
  _ApiTypeIdVisitor.visitTypeReference(property.valueType, visit);
12396
+ property.arguments?.forEach((arg) => {
12397
+ _ApiTypeIdVisitor.visitTypeReference(arg.type, visit);
12398
+ });
12271
12399
  });
12272
12400
  }
12273
12401
  static visitTypeReference(typeReference, visit) {
@@ -12424,11 +12552,8 @@ var ApiDefinitionPruner2 = class {
12424
12552
  if (node.type !== "graphql" || graphqlOperations == null) {
12425
12553
  return [];
12426
12554
  }
12427
- const graphqlOperationId = node.graphqlOperationId;
12428
- const found = graphqlOperations.find(
12429
- (graphqlOperation) => ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation) === graphqlOperationId
12430
- );
12431
- return found ? [found] : [];
12555
+ const idsToInclude = new Set(node.graphqlOperationIds ?? [node.graphqlOperationId]);
12556
+ return graphqlOperations.filter((op) => idsToInclude.has(ApiDefinitionHolder.createGraphQlOperationId(op)));
12432
12557
  }
12433
12558
  };
12434
12559
 
@@ -12534,6 +12659,7 @@ __export(v1_exports2, {
12534
12659
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
12535
12660
  GraphQlOperationSchema: () => GraphQlOperationSchema,
12536
12661
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
12662
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
12537
12663
  GrpcId: () => GrpcId,
12538
12664
  GrpcIdSchema: () => GrpcIdSchema,
12539
12665
  GrpcMethod: () => GrpcMethod,
@@ -13152,12 +13278,15 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
13152
13278
  }));
13153
13279
  }
13154
13280
  convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug) {
13281
+ const fieldPath = graphqlOperation.fieldPath;
13282
+ const urlSlug = fieldPath != null && fieldPath.length > 0 ? [...fieldPath, graphqlOperation.name].join("-") : graphqlOperation.name;
13155
13283
  return this.#idgen.with(graphqlOperationId, (id) => ({
13156
13284
  id,
13157
13285
  type: "graphql",
13158
13286
  title: graphqlOperation.displayName ?? graphqlOperation.name,
13159
13287
  graphqlOperationId,
13160
- slug: parentSlug.apply({ urlSlug: graphqlOperation.name }).get(),
13288
+ graphqlOperationIds: void 0,
13289
+ slug: parentSlug.apply({ urlSlug }).get(),
13161
13290
  icon: void 0,
13162
13291
  hidden: void 0,
13163
13292
  operationType: graphqlOperation.operationType,
@@ -13171,6 +13300,86 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
13171
13300
  featureFlags: void 0
13172
13301
  }));
13173
13302
  }
13303
+ convertGraphQlOperationsToChildren(graphqlOperations, parentSlug) {
13304
+ const groupedByParent = /* @__PURE__ */ new Map();
13305
+ const insertionOrder = [];
13306
+ for (const op of graphqlOperations) {
13307
+ const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(op);
13308
+ if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
13309
+ continue;
13310
+ }
13311
+ this.#visitedGraphqlOperations.add(graphqlOperationId);
13312
+ const parentField = op.fieldPath?.[0];
13313
+ if (parentField != null && op.operationType === "QUERY") {
13314
+ const group = groupedByParent.get(parentField);
13315
+ if (group != null) {
13316
+ group.push(op);
13317
+ } else {
13318
+ groupedByParent.set(parentField, [op]);
13319
+ insertionOrder.push({ type: "group", parentField });
13320
+ }
13321
+ } else {
13322
+ insertionOrder.push({ type: "flat", op });
13323
+ }
13324
+ }
13325
+ const children = [];
13326
+ const allSlugs = /* @__PURE__ */ new Set();
13327
+ for (const entry of insertionOrder) {
13328
+ if (entry.type === "flat") {
13329
+ const fp = entry.op.fieldPath;
13330
+ allSlugs.add(fp != null && fp.length > 0 ? [...fp, entry.op.name].join("-") : entry.op.name);
13331
+ } else {
13332
+ allSlugs.add(entry.parentField);
13333
+ }
13334
+ }
13335
+ for (const entry of insertionOrder) {
13336
+ if (entry.type === "flat") {
13337
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(entry.op);
13338
+ children.push(this.convertGraphQlNode(opId, entry.op, parentSlug));
13339
+ } else {
13340
+ const operations = groupedByParent.get(entry.parentField);
13341
+ if (operations == null) {
13342
+ continue;
13343
+ }
13344
+ const firstOp = operations[0];
13345
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(firstOp);
13346
+ const allOpIds = operations.map((op) => ApiDefinitionHolder.createGraphQlOperationId(op));
13347
+ let slugSegment = entry.parentField;
13348
+ const flatHasSameSlug = insertionOrder.some(
13349
+ (e) => e.type === "flat" && (() => {
13350
+ const fp = e.op.fieldPath;
13351
+ const s = fp != null && fp.length > 0 ? [...fp, e.op.name].join("-") : e.op.name;
13352
+ return s === slugSegment;
13353
+ })()
13354
+ );
13355
+ if (flatHasSameSlug) {
13356
+ slugSegment = `${entry.parentField}-fields`;
13357
+ }
13358
+ children.push(
13359
+ this.#idgen.with(opId, (id) => ({
13360
+ id,
13361
+ type: "graphql",
13362
+ title: entry.parentField,
13363
+ graphqlOperationId: opId,
13364
+ graphqlOperationIds: allOpIds.length > 1 ? allOpIds : void 0,
13365
+ slug: parentSlug.apply({ urlSlug: slugSegment }).get(),
13366
+ icon: void 0,
13367
+ hidden: void 0,
13368
+ operationType: firstOp.operationType,
13369
+ apiDefinitionId: this.apiDefinitionId,
13370
+ availability: navigation_exports.V1.convertAvailability(firstOp.availability),
13371
+ playground: void 0,
13372
+ authed: void 0,
13373
+ collapsed: void 0,
13374
+ viewers: void 0,
13375
+ orphaned: void 0,
13376
+ featureFlags: void 0
13377
+ }))
13378
+ );
13379
+ }
13380
+ }
13381
+ return children;
13382
+ }
13174
13383
  convertPackageToChildren(package_, parentSlug) {
13175
13384
  const children = [];
13176
13385
  let subpackageId = isSubpackage2(package_) ? package_.subpackageId : "__package__";
@@ -13218,14 +13427,7 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
13218
13427
  children.push(this.convertWebhookNode(webhookId, webhook, parentSlug));
13219
13428
  this.#visitedWebhooks.add(webhookId);
13220
13429
  });
13221
- (package_.graphqlOperations ?? []).forEach((graphqlOperation) => {
13222
- const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation);
13223
- if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
13224
- return;
13225
- }
13226
- children.push(this.convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug));
13227
- this.#visitedGraphqlOperations.add(graphqlOperationId);
13228
- });
13430
+ children.push(...this.convertGraphQlOperationsToChildren(package_.graphqlOperations ?? [], parentSlug));
13229
13431
  (package_.subpackages ?? []).forEach((subpackageId2) => {
13230
13432
  const subpackage = this.api.subpackages[subpackageId2];
13231
13433
  if (subpackage == null) {
@@ -15168,6 +15370,7 @@ var FernNavigationV1ToLatest = class _FernNavigationV1ToLatest {
15168
15370
  collapsed: node.collapsed,
15169
15371
  apiDefinitionId: node.apiDefinitionId,
15170
15372
  graphqlOperationId: node.graphqlOperationId,
15373
+ graphqlOperationIds: node.graphqlOperationIds,
15171
15374
  operationType: node.operationType,
15172
15375
  playground: node.playground,
15173
15376
  availability: this.#availability(node.availability),
@@ -15673,6 +15876,7 @@ function getApiReferenceId(node) {
15673
15876
  webhook: RETURN_API_DEFINITION_ID,
15674
15877
  grpc: RETURN_API_DEFINITION_ID,
15675
15878
  graphql: RETURN_API_DEFINITION_ID,
15879
+ graphqlType: RETURN_API_DEFINITION_ID,
15676
15880
  apiPackage: RETURN_API_DEFINITION_ID,
15677
15881
  unversioned: RETURN_UNDEFINED3,
15678
15882
  landingPage: RETURN_UNDEFINED3
@@ -16816,6 +17020,7 @@ function transformEndpoint2({
16816
17020
  (example) => convertExampleEndpointCall({ dbShape: example })
16817
17021
  ),
16818
17022
  description: dbShape.description,
17023
+ subtitle: dbShape.subtitle,
16819
17024
  // htmlDescription: dbShape.htmlDescription,
16820
17025
  authed: dbShape.authed ?? false,
16821
17026
  authV2: dbShape.authV2,