@fern-api/fdr-sdk 1.2.73-c5de911f8d → 1.2.73-d4652c951f

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 (53) hide show
  1. package/dist/js/api-definition/index.js +5 -0
  2. package/dist/js/api-definition/index.js.map +1 -1
  3. package/dist/js/api-definition/index.mjs +5 -0
  4. package/dist/js/api-definition/index.mjs.map +1 -1
  5. package/dist/js/client/FdrClient.js +5 -0
  6. package/dist/js/client/FdrClient.js.map +1 -1
  7. package/dist/js/client/FdrClient.mjs +5 -0
  8. package/dist/js/client/FdrClient.mjs.map +1 -1
  9. package/dist/js/client/types.js +5 -0
  10. package/dist/js/client/types.js.map +1 -1
  11. package/dist/js/client/types.mjs +5 -0
  12. package/dist/js/client/types.mjs.map +1 -1
  13. package/dist/js/converters/index.js +106 -2
  14. package/dist/js/converters/index.js.map +1 -1
  15. package/dist/js/converters/index.mjs +106 -2
  16. package/dist/js/converters/index.mjs.map +1 -1
  17. package/dist/js/index.js +106 -2
  18. package/dist/js/index.js.map +1 -1
  19. package/dist/js/index.mjs +106 -2
  20. package/dist/js/index.mjs.map +1 -1
  21. package/dist/js/navigation/index.js +30 -0
  22. package/dist/js/navigation/index.js.map +1 -1
  23. package/dist/js/navigation/index.mjs +30 -0
  24. package/dist/js/navigation/index.mjs.map +1 -1
  25. package/dist/js/orpc-client.js +5 -0
  26. package/dist/js/orpc-client.js.map +1 -1
  27. package/dist/js/orpc-client.mjs +5 -0
  28. package/dist/js/orpc-client.mjs.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/dist/types/api-definition/migrators/v1ToV2.d.ts +5 -0
  31. package/dist/types/api-definition/migrators/v1ToV2.d.ts.map +1 -1
  32. package/dist/types/converters/db/convertAPIDefinitionToDb.d.ts.map +1 -1
  33. package/dist/types/converters/db/examples/generateEndpointExampleCall.d.ts +10 -0
  34. package/dist/types/converters/db/examples/generateEndpointExampleCall.d.ts.map +1 -1
  35. package/dist/types/converters/db/examples/generateHttpBodyExample.d.ts +10 -0
  36. package/dist/types/converters/db/examples/generateHttpBodyExample.d.ts.map +1 -1
  37. package/dist/types/converters/read/convertDbAPIDefinitionToRead.d.ts +14 -0
  38. package/dist/types/converters/read/convertDbAPIDefinitionToRead.d.ts.map +1 -1
  39. package/dist/types/navigation/NodeCollector.d.ts +13 -0
  40. package/dist/types/navigation/NodeCollector.d.ts.map +1 -1
  41. package/dist/types/navigation/__test__/NodeCollector.getRoles.test.d.ts +2 -0
  42. package/dist/types/navigation/__test__/NodeCollector.getRoles.test.d.ts.map +1 -0
  43. package/dist/types/navigation/utils/toApis.d.ts +1 -0
  44. package/dist/types/navigation/utils/toApis.d.ts.map +1 -1
  45. package/dist/types/orpc-client/api/contract-db.d.ts +500 -0
  46. package/dist/types/orpc-client/api/contract-db.d.ts.map +1 -1
  47. package/dist/types/orpc-client/api/contract-latest.d.ts +22 -0
  48. package/dist/types/orpc-client/api/contract-latest.d.ts.map +1 -1
  49. package/dist/types/orpc-client/api/contract-read.d.ts +540 -0
  50. package/dist/types/orpc-client/api/contract-read.d.ts.map +1 -1
  51. package/dist/types/orpc-client/api/contract-register.d.ts +540 -0
  52. package/dist/types/orpc-client/api/contract-register.d.ts.map +1 -1
  53. package/package.json +1 -1
