@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
package/dist/js/index.mjs CHANGED
@@ -1662,6 +1662,9 @@ var RegisterExampleEndpointCallSchema = z3.object({
1662
1662
  description: z3.string().nullish(),
1663
1663
  name: z3.string().nullish(),
1664
1664
  contentType: z3.string().nullish(),
1665
+ // When the request body is a discriminated union and one example is generated per variant,
1666
+ // this carries the variant's discriminant value so the UI can swap examples when the variant changes.
1667
+ discriminant: z3.string().nullish(),
1665
1668
  path: z3.string(),
1666
1669
  pathParameters: z3.record(PropertyKeySchema, z3.unknown()),
1667
1670
  queryParameters: z3.record(z3.string(), z3.unknown()),
@@ -2235,6 +2238,7 @@ var LatestExampleEndpointCallSchema = z4.object({
2235
2238
  responseStatusCode: z4.number().int(),
2236
2239
  name: z4.string().nullish(),
2237
2240
  contentType: z4.string().nullish(),
2241
+ discriminant: z4.string().nullish(),
2238
2242
  pathParameters: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
2239
2243
  queryParameters: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
2240
2244
  headers: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
@@ -4808,6 +4812,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
4808
4812
  responseStatusCode: example?.responseStatusCode,
4809
4813
  name: example?.name,
4810
4814
  contentType: example?.contentType ?? void 0,
4815
+ discriminant: example?.discriminant ?? void 0,
4811
4816
  description: example?.description,
4812
4817
  pathParameters: example?.pathParameters,
4813
4818
  queryParameters: example?.queryParameters,
@@ -6794,6 +6799,7 @@ var ReadExampleEndpointCallSchema = z5.object({
6794
6799
  description: z5.string().nullish(),
6795
6800
  name: z5.string().nullish(),
6796
6801
  contentType: z5.string().nullish(),
6802
+ discriminant: z5.string().nullish(),
6797
6803
  path: z5.string(),
6798
6804
  pathParameters: z5.record(PropertyKeySchema, z5.unknown()),
6799
6805
  queryParameters: z5.record(z5.string(), z5.unknown()),
@@ -13048,6 +13054,52 @@ function generateHttpRequestBodyExample(type, resolveTypeById) {
13048
13054
  }
13049
13055
  }
13050
13056
  }
13057
+ function resolveRequestBodyDiscriminatedUnion(type, resolveTypeById) {
13058
+ let shape;
13059
+ switch (type.type) {
13060
+ case "reference":
13061
+ shape = resolveTypeReferenceToShape(type.value, resolveTypeById, /* @__PURE__ */ new Set());
13062
+ break;
13063
+ case "json":
13064
+ shape = type.shape.type === "reference" ? resolveTypeReferenceToShape(type.shape.value, resolveTypeById, /* @__PURE__ */ new Set()) : void 0;
13065
+ break;
13066
+ default:
13067
+ return void 0;
13068
+ }
13069
+ return shape?.type === "discriminatedUnion" ? shape : void 0;
13070
+ }
13071
+ function resolveTypeReferenceToShape(reference, resolveTypeById, visited) {
13072
+ switch (reference.type) {
13073
+ case "id": {
13074
+ if (visited.has(reference.value)) {
13075
+ return void 0;
13076
+ }
13077
+ visited.add(reference.value);
13078
+ const typeDef = resolveTypeById(reference.value);
13079
+ if (typeDef == null) {
13080
+ return void 0;
13081
+ }
13082
+ if (typeDef.shape.type === "alias") {
13083
+ return resolveTypeReferenceToShape(typeDef.shape.value, resolveTypeById, visited);
13084
+ }
13085
+ return typeDef.shape;
13086
+ }
13087
+ case "optional":
13088
+ case "nullable":
13089
+ return resolveTypeReferenceToShape(reference.itemType, resolveTypeById, visited);
13090
+ default:
13091
+ return void 0;
13092
+ }
13093
+ }
13094
+ function generateDiscriminatedUnionVariantRequestExample(discriminant, variant, resolveTypeById) {
13095
+ return {
13096
+ type: "json",
13097
+ value: {
13098
+ [discriminant]: variant.discriminantValue,
13099
+ ...generateExampleObject(variant.additionalProperties, resolveTypeById, true, /* @__PURE__ */ new Set(), 0)
13100
+ }
13101
+ };
13102
+ }
13051
13103
  function generateFormDataRequestBodyExample(FormDataRequest, resolveTypeById) {
13052
13104
  if (FormDataRequest == null) {
13053
13105
  return { type: "form", value: {} };
@@ -13429,6 +13481,32 @@ function generateEndpointSuccessExample({
13429
13481
  responseBodyV3: endpointDefinition.response != null ? generateHttpResponseBodyExample(endpointDefinition.response.type, resolveTypeById) : void 0
13430
13482
  };
13431
13483
  }
13484
+ function generateEndpointSuccessExamples({
13485
+ endpointDefinition,
13486
+ apiDefinition
13487
+ }) {
13488
+ const resolveTypeById = getResolveByTypeId(apiDefinition);
13489
+ const discriminatedUnion17 = endpointDefinition.request != null ? resolveRequestBodyDiscriminatedUnion(endpointDefinition.request.type, resolveTypeById) : void 0;
13490
+ if (discriminatedUnion17 == null || discriminatedUnion17.variants.length <= 1) {
13491
+ return [generateEndpointSuccessExample({ endpointDefinition, apiDefinition })];
13492
+ }
13493
+ const base = generateBaseEndpointExample({ endpointDefinition, apiDefinition, resolveTypeById });
13494
+ const responseBodyV3 = endpointDefinition.response != null ? generateHttpResponseBodyExample(endpointDefinition.response.type, resolveTypeById) : void 0;
13495
+ return discriminatedUnion17.variants.map((variant) => ({
13496
+ ...base,
13497
+ // Use `||` (not `??`) so an empty-string displayName falls back to the (always-present,
13498
+ // unique) discriminant value — keeping example names non-empty and distinct.
13499
+ name: variant.displayName || variant.discriminantValue,
13500
+ discriminant: variant.discriminantValue,
13501
+ requestBodyV3: generateDiscriminatedUnionVariantRequestExample(
13502
+ discriminatedUnion17.discriminant,
13503
+ variant,
13504
+ resolveTypeById
13505
+ ),
13506
+ responseStatusCode: 200,
13507
+ responseBodyV3
13508
+ }));
13509
+ }
13432
13510
  function generateBaseEndpointExample({
13433
13511
  endpointDefinition,
13434
13512
  apiDefinition,
@@ -13916,11 +13994,11 @@ function getExampleEndpointCalls({
13916
13994
  if (registeredSuccessExamples.length > 0) {
13917
13995
  examples.push(...registeredSuccessExamples);
13918
13996
  } else {
13919
- const generatedSuccessExample = generateEndpointSuccessExample({
13997
+ const generatedSuccessExamples = generateEndpointSuccessExamples({
13920
13998
  endpointDefinition: writeShape,
13921
13999
  apiDefinition
13922
14000
  });
13923
- examples.push(generatedSuccessExample);
14001
+ examples.push(...generatedSuccessExamples);
13924
14002
  }
13925
14003
  const registeredErrorExampleStatusCodes = new Set(registeredErrorExamples.map((e) => e.responseStatusCode));
13926
14004
  const errorsMissingAnExample = (writeShape.errorsV2 ?? []).filter(
@@ -13999,6 +14077,7 @@ function transformExampleEndpointCall({
13999
14077
  return {
14000
14078
  name: writeShape.name,
14001
14079
  contentType: writeShape.contentType ?? void 0,
14080
+ discriminant: writeShape.discriminant ?? void 0,
14002
14081
  description: writeShape.description,
14003
14082
  // htmlDescription,
14004
14083
  // descriptionContainsMarkdown: true,
@@ -15111,6 +15190,7 @@ function convertExampleEndpointCall({
15111
15190
  return {
15112
15191
  name: dbShape.name,
15113
15192
  contentType: dbShape.contentType ?? void 0,
15193
+ discriminant: dbShape.discriminant ?? void 0,
15114
15194
  description: dbShape.description,
15115
15195
  // htmlDescription: dbShape.htmlDescription,
15116
15196
  // descriptionContainsMarkdown: true,
@@ -18477,6 +18557,30 @@ var NodeCollector = class _NodeCollector {
18477
18557
  getNodesInOrder = () => {
18478
18558
  return this.nodesInOrder;
18479
18559
  };
18560
+ /**
18561
+ * The distinct RBAC roles referenced anywhere in the navigation, collected from every node's
18562
+ * `viewers`. This is the authoritative source of "which roles gate content on this site" — the
18563
+ * top-level `root.roles` is not populated by the nav builders, and docs.yml's declared `roles`
18564
+ * list is not serialized into the docs definition, so the roles that actually exist are the ones
18565
+ * appearing in node `viewers` (e.g. the implicit `everyone` plus any custom roles like `beta`).
18566
+ *
18567
+ * NOTE: this is a faithful collection of every role in `viewers` — it INCLUDES the implicit
18568
+ * `everyone` role when present (kept deliberately, so callers can e.g. detect whether a site uses
18569
+ * RBAC at all). Consumers that want only masquerade-able custom roles MUST filter `everyone`
18570
+ * themselves (the preview widget does this via `EVERYONE_ROLE`).
18571
+ */
18572
+ getRoles = once(() => {
18573
+ const roles = /* @__PURE__ */ new Set();
18574
+ for (const node of this.nodesInOrder) {
18575
+ const viewers = node.viewers;
18576
+ if (viewers != null) {
18577
+ for (const role of viewers) {
18578
+ roles.add(role);
18579
+ }
18580
+ }
18581
+ }
18582
+ return Array.from(roles);
18583
+ });
18480
18584
  };
18481
18585
  var MAX_CHANGELOG_ENTRIES_MINIMUM = 15;
18482
18586
  var CHANGELOG_RECENCY_MONTHS = 6;