@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
@@ -815,6 +815,7 @@ var GraphQlOperationIdSchema = z2.string();
815
815
  function GraphQlOperationId(value) {
816
816
  return value;
817
817
  }
818
+ var GraphQlTypeCategorySchema = z2.enum(["object", "input", "enum", "scalar", "interface", "union"]);
818
819
  var EnvironmentIdSchema = z2.string();
819
820
  function EnvironmentId(value) {
820
821
  return value;
@@ -1049,12 +1050,20 @@ var TypeReferenceSchema = z2.lazy(
1049
1050
  })
1050
1051
  ])
1051
1052
  );
1053
+ var GraphQlArgumentSchema = z2.object({
1054
+ description: z2.string().nullish(),
1055
+ availability: AvailabilitySchema.nullish(),
1056
+ name: z2.string(),
1057
+ type: TypeReferenceSchema,
1058
+ defaultValue: z2.unknown().nullish()
1059
+ });
1052
1060
  var ObjectPropertySchema = z2.object({
1053
1061
  description: z2.string().nullish(),
1054
1062
  availability: AvailabilitySchema.nullish(),
1055
1063
  key: PropertyKeySchema,
1056
1064
  valueType: TypeReferenceSchema,
1057
- propertyAccess: ObjectPropertyAccessSchema.nullish()
1065
+ propertyAccess: ObjectPropertyAccessSchema.nullish(),
1066
+ arguments: z2.array(GraphQlArgumentSchema).nullish()
1058
1067
  });
