build-raptor 0.125.0 → 0.127.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.
Files changed (29) hide show
  1. package/dist/deps/brand/brand.d.ts +1 -1
  2. package/dist/deps/brand/index.js +6 -2
  3. package/dist/deps/build-failed-error/build-failed-error.d.ts +1 -1
  4. package/dist/deps/build-failed-error/index.js +6 -2
  5. package/dist/deps/build-raptor-core/build-raptor-config.d.ts +0 -17
  6. package/dist/deps/build-raptor-core/build-raptor-config.js +15 -22
  7. package/dist/deps/build-raptor-core/engine-bootstrapper.d.ts +3 -0
  8. package/dist/deps/build-raptor-core/engine-bootstrapper.js +35 -4
  9. package/dist/deps/build-raptor-core/examplify-zod.d.ts +93 -0
  10. package/dist/deps/build-raptor-core/examplify-zod.js +257 -0
  11. package/dist/deps/build-raptor-core/index.d.ts +1 -0
  12. package/dist/deps/build-raptor-core/index.js +2 -1
  13. package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.js +5 -1
  14. package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.d.ts +2 -0
  15. package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.js +5 -1
  16. package/dist/deps/build-run-id/build-run-id.d.ts +1 -1
  17. package/dist/deps/build-run-id/build-run-id.js +2 -3
  18. package/dist/deps/build-run-id/index.js +6 -2
  19. package/dist/deps/repo-protocol/repo-protocol.d.ts +2 -0
  20. package/dist/deps/reporter-output/index.js +6 -2
  21. package/dist/deps/reporter-output/reporter-output.d.ts +1 -1
  22. package/dist/deps/yarn-repo-protocol/index.d.ts +1 -0
  23. package/dist/deps/yarn-repo-protocol/index.js +2 -1
  24. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.d.ts +3 -12
  25. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.js +17 -16
  26. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.d.ts +20 -0
  27. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.js +6 -2
  28. package/dist/src/build-raptor-cli.js +26 -3
  29. package/package.json +3 -2
@@ -1,5 +1,5 @@
1
1
  declare const Trademark: unique symbol;
