@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.js
CHANGED
|
@@ -1725,6 +1725,9 @@ var RegisterExampleEndpointCallSchema = z3.object({
|
|
|
1725
1725
|
description: z3.string().nullish(),
|
|
1726
1726
|
name: z3.string().nullish(),
|
|
1727
1727
|
contentType: z3.string().nullish(),
|
|
1728
|
+
// When the request body is a discriminated union and one example is generated per variant,
|
|
1729
|
+
// this carries the variant's discriminant value so the UI can swap examples when the variant changes.
|
|
1730
|
+
discriminant: z3.string().nullish(),
|
|
1728
1731
|
path: z3.string(),
|
|
1729
1732
|
pathParameters: z3.record(PropertyKeySchema, z3.unknown()),
|
|
1730
1733
|
queryParameters: z3.record(z3.string(), z3.unknown()),
|
|
@@ -2298,6 +2301,7 @@ var LatestExampleEndpointCallSchema = z4.object({
|
|
|
2298
2301
|
responseStatusCode: z4.number().int(),
|
|
2299
2302
|
name: z4.string().nullish(),
|
|
2300
2303
|
contentType: z4.string().nullish(),
|
|
2304
|
+
discriminant: z4.string().nullish(),
|
|
2301
2305
|
pathParameters: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
|
|
2302
2306
|
queryParameters: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
|
|
2303
2307
|
headers: z4.record(PropertyKeySchema, z4.unknown()).nullish(),
|
|
@@ -4871,6 +4875,7 @@ var ApiDefinitionV1ToLatest = class _ApiDefinitionV1ToLatest {
|
|
|
4871
4875
|
responseStatusCode: example?.responseStatusCode,
|
|
4872
4876
|
name: example?.name,
|
|
4873
4877
|
contentType: example?.contentType ?? void 0,
|
|
4878
|
+
discriminant: example?.discriminant ?? void 0,
|
|
4874
4879
|
description: example?.description,
|
|
4875
4880
|
pathParameters: example?.pathParameters,
|
|
4876
4881
|
queryParameters: example?.queryParameters,
|
|
@@ -6857,6 +6862,7 @@ var ReadExampleEndpointCallSchema = z5.object({
|
|
|
6857
6862
|
description: z5.string().nullish(),
|
|
6858
6863
|
name: z5.string().nullish(),
|
|
6859
6864
|
contentType: z5.string().nullish(),
|
|
6865
|
+
discriminant: z5.string().nullish(),
|
|
6860
6866
|
path: z5.string(),
|
|
6861
6867
|
pathParameters: z5.record(PropertyKeySchema, z5.unknown()),
|
|
6862
6868
|
queryParameters: z5.record(z5.string(), z5.unknown()),
|
|
@@ -13111,6 +13117,52 @@ function generateHttpRequestBodyExample(type, resolveTypeById) {
|
|
|
13111
13117
|
}
|
|
13112
13118
|
}
|
|
13113
13119
|
}
|
|
13120
|
+
function resolveRequestBodyDiscriminatedUnion(type, resolveTypeById) {
|
|
13121
|
+
let shape;
|
|
13122
|
+
switch (type.type) {
|
|
13123
|
+
case "reference":
|
|
13124
|
+
shape = resolveTypeReferenceToShape(type.value, resolveTypeById, /* @__PURE__ */ new Set());
|
|
13125
|
+
break;
|
|
13126
|
+
case "json":
|
|
13127
|
+
shape = type.shape.type === "reference" ? resolveTypeReferenceToShape(type.shape.value, resolveTypeById, /* @__PURE__ */ new Set()) : void 0;
|
|
13128
|
+
break;
|
|
13129
|
+
default:
|
|
13130
|
+
return void 0;
|
|
13131
|
+
}
|
|
13132
|
+
return shape?.type === "discriminatedUnion" ? shape : void 0;
|
|
13133
|
+
}
|
|
13134
|
+
function resolveTypeReferenceToShape(reference, resolveTypeById, visited) {
|
|
13135
|
+
switch (reference.type) {
|
|
13136
|
+
case "id": {
|
|
13137
|
+
if (visited.has(reference.value)) {
|
|
13138
|
+
return void 0;
|
|
13139
|
+
}
|
|
13140
|
+
visited.add(reference.value);
|
|
13141
|
+
const typeDef = resolveTypeById(reference.value);
|
|
13142
|
+
if (typeDef == null) {
|
|
13143
|
+
return void 0;
|
|
13144
|
+
}
|
|
13145
|
+
if (typeDef.shape.type === "alias") {
|
|
13146
|
+
return resolveTypeReferenceToShape(typeDef.shape.value, resolveTypeById, visited);
|
|
13147
|
+
}
|
|
13148
|
+
return typeDef.shape;
|
|
13149
|
+
}
|
|
13150
|
+
case "optional":
|
|
13151
|
+
case "nullable":
|
|
13152
|
+
return resolveTypeReferenceToShape(reference.itemType, resolveTypeById, visited);
|
|
13153
|
+
default:
|
|
13154
|
+
return void 0;
|
|
13155
|
+
}
|
|
13156
|
+
}
|
|
13157
|
+
function generateDiscriminatedUnionVariantRequestExample(discriminant, variant, resolveTypeById) {
|
|
13158
|
+
return {
|
|
13159
|
+
type: "json",
|
|
13160
|
+
value: {
|
|
13161
|
+
[discriminant]: variant.discriminantValue,
|
|
13162
|
+
...generateExampleObject(variant.additionalProperties, resolveTypeById, true, /* @__PURE__ */ new Set(), 0)
|
|
13163
|
+
}
|
|
13164
|
+
};
|
|
13165
|
+
}
|
|
13114
13166
|
function generateFormDataRequestBodyExample(FormDataRequest, resolveTypeById) {
|
|
13115
13167
|
if (FormDataRequest == null) {
|
|
13116
13168
|
return { type: "form", value: {} };
|
|
@@ -13492,6 +13544,32 @@ function generateEndpointSuccessExample({
|
|
|
13492
13544
|
responseBodyV3: endpointDefinition.response != null ? generateHttpResponseBodyExample(endpointDefinition.response.type, resolveTypeById) : void 0
|
|
13493
13545
|
};
|
|
13494
13546
|
}
|
|
13547
|
+
function generateEndpointSuccessExamples({
|
|
13548
|
+
endpointDefinition,
|
|
13549
|
+
apiDefinition
|
|
13550
|
+
}) {
|
|
13551
|
+
const resolveTypeById = getResolveByTypeId(apiDefinition);
|
|
13552
|
+
const discriminatedUnion17 = endpointDefinition.request != null ? resolveRequestBodyDiscriminatedUnion(endpointDefinition.request.type, resolveTypeById) : void 0;
|
|
13553
|
+
if (discriminatedUnion17 == null || discriminatedUnion17.variants.length <= 1) {
|
|
13554
|
+
return [generateEndpointSuccessExample({ endpointDefinition, apiDefinition })];
|
|
13555
|
+
}
|
|
13556
|
+
const base = generateBaseEndpointExample({ endpointDefinition, apiDefinition, resolveTypeById });
|
|
13557
|
+
const responseBodyV3 = endpointDefinition.response != null ? generateHttpResponseBodyExample(endpointDefinition.response.type, resolveTypeById) : void 0;
|
|
13558
|
+
return discriminatedUnion17.variants.map((variant) => ({
|
|
13559
|
+
...base,
|
|
13560
|
+
// Use `||` (not `??`) so an empty-string displayName falls back to the (always-present,
|
|
13561
|
+
// unique) discriminant value — keeping example names non-empty and distinct.
|
|
13562
|
+
name: variant.displayName || variant.discriminantValue,
|
|
13563
|
+
discriminant: variant.discriminantValue,
|
|
13564
|
+
requestBodyV3: generateDiscriminatedUnionVariantRequestExample(
|
|
13565
|
+
discriminatedUnion17.discriminant,
|
|
13566
|
+
variant,
|
|
13567
|
+
resolveTypeById
|
|
13568
|
+
),
|
|
13569
|
+
responseStatusCode: 200,
|
|
13570
|
+
responseBodyV3
|
|
13571
|
+
}));
|
|
13572
|
+
}
|
|
13495
13573
|
function generateBaseEndpointExample({
|
|
13496
13574
|
endpointDefinition,
|
|
13497
13575
|
apiDefinition,
|
|
@@ -13979,11 +14057,11 @@ function getExampleEndpointCalls({
|
|
|
13979
14057
|
if (registeredSuccessExamples.length > 0) {
|
|
13980
14058
|
examples.push(...registeredSuccessExamples);
|
|
13981
14059
|
} else {
|
|
13982
|
-
const
|
|
14060
|
+
const generatedSuccessExamples = generateEndpointSuccessExamples({
|
|
13983
14061
|
endpointDefinition: writeShape,
|
|
13984
14062
|
apiDefinition
|
|
13985
14063
|
});
|
|
13986
|
-
examples.push(
|
|
14064
|
+
examples.push(...generatedSuccessExamples);
|
|
13987
14065
|
}
|
|
13988
14066
|
const registeredErrorExampleStatusCodes = new Set(registeredErrorExamples.map((e) => e.responseStatusCode));
|
|
13989
14067
|
const errorsMissingAnExample = (writeShape.errorsV2 ?? []).filter(
|
|
@@ -14062,6 +14140,7 @@ function transformExampleEndpointCall({
|
|
|
14062
14140
|
return {
|
|
14063
14141
|
name: writeShape.name,
|
|
14064
14142
|
contentType: writeShape.contentType ?? void 0,
|
|
14143
|
+
discriminant: writeShape.discriminant ?? void 0,
|
|
14065
14144
|
description: writeShape.description,
|
|
14066
14145
|
// htmlDescription,
|
|
14067
14146
|
// descriptionContainsMarkdown: true,
|
|
@@ -15174,6 +15253,7 @@ function convertExampleEndpointCall({
|
|
|
15174
15253
|
return {
|
|
15175
15254
|
name: dbShape.name,
|
|
15176
15255
|
contentType: dbShape.contentType ?? void 0,
|
|
15256
|
+
discriminant: dbShape.discriminant ?? void 0,
|
|
15177
15257
|
description: dbShape.description,
|
|
15178
15258
|
// htmlDescription: dbShape.htmlDescription,
|
|
15179
15259
|
// descriptionContainsMarkdown: true,
|
|
@@ -18540,6 +18620,30 @@ var NodeCollector = class _NodeCollector {
|
|
|
18540
18620
|
getNodesInOrder = () => {
|
|
18541
18621
|
return this.nodesInOrder;
|
|
18542
18622
|
};
|
|
18623
|
+
/**
|
|
18624
|
+
* The distinct RBAC roles referenced anywhere in the navigation, collected from every node's
|
|
18625
|
+
* `viewers`. This is the authoritative source of "which roles gate content on this site" — the
|
|
18626
|
+
* top-level `root.roles` is not populated by the nav builders, and docs.yml's declared `roles`
|
|
18627
|
+
* list is not serialized into the docs definition, so the roles that actually exist are the ones
|
|
18628
|
+
* appearing in node `viewers` (e.g. the implicit `everyone` plus any custom roles like `beta`).
|
|
18629
|
+
*
|
|
18630
|
+
* NOTE: this is a faithful collection of every role in `viewers` — it INCLUDES the implicit
|
|
18631
|
+
* `everyone` role when present (kept deliberately, so callers can e.g. detect whether a site uses
|
|
18632
|
+
* RBAC at all). Consumers that want only masquerade-able custom roles MUST filter `everyone`
|
|
18633
|
+
* themselves (the preview widget does this via `EVERYONE_ROLE`).
|
|
18634
|
+
*/
|
|
18635
|
+
getRoles = (0, import_function.once)(() => {
|
|
18636
|
+
const roles = /* @__PURE__ */ new Set();
|
|
18637
|
+
for (const node of this.nodesInOrder) {
|
|
18638
|
+
const viewers = node.viewers;
|
|
18639
|
+
if (viewers != null) {
|
|
18640
|
+
for (const role of viewers) {
|
|
18641
|
+
roles.add(role);
|
|
18642
|
+
}
|
|
18643
|
+
}
|
|
18644
|
+
}
|
|
18645
|
+
return Array.from(roles);
|
|
18646
|
+
});
|
|
18543
18647
|
};
|
|
18544
18648
|
var MAX_CHANGELOG_ENTRIES_MINIMUM = 15;
|
|
18545
18649
|
var CHANGELOG_RECENCY_MONTHS = 6;
|