1059
1068
  var ObjectTypeSchema = z2.object({
1060
1069
  extends: z2.array(TypeIdSchema),
@@ -1202,13 +1211,6 @@ var ErrorExampleSchema = z2.object({
1202
1211
  responseBody: ExampleErrorResponseSchema
1203
1212
  });
1204
1213
  var GraphQlOperationTypeSchema = z2.enum(["QUERY", "MUTATION", "SUBSCRIPTION"]);
1205
- var GraphQlArgumentSchema = z2.object({
1206
- description: z2.string().nullish(),
1207
- availability: AvailabilitySchema.nullish(),
1208
- name: z2.string(),
1209
- type: TypeReferenceSchema,
1210
- defaultValue: z2.unknown().nullish()
1211
- });
1212
1214
  var GraphQlExampleSchema = z2.object({
1213
1215
  description: z2.string().nullish(),
1214
1216
  name: z2.string().nullish(),
@@ -1231,6 +1233,7 @@ var GraphQlOperationSchema = z2.object({
1231
1233
  operationType: GraphQlOperationTypeSchema,
1232
1234
  name: z2.string(),
1233
1235
  displayName: z2.string().nullish(),
1236
+ fieldPath: z2.array(z2.string()).nullish(),
1234
1237
  arguments: z2.array(GraphQlArgumentSchema).nullish(),
1235
1238
  returnType: TypeReferenceSchema,
1236
1239
  examples: z2.array(GraphQlExampleSchema).nullish(),
@@ -1462,6 +1465,7 @@ var RegisterErrorDeclarationV2Schema = z3.object({
1462
1465
  });
1463
1466
  var RegisterEndpointDefinitionSchema = z3.object({
1464
1467
  description: z3.string().nullish(),
1468
+ subtitle: z3.string().nullish(),
1465
1469
  availability: AvailabilitySchema.nullish(),
1466
1470
  slug: z3.string().nullish(),
1467
1471
  auth: z3.boolean().nullish(),
@@ -1680,7 +1684,8 @@ var LatestObjectPropertySchema = z4.lazy(
1680
1684
  availability: AvailabilitySchema.nullish(),
1681
1685
  key: PropertyKeySchema,
1682
1686
  valueShape: LatestTypeShapeSchema,
1683
- propertyAccess: LatestObjectPropertyAccessSchema.nullish()
1687
+ propertyAccess: LatestObjectPropertyAccessSchema.nullish(),
1688
+ arguments: z4.array(LatestGraphQlArgumentSchema).nullish()
1684
1689
  })
1685
1690
  );
1686
1691
  var LatestParameterPropertySchema = z4.lazy(
@@ -1989,6 +1994,7 @@ var LatestExampleEndpointCallSchema = z4.object({
1989
1994
  });
1990
1995
  var LatestEndpointDefinitionSchema = z4.object({
1991
1996
  description: z4.string().nullish(),
1997
+ subtitle: z4.string().nullish(),
1992
1998
  availability: AvailabilitySchema.nullish(),
1993
1999
  namespace: z4.array(z4.string()).nullish(),
1994
2000
  id: EndpointIdSchema,
@@ -2031,6 +2037,7 @@ var LatestGraphQlOperationSchema = z4.object({
2031
2037
  description: z4.string().nullish(),
2032
2038
  availability: AvailabilitySchema.nullish(),
2033
2039
  namespace: z4.array(z4.string()).nullish(),
2040
+ fieldPath: z4.array(z4.string()).nullish(),
2034
2041
  id: GraphQlOperationIdSchema,
2035
2042
  operationType: LatestGraphQlOperationTypeSchema,
2036
2043
  name: z4.string(),
@@ -2302,6 +2309,7 @@ var ReadErrorDeclarationV2Schema = z5.object({
2302
2309
  });
2303
2310
  var ReadEndpointDefinitionSchema = z5.object({
2304
2311
  description: z5.string().nullish(),
2312
+ subtitle: z5.string().nullish(),
2305
2313
  availability: AvailabilitySchema.nullish(),
2306
2314
  authed: z5.boolean(),
2307
2315
  authV2: z5.array(AuthSchemeIdSchema).nullish(),
@@ -3906,6 +3914,7 @@ __export(APIV1Db_exports, {
3906
3914
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
3907
3915
  GraphQlOperationSchema: () => GraphQlOperationSchema,
3908
3916
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
3917
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
3909
3918
  GrpcMethodSchema: () => GrpcMethodSchema,
3910
3919
  GrpcProtocolSchema: () => GrpcProtocolSchema,
3911
3920
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -4016,6 +4025,7 @@ var DbHttpRequestsV2Schema = z15.object({
4016
4025
  });
4017
4026
  var DbEndpointDefinitionSchema = z15.object({
4018
4027
  description: z15.string().nullish(),
4028
+ subtitle: z15.string().nullish(),
4019
4029
  availability: AvailabilitySchema.nullish(),
4020
4030
  authed: z15.boolean().nullish(),
4021
4031
  authV2: z15.array(AuthSchemeIdSchema).nullish(),
@@ -4159,6 +4169,7 @@ __export(APIV1Read_exports, {
4159
4169
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
4160
4170
  GraphQlOperationSchema: () => GraphQlOperationSchema,
4161
4171
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
4172
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
4162
4173
  GrpcMethod: () => GrpcMethod,
4163
4174
  GrpcMethodSchema: () => GrpcMethodSchema,
4164
4175
  GrpcProtocolSchema: () => GrpcProtocolSchema,
@@ -4386,6 +4397,7 @@ __export(APIV1Write_exports, {
4386
4397
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
4387
4398
  GraphQlOperationSchema: () => GraphQlOperationSchema,
4388
4399
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
4400
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
4389
4401
  GrpcMethodSchema: () => GrpcMethodSchema,
4390
4402
  GrpcProtocolSchema: () => GrpcProtocolSchema,
4391
4403
  HeaderAuthSchema: () => HeaderAuthSchema,
@@ -5293,6 +5305,7 @@ __export(FdrAPI_exports, {
5293
5305
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
5294
5306
  GraphQlOperationSchema: () => GraphQlOperationSchema,
5295
5307
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
5308
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
5296
5309
  GrpcId: () => GrpcId,
5297
5310
  GrpcIdSchema: () => GrpcIdSchema,
5298
5311
  GrpcMethod: () => GrpcMethod,
@@ -6828,6 +6841,7 @@ function transformEndpoint({
6828
6841
  snippets
6829
6842
  }),
6830
6843
  description: writeShape.description,
6844
+ subtitle: writeShape.subtitle,
6831
6845
  // htmlDescription,
6832
6846
  authed: writeShape.auth,
6833
6847
  authV2: writeShape.authV2,
@@ -7167,7 +7181,8 @@ function transformProperty({ writeShape }) {
7167
7181
  // htmlDescription,
7168
7182
  key: writeShape.key,
7169
7183
  valueType: writeShape.valueType,
7170
- propertyAccess: writeShape.propertyAccess
7184
+ propertyAccess: writeShape.propertyAccess,
7185
+ ...writeShape.arguments != null ? { arguments: writeShape.arguments } : {}
7171
7186
  // descriptionContainsMarkdown: true,
7172
7187
  };
7173
7188
  }
@@ -7316,6 +7331,7 @@ __export(api_definition_exports, {
7316
7331
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
7317
7332
  GraphQlOperationSchema: () => LatestGraphQlOperationSchema,
7318
7333
  GraphQlOperationTypeSchema: () => LatestGraphQlOperationTypeSchema,
7334
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
7319
7335
  GrpcId: () => GrpcId,
7320
7336
  GrpcIdSchema: () => GrpcIdSchema,
7321
7337
  GrpcMethod: () => GrpcMethod,
@@ -7847,6 +7863,15 @@ function collectReferencedTypeIds(type, types, { maxDepth = 10 } = {}) {
7847
7863
  visitedTypeIds,
7848
7864
  depth: depth + 1
7849
7865
  });
7866
+ if (property.arguments) {
7867
+ for (const arg of property.arguments) {
7868
+ stack.push({
7869
+ shape: arg.type,
7870
+ visitedTypeIds,
7871
+ depth: depth + 1
7872
+ });
7873
+ }
7874
+ }
7850
7875
  }
7851
7876
  if (obj.extraProperties) {
7852
7877
  stack.push({
@@ -7957,6 +7982,27 @@ function collectTypeDefinitionTree(type, types, { availability: rootAvailability
7957
7982
  visitedTypeIds,
7958
7983
  availability
7959
7984
  });
7985
+ property.arguments?.forEach((arg) => {
7986
+ stack.push({
7987
+ type: arg.type,
7988
+ path: [
7989
+ ...parentpath,
7990
+ {
7991
+ type: "objectProperty",
7992
+ key: property.key,
7993
+ optional: unwrapReference(property.valueShape, types).isOptional
7994
+ },
7995
+ {
7996
+ type: "graphqlArgument",
7997
+ name: arg.name,
7998
+ optional: unwrapReference(arg.type, types).isOptional
7999
+ }
8000
+ ],
8001
+ descriptions: arg.description ? [arg.description] : [],
8002
+ visitedTypeIds,
8003
+ availability: coalesceAvailability([availability, property.availability, arg.availability])
8004
+ });
8005
+ });
7960
8006
  });
7961
8007
  if (obj.extraProperties) {
7962
8008
  stack.push({
@@ -8064,7 +8110,43 @@ function collectTypeDefinitionTreeForObjectProperty(property, types, rootPath =
8064
8110
  optional: unwrapReference(property.valueShape, types).isOptional
8065
8111
  }
8066
8112
  ]
8067
- })
8113
+ }),
8114
+ ...(property.arguments ?? []).flatMap((arg) => [
8115
+ {
8116
+ path: [
8117
+ ...rootPath,
8118
+ {
8119
+ type: "objectProperty",
8120
+ key: property.key,
8121
+ optional: unwrapReference(property.valueShape, types).isOptional
8122
+ },
8123
+ {
8124
+ type: "graphqlArgument",
8125
+ name: arg.name,
8126
+ optional: unwrapReference(arg.type, types).isOptional
8127
+ }
8128
+ ],
8129
+ descriptions: arg.description ? [arg.description] : [],
8130
+ availability: coalesceAvailability([property.availability, arg.availability])
8131
+ },
8132
+ ...collectTypeDefinitionTree(arg.type, types, {
8133
+ maxDepth: maxDepth - 1,
8134
+ availability: coalesceAvailability([property.availability, arg.availability]),
8135
+ path: [
8136
+ ...rootPath,
8137
+ {
8138
+ type: "objectProperty",
8139
+ key: property.key,
8140
+ optional: unwrapReference(property.valueShape, types).isOptional
8141
+ },
8142
+ {
8143
+ type: "graphqlArgument",
8144
+ name: arg.name,
8145
+ optional: unwrapReference(arg.type, types).isOptional
8146
+ }
8147
+ ]
8148
+ })
8149
+ ])
8068
8150
  ];
8069
8151
  }
8070
8152
 
@@ -8183,6 +8265,9 @@ var ApiTypeIdVisitor = class _ApiTypeIdVisitor {
8183
8265
  typeShape.extends.forEach(visit);
8184
8266
  typeShape.properties.forEach((property) => {
8185
8267
  _ApiTypeIdVisitor.visitTypeShape(property.valueShape, visit);
8268
+ property.arguments?.forEach((arg) => {
8269
+ _ApiTypeIdVisitor.visitTypeShape(arg.type, visit);
8270
+ });
8186
8271
  });
8187
8272
  }
8188
8273
  static visitTypeReference(typeReference, visit) {
@@ -8263,10 +8348,13 @@ var ApiDefinitionPruner = class _ApiDefinitionPruner {
8263
8348
  found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
8264
8349
  }
8265
8350
  } else if (node.type === "graphql") {
8266
- const found = this.api.graphqlOperations[node.graphqlOperationId];
8267
- if (found) {
8268
- toRet.graphqlOperations[node.graphqlOperationId] = found;
8269
- found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
8351
+ const idsToInclude = node.graphqlOperationIds ?? [node.graphqlOperationId];
8352
+ for (const opId of idsToInclude) {
8353
+ const found = this.api.graphqlOperations[opId];
8354
+ if (found) {
8355
+ toRet.graphqlOperations[opId] = found;
8356
+ found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));
8357
+ }
8270
8358
  }
8271
8359
  }
8272
8360
  }
@@ -8568,9 +8656,21 @@ function createGraphqlContext(node, apiDefinition) {
8568
8656
  );
8569
8657
  return void 0;
8570
8658
  }
8659
+ const allIds = node.graphqlOperationIds ?? [node.graphqlOperationId];
8660
+ const operations = [];
8661
+ for (const id of allIds) {
8662
+ const op = api2.graphqlOperations[id];
8663
+ if (op) {
8664
+ operations.push(op);
8665
+ }
8666
+ }
8667
+ if (operations.length === 0) {
8668
+ operations.push(operation);
8669
+ }
8571
8670
  return {
8572
8671
  node,
8573
8672
  operation,
8673
+ operations,
8574
8674
  types: api2.types
8575
8675
  };
8576
8676
  }
@@ -9498,6 +9598,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
9498
9598
  displayName: v1?.name,
9499
9599
  operationId: v1?.urlSlug?.split("/")?.pop(),
9500
9600
  description: v1?.description,
9601
+ subtitle: v1?.subtitle,
9501
9602
  availability: v1?.availability,
9502
9603
  method: v1?.method,
9503
9604
  path: v1?.path?.parts?.filter((part) => part?.value !== "") ?? [],
@@ -9739,7 +9840,8 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
9739
9840
  },
9740
9841
  propertyAccess: value?.propertyAccess ?? void 0,
9741
9842
  description: value?.description ?? void 0,
9742
- availability: value?.availability ?? void 0
9843
+ availability: value?.availability ?? void 0,
9844
+ arguments: value?.arguments?.map((arg) => this.migrateGraphQlArgument(arg))
9743
9845
  }));
9744
9846
  },
9745
9847
  [],
@@ -10180,6 +10282,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
10180
10282
  description: v1?.description,
10181
10283
  availability: v1?.availability,
10182
10284
  namespace,
10285
+ fieldPath: v1?.fieldPath,
10183
10286
  arguments: v1?.arguments?.map((arg) => this.migrateGraphQlArgument(arg)),
10184
10287
  returnType: {
10185
10288
  type: "alias",
@@ -10476,7 +10579,10 @@ function generateGraphQlSnippet(context) {
10476
10579
  return `$${arg.name}: ${graphqlType}`;
10477
10580
  });
10478
10581
  const argumentUsage = args.map((arg) => `${arg.name}: $${arg.name}`);
10479
- const selectionSet = generateSelectionSet(operation.returnType, types, 2);
10582
+ const fieldPath = operation.fieldPath;
10583
+ const hasFieldPath = fieldPath != null && fieldPath.length > 0;
10584
+ const selectionSetIndent = hasFieldPath ? 2 + fieldPath.length : 2;
10585
+ const selectionSet = generateSelectionSet(operation.returnType, types, 2, /* @__PURE__ */ new Set(), selectionSetIndent);
10480
10586
  let query = operationKeyword;
10481
10587
  if (operationName || variableDefinitions.length > 0) {
10482
10588
  query += ` ${operationName}`;
@@ -10485,15 +10591,32 @@ function generateGraphQlSnippet(context) {
10485
10591
  }
10486
10592
  }
10487
10593
  query += " {\n";
10488
- query += ` ${operation.name}`;
10594
+ const baseIndent = 2;
10595
+ if (hasFieldPath) {
10596
+ for (let i = 0; i < fieldPath.length; i++) {
10597
+ const indent = " ".repeat(baseIndent + i * 2);
10598
+ query += `${indent}${fieldPath[i]} {
10599
+ `;
10600
+ }
10601
+ }
10602
+ const operationIndent = hasFieldPath ? " ".repeat(baseIndent + fieldPath.length * 2) : " ";
10603
+ query += `${operationIndent}${operation.name}`;
10489
10604
  if (argumentUsage.length > 0) {
10490
10605
  query += `(${argumentUsage.join(", ")})`;
10491
10606
  }
10492
10607
  if (selectionSet) {
10493
10608
  query += ` ${selectionSet}`;
10494
10609
  }
10495
- query += "\n}";
10496
- const response = generateResponseExample(operation.name, operation.returnType, types);
10610
+ query += "\n";
10611
+ if (hasFieldPath) {
10612
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
10613
+ const indent = " ".repeat(baseIndent + i * 2);
10614
+ query += `${indent}}
10615
+ `;
10616
+ }
10617
+ }
10618
+ query += "}";
10619
+ const response = generateResponseExample(operation.name, operation.returnType, types, fieldPath);
10497
10620
  const result = { query, variables, response };
10498
10621
  snippetCache.set(operation, result);
10499
10622
  return result;
@@ -10522,49 +10645,44 @@ function getExampleOperationName(operationType) {
10522
10645
  return "ExampleQuery";
10523
10646
  }
10524
10647
  }
10525
- function typeShapeToGraphQlType(shape, types) {
10648
+ function typeShapeToGraphQlType(shape, types, nonNull = true) {
10526
10649
  if (shape.type === "alias") {
10527
- return typeReferenceToGraphQlType(shape.value, types);
10528
- }
10529
- if (shape.type === "enum") {
10530
- return "String";
10531
- }
10532
- if (shape.type === "object") {
10533
- return "Object";
10534
- }
10535
- if (shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion") {
10536
- return "Object";
10650
+ return typeReferenceToGraphQlType(shape.value, types, nonNull);
10537
10651
  }
10538
- return "String";
10652
+ const base = shape.type === "enum" ? "String" : shape.type === "object" || shape.type === "undiscriminatedUnion" || shape.type === "discriminatedUnion" ? "Object" : "String";
10653
+ return nonNull ? `${base}!` : base;
10539
10654
  }
10540
- function typeReferenceToGraphQlType(ref, types) {
10655
+ function typeReferenceToGraphQlType(ref, types, nonNull = true) {
10541
10656
  switch (ref.type) {
10542
- case "primitive":
10543
- return primitiveToGraphQlType(ref.value);
10657
+ case "primitive": {
10658
+ const base = primitiveToGraphQlType(ref.value);
10659
+ return nonNull ? `${base}!` : base;
10660
+ }
10544
10661
  case "id": {
10545
10662
  const typeDef = types[ref.id];
10546
- if (typeDef) {
10547
- return typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object";
10548
- }
10549
- return "Object";
10663
+ const base = typeDef ? typeDef.displayName ?? unnamespacedName(typeDef.name) ?? "Object" : "Object";
10664
+ return nonNull ? `${base}!` : base;
10550
10665
  }
10551
10666
  case "optional":
10552
- return typeShapeToGraphQlType(ref.shape, types);
10667
+ return typeShapeToGraphQlType(ref.shape, types, false);
10553
10668
  case "nullable":
10554
- return typeShapeToGraphQlType(ref.shape, types);
10555
- case "list":
10556
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
10557
- case "set":
10558
- return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;
10669
+ return typeShapeToGraphQlType(ref.shape, types, false);
10670
+ case "list": {
10671
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
10672
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
10673
+ }
10674
+ case "set": {
10675
+ const inner = typeShapeToGraphQlType(ref.itemShape, types);
10676
+ return nonNull ? `[${inner}]!` : `[${inner}]`;
10677
+ }
10559
10678
  case "map":
10560
- return "Object";
10561
- // Maps don't have direct GraphQL equivalent
10679
+ return nonNull ? "Object!" : "Object";
10562
10680
  case "literal":
10563
- return "String";
10681
+ return nonNull ? "String!" : "String";
10564
10682
  case "unknown":
10565
- return "Object";
10683
+ return nonNull ? "Object!" : "Object";
10566
10684
  default:
10567
- return "String";
10685
+ return nonNull ? "String!" : "String";
10568
10686
  }
10569
10687
  }
10570
10688
  function unnamespacedName(name) {
@@ -10782,13 +10900,18 @@ function generateSelectionSetFromReference(ref, types, depth, visited, indentLev
10782
10900
  return "";
10783
10901
  }
10784
10902
  }
10785
- function generateResponseExample(operationName, returnType, types) {
10903
+ function generateResponseExample(operationName, returnType, types, fieldPath) {
10786
10904
  const data = generateResponseData(returnType, types, 3, /* @__PURE__ */ new Set());
10787
- return {
10788
- data: {
10789
- [operationName]: data
10905
+ let responseData = { [operationName]: data };
10906
+ if (fieldPath != null && fieldPath.length > 0) {
10907
+ for (let i = fieldPath.length - 1; i >= 0; i--) {
10908
+ const key = fieldPath[i];
10909
+ if (key != null) {
10910
+ responseData = { [key]: responseData };
10911
+ }
10790
10912
  }
10791
- };
10913
+ }
10914
+ return { data: responseData };
10792
10915
  }
10793
10916
  function generateResponseData(shape, types, depth, visited) {
10794
10917
  if (depth <= 0) {
@@ -11752,6 +11875,7 @@ __export(navigation_exports, {
11752
11875
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
11753
11876
  GraphQlOperationSchema: () => GraphQlOperationSchema,
11754
11877
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
11878
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
11755
11879
  GrpcId: () => GrpcId,
11756
11880
  GrpcIdSchema: () => GrpcIdSchema,
11757
11881
  GrpcMethod: () => GrpcMethod,
@@ -11875,7 +11999,7 @@ var import_ts_essentials4 = require("ts-essentials");
11875
11999
 
11876
12000
  // src/navigation/versions/latest/NavigationNodeApiLeaf.ts
11877
12001
  function isApiLeaf(node) {
11878
- return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql";
12002
+ return node.type === "endpoint" || node.type === "webSocket" || node.type === "webhook" || node.type === "grpc" || node.type === "graphql" || node.type === "graphqlType";
11879
12003
  }
11880
12004
 
11881
12005
  // src/navigation/versions/latest/NavigationNodePageLeaf.ts
@@ -11945,7 +12069,8 @@ function getPageId(node) {
11945
12069
  webSocket: RETURN_UNDEFINED,
11946
12070
  webhook: RETURN_UNDEFINED,
11947
12071
  grpc: RETURN_UNDEFINED,
11948
- graphql: RETURN_UNDEFINED
12072
+ graphql: RETURN_UNDEFINED,
12073
+ graphqlType: RETURN_UNDEFINED
11949
12074
  // changelogYear: RETURN_UNDEFINED,
11950
12075
  // changelogMonth: RETURN_UNDEFINED,
11951
12076
  });
@@ -12307,6 +12432,9 @@ var ApiTypeIdVisitor2 = class _ApiTypeIdVisitor {
12307
12432
  typeShape.extends.forEach(visit);
12308
12433
  typeShape.properties.forEach((property) => {
12309
12434
  _ApiTypeIdVisitor.visitTypeReference(property.valueType, visit);
12435
+ property.arguments?.forEach((arg) => {
12436
+ _ApiTypeIdVisitor.visitTypeReference(arg.type, visit);
12437
+ });
12310
12438
  });
12311
12439
  }
12312
12440
  static visitTypeReference(typeReference, visit) {
@@ -12463,11 +12591,8 @@ var ApiDefinitionPruner2 = class {
12463
12591
  if (node.type !== "graphql" || graphqlOperations == null) {
12464
12592
  return [];
12465
12593
  }
12466
- const graphqlOperationId = node.graphqlOperationId;
12467
- const found = graphqlOperations.find(
12468
- (graphqlOperation) => ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation) === graphqlOperationId
12469
- );
12470
- return found ? [found] : [];
12594
+ const idsToInclude = new Set(node.graphqlOperationIds ?? [node.graphqlOperationId]);
12595
+ return graphqlOperations.filter((op) => idsToInclude.has(ApiDefinitionHolder.createGraphQlOperationId(op)));
12471
12596
  }
12472
12597
  };
12473
12598
 
@@ -12573,6 +12698,7 @@ __export(v1_exports2, {
12573
12698
  GraphQlOperationIdSchema: () => GraphQlOperationIdSchema,
12574
12699
  GraphQlOperationSchema: () => GraphQlOperationSchema,
12575
12700
  GraphQlOperationTypeSchema: () => GraphQlOperationTypeSchema,
12701
+ GraphQlTypeCategorySchema: () => GraphQlTypeCategorySchema,
12576
12702
  GrpcId: () => GrpcId,
12577
12703
  GrpcIdSchema: () => GrpcIdSchema,
12578
12704
  GrpcMethod: () => GrpcMethod,
@@ -13191,12 +13317,15 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
13191
13317
  }));
13192
13318
  }
13193
13319
  convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug) {
13320
+ const fieldPath = graphqlOperation.fieldPath;
13321
+ const urlSlug = fieldPath != null && fieldPath.length > 0 ? [...fieldPath, graphqlOperation.name].join("-") : graphqlOperation.name;
13194
13322
  return this.#idgen.with(graphqlOperationId, (id) => ({
13195
13323
  id,
13196
13324
  type: "graphql",
13197
13325
  title: graphqlOperation.displayName ?? graphqlOperation.name,
13198
13326
  graphqlOperationId,
13199
- slug: parentSlug.apply({ urlSlug: graphqlOperation.name }).get(),
13327
+ graphqlOperationIds: void 0,
13328
+ slug: parentSlug.apply({ urlSlug }).get(),
13200
13329
  icon: void 0,
13201
13330
  hidden: void 0,
13202
13331
  operationType: graphqlOperation.operationType,
@@ -13210,6 +13339,86 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
13210
13339
  featureFlags: void 0
13211
13340
  }));
13212
13341
  }
13342
+ convertGraphQlOperationsToChildren(graphqlOperations, parentSlug) {
13343
+ const groupedByParent = /* @__PURE__ */ new Map();
13344
+ const insertionOrder = [];
13345
+ for (const op of graphqlOperations) {
13346
+ const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(op);
13347
+ if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
13348
+ continue;
13349
+ }
13350
+ this.#visitedGraphqlOperations.add(graphqlOperationId);
13351
+ const parentField = op.fieldPath?.[0];
13352
+ if (parentField != null && op.operationType === "QUERY") {
13353
+ const group = groupedByParent.get(parentField);
13354
+ if (group != null) {
13355
+ group.push(op);
13356
+ } else {
13357
+ groupedByParent.set(parentField, [op]);
13358
+ insertionOrder.push({ type: "group", parentField });
13359
+ }
13360
+ } else {
13361
+ insertionOrder.push({ type: "flat", op });
13362
+ }
13363
+ }
13364
+ const children = [];
13365
+ const allSlugs = /* @__PURE__ */ new Set();
13366
+ for (const entry of insertionOrder) {
13367
+ if (entry.type === "flat") {
13368
+ const fp = entry.op.fieldPath;
13369
+ allSlugs.add(fp != null && fp.length > 0 ? [...fp, entry.op.name].join("-") : entry.op.name);
13370
+ } else {
13371
+ allSlugs.add(entry.parentField);
13372
+ }
13373
+ }
13374
+ for (const entry of insertionOrder) {
13375
+ if (entry.type === "flat") {
13376
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(entry.op);
13377
+ children.push(this.convertGraphQlNode(opId, entry.op, parentSlug));
13378
+ } else {
13379
+ const operations = groupedByParent.get(entry.parentField);
13380
+ if (operations == null) {
13381
+ continue;
13382
+ }
13383
+ const firstOp = operations[0];
13384
+ const opId = ApiDefinitionHolder.createGraphQlOperationId(firstOp);
13385
+ const allOpIds = operations.map((op) => ApiDefinitionHolder.createGraphQlOperationId(op));
13386
+ let slugSegment = entry.parentField;
13387
+ const flatHasSameSlug = insertionOrder.some(
13388
+ (e) => e.type === "flat" && (() => {
13389
+ const fp = e.op.fieldPath;
13390
+ const s = fp != null && fp.length > 0 ? [...fp, e.op.name].join("-") : e.op.name;
13391
+ return s === slugSegment;
13392
+ })()
13393
+ );
13394
+ if (flatHasSameSlug) {
13395
+ slugSegment = `${entry.parentField}-fields`;
13396
+ }
13397
+ children.push(
13398
+ this.#idgen.with(opId, (id) => ({
13399
+ id,
13400
+ type: "graphql",
13401
+ title: entry.parentField,
13402
+ graphqlOperationId: opId,
13403
+ graphqlOperationIds: allOpIds.length > 1 ? allOpIds : void 0,
13404
+ slug: parentSlug.apply({ urlSlug: slugSegment }).get(),
13405
+ icon: void 0,
13406
+ hidden: void 0,
13407
+ operationType: firstOp.operationType,
13408
+ apiDefinitionId: this.apiDefinitionId,
13409
+ availability: navigation_exports.V1.convertAvailability(firstOp.availability),
13410
+ playground: void 0,
13411
+ authed: void 0,
13412
+ collapsed: void 0,
13413
+ viewers: void 0,
13414
+ orphaned: void 0,
13415
+ featureFlags: void 0
13416
+ }))
13417
+ );
13418
+ }
13419
+ }
13420
+ return children;
13421
+ }
13213
13422
  convertPackageToChildren(package_, parentSlug) {
13214
13423
  const children = [];
13215
13424
  let subpackageId = isSubpackage2(package_) ? package_.subpackageId : "__package__";
@@ -13257,14 +13466,7 @@ var ApiReferenceNavigationConverter = class _ApiReferenceNavigationConverter {
13257
13466
  children.push(this.convertWebhookNode(webhookId, webhook, parentSlug));
13258
13467
  this.#visitedWebhooks.add(webhookId);
13259
13468
  });
13260
- (package_.graphqlOperations ?? []).forEach((graphqlOperation) => {
13261
- const graphqlOperationId = ApiDefinitionHolder.createGraphQlOperationId(graphqlOperation);
13262
- if (this.#visitedGraphqlOperations.has(graphqlOperationId)) {
13263
- return;
13264
- }
13265
- children.push(this.convertGraphQlNode(graphqlOperationId, graphqlOperation, parentSlug));
13266
- this.#visitedGraphqlOperations.add(graphqlOperationId);
13267
- });
13469
+ children.push(...this.convertGraphQlOperationsToChildren(package_.graphqlOperations ?? [], parentSlug));
13268
13470
  (package_.subpackages ?? []).forEach((subpackageId2) => {
13269
13471
  const subpackage = this.api.subpackages[subpackageId2];
13270
13472
  if (subpackage == null) {
@@ -15207,6 +15409,7 @@ var FernNavigationV1ToLatest = class _FernNavigationV1ToLatest {
15207
15409
  collapsed: node.collapsed,
15208
15410
  apiDefinitionId: node.apiDefinitionId,
15209
15411
  graphqlOperationId: node.graphqlOperationId,
15412
+ graphqlOperationIds: node.graphqlOperationIds,
15210
15413
  operationType: node.operationType,
15211
15414
  playground: node.playground,
15212
15415
  availability: this.#availability(node.availability),
@@ -15712,6 +15915,7 @@ function getApiReferenceId(node) {
15712
15915
  webhook: RETURN_API_DEFINITION_ID,
15713
15916
  grpc: RETURN_API_DEFINITION_ID,
15714
15917
  graphql: RETURN_API_DEFINITION_ID,
15918
+ graphqlType: RETURN_API_DEFINITION_ID,
15715
15919
  apiPackage: RETURN_API_DEFINITION_ID,
15716
15920
  unversioned: RETURN_UNDEFINED3,
15717
15921
  landingPage: RETURN_UNDEFINED3
@@ -16855,6 +17059,7 @@ function transformEndpoint2({
16855
17059
  (example) => convertExampleEndpointCall({ dbShape: example })
16856
17060
  ),
16857
17061
  description: dbShape.description,
17062
+ subtitle: dbShape.subtitle,
16858
17063
  // htmlDescription: dbShape.htmlDescription,
16859
17064
  authed: dbShape.authed ?? false,
16860
17065
  authV2: dbShape.authV2,