2
- export declare type Brand<BaseType, Name> = BaseType & {
2
+ export type Brand<BaseType, Name> = BaseType & {
3
3
  [Trademark]: Name;
4
4
  };
5
5
  export {};
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,4 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./brand"), exports);
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCIn0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF1QiJ9
@@ -1,4 +1,4 @@
1
- declare type HintType =
1
+ type HintType =
2
2
  /**
3
3
  * Failure while running a build task (including, for instance, test tasks)
4
4
  */
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,4 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./build-failed-error"), exports);
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQW9DIn0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFvQyJ9
@@ -1,25 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  export declare const BuildRaptorConfig: z.ZodObject<{
3
- /**
4
- * Repo-protocol-specific configuration.
5
- */
6
3
  repoProtocol: z.ZodDefault<z.ZodUnknown>;
7
- /**
8
- * task names for which high-detail printing will be enabled. This allow the user to get detailed information about
9
- * specific tasks. Example: ['foo:build', 'bar:test'].
10
- */
11
4
  verbosePrintTasks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
12
- /**
13
- * Selects one of two modes for determining when a task will run. A task will always run if one of the tasks listed in
14
- * its TaskInfo.deps had to run.
15
- * Additionally, a task will run if any of its inputs have changed (when this attribute is true) or if any of the
16
- * tasks that generates its inputs had to run (when this attribute is false).
17
- */
18
5
  tightFingerprints: z.ZodDefault<z.ZodBoolean>;
19
- /**
20
- * Name of the directory at which outputs of tasks will be placed (other than compilation outputs which are currently under dist).
21
- * This directory is created in each module.
22
- */
23
6
  outDirName: z.ZodDefault<z.ZodString>;
24
7
  }, "strip", z.ZodTypeAny, {
25
8
  verbosePrintTasks: string[];
@@ -3,26 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BuildRaptorConfig = void 0;
4
4
  const zod_1 = require("zod");
5
5
  exports.BuildRaptorConfig = zod_1.z.object({
6
- /**
7
- * Repo-protocol-specific configuration.
8
- */
9
- repoProtocol: zod_1.z.unknown().default(undefined),
10
- /**
11
- * task names for which high-detail printing will be enabled. This allow the user to get detailed information about
12
- * specific tasks. Example: ['foo:build', 'bar:test'].
13
- */
14
- verbosePrintTasks: zod_1.z.string().array().default([]),
15
- /**
16
- * Selects one of two modes for determining when a task will run. A task will always run if one of the tasks listed in
17
- * its TaskInfo.deps had to run.
18
- * Additionally, a task will run if any of its inputs have changed (when this attribute is true) or if any of the
19
- * tasks that generates its inputs had to run (when this attribute is false).
20
- */
21
- tightFingerprints: zod_1.z.boolean().default(false),
22
- /**
23
- * Name of the directory at which outputs of tasks will be placed (other than compilation outputs which are currently under dist).
24
- * This directory is created in each module.
25
- */
26
- outDirName: zod_1.z.string().default('.out'),
6
+ repoProtocol: zod_1.z.unknown().default(undefined).describe('Repo-protocol-specific configuration.'),
7
+ verbosePrintTasks: zod_1.z
8
+ .string()
9
+ .array()
10
+ .default([])
11
+ .describe("task names for which high-detail printing will be enabled. This allow the user to get detailed information about specific tasks. Example: ['foo:build', 'bar:test']."),
12
+ tightFingerprints: zod_1.z
13
+ .boolean()
14
+ .default(false)
15
+ .describe('Selects one of two modes for determining when a task will run. A task will always run if one of the tasks listed in its TaskInfo.deps had to run. Additionally, a task will run if any of its inputs have changed (when this attribute is true) or if any of the tasks that generates its inputs had to run (when this attribute is false).'),
16
+ outDirName: zod_1.z
17
+ .string()
18
+ .default('.out')
19
+ .describe('Name of the directory at which outputs of tasks will be placed (other than compilation outputs which are currently under dist). This directory is created in each module.'),
27
20
  });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcmFwdG9yLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZC1yYXB0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF1QjtBQUVWLFFBQUEsaUJBQWlCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4Qzs7T0FFRztJQUNILFlBQVksRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUM1Qzs7O09BR0c7SUFDSCxpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNqRDs7Ozs7T0FLRztJQUNILGlCQUFpQixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzdDOzs7T0FHRztJQUNILFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztDQUN2QyxDQUFDLENBQUEifQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcmFwdG9yLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZC1yYXB0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF1QjtBQUVWLFFBQUEsaUJBQWlCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxZQUFZLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQUM7SUFDOUYsaUJBQWlCLEVBQUUsT0FBQztTQUNqQixNQUFNLEVBQUU7U0FDUixLQUFLLEVBQUU7U0FDUCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsUUFBUSxDQUNQLHNLQUFzSyxDQUN2SztJQUNILGlCQUFpQixFQUFFLE9BQUM7U0FDakIsT0FBTyxFQUFFO1NBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLFFBQVEsQ0FDUCw2VUFBNlUsQ0FDOVU7SUFDSCxVQUFVLEVBQUUsT0FBQztTQUNWLE1BQU0sRUFBRTtTQUNSLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixRQUFRLENBQ1AsMktBQTJLLENBQzVLO0NBQ0osQ0FBQyxDQUFBIn0=
@@ -32,9 +32,12 @@ export declare class EngineBootstrapper {
32
32
  };
33
33
  private constructor();
34
34
  private makeEngine;
35
+ static readonly CONFIG_FILES: string[];
36
+ private resolveConfigFile;
35
37
  private readConfigFile;
36
38
  get subscribable(): Subscribable<EngineEventScheme>;
37
39
  private newBuildRunId;
40
+ getConfigFileExample(): string;
38
41
  /**
39
42
  * Returns a "runner function". When the runner function is invoked, a build will run.
40
43
  *
@@ -38,15 +38,18 @@ const build_failed_error_1 = require("build-failed-error");
38
38
  const build_run_id_1 = require("build-run-id");
39
39
  const core_types_1 = require("core-types");
40
40
  const fs = __importStar(require("fs"));
41
+ const JsoncParser = __importStar(require("jsonc-parser"));
41
42
  const logger_1 = require("logger");
42
43
  const misc_1 = require("misc");
43
44
  const path = __importStar(require("path"));
44
45
  const Tmp = __importStar(require("tmp-promise"));
45
46
  const util = __importStar(require("util"));
46
47
  const uuid = __importStar(require("uuid"));
48
+ const zod_1 = require("zod");
47
49
  const breakdown_1 = require("./breakdown");
48
50
  const build_raptor_config_1 = require("./build-raptor-config");
49
51
  const engine_1 = require("./engine");
52
+ const examplify_zod_1 = require("./examplify-zod");
50
53
  const step_by_step_transmitter_1 = require("./step-by-step-transmitter");
51
54
  const task_store_1 = require("./task-store");
52
55
  class EngineBootstrapper {
@@ -63,9 +66,10 @@ class EngineBootstrapper {
63
66
  const taskOutputDir = (await Tmp.dir()).path;
64
67
  this.logger.info(`rootDir is ${this.rootDir}`);
65
68
  this.logger.info(`The console outputs (stdout/stderr) of tasks are stored under ${taskOutputDir}`);
69
+ const resolvedConfigFile = configFile ? (0, core_types_1.PathInRepo)(configFile) : this.resolveConfigFile();
66
70
  const options = {
67
71
  ...optionsSansConfig,
68
- config: this.readConfigFile((0, core_types_1.PathInRepo)(configFile ?? '.build-raptor.json')),
72
+ config: this.readConfigFile(resolvedConfigFile),
69
73
  };
70
74
  const taskStore = new task_store_1.TaskStore(this.rootDir, this.storageClient, this.logger, this.eventPublisher);
71
75
  const stepByStepFile = path.join(options.buildRaptorDir, 'step-by-step.json');
@@ -76,18 +80,35 @@ class EngineBootstrapper {
76
80
  const engine = new engine_1.Engine(this.logger, this.rootDir, this.repoProtocol, taskStore, taskOutputDir, selector, this.eventPublisher, this.transmitter, options);
77
81
  return engine;
78
82
  }
83
+ resolveConfigFile() {
84
+ const arr = EngineBootstrapper.CONFIG_FILES.map(at => (0, core_types_1.PathInRepo)(at));
85
+ const existings = arr.flatMap(at => (fs.existsSync(this.rootDir.resolve(at)) ? [at] : []));
86
+ if (existings.length > 1) {
87
+ const quoted = existings.map(at => `"${at}"`);
88
+ throw new Error(`Found competing config files: ${quoted.join(', ')}. To avoid confusion, you must keep just one.`);
89
+ }
90
+ return existings.at(0);
91
+ }
79
92
  readConfigFile(pathToConfigFile) {
93
+ if (pathToConfigFile === undefined) {
94
+ return build_raptor_config_1.BuildRaptorConfig.parse({});
95
+ }
80
96
  const p = this.rootDir.resolve(pathToConfigFile);
81
97
  try {
82
98
  if (!fs.existsSync(p)) {
83
99
  return build_raptor_config_1.BuildRaptorConfig.parse({});
84
100
  }
85
101
  const content = fs.readFileSync(p, 'utf-8');
86
- const parsed = JSON.parse(content);
102
+ const errors = [];
103
+ const parsed = JsoncParser.parse(content, errors, { allowTrailingComma: true, allowEmptyContent: true });
104
+ const e = errors.at(0);
105
+ if (e) {
106
+ throw new Error(`Bad format: ${JsoncParser.printParseErrorCode(e.error)} at position ${e.offset}`);
107
+ }
87
108
  return build_raptor_config_1.BuildRaptorConfig.parse(parsed);
88
109
  }
89
110
  catch (e) {
90
- throw new Error(`could not read repo config file ${p} - ${e}`);
111
+ throw new Error(`could not read repo config file ${p} - ${(0, misc_1.errorLike)(e).message}`);
91
112
  }
92
113
  }
93
114
  get subscribable() {
@@ -96,6 +117,15 @@ class EngineBootstrapper {
96
117
  newBuildRunId() {
97
118
  return (0, build_run_id_1.BuildRunId)(uuid.v4());
98
119
  }
120
+ getConfigFileExample() {
121
+ const withRepoProtocol = zod_1.z.object({
122
+ ...build_raptor_config_1.BuildRaptorConfig.shape,
123
+ repoProtocol: this.repoProtocol
124
+ .getConfigSchema()
125
+ .describe(build_raptor_config_1.BuildRaptorConfig.shape.repoProtocol.description ?? ''),
126
+ });
127
+ return (0, examplify_zod_1.examplifyZod)(withRepoProtocol, {});
128
+ }
99
129
  /**
100
130
  * Returns a "runner function". When the runner function is invoked, a build will run.
101
131
  *
@@ -155,6 +185,7 @@ class EngineBootstrapper {
155
185
  }
156
186
  }
157
187
  exports.EngineBootstrapper = EngineBootstrapper;
188
+ EngineBootstrapper.CONFIG_FILES = ['.build-raptor.jsonc', '.build-raptor.json'];
158
189
  function summarizeTask(t) {
159
190
  return {
160
191
  outputFile: t.record.outputFile,
@@ -166,4 +197,4 @@ function summarizeTask(t) {
166
197
  rootCause: t.record.rootCause,
167
198
  };
168
199
  }
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLWJvb3RzdHJhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbmdpbmUtYm9vdHN0cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUFxRDtBQUNyRCwrQ0FBeUM7QUFDekMsMkNBQWlEO0FBQ2pELHVDQUF3QjtBQUN4QixtQ0FBaUU7QUFDakUsK0JBQXVGO0FBQ3ZGLDJDQUE0QjtBQUU1QixpREFBa0M7QUFDbEMsMkNBQTRCO0FBQzVCLDJDQUE0QjtBQUU1QiwyQ0FBdUM7QUFDdkMsK0RBQXlEO0FBQ3pELHFDQUFnRDtBQUVoRCx5RUFBa0U7QUFFbEUsNkNBQXdDO0FBZXhDLE1BQWEsa0JBQWtCO0lBSzdCLFlBQ0UsT0FBZSxFQUNOLEVBQVUsRUFDVixNQUFjLEVBQ2QsYUFBNEIsRUFDNUIsWUFBMEI7UUFIMUIsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVRwQixtQkFBYyxHQUFHLElBQUkscUJBQWMsRUFBcUIsQ0FBQTtRQVd2RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEscUJBQVEsRUFBQyxPQUFPLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZ0RBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVLENBQ3RCLFFBQXNCLEVBQ3RCLFVBQThCLEVBQzlCLGlCQUFnRDtRQUVoRCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFD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
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLWJvb3RzdHJhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbmdpbmUtYm9vdHN0cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUFxRDtBQUNyRCwrQ0FBeUM7QUFDekMsMkNBQWlEO0FBQ2pELHVDQUF3QjtBQUN4QiwwREFBMkM7QUFDM0MsbUNBQWlFO0FBQ2pFLCtCQUF1RjtBQUN2RiwyQ0FBNEI7QUFFNUIsaURBQWtDO0FBQ2xDLDJDQUE0QjtBQUM1QiwyQ0FBNEI7QUFDNUIsNkJBQXVCO0FBRXZCLDJDQUF1QztBQUN2QywrREFBeUQ7QUFDekQscUNBQWdEO0FBRWhELG1EQUE4QztBQUM5Qyx5RUFBa0U7QUFFbEUsNkNBQXdDO0FBZXhDLE1BQWEsa0JBQWtCO0lBSzdCLFlBQ0UsT0FBZSxFQUNOLEVBQVUsRUFDVixNQUFjLEVBQ2QsYUFBNEIsRUFDNUIsWUFBMEI7UUFIMUIsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVRwQixtQkFBYyxHQUFHLElBQUkscUJBQWMsRUFBcUIsQ0FBQTtRQVd2RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEscUJBQVEsRUFBQyxPQUFPLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZ0RBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVLENBQ3RCLFFBQXNCLEVBQ3RCLFVBQThCLEVBQzlCLGlCQUFnRDtRQUVoRCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMs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
@@ -0,0 +1,93 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Generates a formatted example from a Zod schema with default values and descriptions.
4
+ *
5
+ * Converts any supported Zod schema into a human-readable example showing the data
6
+ * structure with defaults. Useful for generating annotated configuration files that
7
+ * serve as both documentation and a working starting point.
8
+ *
9
+ * **Note**: Output is formatted for readability and is not valid JSON (contains
10
+ * inline comments and trailing commas).
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const schema = z.object({
15
+ * port: z.number().default(3000).describe('Server port'),
16
+ * host: z.string().optional()
17
+ * })
18
+ *
19
+ * console.log(examplifyZod(schema))
20
+ * // Output:
21
+ * {
22
+ * // Server port
23
+ * // port: 3000,
24
+ *
25
+ * // host: "",
26
+ * }
27
+ *
28
+ * console.log(examplifyZod(schema, { comment: false }))
29
+ * // Output:
30
+ * {
31
+ * // Server port
32
+ * port: 3000,
33
+ *
34
+ * // host: "",
35
+ * }
36
+ * ```
37
+ *
38
+ * @param input - Any Zod schema (object, primitive, array, union, etc.)
39
+ * @param options - Formatting options (see {@link ExamplifyZodOptions})
40
+ * @returns A formatted string example matching the schema structure with defaults populated
41
+ *
42
+ * @remarks
43
+ * ### Default Values
44
+ * - **Primitives**: Use type defaults: `0`, `""`, `false`
45
+ * - **Arrays**: Always shown as an empty array `[]`
46
+ * - **Objects**: Empty object `{}`
47
+ * - **With `.default()`**: Uses the specified default value
48
+ *
49
+ * ### Nullable/Optional Handling
50
+ * These modifiers are unwrapped to show the underlying type's default.
51
+ *
52
+ * ⚠️ **Order matters with `.default()`**:
53
+ * - `.nullable().default(5)` → uses `5`
54
+ * - `.default(5).nullable()` → uses type default `0` (`.nullable()` wraps after default is set)
55
+ *
56
+ * The same applies to `.optional()`.
57
+ *
58
+ * ### Unions
59
+ * Uses the first option's default value unless an explicit `.default()` is provided.
60
+ *
61
+ * ### Descriptions
62
+ * Property descriptions always appear as comments above their properties, regardless
63
+ * of the `comment` option. Multi-line descriptions are supported.
64
+ *
65
+ * ### Unsupported Types
66
+ * Unrecognized Zod types (enums, literals, records, tuples, intersections, etc.)
67
+ * are rendered as the string `'unknown'` with a default value of `null`.
68
+ */
69
+ export declare function examplifyZod(input: z.ZodTypeAny, options?: ExamplifyZodOptions): string;
70
+ /**
71
+ * Options for controlling the output format of examplifyZod().
72
+ */
73
+ export interface ExamplifyZodOptions {
74
+ /**
75
+ * Whether to comment out property lines with '//' markers.
76
+ * When false, outputs property lines without comment prefix.
77
+ * When true, all property lines are commented.
78
+ * @default true
79
+ */
80
+ comment?: boolean;
81
+ /**
82
+ * Whether to also comment the outermost object braces.
83
+ * Only applies when `comment` is true. Useful for embedding in existing JSON.
84
+ * @default false
85
+ */
86
+ commentAlsoOutermostBraces?: boolean;
87
+ /**
88
+ * Column position where comment markers ('//' prefix) start.
89
+ * Controls horizontal alignment of comments.
90
+ * @default 2
91
+ */
92
+ commentIndentation?: number;
93
+ }
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.examplifyZod = examplifyZod;
4
+ const misc_1 = require("misc");
5
+ const zod_1 = require("zod");
6
+ function getZodTypeName(schema) {
7
+ if (schema instanceof zod_1.ZodString) {
8
+ return 'string';
9
+ }
10
+ if (schema instanceof zod_1.ZodNumber) {
11
+ return 'number';
12
+ }
13
+ if (schema instanceof zod_1.ZodBoolean) {
14
+ return 'boolean';
15
+ }
16
+ if (schema instanceof zod_1.ZodObject) {
17
+ return 'object';
18
+ }
19
+ if (schema instanceof zod_1.ZodArray) {
20
+ return 'array';
21
+ }
22
+ if (schema instanceof zod_1.ZodUnion) {
23
+ return 'union';
24
+ }
25
+ return 'unknown';
26
+ }
27
+ function unwrap(schema) {
28
+ if (schema instanceof zod_1.ZodOptional || schema instanceof zod_1.ZodNullable) {
29
+ return unwrap(schema.unwrap());
30
+ }
31
+ if (schema instanceof zod_1.ZodDefault) {
32
+ return unwrap(schema.removeDefault());
33
+ }
34
+ return schema;
35
+ }
36
+ function getDescription(schema) {
37
+ if (schema.description) {
38
+ return schema.description;
39
+ }
40
+ if (schema instanceof zod_1.ZodOptional || schema instanceof zod_1.ZodNullable) {
41
+ return getDescription(schema.unwrap());
42
+ }
43
+ if (schema instanceof zod_1.ZodDefault) {
44
+ return getDescription(schema.removeDefault());
45
+ }
46
+ return undefined;
47
+ }
48
+ function reflect(schema) {
49
+ const unwrapped = unwrap(schema);
50
+ const typeName = getZodTypeName(unwrapped);
51
+ const description = getDescription(schema);
52
+ if (typeName === 'array') {
53
+ return { tag: 'array', description, defaultValue: [] };
54
+ }
55
+ if (typeName === 'boolean' || typeName === 'string' || typeName === 'number' || typeName === 'unknown') {
56
+ const d = schema instanceof zod_1.ZodDefault
57
+ ? schema.parse(undefined)
58
+ : { boolean: false, string: '', number: 0, unknown: null }[typeName];
59
+ return { tag: typeName, description, defaultValue: d };
60
+ }
61
+ if (typeName === 'union') {
62
+ if (!(unwrapped instanceof zod_1.z.ZodUnion)) {
63
+ throw new Error(`type name mismatch - expected: ${typeName}, got: ${unwrapped.constructor.name}`);
64
+ }
65
+ const options = unwrapped.options;
66
+ if (!Array.isArray(options)) {
67
+ throw new Error(`type name mismatch - expected: an array, got: ${options.constructor.name}`);
68
+ }
69
+ const casted = options; // eslint-disable-line @typescript-eslint/consistent-type-assertions
70
+ const mapped = casted.map(at => reflect(at));
71
+ const d = schema instanceof zod_1.ZodDefault ? schema.parse(undefined) : mapped[0].defaultValue;
72
+ return { tag: 'union', description, defaultValue: d };
73
+ }
74
+ if (typeName === 'object') {
75
+ if (!(unwrapped instanceof zod_1.z.ZodObject)) {
76
+ throw new Error(`type name mismatch - expected: ${typeName}, got: ${unwrapped.constructor.name}`);
77
+ }
78
+ const obj = Object.fromEntries(Object.entries(unwrapped.shape).map(kv => {
79
+ const k = kv[0];
80
+ const v = kv[1];
81
+ return [k, reflect(v)]; // eslint-disable-line @typescript-eslint/consistent-type-assertions
82
+ }));
83
+ return { tag: 'object', of: obj, description, defaultValue: {} };
84
+ }
85
+ (0, misc_1.shouldNeverHappen)(typeName);
86
+ }
87
+ class Writer {
88
+ constructor(nesting) {
89
+ this.nesting = nesting;
90
+ this.blocks = [];
91
+ }
92
+ nest() {
93
+ const ret = new Writer(this.nesting + 1);
94
+ this.blocks.push({ tag: 'writer', writer: ret });
95
+ return ret;
96
+ }
97
+ writeln(...parts) {
98
+ this.blocks.push({ tag: 'line', nesting: this.nesting, parts, isDesc: false });
99
+ }
100
+ writeDescLine(...parts) {
101
+ this.blocks.push({ tag: 'line', nesting: this.nesting, parts, isDesc: true });
102
+ }
103
+ collectOutput(acc, options) {
104
+ for (const block of this.blocks) {
105
+ if (block.tag === 'writer') {
106
+ block.writer.collectOutput(acc, options);
107
+ }
108
+ else if (block.tag === 'line') {
109
+ // Skip blocks with no parts ([]). A blank (comment) line can still be produced if block.parts is ['']
110
+ if (block.parts.length) {
111
+ let content = block.parts.join('');
112
+ if (!content.trim()) {
113
+ acc.push('');
114
+ continue;
115
+ }
116
+ const addComment = block.isDesc || (options.comment && (block.nesting > 0 || options.commentAlsoOutermostBraces));
117
+ const col = !addComment ? 0 : block.nesting > 0 ? options.commentIndentation : 0;
118
+ const preContent = (addComment ? ' '.repeat(col) + '// ' : '') + ' '.repeat(Math.max(0, 2 * block.nesting - col));
119
+ if (!block.isDesc) {
120
+ acc.push(preContent + content);
121
+ continue;
122
+ }
123
+ const lineMax = 120;
124
+ const allowedLen = lineMax - preContent.length;
125
+ while (true) {
126
+ if (content.length < allowedLen) {
127
+ acc.push(preContent + content);
128
+ break;
129
+ }
130
+ const lastSpace = content.slice(0, lineMax).lastIndexOf(' ');
131
+ if (lastSpace < 0) {
132
+ acc.push(preContent + content);
133
+ break;
134
+ }
135
+ acc.push(preContent + content.slice(0, lastSpace));
136
+ content = content.slice(lastSpace).trimStart();
137
+ }
138
+ }
139
+ }
140
+ else {
141
+ (0, misc_1.shouldNeverHappen)(block);
142
+ }
143
+ }
144
+ }
145
+ }
146
+ function format(r, w, path) {
147
+ const trimmed = r.description?.trim();
148
+ if (trimmed) {
149
+ for (const line of trimmed.split('\n')) {
150
+ w.writeDescLine(line);
151
+ }
152
+ }
153
+ const pref = path.length ? `${JSON.stringify(path.at(-1) ?? '')}: ` : ``;
154
+ if (r.tag === 'array' ||
155
+ r.tag === 'boolean' ||
156
+ r.tag === 'number' ||
157
+ r.tag === 'string' ||
158
+ r.tag === 'union' ||
159
+ r.tag === 'unknown') {
160
+ w.writeln(pref, JSON.stringify(r.defaultValue), path.length ? ',' : '');
161
+ return;
162
+ }
163
+ if (r.tag === 'object') {
164
+ w.writeln(pref, '{');
165
+ const nestedWriter = w.nest();
166
+ let isFirst = true;
167
+ for (const [k, v] of Object.entries(r.of)) {
168
+ if (!v) {
169
+ continue;
170
+ }
171
+ if (!isFirst) {
172
+ nestedWriter.writeln('');
173
+ }
174
+ isFirst = false;
175
+ format(v, nestedWriter, [...path, k]);
176
+ }
177
+ w.writeln('}', path.length ? ',' : '');
178
+ return;
179
+ }
180
+ (0, misc_1.shouldNeverHappen)(r.tag);
181
+ }
182
+ /**
183
+ * Generates a formatted example from a Zod schema with default values and descriptions.
184
+ *
185
+ * Converts any supported Zod schema into a human-readable example showing the data
186
+ * structure with defaults. Useful for generating annotated configuration files that
187
+ * serve as both documentation and a working starting point.
188
+ *
189
+ * **Note**: Output is formatted for readability and is not valid JSON (contains
190
+ * inline comments and trailing commas).
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * const schema = z.object({
195
+ * port: z.number().default(3000).describe('Server port'),
196
+ * host: z.string().optional()
197
+ * })
198
+ *
199
+ * console.log(examplifyZod(schema))
200
+ * // Output:
201
+ * {
202
+ * // Server port
203
+ * // port: 3000,
204
+ *
205
+ * // host: "",
206
+ * }
207
+ *
208
+ * console.log(examplifyZod(schema, { comment: false }))
209
+ * // Output:
210
+ * {
211
+ * // Server port
212
+ * port: 3000,
213
+ *
214
+ * // host: "",
215
+ * }
216
+ * ```
217
+ *
218
+ * @param input - Any Zod schema (object, primitive, array, union, etc.)
219
+ * @param options - Formatting options (see {@link ExamplifyZodOptions})
220
+ * @returns A formatted string example matching the schema structure with defaults populated
221
+ *
222
+ * @remarks
223
+ * ### Default Values
224
+ * - **Primitives**: Use type defaults: `0`, `""`, `false`
225
+ * - **Arrays**: Always shown as an empty array `[]`
226
+ * - **Objects**: Empty object `{}`
227
+ * - **With `.default()`**: Uses the specified default value
228
+ *
229
+ * ### Nullable/Optional Handling
230
+ * These modifiers are unwrapped to show the underlying type's default.
231
+ *
232
+ * ⚠️ **Order matters with `.default()`**:
233
+ * - `.nullable().default(5)` → uses `5`
234
+ * - `.default(5).nullable()` → uses type default `0` (`.nullable()` wraps after default is set)
235
+ *
236
+ * The same applies to `.optional()`.
237
+ *
238
+ * ### Unions
239
+ * Uses the first option's default value unless an explicit `.default()` is provided.
240
+ *
241
+ * ### Descriptions
242
+ * Property descriptions always appear as comments above their properties, regardless
243
+ * of the `comment` option. Multi-line descriptions are supported.
244
+ *
245
+ * ### Unsupported Types
246
+ * Unrecognized Zod types (enums, literals, records, tuples, intersections, etc.)
247
+ * are rendered as the string `'unknown'` with a default value of `null`.
248
+ */
249
+ function examplifyZod(input, options = {}) {
250
+ const r = reflect(input);
251
+ const w = new Writer(0);
252
+ format(r, w, []);
253
+ const acc = [];
254
+ w.collectOutput(acc, { comment: true, commentAlsoOutermostBraces: false, commentIndentation: 2, ...options });
255
+ return acc.join('\n');
256
+ }
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsaWZ5LXpvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxpZnktem9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbVRBLG9DQU9DO0FBMVRELCtCQUF3QztBQUN4Qyw2QkFZWTtBQUlaLFNBQVMsY0FBYyxDQUFDLE1BQWtCO0lBQ3hDLElBQUksTUFBTSxZQUFZLGVBQVMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxlQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsSUFBSSxNQUFNLFlBQVksZ0JBQVUsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxlQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsSUFBSSxNQUFNLFlBQVksY0FBUSxFQUFFLENBQUM7UUFDL0IsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUNELElBQUksTUFBTSxZQUFZLGNBQVEsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsTUFBa0I7SUFDaEMsSUFBSSxNQUFNLFlBQVksaUJBQVcsSUFBSSxNQUFNLFlBQVksaUJBQVcsRUFBRSxDQUFDO1FBQ25FLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxnQkFBVSxFQUFFLENBQUM7UUFDakMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE1BQWtCO0lBQ3hDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQTtJQUMzQixDQUFDO0lBRUQsSUFBSSxNQUFNLFlBQVksaUJBQVcsSUFBSSxNQUFNLFlBQVksaUJBQVcsRUFBRSxDQUFDO1FBQ25FLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxnQkFBVSxFQUFFLENBQUM7UUFDakMsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFRRCxTQUFTLE9BQU8sQ0FBQyxNQUFvQjtJQUNuQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDaEMsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUUxQyxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN6QixPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFBO0lBQ3hELENBQUM7SUFDRCxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2RyxNQUFNLENBQUMsR0FDTCxNQUFNLFlBQVksZ0JBQVU7WUFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFBO0lBQ3hELENBQUM7SUFFRCxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsQ0FBQyxTQUFTLFlBQVksT0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsUUFBUSxVQUFVLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNuRyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQTtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM5RixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBeUIsQ0FBQSxDQUFDLG9FQUFvRTtRQUM3RyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxZQUFZLGdCQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUE7UUFDekYsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLE9BQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLFFBQVEsVUFBVSxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDbkcsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN2QyxNQUFNLENBQUMsR0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2YsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBaUIsQ0FBQyxDQUFDLENBQUEsQ0FBQyxvRUFBb0U7UUFDN0csQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUVELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsSUFBQSx3QkFBaUIsRUFBQyxRQUFRLENBQUMsQ0FBQTtBQUM3QixDQUFDO0FBY0QsTUFBTSxNQUFNO0lBR1YsWUFBNkIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFGcEMsV0FBTSxHQUFrQixFQUFFLENBQUE7SUFFYSxDQUFDO0lBRWhELElBQUk7UUFDRixNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUNoRCxPQUFPLEdBQUcsQ0FBQTtJQUNaLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxLQUFlO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDaEYsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFHLEtBQWU7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMvRSxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQWEsRUFBRSxPQUFzQztRQUNqRSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUMxQyxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDaEMsc0dBQXNHO2dCQUN0RyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO29CQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7d0JBQ3BCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7d0JBQ1osU0FBUTtvQkFDVixDQUFDO29CQUNELE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQTtvQkFDaEcsTUFBTSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUNoRixNQUFNLFVBQVUsR0FDZCxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtvQkFDaEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUE7d0JBQzlCLFNBQVE7b0JBQ1YsQ0FBQztvQkFFRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUE7b0JBQ25CLE1BQU0sVUFBVSxHQUFHLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO29CQUM5QyxPQUFPLElBQUksRUFBRSxDQUFDO3dCQUNaLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQzs0QkFDaEMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUE7NEJBQzlCLE1BQUs7d0JBQ1AsQ0FBQzt3QkFDRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7d0JBQzVELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNsQixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQTs0QkFDOUIsTUFBSzt3QkFDUCxDQUFDO3dCQUVELEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUE7d0JBQ2xELE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO29CQUNoRCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBQSx3QkFBaUIsRUFBQyxLQUFLLENBQUMsQ0FBQTtZQUMxQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELFNBQVMsTUFBTSxDQUFDLENBQVksRUFBRSxDQUFTLEVBQUUsSUFBYztJQUNyRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFBO0lBQ3JDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDeEUsSUFDRSxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU87UUFDakIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTO1FBQ25CLENBQUMsQ0FBQyxHQUFHLEtBQUssUUFBUTtRQUNsQixDQUFDLENBQUMsR0FBRyxLQUFLLFFBQVE7UUFDbEIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPO1FBQ2pCLENBQUMsQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUNuQixDQUFDO1FBQ0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN2RSxPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNwQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDN0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBQ2xCLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDUCxTQUFRO1lBQ1YsQ0FBQztZQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDYixZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQzFCLENBQUM7WUFDRCxPQUFPLEdBQUcsS0FBSyxDQUFBO1lBQ2YsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFDRCxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3RDLE9BQU07SUFDUixDQUFDO0lBQ0QsSUFBQSx3QkFBaUIsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDMUIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBbUIsRUFBRSxVQUErQixFQUFFO0lBQ2pGLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QixNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNoQixNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUE7SUFDeEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzdHLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN2QixDQUFDIn0=
@@ -1,4 +1,5 @@
1
1
  export * from './breakdown';
2
+ export * from './build-raptor-config';
2
3
  export * from './default-asset-publisher';
3
4
  export * from './engine-bootstrapper';
4
5
  export * from './execution-type';