@cparra/apexdocs 3.17.0 → 3.17.1-beta.0

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.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var logger$1 = require('../logger-Cr1iCXZc.js');
4
+ var Apexdocs = require('../Apexdocs-ChhmlY0h.js');
5
5
  var cosmiconfig = require('cosmiconfig');
6
6
  var yargs = require('yargs');
7
7
  var E = require('fp-ts/Either');
@@ -24,9 +24,9 @@ require('fp-ts/boolean');
24
24
  require('fp-ts/Array');
25
25
  require('fs');
26
26
  require('fp-ts/lib/TaskEither');
27
+ require('chalk');
27
28
  require('minimatch');
28
29
  require('@salesforce/source-deploy-retrieve');
29
- require('chalk');
30
30
 
31
31
  function _interopNamespaceDefault(e) {
32
32
  var n = Object.create(null);
@@ -79,42 +79,42 @@ const markdownOptions = {
79
79
  targetDir: {
80
80
  type: "string",
81
81
  alias: "t",
82
- default: logger$1.markdownDefaults.targetDir,
82
+ default: Apexdocs.markdownDefaults.targetDir,
83
83
  describe: "The directory location where documentation will be generated to."
84
84
  },
85
85
  scope: {
86
86
  type: "string",
87
87
  array: true,
88
88
  alias: "p",
89
- default: logger$1.markdownDefaults.scope,
89
+ default: Apexdocs.markdownDefaults.scope,
90
90
  describe: "A list of scopes to document. Values should be separated by a space, e.g --scope global public namespaceaccessible. Annotations are supported and should be passed lowercased and without the @ symbol, e.g. namespaceaccessible auraenabled."
91
91
  },
92
92
  customObjectVisibility: {
93
93
  type: "string",
94
94
  array: true,
95
95
  alias: "v",
96
- default: logger$1.markdownDefaults.customObjectVisibility,
96
+ default: Apexdocs.markdownDefaults.customObjectVisibility,
97
97
  choices: ["public", "protected", "packageprotected"],
98
98
  describe: "Controls which custom objects are documented. Values should be separated by a space."
99
99
  },
100
100
  defaultGroupName: {
101
101
  type: "string",
102
- default: logger$1.markdownDefaults.defaultGroupName,
102
+ default: Apexdocs.markdownDefaults.defaultGroupName,
103
103
  describe: "Defines the @group name to be used when a file does not specify it."
104
104
  },
105
105
  customObjectsGroupName: {
106
106
  type: "string",
107
- default: logger$1.markdownDefaults.customObjectsGroupName,
107
+ default: Apexdocs.markdownDefaults.customObjectsGroupName,
108
108
  describe: "The name under which custom objects will be grouped in the Reference Guide"
109
109
  },
110
110
  triggersGroupName: {
111
111
  type: "string",
112
- default: logger$1.markdownDefaults.triggersGroupName,
112
+ default: Apexdocs.markdownDefaults.triggersGroupName,
113
113
  describe: "The name under which triggers will be grouped in the Reference Guide"
114
114
  },
115
115
  lwcGroupName: {
116
116
  type: "string",
117
- default: logger$1.markdownDefaults.lwcGroupName,
117
+ default: Apexdocs.markdownDefaults.lwcGroupName,
118
118
  describe: "The name under which Lightning Web Components will be grouped in the Reference Guide"
119
119
  },
120
120
  namespace: {
@@ -124,28 +124,28 @@ const markdownOptions = {
124
124
  sortAlphabetically: {
125
125
  type: "boolean",
126
126
  describe: "Whether to sort files and members alphabetically.",
127
- default: logger$1.markdownDefaults.sortAlphabetically
127
+ default: Apexdocs.markdownDefaults.sortAlphabetically
128
128
  },
129
129
  includeMetadata: {
130
130
  type: "boolean",
131
131
  describe: "Whether to include the file's meta.xml information: Whether it is active and and the API version",
132
- default: logger$1.markdownDefaults.includeMetadata
132
+ default: Apexdocs.markdownDefaults.includeMetadata
133
133
  },
134
134
  linkingStrategy: {
135
135
  type: "string",
136
136
  describe: "The strategy to use when linking to other documentation pages.",
137
137
  choices: ["relative", "no-link", "none"],
138
- default: logger$1.markdownDefaults.linkingStrategy
138
+ default: Apexdocs.markdownDefaults.linkingStrategy
139
139
  },
140
140
  referenceGuideTitle: {
141
141
  type: "string",
142
142
  describe: "The title of the reference guide.",
143
- default: logger$1.markdownDefaults.referenceGuideTitle
143
+ default: Apexdocs.markdownDefaults.referenceGuideTitle
144
144
  },
145
145
  includeFieldSecurityMetadata: {
146
146
  type: "boolean",
147
147
  describe: "Whether to include the compliance category and security classification for fields in the generated files.",
148
- default: logger$1.markdownDefaults.includeFieldSecurityMetadata
148
+ default: Apexdocs.markdownDefaults.includeFieldSecurityMetadata
149
149
  },
150
150
  includeInlineHelpTextMetadata: {
151
151
  type: "boolean",
@@ -154,17 +154,17 @@ const markdownOptions = {
154
154
  experimentalLwcSupport: {
155
155
  type: "boolean",
156
156
  describe: "Enable experimental support for documenting Lightning Web Components (LWC).",
157
- default: logger$1.markdownDefaults.experimentalLwcSupport
157
+ default: Apexdocs.markdownDefaults.experimentalLwcSupport
158
158
  },
159
159
  parallelReflection: {
160
160
  type: "boolean",
161
161
  describe: "Parallelize CPU-heavy reflection via worker threads.",
162
- default: logger$1.markdownDefaults.parallelReflection
162
+ default: Apexdocs.markdownDefaults.parallelReflection
163
163
  },
164
164
  parallelReflectionMaxWorkers: {
165
165
  type: "number",
166
166
  describe: "Maximum number of worker threads to use for parallel reflection. Defaults to a reasonable value based on CPU count.",
167
- default: logger$1.markdownDefaults.parallelReflectionMaxWorkers
167
+ default: Apexdocs.markdownDefaults.parallelReflectionMaxWorkers
168
168
  }
169
169
  };
170
170
 
@@ -200,12 +200,12 @@ const openApiOptions = {
200
200
  targetDir: {
201
201
  type: "string",
202
202
  alias: "t",
203
- default: logger$1.openApiDefaults.targetDir,
203
+ default: Apexdocs.openApiDefaults.targetDir,
204
204
  describe: "The directory location where the OpenApi file will be generated."
205
205
  },
206
206
  fileName: {
207
207
  type: "string",
208
- default: logger$1.openApiDefaults.fileName,
208
+ default: Apexdocs.openApiDefaults.fileName,
209
209
  describe: "The name of the OpenApi file to be generated."
210
210
  },
211
211
  namespace: {
@@ -214,23 +214,23 @@ const openApiOptions = {
214
214
  },
215
215
  title: {
216
216
  type: "string",
217
- default: logger$1.openApiDefaults.title,
217
+ default: Apexdocs.openApiDefaults.title,
218
218
  describe: "The title of the OpenApi file."
219
219
  },
220
220
  apiVersion: {
221
221
  type: "string",
222
- default: logger$1.openApiDefaults.apiVersion,
222
+ default: Apexdocs.openApiDefaults.apiVersion,
223
223
  describe: "The version of the OpenApi file."
224
224
  },
225
225
  parallelReflection: {
226
226
  type: "boolean",
227
227
  describe: "Parallelize CPU-heavy reflection via worker threads.",
228
- default: logger$1.openApiDefaults.parallelReflection
228
+ default: Apexdocs.openApiDefaults.parallelReflection
229
229
  },
230
230
  parallelReflectionMaxWorkers: {
231
231
  type: "number",
232
232
  describe: "Maximum number of worker threads to use for parallel reflection. Defaults to a reasonable value based on CPU count.",
233
- default: logger$1.openApiDefaults.parallelReflectionMaxWorkers
233
+ default: Apexdocs.openApiDefaults.parallelReflectionMaxWorkers
234
234
  }
235
235
  };
236
236
 
@@ -249,12 +249,12 @@ const changeLogOptions = {
249
249
  parallelReflection: {
250
250
  type: "boolean",
251
251
  describe: "Parallelize CPU-heavy reflection via worker threads.",
252
- default: logger$1.markdownDefaults.parallelReflection
252
+ default: Apexdocs.markdownDefaults.parallelReflection
253
253
  },
254
254
  parallelReflectionMaxWorkers: {
255
255
  type: "number",
256
256
  describe: "Maximum number of worker threads to use for parallel reflection. Defaults to a reasonable value based on CPU count.",
257
- default: logger$1.markdownDefaults.parallelReflectionMaxWorkers
257
+ default: Apexdocs.markdownDefaults.parallelReflectionMaxWorkers
258
258
  },
259
259
  previousVersionDir: {
260
260
  type: "string",
@@ -273,32 +273,32 @@ const changeLogOptions = {
273
273
  targetDir: {
274
274
  type: "string",
275
275
  alias: "t",
276
- default: logger$1.changeLogDefaults.targetDir,
276
+ default: Apexdocs.changeLogDefaults.targetDir,
277
277
  describe: "The directory location where the changelog file will be generated."
278
278
  },
279
279
  fileName: {
280
280
  type: "string",
281
- default: logger$1.changeLogDefaults.fileName,
281
+ default: Apexdocs.changeLogDefaults.fileName,
282
282
  describe: "The name of the changelog file to be generated."
283
283
  },
284
284
  scope: {
285
285
  type: "string",
286
286
  array: true,
287
287
  alias: "s",
288
- default: logger$1.changeLogDefaults.scope,
288
+ default: Apexdocs.changeLogDefaults.scope,
289
289
  describe: "The list of scope to respect when generating the changelog. Values should be separated by a space, e.g --scope global public namespaceaccessible. Annotations are supported and should be passed lowercased and without the @ symbol, e.g. namespaceaccessible auraenabled."
290
290
  },
291
291
  customObjectVisibility: {
292
292
  type: "string",
293
293
  array: true,
294
294
  alias: "v",
295
- default: logger$1.changeLogDefaults.customObjectVisibility,
295
+ default: Apexdocs.changeLogDefaults.customObjectVisibility,
296
296
  choices: ["public", "protected", "packageprotected"],
297
297
  describe: "Controls which custom objects are documented. Values should be separated by a space."
298
298
  },
299
299
  skipIfNoChanges: {
300
300
  type: "boolean",
301
- default: logger$1.changeLogDefaults.skipIfNoChanges,
301
+ default: Apexdocs.changeLogDefaults.skipIfNoChanges,
302
302
  describe: "Skip the changelog generation if there are no changes between the previous and current version."
303
303
  }
304
304
  };
@@ -342,6 +342,14 @@ var __async$1 = (__this, __arguments, generator) => {
342
342
  step((generator = generator.apply(__this, __arguments)).next());
343
343
  });
344
344
  };
345
+ const globalOptions = {
346
+ debug: {
347
+ type: "boolean",
348
+ demandOption: false,
349
+ default: false,
350
+ describe: "Enable debug logging."
351
+ }
352
+ };
345
353
  const configOnlyMarkdownDefaults = {
346
354
  targetGenerator: "markdown",
347
355
  excludeTags: [],
@@ -398,13 +406,13 @@ function extractArgsForCommandProvidedThroughCli(extractFromProcessFn, config) {
398
406
  switch (mergedConfig.targetGenerator) {
399
407
  case "markdown":
400
408
  return _function.pipe(
401
- logger$1.validateSourceDirectoryConfig(extractSourceDirectoryConfig(mergedConfig)),
409
+ Apexdocs.validateSourceDirectoryConfig(extractSourceDirectoryConfig(mergedConfig)),
402
410
  E__namespace.mapLeft((error) => new Error(`Invalid markdown configuration: ${error.message}`)),
403
411
  E__namespace.map(() => __spreadValues(__spreadValues({}, configOnlyMarkdownDefaults), mergedConfig))
404
412
  );
405
413
  case "openapi":
406
414
  return _function.pipe(
407
- logger$1.validateSourceDirectoryConfig(extractSourceDirectoryConfig(mergedConfig)),
415
+ Apexdocs.validateSourceDirectoryConfig(extractSourceDirectoryConfig(mergedConfig)),
408
416
  E__namespace.mapLeft((error) => new Error(`Invalid openapi configuration: ${error.message}`)),
409
417
  E__namespace.map(() => __spreadValues(__spreadValues({}, configOnlyOpenApiDefaults), mergedConfig))
410
418
  );
@@ -432,7 +440,7 @@ function extractArgsForCommandsProvidedInConfig(extractFromProcessFn, config) {
432
440
  E__namespace.flatMap((cliArgs) => {
433
441
  const mergedConfig = __spreadValues(__spreadValues(__spreadValues({}, configOnlyMarkdownDefaults), generatorConfig), cliArgs);
434
442
  return _function.pipe(
435
- logger$1.validateSourceDirectoryConfig(extractSourceDirectoryConfig(mergedConfig)),
443
+ Apexdocs.validateSourceDirectoryConfig(extractSourceDirectoryConfig(mergedConfig)),
436
444
  E__namespace.mapLeft((error) => new Error(`Invalid markdown configuration: ${error.message}`)),
437
445
  E__namespace.map(() => mergedConfig)
438
446
  );
@@ -444,7 +452,7 @@ function extractArgsForCommandsProvidedInConfig(extractFromProcessFn, config) {
444
452
  E__namespace.flatMap((cliArgs) => {
445
453
  const mergedConfig = __spreadValues(__spreadValues(__spreadValues({}, configOnlyOpenApiDefaults), generatorConfig), cliArgs);
446
454
  return _function.pipe(
447
- logger$1.validateSourceDirectoryConfig(extractSourceDirectoryConfig(mergedConfig)),
455
+ Apexdocs.validateSourceDirectoryConfig(extractSourceDirectoryConfig(mergedConfig)),
448
456
  E__namespace.mapLeft((error) => new Error(`Invalid openapi configuration: ${error.message}`)),
449
457
  E__namespace.map(() => mergedConfig)
450
458
  );
@@ -490,7 +498,7 @@ function getConfigType(config) {
490
498
  return E__namespace.right({ _type: "single-command-config" });
491
499
  }
492
500
  function extractYargsDemandingCommand(extractFromProcessFn, config) {
493
- return yargs.config(config.config).command(
501
+ return yargs.config(config.config).options(globalOptions).command(
494
502
  "markdown",
495
503
  "Generate documentation from Apex classes as a Markdown site.",
496
504
  (yargs2) => yargs2.options(markdownOptions).check(validateMarkdownArgs)
@@ -528,7 +536,7 @@ function extractMultiCommandConfig(extractFromProcessFn, command, config) {
528
536
  const options = getOptions(command);
529
537
  const validator = getValidationFunction(command);
530
538
  return E__namespace.tryCatch(() => {
531
- return yargs(extractFromProcessFn()).config(config).options(options).check(validator).fail((msg) => {
539
+ return yargs(extractFromProcessFn()).config(config).options(globalOptions).options(options).check(validator).fail((msg) => {
532
540
  throw new Error(`Invalid configuration for command "${command}": ${msg}`);
533
541
  }).parseSync();
534
542
  }, E__namespace.toError);
@@ -549,8 +557,8 @@ function validateChangelogConfig(config) {
549
557
  };
550
558
  return _function.pipe(
551
559
  E__namespace.Do,
552
- E__namespace.bind("previousValid", () => logger$1.validateSourceDirectoryConfig(previousVersionConfig)),
553
- E__namespace.bind("currentValid", () => logger$1.validateSourceDirectoryConfig(currentVersionConfig)),
560
+ E__namespace.bind("previousValid", () => Apexdocs.validateSourceDirectoryConfig(previousVersionConfig)),
561
+ E__namespace.bind("currentValid", () => Apexdocs.validateSourceDirectoryConfig(currentVersionConfig)),
554
562
  E__namespace.map(() => config)
555
563
  );
556
564
  }
@@ -575,12 +583,43 @@ var __async = (__this, __arguments, generator) => {
575
583
  step((generator = generator.apply(__this, __arguments)).next());
576
584
  });
577
585
  };
578
- const logger = new logger$1.StdOutLogger();
586
+ function isDebugEnabledFromProcessArgs() {
587
+ return process.argv.includes("--debug");
588
+ }
589
+ const logger = new Apexdocs.StdOutLogger();
590
+ logger.setDebug(isDebugEnabledFromProcessArgs());
591
+ if (logger.isDebugEnabled()) {
592
+ process.env.APEXDOCS_DEBUG = "true";
593
+ }
579
594
  function main() {
580
- function parseResult(result) {
581
- E__namespace.match(catchUnexpectedError, (successMessage) => {
582
- logger.logSingle(successMessage);
583
- })(result);
595
+ const aggregatedFailures = [];
596
+ let commandsRun = 0;
597
+ function printDebugSummary() {
598
+ if (!logger.isDebugEnabled()) {
599
+ return;
600
+ }
601
+ logger.debug(`commandsRun=${commandsRun}`);
602
+ logger.debug(`aggregatedFailures=${aggregatedFailures.length}`);
603
+ }
604
+ function printFailuresAtEnd() {
605
+ if (aggregatedFailures.length === 0) {
606
+ return;
607
+ }
608
+ logger.logSingle("\u26A0\uFE0F Some operations completed with errors. Please review the following issues:", "red");
609
+ for (const failure of aggregatedFailures) {
610
+ logger.error(failure);
611
+ }
612
+ }
613
+ function parseResult(result, config) {
614
+ E__namespace.match(
615
+ (failure) => {
616
+ logger.logSingle(`${config.targetGenerator}: completed with errors`, "red");
617
+ aggregatedFailures.push(failure);
618
+ },
619
+ (successMessage) => {
620
+ logger.logSingle(successMessage);
621
+ }
622
+ )(result);
584
623
  }
585
624
  function catchUnexpectedError(error) {
586
625
  logger.error(`\u274C An error occurred while processing the request: ${error}`);
@@ -589,7 +628,23 @@ function main() {
589
628
  extractArgs().then((maybeConfigs) => __async(null, null, function* () {
590
629
  E__namespace.match(catchUnexpectedError, (configs) => __async(null, null, function* () {
591
630
  for (const config of configs) {
592
- yield logger$1.Apexdocs.generate(config, logger).then(parseResult);
631
+ commandsRun++;
632
+ if (logger.isDebugEnabled()) {
633
+ logger.debug(`Currently processing generator: ${config.targetGenerator}`);
634
+ }
635
+ const result = yield Apexdocs.Apexdocs.generate(config, logger);
636
+ if (logger.isDebugEnabled()) {
637
+ logger.logSingle(
638
+ `${config.targetGenerator}: ${E__namespace.isRight(result) ? "success" : "failure"}`,
639
+ E__namespace.isRight(result) ? "green" : "red"
640
+ );
641
+ }
642
+ parseResult(result, config);
643
+ }
644
+ printFailuresAtEnd();
645
+ printDebugSummary();
646
+ if (aggregatedFailures.length > 0) {
647
+ process.exitCode = 1;
593
648
  }
594
649
  }))(maybeConfigs);
595
650
  })).catch(catchUnexpectedError);
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var logger = require('./logger-Cr1iCXZc.js');
4
+ var Apexdocs = require('./Apexdocs-ChhmlY0h.js');
5
5
  var E = require('fp-ts/Either');
6
6
  require('fp-ts/function');
7
7
  require('fp-ts/TaskEither');
@@ -21,9 +21,9 @@ require('fp-ts/boolean');
21
21
  require('fp-ts/Array');
22
22
  require('fs');
23
23
  require('fp-ts/lib/TaskEither');
24
+ require('chalk');
24
25
  require('minimatch');
25
26
  require('@salesforce/source-deploy-retrieve');
26
- require('chalk');
27
27
 
28
28
  function _interopNamespaceDefault(e) {
29
29
  var n = Object.create(null);
@@ -82,12 +82,12 @@ var __async = (__this, __arguments, generator) => {
82
82
  };
83
83
  function process(config) {
84
84
  return __async(this, null, function* () {
85
- const logger$1 = new logger.NoLogger();
85
+ const logger = new Apexdocs.NoLogger();
86
86
  const configWithDefaults = __spreadValues$1(__spreadValues$1({}, getDefault(config)), config);
87
87
  if (!configWithDefaults.sourceDir) {
88
88
  throw new Error("sourceDir is required");
89
89
  }
90
- const result = yield logger.Apexdocs.generate(configWithDefaults, logger$1);
90
+ const result = yield Apexdocs.Apexdocs.generate(configWithDefaults, logger);
91
91
  E__namespace.match(
92
92
  (errors) => {
93
93
  throw errors;
@@ -100,11 +100,11 @@ function process(config) {
100
100
  function getDefault(config) {
101
101
  switch (config.targetGenerator) {
102
102
  case "markdown":
103
- return logger.markdownDefaults;
103
+ return Apexdocs.markdownDefaults;
104
104
  case "openapi":
105
- return logger.openApiDefaults;
105
+ return Apexdocs.openApiDefaults;
106
106
  case "changelog":
107
- return logger.changeLogDefaults;
107
+ return Apexdocs.changeLogDefaults;
108
108
  default:
109
109
  throw new Error("Unknown target generator");
110
110
  }
@@ -130,23 +130,23 @@ var __spreadValues = (a, b) => {
130
130
  };
131
131
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
132
132
  function defineMarkdownConfig(config) {
133
- return __spreadProps(__spreadValues(__spreadValues({}, logger.markdownDefaults), config), {
133
+ return __spreadProps(__spreadValues(__spreadValues({}, Apexdocs.markdownDefaults), config), {
134
134
  targetGenerator: "markdown"
135
135
  });
136
136
  }
137
137
  function defineOpenApiConfig(config) {
138
- return __spreadProps(__spreadValues(__spreadValues({}, logger.openApiDefaults), config), {
138
+ return __spreadProps(__spreadValues(__spreadValues({}, Apexdocs.openApiDefaults), config), {
139
139
  targetGenerator: "openapi"
140
140
  });
141
141
  }
142
142
  function defineChangelogConfig(config) {
143
- return __spreadProps(__spreadValues(__spreadValues({}, logger.changeLogDefaults), config), {
143
+ return __spreadProps(__spreadValues(__spreadValues({}, Apexdocs.changeLogDefaults), config), {
144
144
  targetGenerator: "changelog"
145
145
  });
146
146
  }
147
147
 
148
- exports.skip = logger.skip;
149
- exports.templateHelpers = logger.templateHelpers;
148
+ exports.skip = Apexdocs.skip;
149
+ exports.templateHelpers = Apexdocs.templateHelpers;
150
150
  exports.defineChangelogConfig = defineChangelogConfig;
151
151
  exports.defineMarkdownConfig = defineMarkdownConfig;
152
152
  exports.defineOpenApiConfig = defineOpenApiConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cparra/apexdocs",
3
- "version": "3.17.0",
3
+ "version": "3.17.1-beta.0",
4
4
  "description": "Library with CLI capabilities to generate documentation for Salesforce Apex classes.",
5
5
  "engines": {
6
6
  "node": ">=18"