@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.
- package/dist/js/api-definition/index.js +5 -0
- package/dist/js/api-definition/index.js.map +1 -1
- package/dist/js/api-definition/index.mjs +5 -0
- package/dist/js/api-definition/index.mjs.map +1 -1
- package/dist/js/client/FdrClient.js +5 -0
- package/dist/js/client/FdrClient.js.map +1 -1
- package/dist/js/client/FdrClient.mjs +5 -0
- package/dist/js/client/FdrClient.mjs.map +1 -1
- package/dist/js/client/types.js +5 -0
- package/dist/js/client/types.js.map +1 -1
- package/dist/js/client/types.mjs +5 -0
- package/dist/js/client/types.mjs.map +1 -1
- package/dist/js/converters/index.js +106 -2
- package/dist/js/converters/index.js.map +1 -1
- package/dist/js/converters/index.mjs +106 -2
- package/dist/js/converters/index.mjs.map +1 -1
- package/dist/js/index.js +106 -2
- package/dist/js/index.js.map +1 -1
- package/dist/js/index.mjs +106 -2
- package/dist/js/index.mjs.map +1 -1
- package/dist/js/navigation/index.js +30 -0
- package/dist/js/navigation/index.js.map +1 -1
- package/dist/js/navigation/index.mjs +30 -0
- package/dist/js/navigation/index.mjs.map +1 -1
- package/dist/js/orpc-client.js +5 -0
- package/dist/js/orpc-client.js.map +1 -1
- package/dist/js/orpc-client.mjs +5 -0
- package/dist/js/orpc-client.mjs.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/api-definition/migrators/v1ToV2.d.ts +5 -0
- package/dist/types/api-definition/migrators/v1ToV2.d.ts.map +1 -1
- package/dist/types/converters/db/convertAPIDefinitionToDb.d.ts.map +1 -1
- package/dist/types/converters/db/examples/generateEndpointExampleCall.d.ts +10 -0
- package/dist/types/converters/db/examples/generateEndpointExampleCall.d.ts.map +1 -1
- package/dist/types/converters/db/examples/generateHttpBodyExample.d.ts +10 -0
- package/dist/types/converters/db/examples/generateHttpBodyExample.d.ts.map +1 -1
- package/dist/types/converters/read/convertDbAPIDefinitionToRead.d.ts +14 -0
- package/dist/types/converters/read/convertDbAPIDefinitionToRead.d.ts.map +1 -1
- package/dist/types/navigation/NodeCollector.d.ts +13 -0
- package/dist/types/navigation/NodeCollector.d.ts.map +1 -1
- package/dist/types/navigation/__test__/NodeCollector.getRoles.test.d.ts +2 -0
- package/dist/types/navigation/__test__/NodeCollector.getRoles.test.d.ts.map +1 -0
- package/dist/types/navigation/utils/toApis.d.ts +1 -0
- package/dist/types/navigation/utils/toApis.d.ts.map +1 -1
- package/dist/types/orpc-client/api/contract-db.d.ts +500 -0
- package/dist/types/orpc-client/api/contract-db.d.ts.map +1 -1
- package/dist/types/orpc-client/api/contract-latest.d.ts +22 -0
- package/dist/types/orpc-client/api/contract-latest.d.ts.map +1 -1
- package/dist/types/orpc-client/api/contract-read.d.ts +540 -0
- package/dist/types/orpc-client/api/contract-read.d.ts.map +1 -1
- package/dist/types/orpc-client/api/contract-register.d.ts +540 -0
- package/dist/types/orpc-client/api/contract-register.d.ts.map +1 -1
- 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
|
|
13997
|
+
const generatedSuccessExamples = generateEndpointSuccessExamples({
|
|
13920
13998
|
endpointDefinition: writeShape,
|
|
13921
13999
|
apiDefinition
|
|
13922
14000
|
});
|
|
13923
|
-
examples.push(
|
|
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;
|