@@ -1379,6 +1379,9 @@ var RegisterExampleEndpointCallSchema = z3.object({
1379
1379
  description: z3.string().nullish(),
1380
1380
  name: z3.string().nullish(),
1381
1381
  contentType: z3.string().nullish(),
1382
+ // When the request body is a discriminated union and one example is generated per variant,
1383
+ // this carries the variant's discriminant value so the UI can swap examples when the variant changes.
1384
+ discriminant: z3.string().nullish(),
1382
1385
  path: z3.string(),
1383
1386
  pathParameters: z3.record(PropertyKeySchema, z3.unknown()),
1384
1387
  queryParameters: z3.record(z3.string(), z3.unknown()),
@@ -1952,6 +1955,7 @@ var LatestExampleEndpointCallSchema = z4.object({
1952
1955
  responseStatusCode: z4.number().int(),
1953
1956
  name: z4.string().nullish(),
1954
1957
  contentType: z4.string().nullish(),
1958
+ discriminant: z4.string().nullish(),
1955
1959
  pathParameters: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
1956
1960
  queryParameters: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
1957
1961
  headers: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
@@ -2226,6 +2230,7 @@ var ReadExampleEndpointCallSchema = z5.object({
2226
2230
  description: z5.string().nullish(),
2227
2231
  name: z5.string().nullish(),
2228
2232
  contentType: z5.string().nullish(),
2233
+ discriminant: z5.string().nullish(),
2229
2234
  path: z5.string(),
2230
2235
  pathParameters: z5.record(PropertyKeySchema, z5.unknown()),
2231
2236
  queryParameters: z5.record(z5.string(), z5.unknown()),
@@ -6099,6 +6104,52 @@ function generateHttpRequestBodyExample(type, resolveTypeById) {
6099
6104
  }
6100
6105
  }
6101
6106
  }
6107
+ function resolveRequestBodyDiscriminatedUnion(type, resolveTypeById) {
6108
+ let shape;
6109
+ switch (type.type) {
6110
+ case "reference":
6111
+ shape = resolveTypeReferenceToShape(type.value, resolveTypeById, /* @__PURE__ */ new Set());
6112
+ break;
6113
+ case "json":
6114
+ shape = type.shape.type === "reference" ? resolveTypeReferenceToShape(type.shape.value, resolveTypeById, /* @__PURE__ */ new Set()) : void 0;
6115
+ break;
6116
+ default:
6117
+ return void 0;
6118
+ }
6119
+ return shape?.type === "discriminatedUnion" ? shape : void 0;
6120
+ }
6121
+ function resolveTypeReferenceToShape(reference, resolveTypeById, visited) {
6122
+ switch (reference.type) {
6123
+ case "id": {
6124
+ if (visited.has(reference.value)) {
6125
+ return void 0;
6126
+ }
6127
+ visited.add(reference.value);
6128
+ const typeDef = resolveTypeById(reference.value);
6129
+ if (typeDef == null) {
6130
+ return void 0;
6131
+ }
6132
+ if (typeDef.shape.type === "alias") {
6133
+ return resolveTypeReferenceToShape(typeDef.shape.value, resolveTypeById, visited);
6134
+ }
6135
+ return typeDef.shape;
6136
+ }
6137
+ case "optional":
6138
+ case "nullable":
6139
+ return resolveTypeReferenceToShape(reference.itemType, resolveTypeById, visited);
6140
+ default:
6141
+ return void 0;
6142
+ }
6143
+ }
6144
+ function generateDiscriminatedUnionVariantRequestExample(discriminant, variant, resolveTypeById) {
6145
+ return {
6146
+ type: "json",
6147
+ value: {
6148
+ [discriminant]: variant.discriminantValue,
6149
+ ...generateExampleObject(variant.additionalProperties, resolveTypeById, true, /* @__PURE__ */ new Set(), 0)
6150
+ }
6151
+ };
6152
+ }
6102
6153
  function generateFormDataRequestBodyExample(FormDataRequest, resolveTypeById) {
6103
6154
  if (FormDataRequest == null) {
6104
6155
  return { type: "form", value: {} };
@@ -6480,6 +6531,32 @@ function generateEndpointSuccessExample({
6480
6531
  responseBodyV3: endpointDefinition.response != null ? generateHttpResponseBodyExample(endpointDefinition.response.type, resolveTypeById) : void 0
6481
6532
  };
6482
6533
  }
6534
+ function generateEndpointSuccessExamples({
6535
+ endpointDefinition,
6536
+ apiDefinition
6537
+ }) {
6538
+ const resolveTypeById = getResolveByTypeId(apiDefinition);
6539
+ const discriminatedUnion11 = endpointDefinition.request != null ? resolveRequestBodyDiscriminatedUnion(endpointDefinition.request.type, resolveTypeById) : void 0;
6540
+ if (discriminatedUnion11 == null || discriminatedUnion11.variants.length <= 1) {
6541
+ return [generateEndpointSuccessExample({ endpointDefinition, apiDefinition })];
6542
+ }
6543
+ const base = generateBaseEndpointExample({ endpointDefinition, apiDefinition, resolveTypeById });
6544
+ const responseBodyV3 = endpointDefinition.response != null ? generateHttpResponseBodyExample(endpointDefinition.response.type, resolveTypeById) : void 0;
6545
+ return discriminatedUnion11.variants.map((variant) => ({
6546
+ ...base,
6547
+ // Use `||` (not `??`) so an empty-string displayName falls back to the (always-present,
6548
+ // unique) discriminant value — keeping example names non-empty and distinct.
6549
+ name: variant.displayName || variant.discriminantValue,
6550
+ discriminant: variant.discriminantValue,
6551
+ requestBodyV3: generateDiscriminatedUnionVariantRequestExample(
6552
+ discriminatedUnion11.discriminant,
6553
+ variant,
6554
+ resolveTypeById
6555
+ ),
6556
+ responseStatusCode: 200,
6557
+ responseBodyV3
6558
+ }));
6559
+ }
6483
6560
  function generateBaseEndpointExample({
6484
6561
  endpointDefinition,
6485
6562
  apiDefinition,
@@ -6967,11 +7044,11 @@ function getExampleEndpointCalls({
6967
7044
  if (registeredSuccessExamples.length > 0) {
6968
7045
  examples.push(...registeredSuccessExamples);
6969
7046
  } else {
6970
- const generatedSuccessExample = generateEndpointSuccessExample({
7047
+ const generatedSuccessExamples = generateEndpointSuccessExamples({
6971
7048
  endpointDefinition: writeShape,
6972
7049
  apiDefinition
6973
7050
  });
6974
- examples.push(generatedSuccessExample);
7051
+ examples.push(...generatedSuccessExamples);
6975
7052
  }
6976
7053
  const registeredErrorExampleStatusCodes = new Set(registeredErrorExamples.map((e) => e.responseStatusCode));
6977
7054
  const errorsMissingAnExample = (writeShape.errorsV2 ?? []).filter(
@@ -7050,6 +7127,7 @@ function transformExampleEndpointCall({
7050
7127
  return {
7051
7128
  name: writeShape.name,
7052
7129
  contentType: writeShape.contentType ?? void 0,
7130
+ discriminant: writeShape.discriminant ?? void 0,
7053
7131
  description: writeShape.description,
7054
7132
  // htmlDescription,
7055
7133
  // descriptionContainsMarkdown: true,
@@ -9968,6 +10046,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
9968
10046
  responseStatusCode: example?.responseStatusCode,
9969
10047
  name: example?.name,
9970
10048
  contentType: example?.contentType ?? void 0,
10049
+ discriminant: example?.discriminant ?? void 0,
9971
10050
  description: example?.description,
9972
10051
  pathParameters: example?.pathParameters,
9973
10052
  queryParameters: example?.queryParameters,
@@ -14736,6 +14815,30 @@ var NodeCollector = class _NodeCollector {
14736
14815
  getNodesInOrder = () => {
14737
14816
  return this.nodesInOrder;
14738
14817
  };
14818
+ /**
14819
+ * The distinct RBAC roles referenced anywhere in the navigation, collected from every node's
14820
+ * `viewers`. This is the authoritative source of "which roles gate content on this site" — the
14821
+ * top-level `root.roles` is not populated by the nav builders, and docs.yml's declared `roles`
14822
+ * list is not serialized into the docs definition, so the roles that actually exist are the ones
14823
+ * appearing in node `viewers` (e.g. the implicit `everyone` plus any custom roles like `beta`).
14824
+ *
14825
+ * NOTE: this is a faithful collection of every role in `viewers` — it INCLUDES the implicit
14826
+ * `everyone` role when present (kept deliberately, so callers can e.g. detect whether a site uses
14827
+ * RBAC at all). Consumers that want only masquerade-able custom roles MUST filter `everyone`
14828
+ * themselves (the preview widget does this via `EVERYONE_ROLE`).
14829
+ */
14830
+ getRoles = once(() => {
14831
+ const roles = /* @__PURE__ */ new Set();
14832
+ for (const node of this.nodesInOrder) {
14833
+ const viewers = node.viewers;
14834
+ if (viewers != null) {
14835
+ for (const role of viewers) {
14836
+ roles.add(role);
14837
+ }
14838
+ }
14839
+ }
14840
+ return Array.from(roles);
14841
+ });
14739
14842
  };
14740
14843
  var MAX_CHANGELOG_ENTRIES_MINIMUM = 15;
14741
14844
  var CHANGELOG_RECENCY_MONTHS = 6;
@@ -17224,6 +17327,7 @@ function convertExampleEndpointCall({
17224
17327
  return {
17225
17328
  name: dbShape.name,
17226
17329
  contentType: dbShape.contentType ?? void 0,
17330
+ discriminant: dbShape.discriminant ?? void 0,
17227
17331
  description: dbShape.description,
17228
17332
  // htmlDescription: dbShape.htmlDescription,
17229
17333
  // descriptionContainsMarkdown: true,