@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
@@ -1418,6 +1418,9 @@ var RegisterExampleEndpointCallSchema = z3.object({
1418
1418
  description: z3.string().nullish(),
1419
1419
  name: z3.string().nullish(),
1420
1420
  contentType: z3.string().nullish(),
1421
+ // When the request body is a discriminated union and one example is generated per variant,
1422
+ // this carries the variant's discriminant value so the UI can swap examples when the variant changes.
1423
+ discriminant: z3.string().nullish(),
1421
1424
  path: z3.string(),
1422
1425
  pathParameters: z3.record(PropertyKeySchema, z3.unknown()),
1423
1426
  queryParameters: z3.record(z3.string(), z3.unknown()),
@@ -1991,6 +1994,7 @@ var LatestExampleEndpointCallSchema = z4.object({
1991
1994
  responseStatusCode: z4.number().int(),
1992
1995
  name: z4.string().nullish(),
1993
1996
  contentType: z4.string().nullish(),
1997
+ discriminant: z4.string().nullish(),
1994
1998
  pathParameters: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
1995
1999
  queryParameters: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
1996
2000
  headers: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
@@ -2265,6 +2269,7 @@ var ReadExampleEndpointCallSchema = z5.object({
2265
2269
  description: z5.string().nullish(),
2266
2270
  name: z5.string().nullish(),
2267
2271
  contentType: z5.string().nullish(),
2272
+ discriminant: z5.string().nullish(),
2268
2273
  path: z5.string(),
2269
2274
  pathParameters: z5.record(PropertyKeySchema, z5.unknown()),
2270
2275
  queryParameters: z5.record(z5.string(), z5.unknown()),
@@ -6138,6 +6143,52 @@ function generateHttpRequestBodyExample(type, resolveTypeById) {
6138
6143
  }
6139
6144
  }
6140
6145
  }
6146
+ function resolveRequestBodyDiscriminatedUnion(type, resolveTypeById) {
6147
+ let shape;
6148
+ switch (type.type) {
6149
+ case "reference":
6150
+ shape = resolveTypeReferenceToShape(type.value, resolveTypeById, /* @__PURE__ */ new Set());
6151
+ break;
6152
+ case "json":
6153
+ shape = type.shape.type === "reference" ? resolveTypeReferenceToShape(type.shape.value, resolveTypeById, /* @__PURE__ */ new Set()) : void 0;
6154
+ break;
6155
+ default:
6156
+ return void 0;
6157
+ }
6158
+ return shape?.type === "discriminatedUnion" ? shape : void 0;
6159
+ }
6160
+ function resolveTypeReferenceToShape(reference, resolveTypeById, visited) {
6161
+ switch (reference.type) {
6162
+ case "id": {
6163
+ if (visited.has(reference.value)) {
6164
+ return void 0;
6165
+ }
6166
+ visited.add(reference.value);
6167
+ const typeDef = resolveTypeById(reference.value);
6168
+ if (typeDef == null) {
6169
+ return void 0;
6170
+ }
6171
+ if (typeDef.shape.type === "alias") {
6172
+ return resolveTypeReferenceToShape(typeDef.shape.value, resolveTypeById, visited);
6173
+ }
6174
+ return typeDef.shape;
6175
+ }
6176
+ case "optional":
6177
+ case "nullable":
6178
+ return resolveTypeReferenceToShape(reference.itemType, resolveTypeById, visited);
6179
+ default:
6180
+ return void 0;
6181
+ }
6182
+ }
6183
+ function generateDiscriminatedUnionVariantRequestExample(discriminant, variant, resolveTypeById) {
6184
+ return {
6185
+ type: "json",
6186
+ value: {
6187
+ [discriminant]: variant.discriminantValue,
6188
+ ...generateExampleObject(variant.additionalProperties, resolveTypeById, true, /* @__PURE__ */ new Set(), 0)
6189
+ }
6190
+ };
6191
+ }
6141
6192
  function generateFormDataRequestBodyExample(FormDataRequest, resolveTypeById) {
6142
6193
  if (FormDataRequest == null) {
6143
6194
  return { type: "form", value: {} };
@@ -6519,6 +6570,32 @@ function generateEndpointSuccessExample({
6519
6570
  responseBodyV3: endpointDefinition.response != null ? generateHttpResponseBodyExample(endpointDefinition.response.type, resolveTypeById) : void 0
6520
6571
  };
6521
6572
  }
6573
+ function generateEndpointSuccessExamples({
6574
+ endpointDefinition,
6575
+ apiDefinition
6576
+ }) {
6577
+ const resolveTypeById = getResolveByTypeId(apiDefinition);
6578
+ const discriminatedUnion11 = endpointDefinition.request != null ? resolveRequestBodyDiscriminatedUnion(endpointDefinition.request.type, resolveTypeById) : void 0;
6579
+ if (discriminatedUnion11 == null || discriminatedUnion11.variants.length <= 1) {
6580
+ return [generateEndpointSuccessExample({ endpointDefinition, apiDefinition })];
6581
+ }
6582
+ const base = generateBaseEndpointExample({ endpointDefinition, apiDefinition, resolveTypeById });
6583
+ const responseBodyV3 = endpointDefinition.response != null ? generateHttpResponseBodyExample(endpointDefinition.response.type, resolveTypeById) : void 0;
6584
+ return discriminatedUnion11.variants.map((variant) => ({
6585
+ ...base,
6586
+ // Use `||` (not `??`) so an empty-string displayName falls back to the (always-present,
6587
+ // unique) discriminant value — keeping example names non-empty and distinct.
6588
+ name: variant.displayName || variant.discriminantValue,
6589
+ discriminant: variant.discriminantValue,
6590
+ requestBodyV3: generateDiscriminatedUnionVariantRequestExample(
6591
+ discriminatedUnion11.discriminant,
6592
+ variant,
6593
+ resolveTypeById
6594
+ ),
6595
+ responseStatusCode: 200,
6596
+ responseBodyV3
6597
+ }));
6598
+ }
6522
6599
  function generateBaseEndpointExample({
6523
6600
  endpointDefinition,
6524
6601
  apiDefinition,
@@ -7006,11 +7083,11 @@ function getExampleEndpointCalls({
7006
7083
  if (registeredSuccessExamples.length > 0) {
7007
7084
  examples.push(...registeredSuccessExamples);
7008
7085
  } else {
7009
- const generatedSuccessExample = generateEndpointSuccessExample({
7086
+ const generatedSuccessExamples = generateEndpointSuccessExamples({
7010
7087
  endpointDefinition: writeShape,
7011
7088
  apiDefinition
7012
7089
  });
7013
- examples.push(generatedSuccessExample);
7090
+ examples.push(...generatedSuccessExamples);
7014
7091
  }
7015
7092
  const registeredErrorExampleStatusCodes = new Set(registeredErrorExamples.map((e) => e.responseStatusCode));
7016
7093
  const errorsMissingAnExample = (writeShape.errorsV2 ?? []).filter(
@@ -7089,6 +7166,7 @@ function transformExampleEndpointCall({
7089
7166
  return {
7090
7167
  name: writeShape.name,
7091
7168
  contentType: writeShape.contentType ?? void 0,
7169
+ discriminant: writeShape.discriminant ?? void 0,
7092
7170
  description: writeShape.description,
7093
7171
  // htmlDescription,
7094
7172
  // descriptionContainsMarkdown: true,
@@ -10007,6 +10085,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
10007
10085
  responseStatusCode: example?.responseStatusCode,
10008
10086
  name: example?.name,
10009
10087
  contentType: example?.contentType ?? void 0,
10088
+ discriminant: example?.discriminant ?? void 0,
10010
10089
  description: example?.description,
10011
10090
  pathParameters: example?.pathParameters,
10012
10091
  queryParameters: example?.queryParameters,
@@ -14775,6 +14854,30 @@ var NodeCollector = class _NodeCollector {
14775
14854
  getNodesInOrder = () => {
14776
14855
  return this.nodesInOrder;
14777
14856
  };
14857
+ /**
14858
+ * The distinct RBAC roles referenced anywhere in the navigation, collected from every node's
14859
+ * `viewers`. This is the authoritative source of "which roles gate content on this site" — the
14860
+ * top-level `root.roles` is not populated by the nav builders, and docs.yml's declared `roles`
14861
+ * list is not serialized into the docs definition, so the roles that actually exist are the ones
14862
+ * appearing in node `viewers` (e.g. the implicit `everyone` plus any custom roles like `beta`).
14863
+ *
14864
+ * NOTE: this is a faithful collection of every role in `viewers` — it INCLUDES the implicit
14865
+ * `everyone` role when present (kept deliberately, so callers can e.g. detect whether a site uses
14866
+ * RBAC at all). Consumers that want only masquerade-able custom roles MUST filter `everyone`
14867
+ * themselves (the preview widget does this via `EVERYONE_ROLE`).
14868
+ */
14869
+ getRoles = (0, import_function.once)(() => {
14870
+ const roles = /* @__PURE__ */ new Set();
14871
+ for (const node of this.nodesInOrder) {
14872
+ const viewers = node.viewers;
14873
+ if (viewers != null) {
14874
+ for (const role of viewers) {
14875
+ roles.add(role);
14876
+ }
14877
+ }
14878
+ }
14879
+ return Array.from(roles);
14880
+ });
14778
14881
  };
14779
14882
  var MAX_CHANGELOG_ENTRIES_MINIMUM = 15;
14780
14883
  var CHANGELOG_RECENCY_MONTHS = 6;
@@ -17263,6 +17366,7 @@ function convertExampleEndpointCall({
17263
17366
  return {
17264
17367
  name: dbShape.name,
17265
17368
  contentType: dbShape.contentType ?? void 0,
17369
+ discriminant: dbShape.discriminant ?? void 0,
17266
17370
  description: dbShape.description,
17267
17371
  // htmlDescription: dbShape.htmlDescription,
17268
17372
  // descriptionContainsMarkdown: true,