@fern-api/generator-cli 0.0.31 → 0.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.cjs +379 -242
  2. package/package.json +1 -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 fs2 = require("fs");
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: fs2.readFileSync,
202
- writeFile: fs2.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 fs2.statSync(file).isFile();
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 fs2 = require("fs");
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(fs2.readFileSync(path5, "utf8"));
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 fs2 = require("fs");
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
- fs2.readdirSync(path4).forEach(function(filename) {
2921
+ fs3.readdirSync(path4).forEach(function(filename) {
2922
2922
  var joined = join(path4, filename), files, key, obj;
2923
- if (fs2.statSync(joined).isDirectory() && options.recurse) {
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 fs2 = require("fs");
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: fs2.constants, os: os.constants };
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 = fs2.rmdirSync.bind(fs2);
4581
+ var FN_RMDIR_SYNC = fs3.rmdirSync.bind(fs3);
4582
4582
  var _gracefulCleanup = false;
4583
4583
  function rimraf(dirPath, callback) {
4584
- return fs2.rm(dirPath, { recursive: true }, callback);
4584
+ return fs3.rm(dirPath, { recursive: true }, callback);
4585
4585
  }
4586
4586
  function FN_RIMRAF_SYNC(dirPath) {
4587
- return fs2.rmSync(dirPath, { recursive: true });
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
- fs2.stat(name, function(err) {
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
- fs2.statSync(name);
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
- fs2.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err2, fd) {
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 fs2.close(fd, function _discardCallback(possibleErr) {
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 = fs2.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);
4647
+ var fd = fs3.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);
4648
4648
  if (opts.discardDescriptor) {
4649
- fs2.closeSync(fd);
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
- fs2.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err2) {
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
- fs2.mkdirSync(name, opts.mode || DIR_MODE);
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
- fs2.close(fdPath[0], function() {
4686
- fs2.unlink(fdPath[1], _handler);
4685
+ fs3.close(fdPath[0], function() {
4686
+ fs3.unlink(fdPath[1], _handler);
4687
4687
  });
4688
- else fs2.unlink(fdPath[1], _handler);
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]) fs2.closeSync(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
- fs2.unlinkSync(fdPath[1]);
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 : fs2.rmdir.bind(fs2);
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 import_fs5 = __toESM(require("fs"), 1);
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
 
@@ -12987,6 +12987,15 @@ var LanguageInfo = {
12987
12987
  }
12988
12988
  };
12989
12989
  },
12990
+ rust: (value) => {
12991
+ return {
12992
+ ...value,
12993
+ type: "rust",
12994
+ _visit: function(visitor) {
12995
+ return LanguageInfo._visit(this, visitor);
12996
+ }
12997
+ };
12998
+ },
12990
12999
  _visit: (value, visitor) => {
12991
13000
  switch (value.type) {
12992
13001
  case "typescript":
@@ -13003,6 +13012,8 @@ var LanguageInfo = {
13003
13012
  return visitor.csharp(value);
13004
13013
  case "php":
13005
13014
  return visitor.php(value);
13015
+ case "rust":
13016
+ return visitor.rust(value);
13006
13017
  default:
13007
13018
  return visitor._other(value);
13008
13019
  }
@@ -13024,6 +13035,7 @@ var Language = {
13024
13035
  Csharp: "CSHARP",
13025
13036
  Typescript: "TYPESCRIPT",
13026
13037
  Php: "PHP",
13038
+ Rust: "RUST",
13027
13039
  _visit: (value, visitor) => {
13028
13040
  switch (value) {
13029
13041
  case Language.Java:
@@ -13040,6 +13052,8 @@ var Language = {
13040
13052
  return visitor.typescript();
13041
13053
  case Language.Php:
13042
13054
  return visitor.php();
13055
+ case Language.Rust:
13056
+ return visitor.rust();
13043
13057
  default:
13044
13058
  return visitor._other();
13045
13059
  }
@@ -13047,17 +13061,18 @@ var Language = {
13047
13061
  };
13048
13062
 
13049
13063
  // src/utils/Writer.ts
13064
+ var import_fs5 = __toESM(require("fs"), 1);
13050
13065
  var Writer = class {
13051
- writeCodeBlock(language, content) {
13052
- this.writeLine("```" + language);
13053
- this.write(content);
13054
- this.writeLine("```");
13066
+ async writeCodeBlock(language, content) {
13067
+ await this.writeLine(`\`\`\`${language}`);
13068
+ await this.write(content);
13069
+ await this.writeLine("```");
13055
13070
  }
13056
- writeLine(content) {
13071
+ async writeLine(content) {
13057
13072
  if (content === void 0) {
13058
- this.write("\n");
13073
+ await this.write("\n");
13059
13074
  } else {
13060
- this.write(`${content}
13075
+ await this.write(`${content}
13061
13076
  `);
13062
13077
  }
13063
13078
  }
@@ -13068,11 +13083,57 @@ var StreamWriter = class extends Writer {
13068
13083
  this.stream = stream;
13069
13084
  this.stream = stream;
13070
13085
  }
13071
- write(content) {
13072
- this.stream.write(content);
13086
+ async write(content) {
13087
+ return new Promise((resolve7, reject) => {
13088
+ const handleError = (err) => {
13089
+ this.stream.removeListener("error", handleError);
13090
+ reject(err);
13091
+ };
13092
+ if (this.stream instanceof import_fs5.default.WriteStream) {
13093
+ const canWrite = this.stream.write(
13094
+ content,
13095
+ (error) => {
13096
+ this.stream.removeListener("error", handleError);
13097
+ if (error) {
13098
+ reject(error);
13099
+ } else {
13100
+ resolve7();
13101
+ }
13102
+ }
13103
+ );
13104
+ this.stream.once("error", handleError);
13105
+ if (!canWrite) {
13106
+ this.stream.once("drain", resolve7);
13107
+ }
13108
+ } else {
13109
+ const canWrite = this.stream.write(content);
13110
+ this.stream.once("error", handleError);
13111
+ if (!canWrite) {
13112
+ this.stream.once("drain", () => {
13113
+ this.stream.removeListener("error", handleError);
13114
+ resolve7();
13115
+ });
13116
+ } else {
13117
+ this.stream.removeListener("error", handleError);
13118
+ resolve7();
13119
+ }
13120
+ }
13121
+ });
13073
13122
  }
13074
13123
  end() {
13075
- this.stream.end();
13124
+ return new Promise((resolve7, reject) => {
13125
+ if (this.stream instanceof import_fs5.default.WriteStream) {
13126
+ this.stream.end(() => {
13127
+ resolve7();
13128
+ });
13129
+ this.stream.once("error", reject);
13130
+ this.stream.once("finish", resolve7);
13131
+ } else {
13132
+ this.stream.write("", () => {
13133
+ resolve7();
13134
+ });
13135
+ }
13136
+ });
13076
13137
  }
13077
13138
  };
13078
13139
  var StringWriter = class extends Writer {
@@ -13081,10 +13142,10 @@ var StringWriter = class extends Writer {
13081
13142
  super();
13082
13143
  this.content = "";
13083
13144
  }
13084
- write(content) {
13145
+ async write(content) {
13085
13146
  this.content += content;
13086
13147
  }
13087
- end() {
13148
+ async end() {
13088
13149
  return;
13089
13150
  }
13090
13151
  toString() {
@@ -13100,10 +13161,10 @@ var Block = class {
13100
13161
  this.id = id;
13101
13162
  this.content = content;
13102
13163
  }
13103
- write(writer) {
13104
- writer.write(this.content);
13164
+ async write(writer) {
13165
+ await writer.write(this.content);
13105
13166
  if (!this.content.endsWith("\n")) {
13106
- writer.writeLine();
13167
+ await writer.writeLine();
13107
13168
  }
13108
13169
  }
13109
13170
  };
@@ -13198,42 +13259,41 @@ var ReadmeGenerator = class {
13198
13259
  async generateReadme({
13199
13260
  output
13200
13261
  }) {
13201
- const blocks = this.generateBlocks();
13262
+ const blocks = await this.generateBlocks();
13202
13263
  const writer = new StreamWriter(output);
13203
- this.writeHeader({ writer });
13204
- this.writeBlocks({
13264
+ await this.writeHeader({ writer });
13265
+ await this.writeBlocks({
13205
13266
  writer,
13206
13267
  blocks: await this.mergeBlocks({ blocks })
13207
13268
  });
13208
- writer.end();
13209
- return;
13269
+ await writer.end();
13210
13270
  }
13211
- generateBlocks() {
13271
+ async generateBlocks() {
13212
13272
  const blocks = [];
13213
13273
  if (this.readmeConfig.apiReferenceLink != null) {
13214
13274
  blocks.push(
13215
- this.generateDocumentation({
13275
+ await this.generateDocumentation({
13216
13276
  docsLink: this.readmeConfig.apiReferenceLink
13217
13277
  })
13218
13278
  );
13219
13279
  }
13220
13280
  if (this.readmeConfig.requirements != null) {
13221
13281
  blocks.push(
13222
- this.generateRequirements({
13282
+ await this.generateRequirements({
13223
13283
  requirements: this.readmeConfig.requirements
13224
13284
  })
13225
13285
  );
13226
13286
  }
13227
13287
  if (this.readmeConfig.language?.publishInfo != null) {
13228
13288
  blocks.push(
13229
- this.generateInstallation({
13289
+ await this.generateInstallation({
13230
13290
  language: this.readmeConfig.language
13231
13291
  })
13232
13292
  );
13233
13293
  }
13234
13294
  if (this.readmeConfig.referenceMarkdownPath != null) {
13235
13295
  blocks.push(
13236
- this.generateReference({
13296
+ await this.generateReference({
13237
13297
  referenceFile: this.readmeConfig.referenceMarkdownPath
13238
13298
  })
13239
13299
  );
@@ -13245,12 +13305,12 @@ var ReadmeGenerator = class {
13245
13305
  continue;
13246
13306
  }
13247
13307
  blocks.push(
13248
- this.generateFeatureBlock({
13308
+ await this.generateFeatureBlock({
13249
13309
  feature
13250
13310
  })
13251
13311
  );
13252
13312
  }
13253
- const advancedFeatureBlock = this.generateNestedFeatureBlock({
13313
+ const advancedFeatureBlock = await this.generateNestedFeatureBlock({
13254
13314
  featureId: this.ADVANCED_FEATURE_ID,
13255
13315
  features: advancedFeatures
13256
13316
  });
@@ -13266,7 +13326,7 @@ var ReadmeGenerator = class {
13266
13326
  }
13267
13327
  return feat.advanced ?? false;
13268
13328
  }
13269
- generateNestedFeatureBlock({
13329
+ async generateNestedFeatureBlock({
13270
13330
  featureId,
13271
13331
  features
13272
13332
  }) {
@@ -13274,13 +13334,13 @@ var ReadmeGenerator = class {
13274
13334
  return void 0;
13275
13335
  }
13276
13336
  const writer = new StringWriter();
13277
- writer.writeLine(`## ${featureIDToTitle(featureId)}`);
13278
- writer.writeLine();
13337
+ await writer.writeLine(`## ${featureIDToTitle(featureId)}`);
13338
+ await writer.writeLine();
13279
13339
  for (const feature of features) {
13280
13340
  if (this.shouldSkipFeature({ feature })) {
13281
13341
  continue;
13282
13342
  }
13283
- this.generateFeatureBlock({
13343
+ await this.generateFeatureBlock({
13284
13344
  feature,
13285
13345
  heading: "###",
13286
13346
  maybeWriter: writer
@@ -13291,27 +13351,27 @@ var ReadmeGenerator = class {
13291
13351
  content: writer.toString()
13292
13352
  });
13293
13353
  }
13294
- generateFeatureBlock({
13354
+ async generateFeatureBlock({
13295
13355
  feature,
13296
13356
  heading = "##",
13297
13357
  maybeWriter
13298
13358
  }) {
13299
13359
  const writer = maybeWriter ?? new StringWriter();
13300
- writer.writeLine(`${heading} ${featureIDToTitle(feature.id)}`);
13301
- writer.writeLine();
13360
+ await writer.writeLine(`${heading} ${featureIDToTitle(feature.id)}`);
13361
+ await writer.writeLine();
13302
13362
  if (feature.description != null) {
13303
- writer.writeLine(feature.description);
13363
+ await writer.writeLine(feature.description);
13304
13364
  }
13305
- feature.snippets?.forEach((snippet, index) => {
13365
+ for (const [index, snippet] of feature.snippets?.entries() ?? []) {
13306
13366
  if (index > 0) {
13307
- writer.writeLine();
13367
+ await writer.writeLine();
13308
13368
  }
13309
- writer.writeCodeBlock(this.readmeConfig.language.type, snippet);
13310
- });
13369
+ await writer.writeCodeBlock(this.readmeConfig.language.type, snippet);
13370
+ }
13311
13371
  if (feature.addendum != null) {
13312
- writer.writeLine(feature.addendum);
13372
+ await writer.writeLine(feature.addendum);
13313
13373
  }
13314
- writer.writeLine();
13374
+ await writer.writeLine();
13315
13375
  return new Block({
13316
13376
  id: feature.id,
13317
13377
  content: writer.toString()
@@ -13344,154 +13404,162 @@ var ReadmeGenerator = class {
13344
13404
  }
13345
13405
  return void 0;
13346
13406
  }
13347
- writeBlocks({
13407
+ async writeBlocks({
13348
13408
  writer,
13349
13409
  blocks
13350
13410
  }) {
13351
13411
  for (const block of blocks) {
13352
- block.write(writer);
13412
+ await block.write(writer);
13353
13413
  }
13354
13414
  }
13355
- writeHeader({ writer }) {
13356
- writer.writeLine(
13415
+ async writeHeader({ writer }) {
13416
+ await writer.writeLine(
13357
13417
  `# ${this.organizationPascalCase} ${this.languageTitle} Library`
13358
13418
  );
13359
- writer.writeLine();
13419
+ await writer.writeLine();
13360
13420
  if (this.readmeConfig.bannerLink != null) {
13361
- this.writeBanner({
13421
+ await this.writeBanner({
13362
13422
  writer,
13363
13423
  bannerLink: this.readmeConfig.bannerLink
13364
13424
  });
13365
13425
  }
13366
- this.writeFernShield({ writer });
13426
+ await this.writeFernShield({ writer });
13367
13427
  if (this.readmeConfig.language != null) {
13368
- this.writeShield({
13428
+ await this.writeShield({
13369
13429
  writer,
13370
13430
  language: this.readmeConfig.language
13371
13431
  });
13372
13432
  }
13373
- writer.writeLine();
13374
- this.writeIntroudction({ writer });
13433
+ await writer.writeLine();
13434
+ await this.writeIntro({ writer });
13375
13435
  }
13376
- writeBanner({
13436
+ async writeBanner({
13377
13437
  writer,
13378
13438
  bannerLink
13379
13439
  }) {
13380
- writer.writeLine(`![](${bannerLink})`);
13381
- writer.writeLine();
13440
+ await writer.writeLine(`![](${bannerLink})`);
13441
+ await writer.writeLine();
13382
13442
  }
13383
- writeFernShield({ writer }) {
13443
+ async writeFernShield({ writer }) {
13384
13444
  const repoSource = this.readmeConfig.remote?.repoUrl ?? `${this.organizationPascalCase}/${this.languageTitle}`;
13385
- writer.writeLine(
13445
+ await writer.writeLine(
13386
13446
  `[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=${encodeURIComponent(repoSource)})`
13387
13447
  );
13388
13448
  }
13389
- writeIntroudction({ writer }) {
13390
- writer.writeLine(
13449
+ async writeIntro({ writer }) {
13450
+ await writer.writeLine(
13391
13451
  this.readmeConfig.introduction != null ? this.readmeConfig.introduction : `The ${this.organizationPascalCase} ${this.languageTitle} library provides convenient access to the ${this.organizationPascalCase} API from ${this.languageTitle}.`
13392
13452
  );
13393
- writer.writeLine();
13453
+ await writer.writeLine();
13394
13454
  }
13395
- generateDocumentation({ docsLink }) {
13455
+ async generateDocumentation({
13456
+ docsLink
13457
+ }) {
13396
13458
  const writer = new StringWriter();
13397
- writer.writeLine("## Documentation");
13398
- writer.writeLine();
13399
- writer.writeLine(
13459
+ await writer.writeLine("## Documentation");
13460
+ await writer.writeLine();
13461
+ await writer.writeLine(
13400
13462
  `API reference documentation is available [here](${docsLink}).`
13401
13463
  );
13402
- writer.writeLine();
13464
+ await writer.writeLine();
13403
13465
  return new Block({
13404
13466
  id: "DOCUMENTATION",
13405
13467
  content: writer.toString()
13406
13468
  });
13407
13469
  }
13408
- generateReference({
13470
+ async generateReference({
13409
13471
  referenceFile
13410
13472
  }) {
13411
13473
  const writer = new StringWriter();
13412
- writer.writeLine("## Reference");
13413
- writer.writeLine();
13414
- writer.writeLine(
13474
+ await writer.writeLine("## Reference");
13475
+ await writer.writeLine();
13476
+ await writer.writeLine(
13415
13477
  `A full reference for this library is available [here](${this.readmeConfig.remote?.repoUrl != null ? `${this.readmeConfig.remote.repoUrl}/blob/HEAD/${referenceFile}` : referenceFile}).`
13416
13478
  );
13417
- writer.writeLine();
13479
+ await writer.writeLine();
13418
13480
  return new Block({
13419
13481
  id: "REFERENCE",
13420
13482
  content: writer.toString()
13421
13483
  });
13422
13484
  }
13423
- generateRequirements({
13485
+ async generateRequirements({
13424
13486
  requirements
13425
13487
  }) {
13426
13488
  const writer = new StringWriter();
13427
- writer.writeLine("## Requirements");
13428
- writer.writeLine();
13489
+ await writer.writeLine("## Requirements");
13490
+ await writer.writeLine();
13429
13491
  if (requirements.length === 1) {
13430
- writer.writeLine(`This SDK requires ${requirements[0]}.`);
13492
+ await writer.writeLine(`This SDK requires ${requirements[0]}.`);
13431
13493
  } else {
13432
- writer.writeLine("This SDK requires:");
13494
+ await writer.writeLine("This SDK requires:");
13433
13495
  for (const requirement of requirements) {
13434
- writer.writeLine(`- ${requirement}`);
13496
+ await writer.writeLine(`- ${requirement}`);
13435
13497
  }
13436
13498
  }
13437
- writer.writeLine();
13499
+ await writer.writeLine();
13438
13500
  return new Block({
13439
13501
  id: "REQUIREMENTS",
13440
13502
  content: writer.toString()
13441
13503
  });
13442
13504
  }
13443
- generateInstallation({
13505
+ async generateInstallation({
13444
13506
  language
13445
13507
  }) {
13446
13508
  if (language.publishInfo == null) {
13447
13509
  throw new Error("publish information is required for installation block");
13448
13510
  }
13449
13511
  const writer = new StringWriter();
13450
- writer.writeLine("## Installation");
13451
- writer.writeLine();
13512
+ await writer.writeLine("## Installation");
13513
+ await writer.writeLine();
13452
13514
  switch (language.type) {
13453
13515
  case "typescript":
13454
- this.writeInstallationForNPM({
13516
+ await this.writeInstallationForNPM({
13455
13517
  writer,
13456
13518
  npm: language.publishInfo
13457
13519
  });
13458
13520
  break;
13459
13521
  case "python":
13460
- this.writeInstallationForPyPi({
13522
+ await this.writeInstallationForPyPi({
13461
13523
  writer,
13462
13524
  pypi: language.publishInfo
13463
13525
  });
13464
13526
  break;
13465
13527
  case "java":
13466
- this.writeInstallationForMaven({
13528
+ await this.writeInstallationForMaven({
13467
13529
  writer,
13468
13530
  maven: language.publishInfo
13469
13531
  });
13470
13532
  break;
13471
13533
  case "go":
13472
- this.writeInstallationForGo({
13534
+ await this.writeInstallationForGo({
13473
13535
  writer,
13474
13536
  go: language.publishInfo
13475
13537
  });
13476
13538
  break;
13477
13539
  case "ruby":
13478
- this.writeInstallationForRubyGems({
13540
+ await this.writeInstallationForRubyGems({
13479
13541
  writer,
13480
13542
  rubyGems: language.publishInfo
13481
13543
  });
13482
13544
  break;
13483
13545
  case "csharp":
13484
- this.writeInstallationForNuget({
13546
+ await this.writeInstallationForNuget({
13485
13547
  writer,
13486
13548
  nuget: language.publishInfo
13487
13549
  });
13488
13550
  break;
13489
13551
  case "php":
13490
- this.writeInstallationForComposer({
13552
+ await this.writeInstallationForComposer({
13491
13553
  writer,
13492
13554
  composer: language.publishInfo
13493
13555
  });
13494
13556
  break;
13557
+ case "rust":
13558
+ await this.writeInstallationForCargo({
13559
+ writer,
13560
+ cargo: language.publishInfo
13561
+ });
13562
+ break;
13495
13563
  default:
13496
13564
  assertNever(language);
13497
13565
  }
@@ -13500,93 +13568,120 @@ var ReadmeGenerator = class {
13500
13568
  content: writer.toString()
13501
13569
  });
13502
13570
  }
13503
- writeInstallationForNPM({
13571
+ async writeInstallationForNPM({
13504
13572
  writer,
13505
13573
  npm
13506
13574
  }) {
13507
- writer.writeLine("```sh");
13508
- writer.writeLine(`npm i -s ${npm.packageName}`);
13509
- writer.writeLine("```");
13510
- writer.writeLine();
13575
+ await writer.writeLine("```sh");
13576
+ await writer.writeLine(`npm i -s ${npm.packageName}`);
13577
+ await writer.writeLine("```");
13578
+ await writer.writeLine();
13511
13579
  }
13512
- writeInstallationForPyPi({
13580
+ async writeInstallationForPyPi({
13513
13581
  writer,
13514
13582
  pypi
13515
13583
  }) {
13516
- writer.writeLine("```sh");
13517
- writer.writeLine(`pip install ${pypi.packageName}`);
13518
- writer.writeLine("```");
13519
- writer.writeLine();
13584
+ await writer.writeLine("```sh");
13585
+ await writer.writeLine(`pip install ${pypi.packageName}`);
13586
+ await writer.writeLine("```");
13587
+ await writer.writeLine();
13520
13588
  }
13521
- writeInstallationForMaven({
13589
+ async writeInstallationForMaven({
13522
13590
  writer,
13523
13591
  maven
13524
13592
  }) {
13525
- writer.writeLine("### Gradle");
13526
- writer.writeLine();
13527
- writer.writeLine("Add the dependency in your `build.gradle` file:");
13528
- writer.writeLine();
13529
- writer.writeLine("```groovy");
13530
- writer.writeLine("dependencies {");
13531
- writer.writeLine(` implementation '${maven.group}:${maven.artifact}'`);
13532
- writer.writeLine("}");
13533
- writer.writeLine("```");
13534
- writer.writeLine();
13535
- writer.writeLine("### Maven");
13536
- writer.writeLine();
13537
- writer.writeLine("Add the dependency in your `pom.xml` file:");
13538
- writer.writeLine();
13539
- writer.writeLine("```xml");
13540
- writer.writeLine("<dependency>");
13541
- writer.writeLine(` <groupId>${maven.group}</groupId>`);
13542
- writer.writeLine(` <artifactId>${maven.artifact}</artifactId>`);
13543
- writer.writeLine(` <version>${maven.version}</version>`);
13544
- writer.writeLine("</dependency>");
13545
- writer.writeLine("```");
13546
- writer.writeLine();
13547
- }
13548
- writeInstallationForGo({
13593
+ await writer.writeLine("### Gradle");
13594
+ await writer.writeLine();
13595
+ await writer.writeLine("Add the dependency in your `build.gradle` file:");
13596
+ await writer.writeLine();
13597
+ await writer.writeLine("```groovy");
13598
+ await writer.writeLine("dependencies {");
13599
+ await writer.writeLine(
13600
+ ` implementation '${maven.group}:${maven.artifact}'`
13601
+ );
13602
+ await writer.writeLine("}");
13603
+ await writer.writeLine("```");
13604
+ await writer.writeLine();
13605
+ await writer.writeLine("### Maven");
13606
+ await writer.writeLine();
13607
+ await writer.writeLine("Add the dependency in your `pom.xml` file:");
13608
+ await writer.writeLine();
13609
+ await writer.writeLine("```xml");
13610
+ await writer.writeLine("<dependency>");
13611
+ await writer.writeLine(` <groupId>${maven.group}</groupId>`);
13612
+ await writer.writeLine(` <artifactId>${maven.artifact}</artifactId>`);
13613
+ await writer.writeLine(` <version>${maven.version}</version>`);
13614
+ await writer.writeLine("</dependency>");
13615
+ await writer.writeLine("```");
13616
+ await writer.writeLine();
13617
+ }
13618
+ async writeInstallationForGo({
13549
13619
  writer,
13550
13620
  go
13551
13621
  }) {
13552
- writer.writeLine("```sh");
13553
- writer.write(`go get github.com/${go.owner}/${go.repo}`);
13622
+ await writer.writeLine("```sh");
13623
+ await writer.write(`go get github.com/${go.owner}/${go.repo}`);
13554
13624
  const majorVersion = getMajorVersion(go.version);
13555
13625
  if (!majorVersion.startsWith("0") && !majorVersion.startsWith("1")) {
13556
- writer.write(`/v${majorVersion}`);
13626
+ await writer.write(`/v${majorVersion}`);
13557
13627
  }
13558
- writer.writeLine();
13559
- writer.writeLine("```");
13560
- writer.writeLine();
13628
+ await writer.writeLine();
13629
+ await writer.writeLine("```");
13630
+ await writer.writeLine();
13561
13631
  }
13562
- writeInstallationForRubyGems({
13632
+ async writeInstallationForRubyGems({
13563
13633
  writer,
13564
13634
  rubyGems
13565
13635
  }) {
13566
- writer.writeLine("```sh");
13567
- writer.writeLine(`gem install ${rubyGems.packageName}`);
13568
- writer.writeLine("```");
13569
- writer.writeLine();
13636
+ await writer.writeLine("```sh");
13637
+ await writer.writeLine(`gem install ${rubyGems.packageName}`);
13638
+ await writer.writeLine("```");
13639
+ await writer.writeLine();
13570
13640
  }
13571
- writeInstallationForNuget({
13641
+ async writeInstallationForNuget({
13572
13642
  writer,
13573
13643
  nuget
13574
13644
  }) {
13575
- writer.writeLine("```sh");
13576
- writer.writeLine(`dotnet add package ${nuget.packageName}`);
13577
- writer.writeLine("```");
13578
- writer.writeLine();
13645
+ await writer.writeLine("```sh");
13646
+ await writer.writeLine(`dotnet add package ${nuget.packageName}`);
13647
+ await writer.writeLine("```");
13648
+ await writer.writeLine();
13579
13649
  }
13580
- writeInstallationForComposer({
13650
+ async writeInstallationForComposer({
13581
13651
  writer,
13582
13652
  composer
13583
13653
  }) {
13584
- writer.writeLine("```sh");
13585
- writer.writeLine(`composer require ${composer.packageName}`);
13586
- writer.writeLine("```");
13587
- writer.writeLine();
13654
+ await writer.writeLine("```sh");
13655
+ await writer.writeLine(`composer require ${composer.packageName}`);
13656
+ await writer.writeLine("```");
13657
+ await writer.writeLine();
13588
13658
  }
13589
- writeShield({
13659
+ async writeInstallationForCargo({
13660
+ writer,
13661
+ cargo
13662
+ }) {
13663
+ await writer.writeLine("Add this to your `Cargo.toml`:");
13664
+ await writer.writeLine();
13665
+ await writer.writeLine("```toml");
13666
+ await writer.writeLine("[dependencies]");
13667
+ await writer.writeLine(
13668
+ `${this.getCrateNameFromPackageName(cargo.packageName)} = "${cargo.version}"`
13669
+ );
13670
+ await writer.writeLine("```");
13671
+ await writer.writeLine();
13672
+ await writer.writeLine("Or install via cargo:");
13673
+ await writer.writeLine();
13674
+ await writer.writeLine("```sh");
13675
+ await writer.writeLine(
13676
+ `cargo add ${this.getCrateNameFromPackageName(cargo.packageName)}`
13677
+ );
13678
+ await writer.writeLine("```");
13679
+ await writer.writeLine();
13680
+ }
13681
+ getCrateNameFromPackageName(packageName) {
13682
+ return packageName.includes("/") ? packageName.split("/").pop() ?? packageName : packageName;
13683
+ }
13684
+ async writeShield({
13590
13685
  writer,
13591
13686
  language
13592
13687
  }) {
@@ -13596,7 +13691,7 @@ var ReadmeGenerator = class {
13596
13691
  if (npm == null) {
13597
13692
  return;
13598
13693
  }
13599
- this.writeShieldForNPM({
13694
+ await this.writeShieldForNPM({
13600
13695
  writer,
13601
13696
  npm
13602
13697
  });
@@ -13607,7 +13702,7 @@ var ReadmeGenerator = class {
13607
13702
  if (pypi == null) {
13608
13703
  return;
13609
13704
  }
13610
- this.writeShieldForPyPi({
13705
+ await this.writeShieldForPyPi({
13611
13706
  writer,
13612
13707
  pypi
13613
13708
  });
@@ -13618,7 +13713,7 @@ var ReadmeGenerator = class {
13618
13713
  if (maven == null) {
13619
13714
  return;
13620
13715
  }
13621
- this.writeShieldForMaven({
13716
+ await this.writeShieldForMaven({
13622
13717
  writer,
13623
13718
  maven
13624
13719
  });
@@ -13629,7 +13724,7 @@ var ReadmeGenerator = class {
13629
13724
  if (go == null) {
13630
13725
  return;
13631
13726
  }
13632
- this.writeShieldForGo({
13727
+ await this.writeShieldForGo({
13633
13728
  writer,
13634
13729
  go
13635
13730
  });
@@ -13640,7 +13735,7 @@ var ReadmeGenerator = class {
13640
13735
  if (rubyGems == null) {
13641
13736
  return;
13642
13737
  }
13643
- this.writeShieldForRubyGems({
13738
+ await this.writeShieldForRubyGems({
13644
13739
  writer,
13645
13740
  rubyGems
13646
13741
  });
@@ -13651,7 +13746,7 @@ var ReadmeGenerator = class {
13651
13746
  if (nuget == null) {
13652
13747
  return;
13653
13748
  }
13654
- this.writeShieldForNuget({
13749
+ await this.writeShieldForNuget({
13655
13750
  writer,
13656
13751
  nuget
13657
13752
  });
@@ -13662,78 +13757,113 @@ var ReadmeGenerator = class {
13662
13757
  if (composer == null) {
13663
13758
  return;
13664
13759
  }
13665
- this.writeShieldForComposer({
13760
+ await this.writeShieldForComposer({
13666
13761
  writer,
13667
13762
  composer
13668
13763
  });
13669
13764
  return;
13670
13765
  }
13766
+ case "rust": {
13767
+ const cargo = language.publishInfo;
13768
+ if (cargo == null) {
13769
+ return;
13770
+ }
13771
+ await this.writeShieldForCargo({
13772
+ writer,
13773
+ cargo
13774
+ });
13775
+ return;
13776
+ }
13671
13777
  default:
13672
13778
  assertNever(language);
13673
13779
  }
13674
13780
  }
13675
- writeShieldForNPM({
13781
+ async writeShieldForNPM({
13676
13782
  writer,
13677
13783
  npm
13678
13784
  }) {
13679
- writer.write("[![npm shield]");
13680
- writer.write(`(https://img.shields.io/npm/v/${npm.packageName})]`);
13681
- writer.writeLine(`(https://www.npmjs.com/package/${npm.packageName})`);
13785
+ await writer.write("[![npm shield]");
13786
+ await writer.write(`(https://img.shields.io/npm/v/${npm.packageName})]`);
13787
+ await writer.writeLine(
13788
+ `(https://www.npmjs.com/package/${npm.packageName})`
13789
+ );
13682
13790
  }
13683
- writeShieldForPyPi({
13791
+ async writeShieldForPyPi({
13684
13792
  writer,
13685
13793
  pypi
13686
13794
  }) {
13687
- writer.write("[![pypi]");
13688
- writer.write(`(https://img.shields.io/pypi/v/${pypi.packageName})]`);
13689
- writer.writeLine(`(https://pypi.python.org/pypi/${pypi.packageName})`);
13795
+ await writer.write("[![pypi]");
13796
+ await writer.write(`(https://img.shields.io/pypi/v/${pypi.packageName})]`);
13797
+ await writer.writeLine(
13798
+ `(https://pypi.python.org/pypi/${pypi.packageName})`
13799
+ );
13690
13800
  }
13691
- writeShieldForMaven({
13801
+ async writeShieldForMaven({
13692
13802
  writer,
13693
13803
  maven
13694
13804
  }) {
13695
- writer.write("[![Maven Central]");
13696
- writer.write(
13805
+ await writer.write("[![Maven Central]");
13806
+ await writer.write(
13697
13807
  `(https://img.shields.io/maven-central/v/${maven.group}/${maven.artifact})]`
13698
13808
  );
13699
- writer.writeLine(
13809
+ await writer.writeLine(
13700
13810
  `(https://central.sonatype.com/artifact/${maven.group}/${maven.artifact})`
13701
13811
  );
13702
13812
  }
13703
- writeShieldForGo({
13813
+ async writeShieldForGo({
13704
13814
  writer,
13705
13815
  go
13706
13816
  }) {
13707
- writer.write("[![go shield]");
13708
- writer.write("(https://img.shields.io/badge/go-docs-blue)]");
13709
- writer.writeLine(`(https://pkg.go.dev/github.com/${go.owner}/${go.repo})`);
13817
+ await writer.write("[![go shield]");
13818
+ await writer.write("(https://img.shields.io/badge/go-docs-blue)]");
13819
+ await writer.writeLine(
13820
+ `(https://pkg.go.dev/github.com/${go.owner}/${go.repo})`
13821
+ );
13710
13822
  }
13711
- writeShieldForRubyGems({
13823
+ async writeShieldForRubyGems({
13712
13824
  writer,
13713
13825
  rubyGems
13714
13826
  }) {
13715
- writer.write("[![gems shield]");
13716
- writer.write(`(https://img.shields.io/gem/v/${rubyGems.packageName})]`);
13717
- writer.writeLine(`(https://rubygems.org/gems/${rubyGems.packageName})`);
13827
+ await writer.write("[![gems shield]");
13828
+ await writer.write(
13829
+ `(https://img.shields.io/gem/v/${rubyGems.packageName})]`
13830
+ );
13831
+ await writer.writeLine(
13832
+ `(https://rubygems.org/gems/${rubyGems.packageName})`
13833
+ );
13718
13834
  }
13719
- writeShieldForNuget({
13835
+ async writeShieldForNuget({
13720
13836
  writer,
13721
13837
  nuget
13722
13838
  }) {
13723
- writer.write("[![nuget shield]");
13724
- writer.write(`(https://img.shields.io/nuget/v/${nuget.packageName})]`);
13725
- writer.writeLine(`(https://nuget.org/packages/${nuget.packageName})`);
13839
+ await writer.write("[![nuget shield]");
13840
+ await writer.write(
13841
+ `(https://img.shields.io/nuget/v/${nuget.packageName})]`
13842
+ );
13843
+ await writer.writeLine(`(https://nuget.org/packages/${nuget.packageName})`);
13726
13844
  }
13727
- writeShieldForComposer({
13845
+ async writeShieldForComposer({
13728
13846
  writer,
13729
13847
  composer
13730
13848
  }) {
13731
- writer.write("[![php shield]");
13732
- writer.write("(https://img.shields.io/badge/php-packagist-pink)]");
13733
- writer.writeLine(
13849
+ await writer.write("[![php shield]");
13850
+ await writer.write("(https://img.shields.io/badge/php-packagist-pink)]");
13851
+ await writer.writeLine(
13734
13852
  `(https://packagist.org/packages/${composer.packageName})`
13735
13853
  );
13736
13854
  }
13855
+ async writeShieldForCargo({
13856
+ writer,
13857
+ cargo
13858
+ }) {
13859
+ await writer.write("[![crates.io shield]");
13860
+ await writer.write(
13861
+ `(https://img.shields.io/crates/v/${this.getCrateNameFromPackageName(cargo.packageName)})]`
13862
+ );
13863
+ await writer.writeLine(
13864
+ `(https://crates.io/crates/${this.getCrateNameFromPackageName(cargo.packageName)})`
13865
+ );
13866
+ }
13737
13867
  generateContributing() {
13738
13868
  return new Block({
13739
13869
  id: "CONTRIBUTING",
@@ -13776,6 +13906,8 @@ function languageToTitle(language) {
13776
13906
  return "C#";
13777
13907
  case "php":
13778
13908
  return "PHP";
13909
+ case "rust":
13910
+ return "Rust";
13779
13911
  default:
13780
13912
  assertNever(language);
13781
13913
  }
@@ -13790,7 +13922,7 @@ function getMajorVersion(version) {
13790
13922
  return version.split(".")[0] ?? "0";
13791
13923
  }
13792
13924
  function assertNever(x) {
13793
- throw new Error("unexpected value: " + JSON.stringify(x));
13925
+ throw new Error(`unexpected value: ${JSON.stringify(x)}`);
13794
13926
  }
13795
13927
 
13796
13928
  // src/readme/ReadmeParser.ts
@@ -13816,7 +13948,8 @@ var ReadmeParser = class {
13816
13948
  header += line;
13817
13949
  continue;
13818
13950
  }
13819
- currentBlock.content += line + "\n";
13951
+ currentBlock.content += `${line}
13952
+ `;
13820
13953
  }
13821
13954
  if (currentBlock) {
13822
13955
  blocks.push(currentBlock);
@@ -13846,73 +13979,77 @@ var ReferenceGenerator = class {
13846
13979
  }) {
13847
13980
  this.referenceConfig = referenceConfig;
13848
13981
  }
13849
- async generate({ output }) {
13982
+ async generate({
13983
+ output
13984
+ }) {
13850
13985
  const writer = new StreamWriter(output);
13851
- writer.writeLine("# Reference");
13986
+ await writer.writeLine("# Reference");
13852
13987
  if (this.referenceConfig.rootSection != null) {
13853
- this.writeRootSection({
13988
+ await this.writeRootSection({
13854
13989
  section: this.referenceConfig.rootSection,
13855
13990
  writer
13856
13991
  });
13857
13992
  }
13858
13993
  for (const section of this.referenceConfig.sections) {
13859
- this.writeSection({ section, writer });
13994
+ await this.writeSection({ section, writer });
13860
13995
  }
13861
- writer.end();
13996
+ await writer.end();
13862
13997
  }
13863
- writeRootSection({
13998
+ async writeRootSection({
13864
13999
  section,
13865
14000
  writer
13866
14001
  }) {
13867
14002
  if (section.description != null) {
13868
- writer.writeLine(section.description);
14003
+ await writer.writeLine(section.description);
13869
14004
  }
13870
14005
  for (const endpoint of section.endpoints) {
13871
- this.writeEndpoint({ endpoint, writer });
14006
+ await this.writeEndpoint({ endpoint, writer });
13872
14007
  }
13873
14008
  }
13874
- writeSection({
14009
+ async writeSection({
13875
14010
  section,
13876
14011
  writer
13877
14012
  }) {
13878
- writer.writeLine(`## ${section.title}`);
14013
+ await writer.writeLine(`## ${section.title}`);
13879
14014
  if (section.description != null) {
13880
- writer.writeLine(section.description);
14015
+ await writer.writeLine(section.description);
13881
14016
  }
13882
14017
  for (const endpoint of section.endpoints) {
13883
- this.writeEndpoint({ endpoint, writer });
14018
+ await this.writeEndpoint({ endpoint, writer });
13884
14019
  }
13885
14020
  }
13886
- writeEndpoint({
14021
+ async writeEndpoint({
13887
14022
  endpoint,
13888
14023
  writer
13889
14024
  }) {
13890
14025
  const stringWriter = new StringWriter();
13891
14026
  if (endpoint.description != null) {
13892
- stringWriter.writeLine(
14027
+ await stringWriter.writeLine(
13893
14028
  `#### \u{1F4DD} Description
13894
14029
 
13895
- ${this.writeIndentedBlock(this.writeIndentedBlock(endpoint.description))}
14030
+ ${this.generateIndentedBlock(this.generateIndentedBlock(endpoint.description))}
13896
14031
  `
13897
14032
  );
13898
14033
  }
13899
- stringWriter.writeLine(
14034
+ await stringWriter.writeLine(
13900
14035
  `#### \u{1F50C} Usage
13901
14036
 
13902
- ${this.writeIndentedBlock(
13903
- this.writeIndentedBlock(
13904
- "```" + this.referenceConfig.language.toLowerCase() + "\n" + endpoint.snippet + "\n```"
14037
+ ${this.generateIndentedBlock(
14038
+ this.generateIndentedBlock(
14039
+ `\`\`\`${this.referenceConfig.language.toLowerCase()}
14040
+ ${endpoint.snippet}
14041
+ \`\`\``
13905
14042
  )
13906
14043
  )}
13907
14044
  `
13908
14045
  );
13909
14046
  if (endpoint.parameters.length > 0) {
13910
- stringWriter.writeLine(
14047
+ await stringWriter.writeLine(
13911
14048
  `#### \u2699\uFE0F Parameters
13912
14049
 
13913
- ${this.writeIndentedBlock(
14050
+ ${this.generateIndentedBlock(
13914
14051
  endpoint.parameters.map(
13915
- (parameter) => this.writeIndentedBlock(this.writeParameter(parameter))
14052
+ (parameter) => this.generateIndentedBlock(this.generateParameter(parameter))
13916
14053
  ).join("\n\n")
13917
14054
  )}
13918
14055
  `
@@ -13922,19 +14059,19 @@ ${this.writeIndentedBlock(
13922
14059
  if (endpoint.title.returnValue != null) {
13923
14060
  linkedSnippet += ` -> ${this.wrapInLink(endpoint.title.returnValue.text, endpoint.title.returnValue.location)}`;
13924
14061
  }
13925
- writer.writeLine(
14062
+ await writer.writeLine(
13926
14063
  `<details><summary><code>${linkedSnippet}</code></summary>`
13927
14064
  );
13928
- writer.writeLine(this.writeIndentedBlock(stringWriter.toString()));
13929
- writer.writeLine("</details>\n");
14065
+ await writer.writeLine(this.generateIndentedBlock(stringWriter.toString()));
14066
+ await writer.writeLine("</details>\n");
13930
14067
  }
13931
- writeParameter(parameter) {
14068
+ generateParameter(parameter) {
13932
14069
  const desc = parameter.description?.match(/[^\r\n]+/g)?.length;
13933
14070
  const containsLineBreak = desc != null && desc > 1;
13934
14071
  return `**${parameter.name}:** \`${this.wrapInLink(parameter.type, parameter.location)}\` ${parameter.description != null ? (containsLineBreak ? "\n\n" : "\u2014 ") + parameter.description : ""}
13935
14072
  `;
13936
14073
  }
13937
- writeIndentedBlock(content) {
14074
+ generateIndentedBlock(content) {
13938
14075
  return `<dl>
13939
14076
  <dd>
13940
14077
 
@@ -13956,13 +14093,13 @@ void yargs_default(hideBin(process.argv)).scriptName(process.env.CLI_NAME ?? "ge
13956
14093
  "Generate a README.md using the provided configuration file.",
13957
14094
  (argv) => argv.option("config", {
13958
14095
  string: true,
13959
- requred: true
14096
+ required: true
13960
14097
  }).option("original-readme", {
13961
14098
  string: true,
13962
- requred: false
14099
+ required: false
13963
14100
  }).option("output", {
13964
14101
  string: true,
13965
- requred: false
14102
+ required: false
13966
14103
  }),
13967
14104
  async (argv) => {
13968
14105
  if (argv.config == null) {
@@ -13990,10 +14127,10 @@ void yargs_default(hideBin(process.argv)).scriptName(process.env.CLI_NAME ?? "ge
13990
14127
  "Generate an SDK reference (`reference.md`) using the provided configuration file.",
13991
14128
  (argv) => argv.option("config", {
13992
14129
  string: true,
13993
- requred: true
14130
+ required: true
13994
14131
  }).option("output", {
13995
14132
  string: true,
13996
- requred: false
14133
+ required: false
13997
14134
  }),
13998
14135
  async (argv) => {
13999
14136
  if (argv.config == null) {
@@ -14114,7 +14251,7 @@ async function createWriteStreamFromFile(filepath) {
14114
14251
  if (!await doesPathExist(filepath)) {
14115
14252
  await (0, import_promises6.mkdir)(import_path7.default.dirname(filepath), { recursive: true });
14116
14253
  }
14117
- return import_fs5.default.createWriteStream(filepath);
14254
+ return import_fs6.default.createWriteStream(filepath);
14118
14255
  }
14119
14256
  /*! Bundled license information:
14120
14257
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fern-api/generator-cli",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
4
4
  "type": "module",
5
5
  "main": "dist/cli.cjs",
6
6
  "source": "src/index.ts",