@fern-api/generator-cli 0.0.30 → 0.0.32
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/cli.cjs +361 -243
- package/package.json +2 -1
package/dist/cli.cjs
CHANGED
|
@@ -34,7 +34,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
34
34
|
var require_build = __commonJS({
|
|
35
35
|
"../../node_modules/.pnpm/y18n@5.0.8/node_modules/y18n/build/index.cjs"(exports2, module2) {
|
|
36
36
|
"use strict";
|
|
37
|
-
var
|
|
37
|
+
var fs3 = require("fs");
|
|
38
38
|
var util = require("util");
|
|
39
39
|
var path4 = require("path");
|
|
40
40
|
var shim2;
|
|
@@ -198,14 +198,14 @@ var require_build = __commonJS({
|
|
|
198
198
|
}
|
|
199
199
|
var nodePlatformShim = {
|
|
200
200
|
fs: {
|
|
201
|
-
readFileSync:
|
|
202
|
-
writeFile:
|
|
201
|
+
readFileSync: fs3.readFileSync,
|
|
202
|
+
writeFile: fs3.writeFile
|
|
203
203
|
},
|
|
204
204
|
format: util.format,
|
|
205
205
|
resolve: path4.resolve,
|
|
206
206
|
exists: (file) => {
|
|
207
207
|
try {
|
|
208
|
-
return
|
|
208
|
+
return fs3.statSync(file).isFile();
|
|
209
209
|
} catch (err) {
|
|
210
210
|
return false;
|
|
211
211
|
}
|
|
@@ -224,7 +224,7 @@ var require_build2 = __commonJS({
|
|
|
224
224
|
"use strict";
|
|
225
225
|
var util = require("util");
|
|
226
226
|
var path4 = require("path");
|
|
227
|
-
var
|
|
227
|
+
var fs3 = require("fs");
|
|
228
228
|
function camelCase3(str) {
|
|
229
229
|
const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase();
|
|
230
230
|
if (!isCamelCase) {
|
|
@@ -1173,7 +1173,7 @@ var require_build2 = __commonJS({
|
|
|
1173
1173
|
if (typeof require !== "undefined") {
|
|
1174
1174
|
return require(path5);
|
|
1175
1175
|
} else if (path5.match(/\.json$/)) {
|
|
1176
|
-
return JSON.parse(
|
|
1176
|
+
return JSON.parse(fs3.readFileSync(path5, "utf8"));
|
|
1177
1177
|
} else {
|
|
1178
1178
|
throw Error("only .json config files are supported in ESM");
|
|
1179
1179
|
}
|
|
@@ -2881,7 +2881,7 @@ var require_get_caller_file = __commonJS({
|
|
|
2881
2881
|
var require_require_directory = __commonJS({
|
|
2882
2882
|
"../../node_modules/.pnpm/require-directory@2.1.1/node_modules/require-directory/index.js"(exports2, module2) {
|
|
2883
2883
|
"use strict";
|
|
2884
|
-
var
|
|
2884
|
+
var fs3 = require("fs");
|
|
2885
2885
|
var join = require("path").join;
|
|
2886
2886
|
var resolve7 = require("path").resolve;
|
|
2887
2887
|
var dirname3 = require("path").dirname;
|
|
@@ -2918,9 +2918,9 @@ var require_require_directory = __commonJS({
|
|
|
2918
2918
|
}
|
|
2919
2919
|
}
|
|
2920
2920
|
path4 = !path4 ? dirname3(m.filename) : resolve7(dirname3(m.filename), path4);
|
|
2921
|
-
|
|
2921
|
+
fs3.readdirSync(path4).forEach(function(filename) {
|
|
2922
2922
|
var joined = join(path4, filename), files, key, obj;
|
|
2923
|
-
if (
|
|
2923
|
+
if (fs3.statSync(joined).isDirectory() && options.recurse) {
|
|
2924
2924
|
files = requireDirectory(m, joined, options);
|
|
2925
2925
|
if (Object.keys(files).length) {
|
|
2926
2926
|
retval[options.rename(filename, joined, filename)] = files;
|
|
@@ -4562,11 +4562,11 @@ ${t5.join("\n")}` : "";
|
|
|
4562
4562
|
var require_tmp = __commonJS({
|
|
4563
4563
|
"../../node_modules/.pnpm/tmp@0.2.3/node_modules/tmp/lib/tmp.js"(exports2, module2) {
|
|
4564
4564
|
"use strict";
|
|
4565
|
-
var
|
|
4565
|
+
var fs3 = require("fs");
|
|
4566
4566
|
var os = require("os");
|
|
4567
4567
|
var path4 = require("path");
|
|
4568
4568
|
var crypto = require("crypto");
|
|
4569
|
-
var _c2 = { fs:
|
|
4569
|
+
var _c2 = { fs: fs3.constants, os: os.constants };
|
|
4570
4570
|
var RANDOM_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
4571
4571
|
var TEMPLATE_PATTERN = /XXXXXX/;
|
|
4572
4572
|
var DEFAULT_TRIES = 3;
|
|
@@ -4578,13 +4578,13 @@ var require_tmp = __commonJS({
|
|
|
4578
4578
|
var FILE_MODE = 384;
|
|
4579
4579
|
var EXIT = "exit";
|
|
4580
4580
|
var _removeObjects = [];
|
|
4581
|
-
var FN_RMDIR_SYNC =
|
|
4581
|
+
var FN_RMDIR_SYNC = fs3.rmdirSync.bind(fs3);
|
|
4582
4582
|
var _gracefulCleanup = false;
|
|
4583
4583
|
function rimraf(dirPath, callback) {
|
|
4584
|
-
return
|
|
4584
|
+
return fs3.rm(dirPath, { recursive: true }, callback);
|
|
4585
4585
|
}
|
|
4586
4586
|
function FN_RIMRAF_SYNC(dirPath) {
|
|
4587
|
-
return
|
|
4587
|
+
return fs3.rmSync(dirPath, { recursive: true });
|
|
4588
4588
|
}
|
|
4589
4589
|
function tmpName(options, callback) {
|
|
4590
4590
|
const args = _parseArguments(options, callback), opts = args[0], cb = args[1];
|
|
@@ -4597,7 +4597,7 @@ var require_tmp = __commonJS({
|
|
|
4597
4597
|
(function _getUniqueName() {
|
|
4598
4598
|
try {
|
|
4599
4599
|
const name = _generateTmpName(opts);
|
|
4600
|
-
|
|
4600
|
+
fs3.stat(name, function(err) {
|
|
4601
4601
|
if (!err) {
|
|
4602
4602
|
if (tries-- > 0) return _getUniqueName();
|
|
4603
4603
|
return cb(new Error("Could not get a unique tmp filename, max tries reached " + name));
|
|
@@ -4616,7 +4616,7 @@ var require_tmp = __commonJS({
|
|
|
4616
4616
|
do {
|
|
4617
4617
|
const name = _generateTmpName(opts);
|
|
4618
4618
|
try {
|
|
4619
|
-
|
|
4619
|
+
fs3.statSync(name);
|
|
4620
4620
|
} catch (e) {
|
|
4621
4621
|
return name;
|
|
4622
4622
|
}
|
|
@@ -4627,10 +4627,10 @@ var require_tmp = __commonJS({
|
|
|
4627
4627
|
const args = _parseArguments(options, callback), opts = args[0], cb = args[1];
|
|
4628
4628
|
tmpName(opts, function _tmpNameCreated(err, name) {
|
|
4629
4629
|
if (err) return cb(err);
|
|
4630
|
-
|
|
4630
|
+
fs3.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err2, fd) {
|
|
4631
4631
|
if (err2) return cb(err2);
|
|
4632
4632
|
if (opts.discardDescriptor) {
|
|
4633
|
-
return
|
|
4633
|
+
return fs3.close(fd, function _discardCallback(possibleErr) {
|
|
4634
4634
|
return cb(possibleErr, name, void 0, _prepareTmpFileRemoveCallback(name, -1, opts, false));
|
|
4635
4635
|
});
|
|
4636
4636
|
} else {
|
|
@@ -4644,9 +4644,9 @@ var require_tmp = __commonJS({
|
|
|
4644
4644
|
const args = _parseArguments(options), opts = args[0];
|
|
4645
4645
|
const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;
|
|
4646
4646
|
const name = tmpNameSync(opts);
|
|
4647
|
-
var fd =
|
|
4647
|
+
var fd = fs3.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);
|
|
4648
4648
|
if (opts.discardDescriptor) {
|
|
4649
|
-
|
|
4649
|
+
fs3.closeSync(fd);
|
|
4650
4650
|
fd = void 0;
|
|
4651
4651
|
}
|
|
4652
4652
|
return {
|
|
@@ -4659,7 +4659,7 @@ var require_tmp = __commonJS({
|
|
|
4659
4659
|
const args = _parseArguments(options, callback), opts = args[0], cb = args[1];
|
|
4660
4660
|
tmpName(opts, function _tmpNameCreated(err, name) {
|
|
4661
4661
|
if (err) return cb(err);
|
|
4662
|
-
|
|
4662
|
+
fs3.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err2) {
|
|
4663
4663
|
if (err2) return cb(err2);
|
|
4664
4664
|
cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));
|
|
4665
4665
|
});
|
|
@@ -4668,7 +4668,7 @@ var require_tmp = __commonJS({
|
|
|
4668
4668
|
function dirSync(options) {
|
|
4669
4669
|
const args = _parseArguments(options), opts = args[0];
|
|
4670
4670
|
const name = tmpNameSync(opts);
|
|
4671
|
-
|
|
4671
|
+
fs3.mkdirSync(name, opts.mode || DIR_MODE);
|
|
4672
4672
|
return {
|
|
4673
4673
|
name,
|
|
4674
4674
|
removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)
|
|
@@ -4682,20 +4682,20 @@ var require_tmp = __commonJS({
|
|
|
4682
4682
|
next();
|
|
4683
4683
|
};
|
|
4684
4684
|
if (0 <= fdPath[0])
|
|
4685
|
-
|
|
4686
|
-
|
|
4685
|
+
fs3.close(fdPath[0], function() {
|
|
4686
|
+
fs3.unlink(fdPath[1], _handler);
|
|
4687
4687
|
});
|
|
4688
|
-
else
|
|
4688
|
+
else fs3.unlink(fdPath[1], _handler);
|
|
4689
4689
|
}
|
|
4690
4690
|
function _removeFileSync(fdPath) {
|
|
4691
4691
|
let rethrownException = null;
|
|
4692
4692
|
try {
|
|
4693
|
-
if (0 <= fdPath[0])
|
|
4693
|
+
if (0 <= fdPath[0]) fs3.closeSync(fdPath[0]);
|
|
4694
4694
|
} catch (e) {
|
|
4695
4695
|
if (!_isEBADF(e) && !_isENOENT(e)) throw e;
|
|
4696
4696
|
} finally {
|
|
4697
4697
|
try {
|
|
4698
|
-
|
|
4698
|
+
fs3.unlinkSync(fdPath[1]);
|
|
4699
4699
|
} catch (e) {
|
|
4700
4700
|
if (!_isENOENT(e)) rethrownException = e;
|
|
4701
4701
|
}
|
|
@@ -4711,7 +4711,7 @@ var require_tmp = __commonJS({
|
|
|
4711
4711
|
return sync ? removeCallbackSync : removeCallback;
|
|
4712
4712
|
}
|
|
4713
4713
|
function _prepareTmpDirRemoveCallback(name, opts, sync) {
|
|
4714
|
-
const removeFunction = opts.unsafeCleanup ? rimraf :
|
|
4714
|
+
const removeFunction = opts.unsafeCleanup ? rimraf : fs3.rmdir.bind(fs3);
|
|
4715
4715
|
const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;
|
|
4716
4716
|
const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);
|
|
4717
4717
|
const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);
|
|
@@ -6417,7 +6417,7 @@ var require_dist2 = __commonJS({
|
|
|
6417
6417
|
});
|
|
6418
6418
|
|
|
6419
6419
|
// src/cli.ts
|
|
6420
|
-
var
|
|
6420
|
+
var import_fs6 = __toESM(require("fs"), 1);
|
|
6421
6421
|
var import_promises6 = require("fs/promises");
|
|
6422
6422
|
var import_path7 = __toESM(require("path"), 1);
|
|
6423
6423
|
|
|
@@ -8056,6 +8056,9 @@ async function loadReferenceConfig({
|
|
|
8056
8056
|
return JSON.parse(rawContents);
|
|
8057
8057
|
}
|
|
8058
8058
|
|
|
8059
|
+
// src/github/GitHub.ts
|
|
8060
|
+
var import_rest = require("@octokit/rest");
|
|
8061
|
+
|
|
8059
8062
|
// ../../node_modules/.pnpm/simple-git@3.24.0/node_modules/simple-git/dist/esm/index.js
|
|
8060
8063
|
var import_file_exists = __toESM(require_dist(), 1);
|
|
8061
8064
|
var import_debug = __toESM(require_src3(), 1);
|
|
@@ -12755,7 +12758,55 @@ var GitHub = class {
|
|
|
12755
12758
|
}
|
|
12756
12759
|
}
|
|
12757
12760
|
async pr() {
|
|
12758
|
-
|
|
12761
|
+
try {
|
|
12762
|
+
const wd = cwd();
|
|
12763
|
+
const sourceDirectory = resolve5(wd, this.githubConfig.sourceDirectory);
|
|
12764
|
+
const repository = await cloneRepository({
|
|
12765
|
+
githubRepository: this.githubConfig.uri,
|
|
12766
|
+
installationToken: this.githubConfig.token
|
|
12767
|
+
});
|
|
12768
|
+
const baseBranch = this.githubConfig.branch ?? await repository.getDefaultBranch();
|
|
12769
|
+
const now = /* @__PURE__ */ new Date();
|
|
12770
|
+
const formattedDate = now.toISOString().replace("T", "_").replace(/:/g, "-").replace(/\..+/, "");
|
|
12771
|
+
const prBranch = `fern-bot/${formattedDate}`;
|
|
12772
|
+
await repository.checkout(baseBranch);
|
|
12773
|
+
await repository.pull(baseBranch);
|
|
12774
|
+
await repository.checkout(prBranch);
|
|
12775
|
+
const fernIgnore = await repository.getFernignore();
|
|
12776
|
+
await repository.overwriteLocalContents(sourceDirectory);
|
|
12777
|
+
await repository.add(".");
|
|
12778
|
+
await this.restoreFernignoreFiles(repository, fernIgnore);
|
|
12779
|
+
await repository.commit("SDK Generation");
|
|
12780
|
+
await repository.push();
|
|
12781
|
+
const octokit = new import_rest.Octokit({
|
|
12782
|
+
auth: this.githubConfig.token
|
|
12783
|
+
});
|
|
12784
|
+
const [owner, repo] = this.githubConfig.uri.split("/");
|
|
12785
|
+
if (!owner || !repo) {
|
|
12786
|
+
throw new Error(`Invalid repository URI: ${this.githubConfig.uri}`);
|
|
12787
|
+
}
|
|
12788
|
+
const head = `${owner}:${prBranch}`;
|
|
12789
|
+
try {
|
|
12790
|
+
await octokit.pulls.create({
|
|
12791
|
+
owner,
|
|
12792
|
+
repo,
|
|
12793
|
+
title: "SDK Generation",
|
|
12794
|
+
body: "Automated SDK generation by Fern",
|
|
12795
|
+
head,
|
|
12796
|
+
base: baseBranch,
|
|
12797
|
+
draft: false
|
|
12798
|
+
});
|
|
12799
|
+
} catch (e) {
|
|
12800
|
+
if (typeof e?.message === "string" && e.message.includes("A pull request already exists for")) {
|
|
12801
|
+
console.error(`A pull request already exists for ${head}`);
|
|
12802
|
+
} else {
|
|
12803
|
+
throw e;
|
|
12804
|
+
}
|
|
12805
|
+
}
|
|
12806
|
+
} catch (error) {
|
|
12807
|
+
console.error("Error during GitHub PR flow:", error);
|
|
12808
|
+
throw error;
|
|
12809
|
+
}
|
|
12759
12810
|
}
|
|
12760
12811
|
async release() {
|
|
12761
12812
|
console.log("TODO: Implement release");
|
|
@@ -12996,17 +13047,18 @@ var Language = {
|
|
|
12996
13047
|
};
|
|
12997
13048
|
|
|
12998
13049
|
// src/utils/Writer.ts
|
|
13050
|
+
var import_fs5 = __toESM(require("fs"), 1);
|
|
12999
13051
|
var Writer = class {
|
|
13000
|
-
writeCodeBlock(language, content) {
|
|
13001
|
-
this.writeLine(
|
|
13002
|
-
this.write(content);
|
|
13003
|
-
this.writeLine("```");
|
|
13052
|
+
async writeCodeBlock(language, content) {
|
|
13053
|
+
await this.writeLine(`\`\`\`${language}`);
|
|
13054
|
+
await this.write(content);
|
|
13055
|
+
await this.writeLine("```");
|
|
13004
13056
|
}
|
|
13005
|
-
writeLine(content) {
|
|
13057
|
+
async writeLine(content) {
|
|
13006
13058
|
if (content === void 0) {
|
|
13007
|
-
this.write("\n");
|
|
13059
|
+
await this.write("\n");
|
|
13008
13060
|
} else {
|
|
13009
|
-
this.write(`${content}
|
|
13061
|
+
await this.write(`${content}
|
|
13010
13062
|
`);
|
|
13011
13063
|
}
|
|
13012
13064
|
}
|
|
@@ -13017,11 +13069,57 @@ var StreamWriter = class extends Writer {
|
|
|
13017
13069
|
this.stream = stream;
|
|
13018
13070
|
this.stream = stream;
|
|
13019
13071
|
}
|
|
13020
|
-
write(content) {
|
|
13021
|
-
|
|
13072
|
+
async write(content) {
|
|
13073
|
+
return new Promise((resolve7, reject) => {
|
|
13074
|
+
const handleError = (err) => {
|
|
13075
|
+
this.stream.removeListener("error", handleError);
|
|
13076
|
+
reject(err);
|
|
13077
|
+
};
|
|
13078
|
+
if (this.stream instanceof import_fs5.default.WriteStream) {
|
|
13079
|
+
const canWrite = this.stream.write(
|
|
13080
|
+
content,
|
|
13081
|
+
(error) => {
|
|
13082
|
+
this.stream.removeListener("error", handleError);
|
|
13083
|
+
if (error) {
|
|
13084
|
+
reject(error);
|
|
13085
|
+
} else {
|
|
13086
|
+
resolve7();
|
|
13087
|
+
}
|
|
13088
|
+
}
|
|
13089
|
+
);
|
|
13090
|
+
this.stream.once("error", handleError);
|
|
13091
|
+
if (!canWrite) {
|
|
13092
|
+
this.stream.once("drain", resolve7);
|
|
13093
|
+
}
|
|
13094
|
+
} else {
|
|
13095
|
+
const canWrite = this.stream.write(content);
|
|
13096
|
+
this.stream.once("error", handleError);
|
|
13097
|
+
if (!canWrite) {
|
|
13098
|
+
this.stream.once("drain", () => {
|
|
13099
|
+
this.stream.removeListener("error", handleError);
|
|
13100
|
+
resolve7();
|
|
13101
|
+
});
|
|
13102
|
+
} else {
|
|
13103
|
+
this.stream.removeListener("error", handleError);
|
|
13104
|
+
resolve7();
|
|
13105
|
+
}
|
|
13106
|
+
}
|
|
13107
|
+
});
|
|
13022
13108
|
}
|
|
13023
13109
|
end() {
|
|
13024
|
-
|
|
13110
|
+
return new Promise((resolve7, reject) => {
|
|
13111
|
+
if (this.stream instanceof import_fs5.default.WriteStream) {
|
|
13112
|
+
this.stream.end(() => {
|
|
13113
|
+
resolve7();
|
|
13114
|
+
});
|
|
13115
|
+
this.stream.once("error", reject);
|
|
13116
|
+
this.stream.once("finish", resolve7);
|
|
13117
|
+
} else {
|
|
13118
|
+
this.stream.write("", () => {
|
|
13119
|
+
resolve7();
|
|
13120
|
+
});
|
|
13121
|
+
}
|
|
13122
|
+
});
|
|
13025
13123
|
}
|
|
13026
13124
|
};
|
|
13027
13125
|
var StringWriter = class extends Writer {
|
|
@@ -13030,10 +13128,10 @@ var StringWriter = class extends Writer {
|
|
|
13030
13128
|
super();
|
|
13031
13129
|
this.content = "";
|
|
13032
13130
|
}
|
|
13033
|
-
write(content) {
|
|
13131
|
+
async write(content) {
|
|
13034
13132
|
this.content += content;
|
|
13035
13133
|
}
|
|
13036
|
-
end() {
|
|
13134
|
+
async end() {
|
|
13037
13135
|
return;
|
|
13038
13136
|
}
|
|
13039
13137
|
toString() {
|
|
@@ -13049,10 +13147,10 @@ var Block = class {
|
|
|
13049
13147
|
this.id = id;
|
|
13050
13148
|
this.content = content;
|
|
13051
13149
|
}
|
|
13052
|
-
write(writer) {
|
|
13053
|
-
writer.write(this.content);
|
|
13150
|
+
async write(writer) {
|
|
13151
|
+
await writer.write(this.content);
|
|
13054
13152
|
if (!this.content.endsWith("\n")) {
|
|
13055
|
-
writer.writeLine();
|
|
13153
|
+
await writer.writeLine();
|
|
13056
13154
|
}
|
|
13057
13155
|
}
|
|
13058
13156
|
};
|
|
@@ -13147,42 +13245,41 @@ var ReadmeGenerator = class {
|
|
|
13147
13245
|
async generateReadme({
|
|
13148
13246
|
output
|
|
13149
13247
|
}) {
|
|
13150
|
-
const blocks = this.generateBlocks();
|
|
13248
|
+
const blocks = await this.generateBlocks();
|
|
13151
13249
|
const writer = new StreamWriter(output);
|
|
13152
|
-
this.writeHeader({ writer });
|
|
13153
|
-
this.writeBlocks({
|
|
13250
|
+
await this.writeHeader({ writer });
|
|
13251
|
+
await this.writeBlocks({
|
|
13154
13252
|
writer,
|
|
13155
13253
|
blocks: await this.mergeBlocks({ blocks })
|
|
13156
13254
|
});
|
|
13157
|
-
writer.end();
|
|
13158
|
-
return;
|
|
13255
|
+
await writer.end();
|
|
13159
13256
|
}
|
|
13160
|
-
generateBlocks() {
|
|
13257
|
+
async generateBlocks() {
|
|
13161
13258
|
const blocks = [];
|
|
13162
13259
|
if (this.readmeConfig.apiReferenceLink != null) {
|
|
13163
13260
|
blocks.push(
|
|
13164
|
-
this.generateDocumentation({
|
|
13261
|
+
await this.generateDocumentation({
|
|
13165
13262
|
docsLink: this.readmeConfig.apiReferenceLink
|
|
13166
13263
|
})
|
|
13167
13264
|
);
|
|
13168
13265
|
}
|
|
13169
13266
|
if (this.readmeConfig.requirements != null) {
|
|
13170
13267
|
blocks.push(
|
|
13171
|
-
this.generateRequirements({
|
|
13268
|
+
await this.generateRequirements({
|
|
13172
13269
|
requirements: this.readmeConfig.requirements
|
|
13173
13270
|
})
|
|
13174
13271
|
);
|
|
13175
13272
|
}
|
|
13176
13273
|
if (this.readmeConfig.language?.publishInfo != null) {
|
|
13177
13274
|
blocks.push(
|
|
13178
|
-
this.generateInstallation({
|
|
13275
|
+
await this.generateInstallation({
|
|
13179
13276
|
language: this.readmeConfig.language
|
|
13180
13277
|
})
|
|
13181
13278
|
);
|
|
13182
13279
|
}
|
|
13183
13280
|
if (this.readmeConfig.referenceMarkdownPath != null) {
|
|
13184
13281
|
blocks.push(
|
|
13185
|
-
this.generateReference({
|
|
13282
|
+
await this.generateReference({
|
|
13186
13283
|
referenceFile: this.readmeConfig.referenceMarkdownPath
|
|
13187
13284
|
})
|
|
13188
13285
|
);
|
|
@@ -13194,12 +13291,12 @@ var ReadmeGenerator = class {
|
|
|
13194
13291
|
continue;
|
|
13195
13292
|
}
|
|
13196
13293
|
blocks.push(
|
|
13197
|
-
this.generateFeatureBlock({
|
|
13294
|
+
await this.generateFeatureBlock({
|
|
13198
13295
|
feature
|
|
13199
13296
|
})
|
|
13200
13297
|
);
|
|
13201
13298
|
}
|
|
13202
|
-
const advancedFeatureBlock = this.generateNestedFeatureBlock({
|
|
13299
|
+
const advancedFeatureBlock = await this.generateNestedFeatureBlock({
|
|
13203
13300
|
featureId: this.ADVANCED_FEATURE_ID,
|
|
13204
13301
|
features: advancedFeatures
|
|
13205
13302
|
});
|
|
@@ -13215,7 +13312,7 @@ var ReadmeGenerator = class {
|
|
|
13215
13312
|
}
|
|
13216
13313
|
return feat.advanced ?? false;
|
|
13217
13314
|
}
|
|
13218
|
-
generateNestedFeatureBlock({
|
|
13315
|
+
async generateNestedFeatureBlock({
|
|
13219
13316
|
featureId,
|
|
13220
13317
|
features
|
|
13221
13318
|
}) {
|
|
@@ -13223,13 +13320,13 @@ var ReadmeGenerator = class {
|
|
|
13223
13320
|
return void 0;
|
|
13224
13321
|
}
|
|
13225
13322
|
const writer = new StringWriter();
|
|
13226
|
-
writer.writeLine(`## ${featureIDToTitle(featureId)}`);
|
|
13227
|
-
writer.writeLine();
|
|
13323
|
+
await writer.writeLine(`## ${featureIDToTitle(featureId)}`);
|
|
13324
|
+
await writer.writeLine();
|
|
13228
13325
|
for (const feature of features) {
|
|
13229
13326
|
if (this.shouldSkipFeature({ feature })) {
|
|
13230
13327
|
continue;
|
|
13231
13328
|
}
|
|
13232
|
-
this.generateFeatureBlock({
|
|
13329
|
+
await this.generateFeatureBlock({
|
|
13233
13330
|
feature,
|
|
13234
13331
|
heading: "###",
|
|
13235
13332
|
maybeWriter: writer
|
|
@@ -13240,27 +13337,27 @@ var ReadmeGenerator = class {
|
|
|
13240
13337
|
content: writer.toString()
|
|
13241
13338
|
});
|
|
13242
13339
|
}
|
|
13243
|
-
generateFeatureBlock({
|
|
13340
|
+
async generateFeatureBlock({
|
|
13244
13341
|
feature,
|
|
13245
13342
|
heading = "##",
|
|
13246
13343
|
maybeWriter
|
|
13247
13344
|
}) {
|
|
13248
13345
|
const writer = maybeWriter ?? new StringWriter();
|
|
13249
|
-
writer.writeLine(`${heading} ${featureIDToTitle(feature.id)}`);
|
|
13250
|
-
writer.writeLine();
|
|
13346
|
+
await writer.writeLine(`${heading} ${featureIDToTitle(feature.id)}`);
|
|
13347
|
+
await writer.writeLine();
|
|
13251
13348
|
if (feature.description != null) {
|
|
13252
|
-
writer.writeLine(feature.description);
|
|
13349
|
+
await writer.writeLine(feature.description);
|
|
13253
13350
|
}
|
|
13254
|
-
feature.snippets?.
|
|
13351
|
+
for (const [index, snippet] of feature.snippets?.entries() ?? []) {
|
|
13255
13352
|
if (index > 0) {
|
|
13256
|
-
writer.writeLine();
|
|
13353
|
+
await writer.writeLine();
|
|
13257
13354
|
}
|
|
13258
|
-
writer.writeCodeBlock(this.readmeConfig.language.type, snippet);
|
|
13259
|
-
}
|
|
13355
|
+
await writer.writeCodeBlock(this.readmeConfig.language.type, snippet);
|
|
13356
|
+
}
|
|
13260
13357
|
if (feature.addendum != null) {
|
|
13261
|
-
writer.writeLine(feature.addendum);
|
|
13358
|
+
await writer.writeLine(feature.addendum);
|
|
13262
13359
|
}
|
|
13263
|
-
writer.writeLine();
|
|
13360
|
+
await writer.writeLine();
|
|
13264
13361
|
return new Block({
|
|
13265
13362
|
id: feature.id,
|
|
13266
13363
|
content: writer.toString()
|
|
@@ -13293,150 +13390,152 @@ var ReadmeGenerator = class {
|
|
|
13293
13390
|
}
|
|
13294
13391
|
return void 0;
|
|
13295
13392
|
}
|
|
13296
|
-
writeBlocks({
|
|
13393
|
+
async writeBlocks({
|
|
13297
13394
|
writer,
|
|
13298
13395
|
blocks
|
|
13299
13396
|
}) {
|
|
13300
13397
|
for (const block of blocks) {
|
|
13301
|
-
block.write(writer);
|
|
13398
|
+
await block.write(writer);
|
|
13302
13399
|
}
|
|
13303
13400
|
}
|
|
13304
|
-
writeHeader({ writer }) {
|
|
13305
|
-
writer.writeLine(
|
|
13401
|
+
async writeHeader({ writer }) {
|
|
13402
|
+
await writer.writeLine(
|
|
13306
13403
|
`# ${this.organizationPascalCase} ${this.languageTitle} Library`
|
|
13307
13404
|
);
|
|
13308
|
-
writer.writeLine();
|
|
13405
|
+
await writer.writeLine();
|
|
13309
13406
|
if (this.readmeConfig.bannerLink != null) {
|
|
13310
|
-
this.writeBanner({
|
|
13407
|
+
await this.writeBanner({
|
|
13311
13408
|
writer,
|
|
13312
13409
|
bannerLink: this.readmeConfig.bannerLink
|
|
13313
13410
|
});
|
|
13314
13411
|
}
|
|
13315
|
-
this.writeFernShield({ writer });
|
|
13412
|
+
await this.writeFernShield({ writer });
|
|
13316
13413
|
if (this.readmeConfig.language != null) {
|
|
13317
|
-
this.writeShield({
|
|
13414
|
+
await this.writeShield({
|
|
13318
13415
|
writer,
|
|
13319
13416
|
language: this.readmeConfig.language
|
|
13320
13417
|
});
|
|
13321
13418
|
}
|
|
13322
|
-
writer.writeLine();
|
|
13323
|
-
this.
|
|
13419
|
+
await writer.writeLine();
|
|
13420
|
+
await this.writeIntro({ writer });
|
|
13324
13421
|
}
|
|
13325
|
-
writeBanner({
|
|
13422
|
+
async writeBanner({
|
|
13326
13423
|
writer,
|
|
13327
13424
|
bannerLink
|
|
13328
13425
|
}) {
|
|
13329
|
-
writer.writeLine(``);
|
|
13330
|
-
writer.writeLine();
|
|
13426
|
+
await writer.writeLine(``);
|
|
13427
|
+
await writer.writeLine();
|
|
13331
13428
|
}
|
|
13332
|
-
writeFernShield({ writer }) {
|
|
13429
|
+
async writeFernShield({ writer }) {
|
|
13333
13430
|
const repoSource = this.readmeConfig.remote?.repoUrl ?? `${this.organizationPascalCase}/${this.languageTitle}`;
|
|
13334
|
-
writer.writeLine(
|
|
13431
|
+
await writer.writeLine(
|
|
13335
13432
|
`[](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=${encodeURIComponent(repoSource)})`
|
|
13336
13433
|
);
|
|
13337
13434
|
}
|
|
13338
|
-
|
|
13339
|
-
writer.writeLine(
|
|
13435
|
+
async writeIntro({ writer }) {
|
|
13436
|
+
await writer.writeLine(
|
|
13340
13437
|
this.readmeConfig.introduction != null ? this.readmeConfig.introduction : `The ${this.organizationPascalCase} ${this.languageTitle} library provides convenient access to the ${this.organizationPascalCase} API from ${this.languageTitle}.`
|
|
13341
13438
|
);
|
|
13342
|
-
writer.writeLine();
|
|
13439
|
+
await writer.writeLine();
|
|
13343
13440
|
}
|
|
13344
|
-
generateDocumentation({
|
|
13441
|
+
async generateDocumentation({
|
|
13442
|
+
docsLink
|
|
13443
|
+
}) {
|
|
13345
13444
|
const writer = new StringWriter();
|
|
13346
|
-
writer.writeLine("## Documentation");
|
|
13347
|
-
writer.writeLine();
|
|
13348
|
-
writer.writeLine(
|
|
13445
|
+
await writer.writeLine("## Documentation");
|
|
13446
|
+
await writer.writeLine();
|
|
13447
|
+
await writer.writeLine(
|
|
13349
13448
|
`API reference documentation is available [here](${docsLink}).`
|
|
13350
13449
|
);
|
|
13351
|
-
writer.writeLine();
|
|
13450
|
+
await writer.writeLine();
|
|
13352
13451
|
return new Block({
|
|
13353
13452
|
id: "DOCUMENTATION",
|
|
13354
13453
|
content: writer.toString()
|
|
13355
13454
|
});
|
|
13356
13455
|
}
|
|
13357
|
-
generateReference({
|
|
13456
|
+
async generateReference({
|
|
13358
13457
|
referenceFile
|
|
13359
13458
|
}) {
|
|
13360
13459
|
const writer = new StringWriter();
|
|
13361
|
-
writer.writeLine("## Reference");
|
|
13362
|
-
writer.writeLine();
|
|
13363
|
-
writer.writeLine(
|
|
13460
|
+
await writer.writeLine("## Reference");
|
|
13461
|
+
await writer.writeLine();
|
|
13462
|
+
await writer.writeLine(
|
|
13364
13463
|
`A full reference for this library is available [here](${this.readmeConfig.remote?.repoUrl != null ? `${this.readmeConfig.remote.repoUrl}/blob/HEAD/${referenceFile}` : referenceFile}).`
|
|
13365
13464
|
);
|
|
13366
|
-
writer.writeLine();
|
|
13465
|
+
await writer.writeLine();
|
|
13367
13466
|
return new Block({
|
|
13368
13467
|
id: "REFERENCE",
|
|
13369
13468
|
content: writer.toString()
|
|
13370
13469
|
});
|
|
13371
13470
|
}
|
|
13372
|
-
generateRequirements({
|
|
13471
|
+
async generateRequirements({
|
|
13373
13472
|
requirements
|
|
13374
13473
|
}) {
|
|
13375
13474
|
const writer = new StringWriter();
|
|
13376
|
-
writer.writeLine("## Requirements");
|
|
13377
|
-
writer.writeLine();
|
|
13475
|
+
await writer.writeLine("## Requirements");
|
|
13476
|
+
await writer.writeLine();
|
|
13378
13477
|
if (requirements.length === 1) {
|
|
13379
|
-
writer.writeLine(`This SDK requires ${requirements[0]}.`);
|
|
13478
|
+
await writer.writeLine(`This SDK requires ${requirements[0]}.`);
|
|
13380
13479
|
} else {
|
|
13381
|
-
writer.writeLine("This SDK requires:");
|
|
13480
|
+
await writer.writeLine("This SDK requires:");
|
|
13382
13481
|
for (const requirement of requirements) {
|
|
13383
|
-
writer.writeLine(`- ${requirement}`);
|
|
13482
|
+
await writer.writeLine(`- ${requirement}`);
|
|
13384
13483
|
}
|
|
13385
13484
|
}
|
|
13386
|
-
writer.writeLine();
|
|
13485
|
+
await writer.writeLine();
|
|
13387
13486
|
return new Block({
|
|
13388
13487
|
id: "REQUIREMENTS",
|
|
13389
13488
|
content: writer.toString()
|
|
13390
13489
|
});
|
|
13391
13490
|
}
|
|
13392
|
-
generateInstallation({
|
|
13491
|
+
async generateInstallation({
|
|
13393
13492
|
language
|
|
13394
13493
|
}) {
|
|
13395
13494
|
if (language.publishInfo == null) {
|
|
13396
13495
|
throw new Error("publish information is required for installation block");
|
|
13397
13496
|
}
|
|
13398
13497
|
const writer = new StringWriter();
|
|
13399
|
-
writer.writeLine("## Installation");
|
|
13400
|
-
writer.writeLine();
|
|
13498
|
+
await writer.writeLine("## Installation");
|
|
13499
|
+
await writer.writeLine();
|
|
13401
13500
|
switch (language.type) {
|
|
13402
13501
|
case "typescript":
|
|
13403
|
-
this.writeInstallationForNPM({
|
|
13502
|
+
await this.writeInstallationForNPM({
|
|
13404
13503
|
writer,
|
|
13405
13504
|
npm: language.publishInfo
|
|
13406
13505
|
});
|
|
13407
13506
|
break;
|
|
13408
13507
|
case "python":
|
|
13409
|
-
this.writeInstallationForPyPi({
|
|
13508
|
+
await this.writeInstallationForPyPi({
|
|
13410
13509
|
writer,
|
|
13411
13510
|
pypi: language.publishInfo
|
|
13412
13511
|
});
|
|
13413
13512
|
break;
|
|
13414
13513
|
case "java":
|
|
13415
|
-
this.writeInstallationForMaven({
|
|
13514
|
+
await this.writeInstallationForMaven({
|
|
13416
13515
|
writer,
|
|
13417
13516
|
maven: language.publishInfo
|
|
13418
13517
|
});
|
|
13419
13518
|
break;
|
|
13420
13519
|
case "go":
|
|
13421
|
-
this.writeInstallationForGo({
|
|
13520
|
+
await this.writeInstallationForGo({
|
|
13422
13521
|
writer,
|
|
13423
13522
|
go: language.publishInfo
|
|
13424
13523
|
});
|
|
13425
13524
|
break;
|
|
13426
13525
|
case "ruby":
|
|
13427
|
-
this.writeInstallationForRubyGems({
|
|
13526
|
+
await this.writeInstallationForRubyGems({
|
|
13428
13527
|
writer,
|
|
13429
13528
|
rubyGems: language.publishInfo
|
|
13430
13529
|
});
|
|
13431
13530
|
break;
|
|
13432
13531
|
case "csharp":
|
|
13433
|
-
this.writeInstallationForNuget({
|
|
13532
|
+
await this.writeInstallationForNuget({
|
|
13434
13533
|
writer,
|
|
13435
13534
|
nuget: language.publishInfo
|
|
13436
13535
|
});
|
|
13437
13536
|
break;
|
|
13438
13537
|
case "php":
|
|
13439
|
-
this.writeInstallationForComposer({
|
|
13538
|
+
await this.writeInstallationForComposer({
|
|
13440
13539
|
writer,
|
|
13441
13540
|
composer: language.publishInfo
|
|
13442
13541
|
});
|
|
@@ -13449,93 +13548,95 @@ var ReadmeGenerator = class {
|
|
|
13449
13548
|
content: writer.toString()
|
|
13450
13549
|
});
|
|
13451
13550
|
}
|
|
13452
|
-
writeInstallationForNPM({
|
|
13551
|
+
async writeInstallationForNPM({
|
|
13453
13552
|
writer,
|
|
13454
13553
|
npm
|
|
13455
13554
|
}) {
|
|
13456
|
-
writer.writeLine("```sh");
|
|
13457
|
-
writer.writeLine(`npm i -s ${npm.packageName}`);
|
|
13458
|
-
writer.writeLine("```");
|
|
13459
|
-
writer.writeLine();
|
|
13555
|
+
await writer.writeLine("```sh");
|
|
13556
|
+
await writer.writeLine(`npm i -s ${npm.packageName}`);
|
|
13557
|
+
await writer.writeLine("```");
|
|
13558
|
+
await writer.writeLine();
|
|
13460
13559
|
}
|
|
13461
|
-
writeInstallationForPyPi({
|
|
13560
|
+
async writeInstallationForPyPi({
|
|
13462
13561
|
writer,
|
|
13463
13562
|
pypi
|
|
13464
13563
|
}) {
|
|
13465
|
-
writer.writeLine("```sh");
|
|
13466
|
-
writer.writeLine(`pip install ${pypi.packageName}`);
|
|
13467
|
-
writer.writeLine("```");
|
|
13468
|
-
writer.writeLine();
|
|
13564
|
+
await writer.writeLine("```sh");
|
|
13565
|
+
await writer.writeLine(`pip install ${pypi.packageName}`);
|
|
13566
|
+
await writer.writeLine("```");
|
|
13567
|
+
await writer.writeLine();
|
|
13469
13568
|
}
|
|
13470
|
-
writeInstallationForMaven({
|
|
13569
|
+
async writeInstallationForMaven({
|
|
13471
13570
|
writer,
|
|
13472
13571
|
maven
|
|
13473
13572
|
}) {
|
|
13474
|
-
writer.writeLine("### Gradle");
|
|
13475
|
-
writer.writeLine();
|
|
13476
|
-
writer.writeLine("Add the dependency in your `build.gradle` file:");
|
|
13477
|
-
writer.writeLine();
|
|
13478
|
-
writer.writeLine("```groovy");
|
|
13479
|
-
writer.writeLine("dependencies {");
|
|
13480
|
-
writer.writeLine(
|
|
13481
|
-
|
|
13482
|
-
|
|
13483
|
-
writer.writeLine();
|
|
13484
|
-
writer.writeLine("
|
|
13485
|
-
writer.writeLine();
|
|
13486
|
-
writer.writeLine("
|
|
13487
|
-
writer.writeLine();
|
|
13488
|
-
writer.writeLine("
|
|
13489
|
-
writer.writeLine(
|
|
13490
|
-
writer.writeLine(
|
|
13491
|
-
writer.writeLine(
|
|
13492
|
-
writer.writeLine(` <
|
|
13493
|
-
writer.writeLine(
|
|
13494
|
-
writer.writeLine(
|
|
13495
|
-
writer.writeLine();
|
|
13496
|
-
|
|
13497
|
-
|
|
13573
|
+
await writer.writeLine("### Gradle");
|
|
13574
|
+
await writer.writeLine();
|
|
13575
|
+
await writer.writeLine("Add the dependency in your `build.gradle` file:");
|
|
13576
|
+
await writer.writeLine();
|
|
13577
|
+
await writer.writeLine("```groovy");
|
|
13578
|
+
await writer.writeLine("dependencies {");
|
|
13579
|
+
await writer.writeLine(
|
|
13580
|
+
` implementation '${maven.group}:${maven.artifact}'`
|
|
13581
|
+
);
|
|
13582
|
+
await writer.writeLine("}");
|
|
13583
|
+
await writer.writeLine("```");
|
|
13584
|
+
await writer.writeLine();
|
|
13585
|
+
await writer.writeLine("### Maven");
|
|
13586
|
+
await writer.writeLine();
|
|
13587
|
+
await writer.writeLine("Add the dependency in your `pom.xml` file:");
|
|
13588
|
+
await writer.writeLine();
|
|
13589
|
+
await writer.writeLine("```xml");
|
|
13590
|
+
await writer.writeLine("<dependency>");
|
|
13591
|
+
await writer.writeLine(` <groupId>${maven.group}</groupId>`);
|
|
13592
|
+
await writer.writeLine(` <artifactId>${maven.artifact}</artifactId>`);
|
|
13593
|
+
await writer.writeLine(` <version>${maven.version}</version>`);
|
|
13594
|
+
await writer.writeLine("</dependency>");
|
|
13595
|
+
await writer.writeLine("```");
|
|
13596
|
+
await writer.writeLine();
|
|
13597
|
+
}
|
|
13598
|
+
async writeInstallationForGo({
|
|
13498
13599
|
writer,
|
|
13499
13600
|
go
|
|
13500
13601
|
}) {
|
|
13501
|
-
writer.writeLine("```sh");
|
|
13502
|
-
writer.write(`go get github.com/${go.owner}/${go.repo}`);
|
|
13602
|
+
await writer.writeLine("```sh");
|
|
13603
|
+
await writer.write(`go get github.com/${go.owner}/${go.repo}`);
|
|
13503
13604
|
const majorVersion = getMajorVersion(go.version);
|
|
13504
13605
|
if (!majorVersion.startsWith("0") && !majorVersion.startsWith("1")) {
|
|
13505
|
-
writer.write(`/v${majorVersion}`);
|
|
13606
|
+
await writer.write(`/v${majorVersion}`);
|
|
13506
13607
|
}
|
|
13507
|
-
writer.writeLine();
|
|
13508
|
-
writer.writeLine("```");
|
|
13509
|
-
writer.writeLine();
|
|
13608
|
+
await writer.writeLine();
|
|
13609
|
+
await writer.writeLine("```");
|
|
13610
|
+
await writer.writeLine();
|
|
13510
13611
|
}
|
|
13511
|
-
writeInstallationForRubyGems({
|
|
13612
|
+
async writeInstallationForRubyGems({
|
|
13512
13613
|
writer,
|
|
13513
13614
|
rubyGems
|
|
13514
13615
|
}) {
|
|
13515
|
-
writer.writeLine("```sh");
|
|
13516
|
-
writer.writeLine(`gem install ${rubyGems.packageName}`);
|
|
13517
|
-
writer.writeLine("```");
|
|
13518
|
-
writer.writeLine();
|
|
13616
|
+
await writer.writeLine("```sh");
|
|
13617
|
+
await writer.writeLine(`gem install ${rubyGems.packageName}`);
|
|
13618
|
+
await writer.writeLine("```");
|
|
13619
|
+
await writer.writeLine();
|
|
13519
13620
|
}
|
|
13520
|
-
writeInstallationForNuget({
|
|
13621
|
+
async writeInstallationForNuget({
|
|
13521
13622
|
writer,
|
|
13522
13623
|
nuget
|
|
13523
13624
|
}) {
|
|
13524
|
-
writer.writeLine("```sh");
|
|
13525
|
-
writer.writeLine(`dotnet add package ${nuget.packageName}`);
|
|
13526
|
-
writer.writeLine("```");
|
|
13527
|
-
writer.writeLine();
|
|
13625
|
+
await writer.writeLine("```sh");
|
|
13626
|
+
await writer.writeLine(`dotnet add package ${nuget.packageName}`);
|
|
13627
|
+
await writer.writeLine("```");
|
|
13628
|
+
await writer.writeLine();
|
|
13528
13629
|
}
|
|
13529
|
-
writeInstallationForComposer({
|
|
13630
|
+
async writeInstallationForComposer({
|
|
13530
13631
|
writer,
|
|
13531
13632
|
composer
|
|
13532
13633
|
}) {
|
|
13533
|
-
writer.writeLine("```sh");
|
|
13534
|
-
writer.writeLine(`composer require ${composer.packageName}`);
|
|
13535
|
-
writer.writeLine("```");
|
|
13536
|
-
writer.writeLine();
|
|
13634
|
+
await writer.writeLine("```sh");
|
|
13635
|
+
await writer.writeLine(`composer require ${composer.packageName}`);
|
|
13636
|
+
await writer.writeLine("```");
|
|
13637
|
+
await writer.writeLine();
|
|
13537
13638
|
}
|
|
13538
|
-
writeShield({
|
|
13639
|
+
async writeShield({
|
|
13539
13640
|
writer,
|
|
13540
13641
|
language
|
|
13541
13642
|
}) {
|
|
@@ -13545,7 +13646,7 @@ var ReadmeGenerator = class {
|
|
|
13545
13646
|
if (npm == null) {
|
|
13546
13647
|
return;
|
|
13547
13648
|
}
|
|
13548
|
-
this.writeShieldForNPM({
|
|
13649
|
+
await this.writeShieldForNPM({
|
|
13549
13650
|
writer,
|
|
13550
13651
|
npm
|
|
13551
13652
|
});
|
|
@@ -13556,7 +13657,7 @@ var ReadmeGenerator = class {
|
|
|
13556
13657
|
if (pypi == null) {
|
|
13557
13658
|
return;
|
|
13558
13659
|
}
|
|
13559
|
-
this.writeShieldForPyPi({
|
|
13660
|
+
await this.writeShieldForPyPi({
|
|
13560
13661
|
writer,
|
|
13561
13662
|
pypi
|
|
13562
13663
|
});
|
|
@@ -13567,7 +13668,7 @@ var ReadmeGenerator = class {
|
|
|
13567
13668
|
if (maven == null) {
|
|
13568
13669
|
return;
|
|
13569
13670
|
}
|
|
13570
|
-
this.writeShieldForMaven({
|
|
13671
|
+
await this.writeShieldForMaven({
|
|
13571
13672
|
writer,
|
|
13572
13673
|
maven
|
|
13573
13674
|
});
|
|
@@ -13578,7 +13679,7 @@ var ReadmeGenerator = class {
|
|
|
13578
13679
|
if (go == null) {
|
|
13579
13680
|
return;
|
|
13580
13681
|
}
|
|
13581
|
-
this.writeShieldForGo({
|
|
13682
|
+
await this.writeShieldForGo({
|
|
13582
13683
|
writer,
|
|
13583
13684
|
go
|
|
13584
13685
|
});
|
|
@@ -13589,7 +13690,7 @@ var ReadmeGenerator = class {
|
|
|
13589
13690
|
if (rubyGems == null) {
|
|
13590
13691
|
return;
|
|
13591
13692
|
}
|
|
13592
|
-
this.writeShieldForRubyGems({
|
|
13693
|
+
await this.writeShieldForRubyGems({
|
|
13593
13694
|
writer,
|
|
13594
13695
|
rubyGems
|
|
13595
13696
|
});
|
|
@@ -13600,7 +13701,7 @@ var ReadmeGenerator = class {
|
|
|
13600
13701
|
if (nuget == null) {
|
|
13601
13702
|
return;
|
|
13602
13703
|
}
|
|
13603
|
-
this.writeShieldForNuget({
|
|
13704
|
+
await this.writeShieldForNuget({
|
|
13604
13705
|
writer,
|
|
13605
13706
|
nuget
|
|
13606
13707
|
});
|
|
@@ -13611,7 +13712,7 @@ var ReadmeGenerator = class {
|
|
|
13611
13712
|
if (composer == null) {
|
|
13612
13713
|
return;
|
|
13613
13714
|
}
|
|
13614
|
-
this.writeShieldForComposer({
|
|
13715
|
+
await this.writeShieldForComposer({
|
|
13615
13716
|
writer,
|
|
13616
13717
|
composer
|
|
13617
13718
|
});
|
|
@@ -13621,65 +13722,77 @@ var ReadmeGenerator = class {
|
|
|
13621
13722
|
assertNever(language);
|
|
13622
13723
|
}
|
|
13623
13724
|
}
|
|
13624
|
-
writeShieldForNPM({
|
|
13725
|
+
async writeShieldForNPM({
|
|
13625
13726
|
writer,
|
|
13626
13727
|
npm
|
|
13627
13728
|
}) {
|
|
13628
|
-
writer.write("[![npm shield]");
|
|
13629
|
-
writer.write(`(https://img.shields.io/npm/v/${npm.packageName})]`);
|
|
13630
|
-
writer.writeLine(
|
|
13729
|
+
await writer.write("[![npm shield]");
|
|
13730
|
+
await writer.write(`(https://img.shields.io/npm/v/${npm.packageName})]`);
|
|
13731
|
+
await writer.writeLine(
|
|
13732
|
+
`(https://www.npmjs.com/package/${npm.packageName})`
|
|
13733
|
+
);
|
|
13631
13734
|
}
|
|
13632
|
-
writeShieldForPyPi({
|
|
13735
|
+
async writeShieldForPyPi({
|
|
13633
13736
|
writer,
|
|
13634
13737
|
pypi
|
|
13635
13738
|
}) {
|
|
13636
|
-
writer.write("[![pypi]");
|
|
13637
|
-
writer.write(`(https://img.shields.io/pypi/v/${pypi.packageName})]`);
|
|
13638
|
-
writer.writeLine(
|
|
13739
|
+
await writer.write("[![pypi]");
|
|
13740
|
+
await writer.write(`(https://img.shields.io/pypi/v/${pypi.packageName})]`);
|
|
13741
|
+
await writer.writeLine(
|
|
13742
|
+
`(https://pypi.python.org/pypi/${pypi.packageName})`
|
|
13743
|
+
);
|
|
13639
13744
|
}
|
|
13640
|
-
writeShieldForMaven({
|
|
13745
|
+
async writeShieldForMaven({
|
|
13641
13746
|
writer,
|
|
13642
13747
|
maven
|
|
13643
13748
|
}) {
|
|
13644
|
-
writer.write("[![Maven Central]");
|
|
13645
|
-
writer.write(
|
|
13749
|
+
await writer.write("[![Maven Central]");
|
|
13750
|
+
await writer.write(
|
|
13646
13751
|
`(https://img.shields.io/maven-central/v/${maven.group}/${maven.artifact})]`
|
|
13647
13752
|
);
|
|
13648
|
-
writer.writeLine(
|
|
13753
|
+
await writer.writeLine(
|
|
13649
13754
|
`(https://central.sonatype.com/artifact/${maven.group}/${maven.artifact})`
|
|
13650
13755
|
);
|
|
13651
13756
|
}
|
|
13652
|
-
writeShieldForGo({
|
|
13757
|
+
async writeShieldForGo({
|
|
13653
13758
|
writer,
|
|
13654
13759
|
go
|
|
13655
13760
|
}) {
|
|
13656
|
-
writer.write("[![go shield]");
|
|
13657
|
-
writer.write("(https://img.shields.io/badge/go-docs-blue)]");
|
|
13658
|
-
writer.writeLine(
|
|
13761
|
+
await writer.write("[![go shield]");
|
|
13762
|
+
await writer.write("(https://img.shields.io/badge/go-docs-blue)]");
|
|
13763
|
+
await writer.writeLine(
|
|
13764
|
+
`(https://pkg.go.dev/github.com/${go.owner}/${go.repo})`
|
|
13765
|
+
);
|
|
13659
13766
|
}
|
|
13660
|
-
writeShieldForRubyGems({
|
|
13767
|
+
async writeShieldForRubyGems({
|
|
13661
13768
|
writer,
|
|
13662
13769
|
rubyGems
|
|
13663
13770
|
}) {
|
|
13664
|
-
writer.write("[![gems shield]");
|
|
13665
|
-
writer.write(
|
|
13666
|
-
|
|
13771
|
+
await writer.write("[![gems shield]");
|
|
13772
|
+
await writer.write(
|
|
13773
|
+
`(https://img.shields.io/gem/v/${rubyGems.packageName})]`
|
|
13774
|
+
);
|
|
13775
|
+
await writer.writeLine(
|
|
13776
|
+
`(https://rubygems.org/gems/${rubyGems.packageName})`
|
|
13777
|
+
);
|
|
13667
13778
|
}
|
|
13668
|
-
writeShieldForNuget({
|
|
13779
|
+
async writeShieldForNuget({
|
|
13669
13780
|
writer,
|
|
13670
13781
|
nuget
|
|
13671
13782
|
}) {
|
|
13672
|
-
writer.write("[![nuget shield]");
|
|
13673
|
-
writer.write(
|
|
13674
|
-
|
|
13783
|
+
await writer.write("[![nuget shield]");
|
|
13784
|
+
await writer.write(
|
|
13785
|
+
`(https://img.shields.io/nuget/v/${nuget.packageName})]`
|
|
13786
|
+
);
|
|
13787
|
+
await writer.writeLine(`(https://nuget.org/packages/${nuget.packageName})`);
|
|
13675
13788
|
}
|
|
13676
|
-
writeShieldForComposer({
|
|
13789
|
+
async writeShieldForComposer({
|
|
13677
13790
|
writer,
|
|
13678
13791
|
composer
|
|
13679
13792
|
}) {
|
|
13680
|
-
writer.write("[![php shield]");
|
|
13681
|
-
writer.write("(https://img.shields.io/badge/php-packagist-pink)]");
|
|
13682
|
-
writer.writeLine(
|
|
13793
|
+
await writer.write("[![php shield]");
|
|
13794
|
+
await writer.write("(https://img.shields.io/badge/php-packagist-pink)]");
|
|
13795
|
+
await writer.writeLine(
|
|
13683
13796
|
`(https://packagist.org/packages/${composer.packageName})`
|
|
13684
13797
|
);
|
|
13685
13798
|
}
|
|
@@ -13739,7 +13852,7 @@ function getMajorVersion(version) {
|
|
|
13739
13852
|
return version.split(".")[0] ?? "0";
|
|
13740
13853
|
}
|
|
13741
13854
|
function assertNever(x) {
|
|
13742
|
-
throw new Error(
|
|
13855
|
+
throw new Error(`unexpected value: ${JSON.stringify(x)}`);
|
|
13743
13856
|
}
|
|
13744
13857
|
|
|
13745
13858
|
// src/readme/ReadmeParser.ts
|
|
@@ -13765,7 +13878,8 @@ var ReadmeParser = class {
|
|
|
13765
13878
|
header += line;
|
|
13766
13879
|
continue;
|
|
13767
13880
|
}
|
|
13768
|
-
currentBlock.content += line
|
|
13881
|
+
currentBlock.content += `${line}
|
|
13882
|
+
`;
|
|
13769
13883
|
}
|
|
13770
13884
|
if (currentBlock) {
|
|
13771
13885
|
blocks.push(currentBlock);
|
|
@@ -13795,73 +13909,77 @@ var ReferenceGenerator = class {
|
|
|
13795
13909
|
}) {
|
|
13796
13910
|
this.referenceConfig = referenceConfig;
|
|
13797
13911
|
}
|
|
13798
|
-
async generate({
|
|
13912
|
+
async generate({
|
|
13913
|
+
output
|
|
13914
|
+
}) {
|
|
13799
13915
|
const writer = new StreamWriter(output);
|
|
13800
|
-
writer.writeLine("# Reference");
|
|
13916
|
+
await writer.writeLine("# Reference");
|
|
13801
13917
|
if (this.referenceConfig.rootSection != null) {
|
|
13802
|
-
this.writeRootSection({
|
|
13918
|
+
await this.writeRootSection({
|
|
13803
13919
|
section: this.referenceConfig.rootSection,
|
|
13804
13920
|
writer
|
|
13805
13921
|
});
|
|
13806
13922
|
}
|
|
13807
13923
|
for (const section of this.referenceConfig.sections) {
|
|
13808
|
-
this.writeSection({ section, writer });
|
|
13924
|
+
await this.writeSection({ section, writer });
|
|
13809
13925
|
}
|
|
13810
|
-
writer.end();
|
|
13926
|
+
await writer.end();
|
|
13811
13927
|
}
|
|
13812
|
-
writeRootSection({
|
|
13928
|
+
async writeRootSection({
|
|
13813
13929
|
section,
|
|
13814
13930
|
writer
|
|
13815
13931
|
}) {
|
|
13816
13932
|
if (section.description != null) {
|
|
13817
|
-
writer.writeLine(section.description);
|
|
13933
|
+
await writer.writeLine(section.description);
|
|
13818
13934
|
}
|
|
13819
13935
|
for (const endpoint of section.endpoints) {
|
|
13820
|
-
this.writeEndpoint({ endpoint, writer });
|
|
13936
|
+
await this.writeEndpoint({ endpoint, writer });
|
|
13821
13937
|
}
|
|
13822
13938
|
}
|
|
13823
|
-
writeSection({
|
|
13939
|
+
async writeSection({
|
|
13824
13940
|
section,
|
|
13825
13941
|
writer
|
|
13826
13942
|
}) {
|
|
13827
|
-
writer.writeLine(`## ${section.title}`);
|
|
13943
|
+
await writer.writeLine(`## ${section.title}`);
|
|
13828
13944
|
if (section.description != null) {
|
|
13829
|
-
writer.writeLine(section.description);
|
|
13945
|
+
await writer.writeLine(section.description);
|
|
13830
13946
|
}
|
|
13831
13947
|
for (const endpoint of section.endpoints) {
|
|
13832
|
-
this.writeEndpoint({ endpoint, writer });
|
|
13948
|
+
await this.writeEndpoint({ endpoint, writer });
|
|
13833
13949
|
}
|
|
13834
13950
|
}
|
|
13835
|
-
writeEndpoint({
|
|
13951
|
+
async writeEndpoint({
|
|
13836
13952
|
endpoint,
|
|
13837
13953
|
writer
|
|
13838
13954
|
}) {
|
|
13839
13955
|
const stringWriter = new StringWriter();
|
|
13840
13956
|
if (endpoint.description != null) {
|
|
13841
|
-
stringWriter.writeLine(
|
|
13957
|
+
await stringWriter.writeLine(
|
|
13842
13958
|
`#### \u{1F4DD} Description
|
|
13843
13959
|
|
|
13844
|
-
${this.
|
|
13960
|
+
${this.generateIndentedBlock(this.generateIndentedBlock(endpoint.description))}
|
|
13845
13961
|
`
|
|
13846
13962
|
);
|
|
13847
13963
|
}
|
|
13848
|
-
stringWriter.writeLine(
|
|
13964
|
+
await stringWriter.writeLine(
|
|
13849
13965
|
`#### \u{1F50C} Usage
|
|
13850
13966
|
|
|
13851
|
-
${this.
|
|
13852
|
-
this.
|
|
13853
|
-
|
|
13967
|
+
${this.generateIndentedBlock(
|
|
13968
|
+
this.generateIndentedBlock(
|
|
13969
|
+
`\`\`\`${this.referenceConfig.language.toLowerCase()}
|
|
13970
|
+
${endpoint.snippet}
|
|
13971
|
+
\`\`\``
|
|
13854
13972
|
)
|
|
13855
13973
|
)}
|
|
13856
13974
|
`
|
|
13857
13975
|
);
|
|
13858
13976
|
if (endpoint.parameters.length > 0) {
|
|
13859
|
-
stringWriter.writeLine(
|
|
13977
|
+
await stringWriter.writeLine(
|
|
13860
13978
|
`#### \u2699\uFE0F Parameters
|
|
13861
13979
|
|
|
13862
|
-
${this.
|
|
13980
|
+
${this.generateIndentedBlock(
|
|
13863
13981
|
endpoint.parameters.map(
|
|
13864
|
-
(parameter) => this.
|
|
13982
|
+
(parameter) => this.generateIndentedBlock(this.generateParameter(parameter))
|
|
13865
13983
|
).join("\n\n")
|
|
13866
13984
|
)}
|
|
13867
13985
|
`
|
|
@@ -13871,19 +13989,19 @@ ${this.writeIndentedBlock(
|
|
|
13871
13989
|
if (endpoint.title.returnValue != null) {
|
|
13872
13990
|
linkedSnippet += ` -> ${this.wrapInLink(endpoint.title.returnValue.text, endpoint.title.returnValue.location)}`;
|
|
13873
13991
|
}
|
|
13874
|
-
writer.writeLine(
|
|
13992
|
+
await writer.writeLine(
|
|
13875
13993
|
`<details><summary><code>${linkedSnippet}</code></summary>`
|
|
13876
13994
|
);
|
|
13877
|
-
writer.writeLine(this.
|
|
13878
|
-
writer.writeLine("</details>\n");
|
|
13995
|
+
await writer.writeLine(this.generateIndentedBlock(stringWriter.toString()));
|
|
13996
|
+
await writer.writeLine("</details>\n");
|
|
13879
13997
|
}
|
|
13880
|
-
|
|
13998
|
+
generateParameter(parameter) {
|
|
13881
13999
|
const desc = parameter.description?.match(/[^\r\n]+/g)?.length;
|
|
13882
14000
|
const containsLineBreak = desc != null && desc > 1;
|
|
13883
14001
|
return `**${parameter.name}:** \`${this.wrapInLink(parameter.type, parameter.location)}\` ${parameter.description != null ? (containsLineBreak ? "\n\n" : "\u2014 ") + parameter.description : ""}
|
|
13884
14002
|
`;
|
|
13885
14003
|
}
|
|
13886
|
-
|
|
14004
|
+
generateIndentedBlock(content) {
|
|
13887
14005
|
return `<dl>
|
|
13888
14006
|
<dd>
|
|
13889
14007
|
|
|
@@ -13905,13 +14023,13 @@ void yargs_default(hideBin(process.argv)).scriptName(process.env.CLI_NAME ?? "ge
|
|
|
13905
14023
|
"Generate a README.md using the provided configuration file.",
|
|
13906
14024
|
(argv) => argv.option("config", {
|
|
13907
14025
|
string: true,
|
|
13908
|
-
|
|
14026
|
+
required: true
|
|
13909
14027
|
}).option("original-readme", {
|
|
13910
14028
|
string: true,
|
|
13911
|
-
|
|
14029
|
+
required: false
|
|
13912
14030
|
}).option("output", {
|
|
13913
14031
|
string: true,
|
|
13914
|
-
|
|
14032
|
+
required: false
|
|
13915
14033
|
}),
|
|
13916
14034
|
async (argv) => {
|
|
13917
14035
|
if (argv.config == null) {
|
|
@@ -13939,10 +14057,10 @@ void yargs_default(hideBin(process.argv)).scriptName(process.env.CLI_NAME ?? "ge
|
|
|
13939
14057
|
"Generate an SDK reference (`reference.md`) using the provided configuration file.",
|
|
13940
14058
|
(argv) => argv.option("config", {
|
|
13941
14059
|
string: true,
|
|
13942
|
-
|
|
14060
|
+
required: true
|
|
13943
14061
|
}).option("output", {
|
|
13944
14062
|
string: true,
|
|
13945
|
-
|
|
14063
|
+
required: false
|
|
13946
14064
|
}),
|
|
13947
14065
|
async (argv) => {
|
|
13948
14066
|
if (argv.config == null) {
|
|
@@ -14063,7 +14181,7 @@ async function createWriteStreamFromFile(filepath) {
|
|
|
14063
14181
|
if (!await doesPathExist(filepath)) {
|
|
14064
14182
|
await (0, import_promises6.mkdir)(import_path7.default.dirname(filepath), { recursive: true });
|
|
14065
14183
|
}
|
|
14066
|
-
return
|
|
14184
|
+
return import_fs6.default.createWriteStream(filepath);
|
|
14067
14185
|
}
|
|
14068
14186
|
/*! Bundled license information:
|
|
14069
14187
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fern-api/generator-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.32",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/cli.cjs",
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"test:update": "vitest -u --run --passWithNoTests --globals --disable-console-intercept"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"@octokit/rest": "^17.8.0",
|
|
27
28
|
"es-toolkit": "^1.32.0"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|