@fern-api/fern-api-dev 4.76.0 → 4.76.1
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/cli.cjs +114 -48
- package/package.json +1 -1
package/cli.cjs
CHANGED
|
@@ -345167,6 +345167,7 @@ var require_GithubStep = __commonJS({
|
|
|
345167
345167
|
exports2.GithubStep = void 0;
|
|
345168
345168
|
exports2.enrichPrBodyForAutomation = enrichPrBodyForAutomation;
|
|
345169
345169
|
exports2.shouldEnableAutomerge = shouldEnableAutomerge;
|
|
345170
|
+
exports2.shouldPushGenerationBaseTag = shouldPushGenerationBaseTag;
|
|
345170
345171
|
exports2.resolveBranchAction = resolveBranchAction;
|
|
345171
345172
|
var core_utils_1 = (init_lib4(), __toCommonJS(lib_exports));
|
|
345172
345173
|
var github_1 = (init_lib7(), __toCommonJS(lib_exports3));
|
|
@@ -345246,7 +345247,11 @@ var require_GithubStep = __commonJS({
|
|
|
345246
345247
|
});
|
|
345247
345248
|
switch (branchAction) {
|
|
345248
345249
|
case "replay-branch":
|
|
345249
|
-
|
|
345250
|
+
if (shouldPushGenerationBaseTag(replayResult)) {
|
|
345251
|
+
generationBaseSha = await (0, createReplayBranch_1.createReplayBranch)(repository, prBranch, this.config.commitMessage, replayConflictInfo, this.logger);
|
|
345252
|
+
} else {
|
|
345253
|
+
await repository.createBranchFromHead(prBranch);
|
|
345254
|
+
}
|
|
345250
345255
|
break;
|
|
345251
345256
|
case "create-from-head":
|
|
345252
345257
|
await repository.createBranchFromHead(prBranch);
|
|
@@ -345444,6 +345449,9 @@ _Fern Run ID: \`${config5.runId}\`_`;
|
|
|
345444
345449
|
function shouldEnableAutomerge(config5) {
|
|
345445
345450
|
return config5.automationMode === true && config5.autoMerge === true && config5.hasBreakingChanges !== true;
|
|
345446
345451
|
}
|
|
345452
|
+
function shouldPushGenerationBaseTag(replayResult) {
|
|
345453
|
+
return (replayResult?.patchesWithConflicts ?? 0) > 0;
|
|
345454
|
+
}
|
|
345447
345455
|
function resolveBranchAction({ automationMode, skipCommit, existingPR }) {
|
|
345448
345456
|
if (skipCommit) {
|
|
345449
345457
|
return "replay-branch";
|
|
@@ -354642,6 +354650,7 @@ var require_replay_run = __commonJS({
|
|
|
354642
354650
|
"use strict";
|
|
354643
354651
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
354644
354652
|
exports2.replayRun = replayRun;
|
|
354653
|
+
exports2.isTagMergedIntoHead = isTagMergedIntoHead;
|
|
354645
354654
|
var replay_1 = require_dist14();
|
|
354646
354655
|
var child_process_1 = require("child_process");
|
|
354647
354656
|
var fs_1 = require("fs");
|
|
@@ -354686,18 +354695,22 @@ var require_replay_run = __commonJS({
|
|
|
354686
354695
|
}
|
|
354687
354696
|
}
|
|
354688
354697
|
if (shouldSync && tagSha != null) {
|
|
354689
|
-
|
|
354690
|
-
|
|
354691
|
-
|
|
354692
|
-
|
|
354693
|
-
|
|
354694
|
-
|
|
354695
|
-
|
|
354696
|
-
|
|
354697
|
-
|
|
354698
|
-
|
|
354698
|
+
if (!isTagMergedIntoHead(outputDir, tagSha)) {
|
|
354699
|
+
logger4?.warn(`fern-generation-base tag ${tagSha} is not reachable from HEAD \u2014 skipping divergent-merge sync. The tag likely points at an unmerged generation (PR closed without merge).`);
|
|
354700
|
+
} else {
|
|
354701
|
+
const syncService = new replay_1.ReplayService(outputDir, { enabled: true });
|
|
354702
|
+
await syncService.syncFromDivergentMerge(tagSha, {
|
|
354703
|
+
cliVersion,
|
|
354704
|
+
generatorVersions,
|
|
354705
|
+
baseBranchHead: baseBranchHead ?? void 0
|
|
354706
|
+
});
|
|
354707
|
+
try {
|
|
354708
|
+
const freshLockManager = new replay_1.LockfileManager(outputDir);
|
|
354709
|
+
if (freshLockManager.exists()) {
|
|
354710
|
+
previousGenerationSha = freshLockManager.read().current_generation;
|
|
354711
|
+
}
|
|
354712
|
+
} catch {
|
|
354699
354713
|
}
|
|
354700
|
-
} catch {
|
|
354701
354714
|
}
|
|
354702
354715
|
}
|
|
354703
354716
|
}
|
|
@@ -354747,6 +354760,30 @@ var require_replay_run = __commonJS({
|
|
|
354747
354760
|
baseBranchHead: resolvedBaseBranchHead
|
|
354748
354761
|
};
|
|
354749
354762
|
}
|
|
354763
|
+
function isTagMergedIntoHead(cwd2, tagSha) {
|
|
354764
|
+
try {
|
|
354765
|
+
(0, child_process_1.execFileSync)("git", ["merge-base", "--is-ancestor", tagSha, "HEAD"], {
|
|
354766
|
+
cwd: cwd2,
|
|
354767
|
+
stdio: "pipe"
|
|
354768
|
+
});
|
|
354769
|
+
return true;
|
|
354770
|
+
} catch {
|
|
354771
|
+
}
|
|
354772
|
+
const tagTree = gitRevParse(cwd2, `${tagSha}^{tree}`);
|
|
354773
|
+
if (tagTree == null) {
|
|
354774
|
+
return false;
|
|
354775
|
+
}
|
|
354776
|
+
try {
|
|
354777
|
+
const trees = (0, child_process_1.execFileSync)("git", ["log", "HEAD", "--format=%T", "--max-count=500"], {
|
|
354778
|
+
cwd: cwd2,
|
|
354779
|
+
encoding: "utf-8",
|
|
354780
|
+
stdio: "pipe"
|
|
354781
|
+
});
|
|
354782
|
+
return trees.split("\n").some((t3) => t3.trim() === tagTree);
|
|
354783
|
+
} catch {
|
|
354784
|
+
return false;
|
|
354785
|
+
}
|
|
354786
|
+
}
|
|
354750
354787
|
function gitRevParse(cwd2, rev) {
|
|
354751
354788
|
try {
|
|
354752
354789
|
return (0, child_process_1.execFileSync)("git", ["rev-parse", "--verify", rev], {
|
|
@@ -522266,9 +522303,7 @@ function convertQueryParameterExample2(namedFullExamples) {
|
|
|
522266
522303
|
const result = {};
|
|
522267
522304
|
namedFullExamples.forEach((namedFullExample) => {
|
|
522268
522305
|
const convertedExample = convertFullExample2(namedFullExample.value);
|
|
522269
|
-
if (
|
|
522270
|
-
result[namedFullExample.name] = convertedExample[0];
|
|
522271
|
-
} else if (convertedExample != null) {
|
|
522306
|
+
if (convertedExample != null) {
|
|
522272
522307
|
result[namedFullExample.name] = convertedExample;
|
|
522273
522308
|
}
|
|
522274
522309
|
});
|
|
@@ -533560,8 +533595,8 @@ var ExampleEndpointFactory = class {
|
|
|
533560
533595
|
ignoreOptionals: true
|
|
533561
533596
|
}
|
|
533562
533597
|
});
|
|
533563
|
-
if (example != null && !isExamplePrimitive(example)) {
|
|
533564
|
-
this.logger.debug(`Expected a primitive example but got ${example.type} for query parameter ${queryParameter.name} for ${endpoint3.method.toUpperCase()} ${endpoint3.path}`);
|
|
533598
|
+
if (example != null && !isExamplePrimitive(example) && example.type !== "array") {
|
|
533599
|
+
this.logger.debug(`Expected a primitive or array example but got ${example.type} for query parameter ${queryParameter.name} for ${endpoint3.method.toUpperCase()} ${endpoint3.path}`);
|
|
533565
533600
|
example = void 0;
|
|
533566
533601
|
}
|
|
533567
533602
|
if (required6 && example == null) {
|
|
@@ -540070,10 +540105,7 @@ function convertParameters({ path: path98, httpMethod, parameters: parameters2,
|
|
|
540070
540105
|
const generatedName = getGeneratedTypeName(parameterBreadcrumbs, context3.options.preserveSchemaIds);
|
|
540071
540106
|
const isHeader = resolvedParameter.in === "header";
|
|
540072
540107
|
const [isOptional, isNullable] = context3.options.coerceOptionalSchemasToNullable && !isHeader ? [false, !isRequired2] : [!isRequired2, false];
|
|
540073
|
-
let schema2 = resolvedParameter.schema != null ? convertSchema2(resolvedParameter.schema, isOptional, isNullable, context3, parameterBreadcrumbs, source2, context3.namespace, false, /* @__PURE__ */ new Set(),
|
|
540074
|
-
schema: resolvedParameter,
|
|
540075
|
-
logger: context3.logger
|
|
540076
|
-
})) : isRequired2 ? SchemaWithExample.primitive({
|
|
540108
|
+
let schema2 = resolvedParameter.schema != null ? convertSchema2(resolvedParameter.schema, isOptional, isNullable, context3, parameterBreadcrumbs, source2, context3.namespace, false, /* @__PURE__ */ new Set(), getParameterExample(resolvedParameter, context3)) : isRequired2 ? SchemaWithExample.primitive({
|
|
540077
540109
|
nameOverride: void 0,
|
|
540078
540110
|
generatedName,
|
|
540079
540111
|
title: void 0,
|
|
@@ -540192,6 +540224,13 @@ function getExplodeForQueryParameter(parameter6) {
|
|
|
540192
540224
|
}
|
|
540193
540225
|
return explode === false ? void 0 : explode;
|
|
540194
540226
|
}
|
|
540227
|
+
function getParameterExample(parameter6, context3) {
|
|
540228
|
+
const arrayExample = getExampleAsArray({ schema: parameter6, logger: context3.logger });
|
|
540229
|
+
if (arrayExample != null) {
|
|
540230
|
+
return arrayExample;
|
|
540231
|
+
}
|
|
540232
|
+
return getExamplesString({ schema: parameter6, logger: context3.logger });
|
|
540233
|
+
}
|
|
540195
540234
|
function getExplodeForPathParameter(parameter6) {
|
|
540196
540235
|
const explode = parameter6.explode;
|
|
540197
540236
|
if (explode === void 0) {
|
|
@@ -562065,6 +562104,37 @@ function convertExampleEndpointCall2({ service, endpoint: endpoint3, example, ty
|
|
|
562065
562104
|
if (queryParameterDeclaration == null) {
|
|
562066
562105
|
throw new Error(`Query parameter ${wireKey} does not exist`);
|
|
562067
562106
|
}
|
|
562107
|
+
const isAllowMultiple = typeof queryParameterDeclaration !== "string" && queryParameterDeclaration["allow-multiple"] === true;
|
|
562108
|
+
const rawType = typeof queryParameterDeclaration === "string" ? queryParameterDeclaration : queryParameterDeclaration.type;
|
|
562109
|
+
let convertedValue;
|
|
562110
|
+
if (isAllowMultiple && Array.isArray(value)) {
|
|
562111
|
+
const items = value.map((item) => convertTypeReferenceExample({
|
|
562112
|
+
example: item,
|
|
562113
|
+
rawTypeBeingExemplified: rawType,
|
|
562114
|
+
typeResolver,
|
|
562115
|
+
exampleResolver,
|
|
562116
|
+
fileContainingRawTypeReference: file4,
|
|
562117
|
+
fileContainingExample: file4,
|
|
562118
|
+
workspace
|
|
562119
|
+
}));
|
|
562120
|
+
convertedValue = {
|
|
562121
|
+
jsonExample: value,
|
|
562122
|
+
shape: ExampleTypeReferenceShape.container(ExampleContainer.list({
|
|
562123
|
+
list: items,
|
|
562124
|
+
itemType: file4.parseTypeReference(rawType)
|
|
562125
|
+
}))
|
|
562126
|
+
};
|
|
562127
|
+
} else {
|
|
562128
|
+
convertedValue = convertTypeReferenceExample({
|
|
562129
|
+
example: value,
|
|
562130
|
+
rawTypeBeingExemplified: rawType,
|
|
562131
|
+
typeResolver,
|
|
562132
|
+
exampleResolver,
|
|
562133
|
+
fileContainingRawTypeReference: file4,
|
|
562134
|
+
fileContainingExample: file4,
|
|
562135
|
+
workspace
|
|
562136
|
+
});
|
|
562137
|
+
}
|
|
562068
562138
|
return {
|
|
562069
562139
|
name: file4.casingsGenerator.generateNameAndWireValue({
|
|
562070
562140
|
name: getQueryParameterName({
|
|
@@ -562073,15 +562143,7 @@ function convertExampleEndpointCall2({ service, endpoint: endpoint3, example, ty
|
|
|
562073
562143
|
}).name,
|
|
562074
562144
|
wireValue: wireKey
|
|
562075
562145
|
}),
|
|
562076
|
-
value:
|
|
562077
|
-
example: value,
|
|
562078
|
-
rawTypeBeingExemplified: typeof queryParameterDeclaration === "string" ? queryParameterDeclaration : queryParameterDeclaration.type,
|
|
562079
|
-
typeResolver,
|
|
562080
|
-
exampleResolver,
|
|
562081
|
-
fileContainingRawTypeReference: file4,
|
|
562082
|
-
fileContainingExample: file4,
|
|
562083
|
-
workspace
|
|
562084
|
-
}),
|
|
562146
|
+
value: convertedValue,
|
|
562085
562147
|
shape: getQueryParamaterDeclationShape({ queryParameter: queryParameterDeclaration })
|
|
562086
562148
|
};
|
|
562087
562149
|
}) : [],
|
|
@@ -569530,7 +569592,7 @@ var ValidEndpointPathRule = {
|
|
|
569530
569592
|
};
|
|
569531
569593
|
|
|
569532
569594
|
// ../fern-definition/validator/lib/rules/valid-example-endpoint-call/validateExampleEndpointCallParameters.js
|
|
569533
|
-
function validateExampleEndpointCallParameters({ allDeclarations = {}, examples, parameterDisplayName, typeResolver, exampleResolver, workspace, getRawType, breadcrumbs }) {
|
|
569595
|
+
function validateExampleEndpointCallParameters({ allDeclarations = {}, examples, parameterDisplayName, typeResolver, exampleResolver, workspace, getRawType, isAllowMultiple, breadcrumbs }) {
|
|
569534
569596
|
const violations = [];
|
|
569535
569597
|
const requiredParameters = Object.entries(allDeclarations).reduce((acc, [key2, parameter6]) => {
|
|
569536
569598
|
const rawType = getRawType(parameter6);
|
|
@@ -569565,18 +569627,21 @@ function validateExampleEndpointCallParameters({ allDeclarations = {}, examples,
|
|
|
569565
569627
|
} else {
|
|
569566
569628
|
const rawType = getRawType(expectedType);
|
|
569567
569629
|
if (rawType != null) {
|
|
569568
|
-
|
|
569569
|
-
|
|
569570
|
-
|
|
569571
|
-
|
|
569572
|
-
|
|
569573
|
-
|
|
569574
|
-
|
|
569575
|
-
|
|
569576
|
-
|
|
569577
|
-
|
|
569578
|
-
|
|
569579
|
-
|
|
569630
|
+
const examplesToValidate = isAllowMultiple?.(expectedType) && Array.isArray(exampleParameter) ? exampleParameter : [exampleParameter];
|
|
569631
|
+
for (const singleExample of examplesToValidate) {
|
|
569632
|
+
violations.push(...examples_exports6.validateTypeReferenceExample({
|
|
569633
|
+
rawTypeReference: rawType.rawType,
|
|
569634
|
+
example: singleExample,
|
|
569635
|
+
file: rawType.file,
|
|
569636
|
+
workspace,
|
|
569637
|
+
typeResolver,
|
|
569638
|
+
exampleResolver,
|
|
569639
|
+
breadcrumbs,
|
|
569640
|
+
depth: 0
|
|
569641
|
+
}).map((val) => {
|
|
569642
|
+
return { severity: val.severity ?? "fatal", message: val.message };
|
|
569643
|
+
}));
|
|
569644
|
+
}
|
|
569580
569645
|
}
|
|
569581
569646
|
}
|
|
569582
569647
|
}
|
|
@@ -569865,6 +569930,7 @@ var ValidExampleEndpointCallRule = {
|
|
|
569865
569930
|
}),
|
|
569866
569931
|
rawType: typeof queryParameter === "string" ? queryParameter : queryParameter.type
|
|
569867
569932
|
}),
|
|
569933
|
+
isAllowMultiple: (queryParameter) => typeof queryParameter !== "string" && queryParameter["allow-multiple"] === true,
|
|
569868
569934
|
breadcrumbs: ["query-parameters"]
|
|
569869
569935
|
});
|
|
569870
569936
|
},
|
|
@@ -621915,7 +621981,7 @@ var AccessTokenPosthogManager = class {
|
|
|
621915
621981
|
properties: {
|
|
621916
621982
|
...event,
|
|
621917
621983
|
...event.properties,
|
|
621918
|
-
version: "4.76.
|
|
621984
|
+
version: "4.76.1",
|
|
621919
621985
|
usingAccessToken: true
|
|
621920
621986
|
}
|
|
621921
621987
|
});
|
|
@@ -621969,7 +622035,7 @@ var UserPosthogManager = class {
|
|
|
621969
622035
|
distinctId: this.userId ?? await this.getPersistedDistinctId(),
|
|
621970
622036
|
event: "CLI",
|
|
621971
622037
|
properties: {
|
|
621972
|
-
version: "4.76.
|
|
622038
|
+
version: "4.76.1",
|
|
621973
622039
|
...event,
|
|
621974
622040
|
...event.properties,
|
|
621975
622041
|
usingAccessToken: false,
|
|
@@ -839179,7 +839245,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
|
|
|
839179
839245
|
var LOGS_FOLDER_NAME = "logs";
|
|
839180
839246
|
var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
|
|
839181
839247
|
function getCliSource() {
|
|
839182
|
-
const version7 = "4.76.
|
|
839248
|
+
const version7 = "4.76.1";
|
|
839183
839249
|
return `cli@${version7}`;
|
|
839184
839250
|
}
|
|
839185
839251
|
var DebugLogger = class {
|
|
@@ -850494,7 +850560,7 @@ var LegacyDocsPublisher = class {
|
|
|
850494
850560
|
previewId,
|
|
850495
850561
|
disableTemplates: void 0,
|
|
850496
850562
|
skipUpload,
|
|
850497
|
-
cliVersion: "4.76.
|
|
850563
|
+
cliVersion: "4.76.1"
|
|
850498
850564
|
});
|
|
850499
850565
|
if (taskContext.getResult() === TaskResult.Failure) {
|
|
850500
850566
|
return { success: false };
|
|
@@ -924952,7 +925018,7 @@ var CliContext = class _CliContext {
|
|
|
924952
925018
|
if (false) {
|
|
924953
925019
|
this.logger.error("CLI_VERSION is not defined");
|
|
924954
925020
|
}
|
|
924955
|
-
return "4.76.
|
|
925021
|
+
return "4.76.1";
|
|
924956
925022
|
}
|
|
924957
925023
|
getCliName() {
|
|
924958
925024
|
if (false) {
|
package/package.json
CHANGED