@expo/steps 1.0.265 → 1.0.271

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 (207) hide show
  1. package/{dist_commonjs → dist}/AbstractConfigParser.d.ts +5 -5
  2. package/{dist_commonjs/AbstractConfigParser.cjs → dist/AbstractConfigParser.js} +13 -13
  3. package/dist/AbstractConfigParser.js.map +1 -0
  4. package/{dist_commonjs → dist}/BuildConfig.d.ts +3 -3
  5. package/{dist_commonjs/BuildConfig.cjs → dist/BuildConfig.js} +22 -22
  6. package/dist/BuildConfig.js.map +1 -0
  7. package/{dist_esm → dist}/BuildConfigParser.d.ts +5 -5
  8. package/{dist_commonjs/BuildConfigParser.cjs → dist/BuildConfigParser.js} +31 -31
  9. package/dist/BuildConfigParser.js.map +1 -0
  10. package/{dist_esm → dist}/BuildFunction.d.ts +6 -6
  11. package/{dist_commonjs/BuildFunction.cjs → dist/BuildFunction.js} +6 -6
  12. package/dist/BuildFunction.js.map +1 -0
  13. package/{dist_commonjs → dist}/BuildFunctionGroup.d.ts +4 -4
  14. package/{dist_commonjs/BuildFunctionGroup.cjs → dist/BuildFunctionGroup.js} +4 -4
  15. package/dist/BuildFunctionGroup.js.map +1 -0
  16. package/{dist_esm → dist}/BuildStep.d.ts +5 -5
  17. package/{dist_commonjs/BuildStep.cjs → dist/BuildStep.js} +29 -29
  18. package/dist/BuildStep.js.map +1 -0
  19. package/{dist_commonjs → dist}/BuildStepContext.d.ts +4 -4
  20. package/{dist_commonjs/BuildStepContext.cjs → dist/BuildStepContext.js} +10 -10
  21. package/dist/BuildStepContext.js.map +1 -0
  22. package/{dist_esm → dist}/BuildStepInput.d.ts +1 -1
  23. package/{dist_commonjs/BuildStepInput.cjs → dist/BuildStepInput.js} +12 -12
  24. package/dist/BuildStepInput.js.map +1 -0
  25. package/{dist_commonjs → dist}/BuildStepOutput.d.ts +1 -1
  26. package/{dist_commonjs/BuildStepOutput.cjs → dist/BuildStepOutput.js} +3 -3
  27. package/dist/BuildStepOutput.js.map +1 -0
  28. package/{dist_commonjs → dist}/BuildTemporaryFiles.d.ts +1 -1
  29. package/{dist_commonjs → dist}/BuildTemporaryFiles.js.map +1 -1
  30. package/{dist_commonjs → dist}/BuildWorkflow.d.ts +3 -3
  31. package/dist/BuildWorkflow.js.map +1 -0
  32. package/{dist_commonjs → dist}/BuildWorkflowValidator.d.ts +1 -1
  33. package/{dist_commonjs/BuildWorkflowValidator.cjs → dist/BuildWorkflowValidator.js} +19 -19
  34. package/dist/BuildWorkflowValidator.js.map +1 -0
  35. package/{dist_commonjs → dist}/StepsConfigParser.d.ts +5 -5
  36. package/{dist_commonjs/StepsConfigParser.cjs → dist/StepsConfigParser.js} +13 -13
  37. package/dist/StepsConfigParser.js.map +1 -0
  38. package/{dist_esm → dist}/cli/cli.d.ts +3 -3
  39. package/{dist_commonjs/cli/cli.cjs → dist/cli/cli.js} +6 -6
  40. package/dist/cli/cli.js.map +1 -0
  41. package/dist/index.d.ts +19 -0
  42. package/{dist_commonjs/index.cjs → dist/index.js} +30 -30
  43. package/dist/index.js.map +1 -0
  44. package/{dist_commonjs/interpolation.cjs → dist/interpolation.js} +3 -3
  45. package/dist/interpolation.js.map +1 -0
  46. package/{dist_commonjs/scripts/runCustomFunction.cjs → dist/scripts/runCustomFunction.js} +9 -9
  47. package/dist/scripts/runCustomFunction.js.map +1 -0
  48. package/{dist_commonjs → dist}/utils/customFunction.d.ts +4 -4
  49. package/{dist_commonjs/utils/customFunction.cjs → dist/utils/customFunction.js} +4 -6
  50. package/dist/utils/customFunction.js.map +1 -0
  51. package/{dist_commonjs/utils/shell/bin.cjs → dist/utils/shell/bin.js} +1 -3
  52. package/dist/utils/shell/bin.js.map +1 -0
  53. package/{dist_commonjs/utils/template.cjs → dist/utils/template.js} +7 -7
  54. package/dist/utils/template.js.map +1 -0
  55. package/package.json +11 -23
  56. package/dist_commonjs/AbstractConfigParser.js.map +0 -1
  57. package/dist_commonjs/BuildConfig.js.map +0 -1
  58. package/dist_commonjs/BuildConfigParser.d.ts +0 -33
  59. package/dist_commonjs/BuildConfigParser.js.map +0 -1
  60. package/dist_commonjs/BuildFunction.d.ts +0 -45
  61. package/dist_commonjs/BuildFunction.js.map +0 -1
  62. package/dist_commonjs/BuildFunctionGroup.js.map +0 -1
  63. package/dist_commonjs/BuildStep.d.ts +0 -100
  64. package/dist_commonjs/BuildStep.js.map +0 -1
  65. package/dist_commonjs/BuildStepContext.js.map +0 -1
  66. package/dist_commonjs/BuildStepInput.d.ts +0 -47
  67. package/dist_commonjs/BuildStepInput.js.map +0 -1
  68. package/dist_commonjs/BuildStepOutput.js.map +0 -1
  69. package/dist_commonjs/BuildWorkflow.js.map +0 -1
  70. package/dist_commonjs/BuildWorkflowValidator.js.map +0 -1
  71. package/dist_commonjs/StepsConfigParser.js.map +0 -1
  72. package/dist_commonjs/cli/cli.d.ts +0 -18
  73. package/dist_commonjs/cli/cli.js.map +0 -1
  74. package/dist_commonjs/index.d.ts +0 -19
  75. package/dist_commonjs/index.js.map +0 -1
  76. package/dist_commonjs/interpolation.js.map +0 -1
  77. package/dist_commonjs/scripts/runCustomFunction.js.map +0 -1
  78. package/dist_commonjs/utils/customFunction.js.map +0 -1
  79. package/dist_commonjs/utils/shell/bin.js.map +0 -1
  80. package/dist_commonjs/utils/template.js.map +0 -1
  81. package/dist_esm/AbstractConfigParser.d.ts +0 -23
  82. package/dist_esm/AbstractConfigParser.js +0 -61
  83. package/dist_esm/AbstractConfigParser.js.map +0 -1
  84. package/dist_esm/BuildConfig.d.ts +0 -80
  85. package/dist_esm/BuildConfig.js +0 -281
  86. package/dist_esm/BuildConfig.js.map +0 -1
  87. package/dist_esm/BuildConfigParser.js +0 -233
  88. package/dist_esm/BuildConfigParser.js.map +0 -1
  89. package/dist_esm/BuildFunction.js +0 -62
  90. package/dist_esm/BuildFunction.js.map +0 -1
  91. package/dist_esm/BuildFunctionGroup.d.ts +0 -23
  92. package/dist_esm/BuildFunctionGroup.js +0 -36
  93. package/dist_esm/BuildFunctionGroup.js.map +0 -1
  94. package/dist_esm/BuildRuntimePlatform.d.ts +0 -4
  95. package/dist_esm/BuildRuntimePlatform.js +0 -6
  96. package/dist_esm/BuildRuntimePlatform.js.map +0 -1
  97. package/dist_esm/BuildStep.js +0 -354
  98. package/dist_esm/BuildStep.js.map +0 -1
  99. package/dist_esm/BuildStepContext.d.ts +0 -86
  100. package/dist_esm/BuildStepContext.js +0 -207
  101. package/dist_esm/BuildStepContext.js.map +0 -1
  102. package/dist_esm/BuildStepEnv.d.ts +0 -1
  103. package/dist_esm/BuildStepEnv.js +0 -2
  104. package/dist_esm/BuildStepEnv.js.map +0 -1
  105. package/dist_esm/BuildStepInput.js +0 -150
  106. package/dist_esm/BuildStepInput.js.map +0 -1
  107. package/dist_esm/BuildStepOutput.d.ts +0 -33
  108. package/dist_esm/BuildStepOutput.js +0 -57
  109. package/dist_esm/BuildStepOutput.js.map +0 -1
  110. package/dist_esm/BuildTemporaryFiles.d.ts +0 -5
  111. package/dist_esm/BuildTemporaryFiles.js +0 -31
  112. package/dist_esm/BuildTemporaryFiles.js.map +0 -1
  113. package/dist_esm/BuildWorkflow.d.ts +0 -14
  114. package/dist_esm/BuildWorkflow.js +0 -55
  115. package/dist_esm/BuildWorkflow.js.map +0 -1
  116. package/dist_esm/BuildWorkflowValidator.d.ts +0 -10
  117. package/dist_esm/BuildWorkflowValidator.js +0 -121
  118. package/dist_esm/BuildWorkflowValidator.js.map +0 -1
  119. package/dist_esm/StepMetrics.d.ts +0 -10
  120. package/dist_esm/StepMetrics.js +0 -2
  121. package/dist_esm/StepMetrics.js.map +0 -1
  122. package/dist_esm/StepsConfigParser.d.ts +0 -24
  123. package/dist_esm/StepsConfigParser.js +0 -133
  124. package/dist_esm/StepsConfigParser.js.map +0 -1
  125. package/dist_esm/cli/cli.js +0 -61
  126. package/dist_esm/cli/cli.js.map +0 -1
  127. package/dist_esm/errors.d.ts +0 -24
  128. package/dist_esm/errors.js +0 -24
  129. package/dist_esm/errors.js.map +0 -1
  130. package/dist_esm/index.d.ts +0 -19
  131. package/dist_esm/index.js +0 -18
  132. package/dist_esm/index.js.map +0 -1
  133. package/dist_esm/interpolation.d.ts +0 -5
  134. package/dist_esm/interpolation.js +0 -26
  135. package/dist_esm/interpolation.js.map +0 -1
  136. package/dist_esm/scripts/runCustomFunction.d.ts +0 -1
  137. package/dist_esm/scripts/runCustomFunction.js +0 -100
  138. package/dist_esm/scripts/runCustomFunction.js.map +0 -1
  139. package/dist_esm/utils/customFunction.d.ts +0 -18
  140. package/dist_esm/utils/customFunction.js +0 -49
  141. package/dist_esm/utils/customFunction.js.map +0 -1
  142. package/dist_esm/utils/expodash/duplicates.d.ts +0 -1
  143. package/dist_esm/utils/expodash/duplicates.js +0 -14
  144. package/dist_esm/utils/expodash/duplicates.js.map +0 -1
  145. package/dist_esm/utils/expodash/uniq.d.ts +0 -1
  146. package/dist_esm/utils/expodash/uniq.js +0 -5
  147. package/dist_esm/utils/expodash/uniq.js.map +0 -1
  148. package/dist_esm/utils/hashFiles.d.ts +0 -6
  149. package/dist_esm/utils/hashFiles.js +0 -31
  150. package/dist_esm/utils/hashFiles.js.map +0 -1
  151. package/dist_esm/utils/jsepEval.d.ts +0 -1
  152. package/dist_esm/utils/jsepEval.js +0 -169
  153. package/dist_esm/utils/jsepEval.js.map +0 -1
  154. package/dist_esm/utils/nullthrows.d.ts +0 -1
  155. package/dist_esm/utils/nullthrows.js +0 -7
  156. package/dist_esm/utils/nullthrows.js.map +0 -1
  157. package/dist_esm/utils/shell/bin.d.ts +0 -1
  158. package/dist_esm/utils/shell/bin.js +0 -5
  159. package/dist_esm/utils/shell/bin.js.map +0 -1
  160. package/dist_esm/utils/shell/command.d.ts +0 -4
  161. package/dist_esm/utils/shell/command.js +0 -13
  162. package/dist_esm/utils/shell/command.js.map +0 -1
  163. package/dist_esm/utils/shell/spawn.d.ts +0 -15
  164. package/dist_esm/utils/shell/spawn.js +0 -16
  165. package/dist_esm/utils/shell/spawn.js.map +0 -1
  166. package/dist_esm/utils/template.d.ts +0 -19
  167. package/dist_esm/utils/template.js +0 -106
  168. package/dist_esm/utils/template.js.map +0 -1
  169. /package/{dist_commonjs → dist}/BuildRuntimePlatform.d.ts +0 -0
  170. /package/{dist_commonjs/BuildRuntimePlatform.cjs → dist/BuildRuntimePlatform.js} +0 -0
  171. /package/{dist_commonjs → dist}/BuildRuntimePlatform.js.map +0 -0
  172. /package/{dist_commonjs → dist}/BuildStepEnv.d.ts +0 -0
  173. /package/{dist_commonjs/BuildStepEnv.cjs → dist/BuildStepEnv.js} +0 -0
  174. /package/{dist_commonjs → dist}/BuildStepEnv.js.map +0 -0
  175. /package/{dist_commonjs/BuildTemporaryFiles.cjs → dist/BuildTemporaryFiles.js} +0 -0
  176. /package/{dist_commonjs/BuildWorkflow.cjs → dist/BuildWorkflow.js} +0 -0
  177. /package/{dist_commonjs → dist}/StepMetrics.d.ts +0 -0
  178. /package/{dist_commonjs/StepMetrics.cjs → dist/StepMetrics.js} +0 -0
  179. /package/{dist_commonjs → dist}/StepMetrics.js.map +0 -0
  180. /package/{dist_commonjs → dist}/errors.d.ts +0 -0
  181. /package/{dist_commonjs/errors.cjs → dist/errors.js} +0 -0
  182. /package/{dist_commonjs → dist}/errors.js.map +0 -0
  183. /package/{dist_commonjs → dist}/interpolation.d.ts +0 -0
  184. /package/{dist_commonjs → dist}/scripts/runCustomFunction.d.ts +0 -0
  185. /package/{dist_commonjs → dist}/utils/expodash/duplicates.d.ts +0 -0
  186. /package/{dist_commonjs/utils/expodash/duplicates.cjs → dist/utils/expodash/duplicates.js} +0 -0
  187. /package/{dist_commonjs → dist}/utils/expodash/duplicates.js.map +0 -0
  188. /package/{dist_commonjs → dist}/utils/expodash/uniq.d.ts +0 -0
  189. /package/{dist_commonjs/utils/expodash/uniq.cjs → dist/utils/expodash/uniq.js} +0 -0
  190. /package/{dist_commonjs → dist}/utils/expodash/uniq.js.map +0 -0
  191. /package/{dist_commonjs → dist}/utils/hashFiles.d.ts +0 -0
  192. /package/{dist_commonjs/utils/hashFiles.cjs → dist/utils/hashFiles.js} +0 -0
  193. /package/{dist_commonjs → dist}/utils/hashFiles.js.map +0 -0
  194. /package/{dist_commonjs → dist}/utils/jsepEval.d.ts +0 -0
  195. /package/{dist_commonjs/utils/jsepEval.cjs → dist/utils/jsepEval.js} +0 -0
  196. /package/{dist_commonjs → dist}/utils/jsepEval.js.map +0 -0
  197. /package/{dist_commonjs → dist}/utils/nullthrows.d.ts +0 -0
  198. /package/{dist_commonjs/utils/nullthrows.cjs → dist/utils/nullthrows.js} +0 -0
  199. /package/{dist_commonjs → dist}/utils/nullthrows.js.map +0 -0
  200. /package/{dist_commonjs → dist}/utils/shell/bin.d.ts +0 -0
  201. /package/{dist_commonjs → dist}/utils/shell/command.d.ts +0 -0
  202. /package/{dist_commonjs/utils/shell/command.cjs → dist/utils/shell/command.js} +0 -0
  203. /package/{dist_commonjs → dist}/utils/shell/command.js.map +0 -0
  204. /package/{dist_commonjs → dist}/utils/shell/spawn.d.ts +0 -0
  205. /package/{dist_commonjs/utils/shell/spawn.cjs → dist/utils/shell/spawn.js} +0 -0
  206. /package/{dist_commonjs → dist}/utils/shell/spawn.js.map +0 -0
  207. /package/{dist_commonjs → dist}/utils/template.d.ts +0 -0
@@ -1,8 +1,8 @@
1
- import { BuildFunction, BuildFunctionById } from './BuildFunction.js';
2
- import { BuildFunctionGroup } from './BuildFunctionGroup.js';
3
- import { BuildStep } from './BuildStep.js';
4
- import { BuildStepGlobalContext } from './BuildStepContext.js';
5
- import { BuildWorkflow } from './BuildWorkflow.js';
1
+ import { BuildFunction, BuildFunctionById } from './BuildFunction';
2
+ import { BuildFunctionGroup } from './BuildFunctionGroup';
3
+ import { BuildStep } from './BuildStep';
4
+ import { BuildStepGlobalContext } from './BuildStepContext';
5
+ import { BuildWorkflow } from './BuildWorkflow';
6
6
  export declare abstract class AbstractConfigParser {
7
7
  protected readonly ctx: BuildStepGlobalContext;
8
8
  protected readonly externalFunctions?: BuildFunction[];
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractConfigParser = void 0;
4
- const BuildWorkflow_js_1 = require("./BuildWorkflow.cjs");
5
- const BuildWorkflowValidator_js_1 = require("./BuildWorkflowValidator.cjs");
6
- const errors_js_1 = require("./errors.cjs");
7
- const duplicates_js_1 = require("./utils/expodash/duplicates.cjs");
8
- const uniq_js_1 = require("./utils/expodash/uniq.cjs");
4
+ const BuildWorkflow_1 = require("./BuildWorkflow");
5
+ const BuildWorkflowValidator_1 = require("./BuildWorkflowValidator");
6
+ const errors_1 = require("./errors");
7
+ const duplicates_1 = require("./utils/expodash/duplicates");
8
+ const uniq_1 = require("./utils/expodash/uniq");
9
9
  class AbstractConfigParser {
10
10
  constructor(ctx, { externalFunctions, externalFunctionGroups, }) {
11
11
  this.ctx = ctx;
@@ -16,8 +16,8 @@ class AbstractConfigParser {
16
16
  }
17
17
  async parseAsync() {
18
18
  const { buildSteps, buildFunctionById } = await this.parseConfigToBuildStepsAndBuildFunctionByIdMappingAsync();
19
- const workflow = new BuildWorkflow_js_1.BuildWorkflow(this.ctx, { buildSteps, buildFunctions: buildFunctionById });
20
- await new BuildWorkflowValidator_js_1.BuildWorkflowValidator(workflow).validateAsync();
19
+ const workflow = new BuildWorkflow_1.BuildWorkflow(this.ctx, { buildSteps, buildFunctions: buildFunctionById });
20
+ await new BuildWorkflowValidator_1.BuildWorkflowValidator(workflow).validateAsync();
21
21
  return workflow;
22
22
  }
23
23
  validateExternalFunctions(externalFunctions) {
@@ -25,11 +25,11 @@ class AbstractConfigParser {
25
25
  return;
26
26
  }
27
27
  const externalFunctionIds = externalFunctions.map((f) => f.getFullId());
28
- const duplicatedExternalFunctionIds = (0, duplicates_js_1.duplicates)(externalFunctionIds);
28
+ const duplicatedExternalFunctionIds = (0, duplicates_1.duplicates)(externalFunctionIds);
29
29
  if (duplicatedExternalFunctionIds.length === 0) {
30
30
  return;
31
31
  }
32
- throw new errors_js_1.BuildConfigError(`Provided external functions with duplicated IDs: ${duplicatedExternalFunctionIds
32
+ throw new errors_1.BuildConfigError(`Provided external functions with duplicated IDs: ${duplicatedExternalFunctionIds
33
33
  .map((id) => `"${id}"`)
34
34
  .join(', ')}`);
35
35
  }
@@ -38,11 +38,11 @@ class AbstractConfigParser {
38
38
  return;
39
39
  }
40
40
  const externalFunctionGroupIds = externalFunctionGroups.map((f) => f.getFullId());
41
- const duplicatedExternalFunctionGroupIds = (0, duplicates_js_1.duplicates)(externalFunctionGroupIds);
41
+ const duplicatedExternalFunctionGroupIds = (0, duplicates_1.duplicates)(externalFunctionGroupIds);
42
42
  if (duplicatedExternalFunctionGroupIds.length === 0) {
43
43
  return;
44
44
  }
45
- throw new errors_js_1.BuildConfigError(`Provided external function groups with duplicated IDs: ${duplicatedExternalFunctionGroupIds
45
+ throw new errors_1.BuildConfigError(`Provided external function groups with duplicated IDs: ${duplicatedExternalFunctionGroupIds
46
46
  .map((id) => `"${id}"`)
47
47
  .join(', ')}`);
48
48
  }
@@ -51,14 +51,14 @@ class AbstractConfigParser {
51
51
  return [];
52
52
  }
53
53
  const ids = this.externalFunctions.map((f) => f.getFullId());
54
- return (0, uniq_js_1.uniq)(ids);
54
+ return (0, uniq_1.uniq)(ids);
55
55
  }
56
56
  getExternalFunctionGroupFullIds() {
57
57
  if (this.externalFunctionGroups === undefined) {
58
58
  return [];
59
59
  }
60
60
  const ids = this.externalFunctionGroups.map((f) => f.getFullId());
61
- return (0, uniq_js_1.uniq)(ids);
61
+ return (0, uniq_1.uniq)(ids);
62
62
  }
63
63
  }
64
64
  exports.AbstractConfigParser = AbstractConfigParser;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractConfigParser.js","sourceRoot":"","sources":["../src/AbstractConfigParser.ts"],"names":[],"mappings":"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","sourcesContent":["import { BuildFunction, BuildFunctionById } from './BuildFunction';\nimport { BuildFunctionGroup } from './BuildFunctionGroup';\nimport { BuildStep } from './BuildStep';\nimport { BuildStepGlobalContext } from './BuildStepContext';\nimport { BuildWorkflow } from './BuildWorkflow';\nimport { BuildWorkflowValidator } from './BuildWorkflowValidator';\nimport { BuildConfigError } from './errors';\nimport { duplicates } from './utils/expodash/duplicates';\nimport { uniq } from './utils/expodash/uniq';\n\nexport abstract class AbstractConfigParser {\n protected readonly externalFunctions?: BuildFunction[];\n protected readonly externalFunctionGroups?: BuildFunctionGroup[];\n\n constructor(\n protected readonly ctx: BuildStepGlobalContext,\n {\n externalFunctions,\n externalFunctionGroups,\n }: {\n externalFunctions?: BuildFunction[];\n externalFunctionGroups?: BuildFunctionGroup[];\n }\n ) {\n this.validateExternalFunctions(externalFunctions);\n this.validateExternalFunctionGroups(externalFunctionGroups);\n\n this.externalFunctions = externalFunctions;\n this.externalFunctionGroups = externalFunctionGroups;\n }\n\n public async parseAsync(): Promise<BuildWorkflow> {\n const { buildSteps, buildFunctionById } =\n await this.parseConfigToBuildStepsAndBuildFunctionByIdMappingAsync();\n const workflow = new BuildWorkflow(this.ctx, { buildSteps, buildFunctions: buildFunctionById });\n await new BuildWorkflowValidator(workflow).validateAsync();\n return workflow;\n }\n\n protected abstract parseConfigToBuildStepsAndBuildFunctionByIdMappingAsync(): Promise<{\n buildSteps: BuildStep[];\n buildFunctionById: BuildFunctionById;\n }>;\n\n private validateExternalFunctions(externalFunctions?: BuildFunction[]): void {\n if (externalFunctions === undefined) {\n return;\n }\n const externalFunctionIds = externalFunctions.map((f) => f.getFullId());\n const duplicatedExternalFunctionIds = duplicates(externalFunctionIds);\n if (duplicatedExternalFunctionIds.length === 0) {\n return;\n }\n throw new BuildConfigError(\n `Provided external functions with duplicated IDs: ${duplicatedExternalFunctionIds\n .map((id) => `\"${id}\"`)\n .join(', ')}`\n );\n }\n\n private validateExternalFunctionGroups(externalFunctionGroups?: BuildFunctionGroup[]): void {\n if (externalFunctionGroups === undefined) {\n return;\n }\n const externalFunctionGroupIds = externalFunctionGroups.map((f) => f.getFullId());\n const duplicatedExternalFunctionGroupIds = duplicates(externalFunctionGroupIds);\n if (duplicatedExternalFunctionGroupIds.length === 0) {\n return;\n }\n throw new BuildConfigError(\n `Provided external function groups with duplicated IDs: ${duplicatedExternalFunctionGroupIds\n .map((id) => `\"${id}\"`)\n .join(', ')}`\n );\n }\n\n protected getExternalFunctionFullIds(): string[] {\n if (this.externalFunctions === undefined) {\n return [];\n }\n const ids = this.externalFunctions.map((f) => f.getFullId());\n return uniq(ids);\n }\n\n protected getExternalFunctionGroupFullIds(): string[] {\n if (this.externalFunctionGroups === undefined) {\n return [];\n }\n const ids = this.externalFunctionGroups.map((f) => f.getFullId());\n return uniq(ids);\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import Joi from 'joi';
2
- import { BuildRuntimePlatform } from './BuildRuntimePlatform.js';
3
- import { BuildStepInputValueTypeName, BuildStepInputValueType } from './BuildStepInput.js';
4
- import { BuildStepEnv } from './BuildStepEnv.js';
2
+ import { BuildRuntimePlatform } from './BuildRuntimePlatform';
3
+ import { BuildStepInputValueTypeName, BuildStepInputValueType } from './BuildStepInput';
4
+ import { BuildStepEnv } from './BuildStepEnv';
5
5
  export type BuildFunctions = Record<string, BuildFunctionConfig>;
6
6
  interface BuildFunctionsConfigFile {
7
7
  configFilesToImport?: string[];
@@ -19,10 +19,10 @@ const promises_1 = __importDefault(require("fs/promises"));
19
19
  const path_1 = __importDefault(require("path"));
20
20
  const joi_1 = __importDefault(require("joi"));
21
21
  const yaml_1 = __importDefault(require("yaml"));
22
- const errors_js_1 = require("./errors.cjs");
23
- const BuildRuntimePlatform_js_1 = require("./BuildRuntimePlatform.cjs");
24
- const BuildStepInput_js_1 = require("./BuildStepInput.cjs");
25
- const template_js_1 = require("./utils/template.cjs");
22
+ const errors_1 = require("./errors");
23
+ const BuildRuntimePlatform_1 = require("./BuildRuntimePlatform");
24
+ const BuildStepInput_1 = require("./BuildStepInput");
25
+ const template_1 = require("./utils/template");
26
26
  const BuildFunctionInputsSchema = joi_1.default.array().items(joi_1.default.alternatives().conditional(joi_1.default.ref('.'), {
27
27
  is: joi_1.default.string(),
28
28
  then: joi_1.default.string().required(),
@@ -35,46 +35,46 @@ const BuildFunctionInputsSchema = joi_1.default.array().items(joi_1.default.alte
35
35
  }),
36
36
  })
37
37
  .when('allowedValueType', {
38
- is: BuildStepInput_js_1.BuildStepInputValueTypeName.STRING,
38
+ is: BuildStepInput_1.BuildStepInputValueTypeName.STRING,
39
39
  then: joi_1.default.string().allow(''),
40
40
  })
41
41
  .when('allowedValueType', {
42
- is: BuildStepInput_js_1.BuildStepInputValueTypeName.BOOLEAN,
43
- then: joi_1.default.alternatives(joi_1.default.boolean(), joi_1.default.string().pattern(template_js_1.BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX, 'context or output reference regex pattern')).messages({
42
+ is: BuildStepInput_1.BuildStepInputValueTypeName.BOOLEAN,
43
+ then: joi_1.default.alternatives(joi_1.default.boolean(), joi_1.default.string().pattern(template_1.BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX, 'context or output reference regex pattern')).messages({
44
44
  'alternatives.types': '{{#label}} must be a boolean or reference to output or context value',
45
45
  }),
46
46
  })
47
47
  .when('allowedValueType', {
48
- is: BuildStepInput_js_1.BuildStepInputValueTypeName.NUMBER,
49
- then: joi_1.default.alternatives(joi_1.default.number(), joi_1.default.string().pattern(template_js_1.BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX, 'context or output reference regex pattern')).messages({
48
+ is: BuildStepInput_1.BuildStepInputValueTypeName.NUMBER,
49
+ then: joi_1.default.alternatives(joi_1.default.number(), joi_1.default.string().pattern(template_1.BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX, 'context or output reference regex pattern')).messages({
50
50
  'alternatives.types': '{{#label}} must be a number or reference to output or context value',
51
51
  }),
52
52
  })
53
53
  .when('allowedValueType', {
54
- is: BuildStepInput_js_1.BuildStepInputValueTypeName.JSON,
55
- then: joi_1.default.alternatives(joi_1.default.object(), joi_1.default.string().pattern(template_js_1.BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX, 'context or output reference regex pattern')).messages({
54
+ is: BuildStepInput_1.BuildStepInputValueTypeName.JSON,
55
+ then: joi_1.default.alternatives(joi_1.default.object(), joi_1.default.string().pattern(template_1.BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX, 'context or output reference regex pattern')).messages({
56
56
  'alternatives.types': '{{#label}} must be a object or reference to output or context value',
57
57
  }),
58
58
  }),
59
59
  allowedValues: joi_1.default.when('allowedValueType', {
60
- is: BuildStepInput_js_1.BuildStepInputValueTypeName.STRING,
60
+ is: BuildStepInput_1.BuildStepInputValueTypeName.STRING,
61
61
  then: joi_1.default.array().items(joi_1.default.string().allow('')),
62
62
  })
63
63
  .when('allowedValueType', {
64
- is: BuildStepInput_js_1.BuildStepInputValueTypeName.BOOLEAN,
64
+ is: BuildStepInput_1.BuildStepInputValueTypeName.BOOLEAN,
65
65
  then: joi_1.default.array().items(joi_1.default.boolean()),
66
66
  })
67
67
  .when('allowedValueType', {
68
- is: BuildStepInput_js_1.BuildStepInputValueTypeName.NUMBER,
68
+ is: BuildStepInput_1.BuildStepInputValueTypeName.NUMBER,
69
69
  then: joi_1.default.array().items(joi_1.default.number()),
70
70
  })
71
71
  .when('allowedValueType', {
72
- is: BuildStepInput_js_1.BuildStepInputValueTypeName.JSON,
72
+ is: BuildStepInput_1.BuildStepInputValueTypeName.JSON,
73
73
  then: joi_1.default.array().items(joi_1.default.object()),
74
74
  }),
75
75
  allowedValueType: joi_1.default.string()
76
- .valid(...Object.values(BuildStepInput_js_1.BuildStepInputValueTypeName))
77
- .default(BuildStepInput_js_1.BuildStepInputValueTypeName.STRING),
76
+ .valid(...Object.values(BuildStepInput_1.BuildStepInputValueTypeName))
77
+ .default(BuildStepInput_1.BuildStepInputValueTypeName.STRING),
78
78
  required: joi_1.default.boolean(),
79
79
  })
80
80
  .rename('allowed_values', 'allowedValues')
@@ -121,7 +121,7 @@ const BuildStepConfigSchema = joi_1.default.any()
121
121
  });
122
122
  const BuildFunctionConfigSchema = joi_1.default.object({
123
123
  name: joi_1.default.string(),
124
- supportedRuntimePlatforms: joi_1.default.array().items(...Object.values(BuildRuntimePlatform_js_1.BuildRuntimePlatform)),
124
+ supportedRuntimePlatforms: joi_1.default.array().items(...Object.values(BuildRuntimePlatform_1.BuildRuntimePlatform)),
125
125
  inputs: BuildFunctionInputsSchema,
126
126
  outputs: BuildStepOutputsSchema,
127
127
  command: joi_1.default.string(),
@@ -195,7 +195,7 @@ async function importFunctionsAsync(baseConfigPath, configPathsToImport) {
195
195
  }
196
196
  }
197
197
  catch (err) {
198
- if (err instanceof errors_js_1.BuildConfigError) {
198
+ if (err instanceof errors_1.BuildConfigError) {
199
199
  errors.push(err);
200
200
  }
201
201
  else {
@@ -204,7 +204,7 @@ async function importFunctionsAsync(baseConfigPath, configPathsToImport) {
204
204
  }
205
205
  }
206
206
  if (errors.length > 0) {
207
- throw new errors_js_1.BuildWorkflowError(`Detected build config errors in imported files.`, errors);
207
+ throw new errors_1.BuildWorkflowError(`Detected build config errors in imported files.`, errors);
208
208
  }
209
209
  return importedFunctions;
210
210
  }
@@ -223,7 +223,7 @@ function validateConfig(schema, config, configFilePath) {
223
223
  });
224
224
  if (error) {
225
225
  const errorMessage = error.details.map(({ message }) => message).join(', ');
226
- throw new errors_js_1.BuildConfigError(errorMessage, {
226
+ throw new errors_1.BuildConfigError(errorMessage, {
227
227
  cause: error,
228
228
  ...(configFilePath && { metadata: { configFilePath } }),
229
229
  });
@@ -280,7 +280,7 @@ function validateAllFunctionsExist(config, { externalFunctionIds = [], externalF
280
280
  !externalFunctionGroupsIdsSet.has(calledFunctionOrFunctionGroup));
281
281
  });
282
282
  if (nonExistentFunctionsOrFunctionGroups.length > 0) {
283
- throw new errors_js_1.BuildConfigError(`Calling non-existent functions: ${nonExistentFunctionsOrFunctionGroups
283
+ throw new errors_1.BuildConfigError(`Calling non-existent functions: ${nonExistentFunctionsOrFunctionGroups
284
284
  .map((f) => `"${f}"`)
285
285
  .join(', ')}.`);
286
286
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildConfig.js","sourceRoot":"","sources":["../src/BuildConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport Joi from 'joi';\nimport YAML from 'yaml';\n\nimport { BuildConfigError, BuildWorkflowError } from './errors';\nimport { BuildRuntimePlatform } from './BuildRuntimePlatform';\nimport { BuildStepInputValueTypeName, BuildStepInputValueType } from './BuildStepInput';\nimport { BuildStepEnv } from './BuildStepEnv';\nimport { BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX } from './utils/template';\n\nexport type BuildFunctions = Record<string, BuildFunctionConfig>;\n\ninterface BuildFunctionsConfigFile {\n configFilesToImport?: string[];\n functions?: BuildFunctions;\n}\n\nexport interface BuildConfig extends BuildFunctionsConfigFile {\n build: {\n name?: string;\n steps: BuildStepConfig[];\n };\n}\n\nexport type BuildStepConfig =\n | BuildStepCommandRun\n | BuildStepBareCommandRun\n | BuildStepFunctionCall\n | BuildStepBareFunctionOrFunctionGroupCall;\n\nexport type BuildStepCommandRun = {\n run: BuildFunctionCallConfig & {\n outputs?: BuildStepOutputs;\n command: string;\n };\n};\nexport type BuildStepBareCommandRun = { run: string };\nexport type BuildStepFunctionCall = {\n [functionId: string]: BuildFunctionCallConfig;\n};\nexport type BuildStepBareFunctionOrFunctionGroupCall = string;\n\nexport type BuildFunctionCallConfig = {\n id?: string;\n inputs?: BuildStepInputs;\n name?: string;\n workingDirectory?: string;\n shell?: string;\n env?: BuildStepEnv;\n if?: string;\n timeout_minutes?: number;\n // Internal field for metrics collection. Not documented publicly.\n __metrics_id?: string;\n};\n\nexport type BuildStepInputs = Record<string, unknown>;\nexport type BuildStepOutputs = (\n | string\n | {\n name: string;\n required?: boolean;\n }\n)[];\n\nexport interface BuildFunctionConfig {\n inputs?: BuildFunctionInputs;\n outputs?: BuildFunctionOutputs;\n name?: string;\n supportedRuntimePlatforms?: BuildRuntimePlatform[];\n shell?: string;\n command?: string;\n path?: string;\n}\n\nexport type BuildFunctionInputs = (\n | string\n | {\n name: string;\n defaultValue?: BuildStepInputValueType;\n allowedValues?: BuildStepInputValueType[];\n required?: boolean;\n allowedValueType: BuildStepInputValueTypeName;\n }\n)[];\nexport type BuildFunctionOutputs = BuildStepOutputs;\n\nconst BuildFunctionInputsSchema = Joi.array().items(\n Joi.alternatives().conditional(Joi.ref('.'), {\n is: Joi.string(),\n then: Joi.string().required(),\n otherwise: Joi.object({\n name: Joi.string().required(),\n defaultValue: Joi.when('allowedValues', {\n is: Joi.exist(),\n then: Joi.valid(Joi.in('allowedValues')).messages({\n 'any.only': '{{#label}} must be one of allowed values',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.STRING,\n then: Joi.string().allow(''),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.BOOLEAN,\n then: Joi.alternatives(\n Joi.boolean(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a boolean or reference to output or context value',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.NUMBER,\n then: Joi.alternatives(\n Joi.number(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a number or reference to output or context value',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.JSON,\n then: Joi.alternatives(\n Joi.object(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a object or reference to output or context value',\n }),\n }),\n allowedValues: Joi.when('allowedValueType', {\n is: BuildStepInputValueTypeName.STRING,\n then: Joi.array().items(Joi.string().allow('')),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.BOOLEAN,\n then: Joi.array().items(Joi.boolean()),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.NUMBER,\n then: Joi.array().items(Joi.number()),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.JSON,\n then: Joi.array().items(Joi.object()),\n }),\n allowedValueType: Joi.string()\n .valid(...Object.values(BuildStepInputValueTypeName))\n .default(BuildStepInputValueTypeName.STRING),\n required: Joi.boolean(),\n })\n .rename('allowed_values', 'allowedValues')\n .rename('default_value', 'defaultValue')\n .rename('type', 'allowedValueType')\n .required(),\n })\n);\n\nconst BuildStepOutputsSchema = Joi.array().items(\n Joi.alternatives().try(\n Joi.string().required(),\n Joi.object({\n name: Joi.string().required(),\n required: Joi.boolean(),\n }).required()\n )\n);\n\nconst BuildFunctionCallSchema = Joi.object({\n id: Joi.string(),\n inputs: Joi.object().pattern(\n Joi.string(),\n Joi.alternatives().try(Joi.string().allow(''), Joi.boolean(), Joi.number(), Joi.object())\n ),\n name: Joi.string(),\n workingDirectory: Joi.string(),\n shell: Joi.string(),\n env: Joi.object().pattern(Joi.string(), Joi.string().allow('')),\n if: Joi.string(),\n timeout_minutes: Joi.number().positive(),\n // Internal field for metrics collection. Not documented publicly.\n __metrics_id: Joi.string(),\n}).rename('working_directory', 'workingDirectory');\n\nconst BuildStepConfigSchema = Joi.any<BuildStepConfig>()\n .invalid(null)\n .when(\n Joi.object().pattern(\n Joi.string().disallow('run').required(),\n Joi.object().unknown().required()\n ),\n {\n then: Joi.object().pattern(\n Joi.string().disallow('run').min(1).required(),\n BuildFunctionCallSchema.required(),\n { matches: Joi.array().length(1) }\n ),\n }\n )\n .when(Joi.object({ run: Joi.object().unknown().required() }), {\n then: Joi.object({\n run: BuildFunctionCallSchema.keys({\n outputs: BuildStepOutputsSchema,\n command: Joi.string().required(),\n }),\n }),\n })\n .when(Joi.object({ run: Joi.string().required() }), {\n then: Joi.object({\n run: Joi.string().min(1).required(),\n }),\n })\n .when(Joi.string(), {\n then: Joi.string().min(1),\n });\n\nconst BuildFunctionConfigSchema = Joi.object({\n name: Joi.string(),\n supportedRuntimePlatforms: Joi.array().items(...Object.values(BuildRuntimePlatform)),\n inputs: BuildFunctionInputsSchema,\n outputs: BuildStepOutputsSchema,\n command: Joi.string(),\n path: Joi.string(),\n shell: Joi.string(),\n})\n .rename('supported_platforms', 'supportedRuntimePlatforms')\n .xor('command', 'path')\n .nand('command', 'path');\n\nexport const BuildFunctionsConfigFileSchema = Joi.object<BuildFunctionsConfigFile>({\n configFilesToImport: Joi.array().items(Joi.string().pattern(/\\.y(a)?ml$/)),\n functions: Joi.object().pattern(\n Joi.string()\n .pattern(/^[\\w-]+$/, 'function names')\n .min(1)\n .required()\n .disallow('run'),\n BuildFunctionConfigSchema.required()\n ),\n})\n .rename('import', 'configFilesToImport')\n .required();\n\nexport const BuildConfigSchema = BuildFunctionsConfigFileSchema.append<BuildConfig>({\n build: Joi.object({\n name: Joi.string(),\n steps: Joi.array().items(BuildStepConfigSchema.required()).required(),\n }).required(),\n}).required();\n\ninterface BuildConfigValidationParams {\n externalFunctionIds?: string[];\n externalFunctionGroupsIds?: string[];\n skipNamespacedFunctionsOrFunctionGroupsCheck?: boolean;\n}\n\nexport async function readAndValidateBuildConfigFromPathAsync(\n configPath: string,\n params: BuildConfigValidationParams = {}\n): Promise<BuildConfig> {\n const rawConfig = await readRawBuildConfigAsync(configPath);\n\n const config = validateConfig(BuildConfigSchema, rawConfig);\n for (const functionName in config.functions) {\n const customFunctionPath = config.functions[functionName].path;\n if (customFunctionPath) {\n config.functions[functionName].path = maybeResolveCustomFunctionRelativePath(\n path.dirname(configPath),\n customFunctionPath\n );\n }\n }\n\n const importedFunctions = await importFunctionsAsync(configPath, config.configFilesToImport);\n mergeConfigWithImportedFunctions(config, importedFunctions);\n validateAllFunctionsExist(config, params);\n return config;\n}\n\nasync function importFunctionsAsync(\n baseConfigPath: string,\n configPathsToImport?: string[]\n): Promise<BuildFunctions> {\n if (!configPathsToImport) {\n return {};\n }\n\n const baseConfigDir = path.dirname(baseConfigPath);\n\n const errors: BuildConfigError[] = [];\n const importedFunctions: BuildFunctions = {};\n // this is a set of visited files identified by ABSOLUTE paths\n const visitedFiles = new Set<string>([baseConfigPath]);\n const configFilesToVisit = (configPathsToImport ?? []).map((childConfigRelativePath) =>\n path.resolve(baseConfigDir, childConfigRelativePath)\n );\n while (configFilesToVisit.length > 0) {\n const childConfigPath = configFilesToVisit.shift();\n assert(childConfigPath, 'Guaranteed by loop condition');\n if (visitedFiles.has(childConfigPath)) {\n continue;\n }\n visitedFiles.add(childConfigPath);\n try {\n const childConfig = await readAndValidateBuildFunctionsConfigFileAsync(childConfigPath);\n const childDir = path.dirname(childConfigPath);\n for (const functionName in childConfig.functions) {\n if (!(functionName in importedFunctions)) {\n const f = childConfig.functions[functionName];\n if (f.path) {\n f.path = maybeResolveCustomFunctionRelativePath(childDir, f.path);\n }\n importedFunctions[functionName] = f;\n }\n }\n if (childConfig.configFilesToImport) {\n configFilesToVisit.push(\n ...childConfig.configFilesToImport.map((relativePath) =>\n path.resolve(childDir, relativePath)\n )\n );\n }\n } catch (err) {\n if (err instanceof BuildConfigError) {\n errors.push(err);\n } else {\n throw err;\n }\n }\n }\n if (errors.length > 0) {\n throw new BuildWorkflowError(`Detected build config errors in imported files.`, errors);\n }\n return importedFunctions;\n}\n\nexport async function readAndValidateBuildFunctionsConfigFileAsync(\n configPath: string\n): Promise<BuildFunctionsConfigFile> {\n const rawConfig = await readRawBuildConfigAsync(configPath);\n return validateConfig(BuildFunctionsConfigFileSchema, rawConfig);\n}\n\nexport async function readRawBuildConfigAsync(configPath: string): Promise<any> {\n const contents = await fs.readFile(configPath, 'utf-8');\n return YAML.parse(contents);\n}\n\nexport function validateConfig<T>(\n schema: Joi.ObjectSchema<T>,\n config: object,\n configFilePath?: string\n): T {\n const { error, value } = schema.validate(config, {\n allowUnknown: false,\n abortEarly: false,\n });\n if (error) {\n const errorMessage = error.details.map(({ message }) => message).join(', ');\n throw new BuildConfigError(errorMessage, {\n cause: error,\n ...(configFilePath && { metadata: { configFilePath } }),\n });\n }\n return value;\n}\n\nexport function mergeConfigWithImportedFunctions(\n config: BuildConfig,\n importedFunctions: BuildFunctions\n): void {\n if (Object.keys(importedFunctions).length === 0) {\n return;\n }\n config.functions = config.functions ?? {};\n for (const functionName in importedFunctions) {\n if (!(functionName in config.functions)) {\n config.functions[functionName] = importedFunctions[functionName];\n }\n }\n}\n\nexport function isBuildStepCommandRun(step: BuildStepConfig): step is BuildStepCommandRun {\n return Boolean(step) && typeof step === 'object' && typeof step.run === 'object';\n}\n\nexport function isBuildStepBareCommandRun(step: BuildStepConfig): step is BuildStepBareCommandRun {\n return Boolean(step) && typeof step === 'object' && typeof step.run === 'string';\n}\n\nexport function isBuildStepFunctionCall(step: BuildStepConfig): step is BuildStepFunctionCall {\n return Boolean(step) && typeof step === 'object' && !('run' in step);\n}\n\nexport function isBuildStepBareFunctionOrFunctionGroupCall(\n step: BuildStepConfig\n): step is BuildStepBareFunctionOrFunctionGroupCall {\n return typeof step === 'string';\n}\n\nexport function validateAllFunctionsExist(\n config: BuildConfig,\n {\n externalFunctionIds = [],\n externalFunctionGroupsIds = [],\n skipNamespacedFunctionsOrFunctionGroupsCheck,\n }: BuildConfigValidationParams\n): void {\n const calledFunctionsOrFunctionGroupsSet = new Set<string>();\n for (const step of config.build.steps) {\n if (typeof step === 'string') {\n calledFunctionsOrFunctionGroupsSet.add(step);\n } else if (step !== null && !('run' in step)) {\n const keys = Object.keys(step);\n assert(\n keys.length === 1,\n 'There must be at most one function call in the step (enforced by joi).'\n );\n calledFunctionsOrFunctionGroupsSet.add(keys[0]);\n }\n }\n const calledFunctionsOrFunctionGroup = Array.from(calledFunctionsOrFunctionGroupsSet);\n const externalFunctionIdsSet = new Set(externalFunctionIds);\n const externalFunctionGroupsIdsSet = new Set(externalFunctionGroupsIds);\n const nonExistentFunctionsOrFunctionGroups = calledFunctionsOrFunctionGroup.filter(\n (calledFunctionOrFunctionGroup) => {\n if (\n isFullIdNamespaced(calledFunctionOrFunctionGroup) &&\n skipNamespacedFunctionsOrFunctionGroupsCheck\n ) {\n return false;\n }\n return (\n !(calledFunctionOrFunctionGroup in (config.functions ?? {})) &&\n !externalFunctionIdsSet.has(calledFunctionOrFunctionGroup) &&\n !externalFunctionGroupsIdsSet.has(calledFunctionOrFunctionGroup)\n );\n }\n );\n if (nonExistentFunctionsOrFunctionGroups.length > 0) {\n throw new BuildConfigError(\n `Calling non-existent functions: ${nonExistentFunctionsOrFunctionGroups\n .map((f) => `\"${f}\"`)\n .join(', ')}.`\n );\n }\n}\n\nfunction maybeResolveCustomFunctionRelativePath(dir: string, customFunctionPath: string): string {\n if (!path.isAbsolute(customFunctionPath)) {\n return path.resolve(dir, customFunctionPath);\n }\n return customFunctionPath;\n}\n\nfunction isFullIdNamespaced(fullId: string): boolean {\n return fullId.includes('/');\n}\n"]}
@@ -1,8 +1,8 @@
1
- import { BuildFunction, BuildFunctionById } from './BuildFunction.js';
2
- import { BuildStep } from './BuildStep.js';
3
- import { BuildStepGlobalContext } from './BuildStepContext.js';
4
- import { BuildFunctionGroup } from './BuildFunctionGroup.js';
5
- import { AbstractConfigParser } from './AbstractConfigParser.js';
1
+ import { BuildFunction, BuildFunctionById } from './BuildFunction';
2
+ import { BuildStep } from './BuildStep';
3
+ import { BuildStepGlobalContext } from './BuildStepContext';
4
+ import { BuildFunctionGroup } from './BuildFunctionGroup';
5
+ import { AbstractConfigParser } from './AbstractConfigParser';
6
6
  export declare class BuildConfigParser extends AbstractConfigParser {
7
7
  private readonly configPath;
8
8
  constructor(ctx: BuildStepGlobalContext, { configPath, externalFunctions, externalFunctionGroups, }: {
@@ -5,15 +5,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.BuildConfigParser = void 0;
7
7
  const assert_1 = __importDefault(require("assert"));
8
- const BuildConfig_js_1 = require("./BuildConfig.cjs");
9
- const BuildFunction_js_1 = require("./BuildFunction.cjs");
10
- const BuildStep_js_1 = require("./BuildStep.cjs");
11
- const BuildStepInput_js_1 = require("./BuildStepInput.cjs");
12
- const BuildStepOutput_js_1 = require("./BuildStepOutput.cjs");
13
- const errors_js_1 = require("./errors.cjs");
14
- const BuildFunctionGroup_js_1 = require("./BuildFunctionGroup.cjs");
15
- const AbstractConfigParser_js_1 = require("./AbstractConfigParser.cjs");
16
- class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
8
+ const BuildConfig_1 = require("./BuildConfig");
9
+ const BuildFunction_1 = require("./BuildFunction");
10
+ const BuildStep_1 = require("./BuildStep");
11
+ const BuildStepInput_1 = require("./BuildStepInput");
12
+ const BuildStepOutput_1 = require("./BuildStepOutput");
13
+ const errors_1 = require("./errors");
14
+ const BuildFunctionGroup_1 = require("./BuildFunctionGroup");
15
+ const AbstractConfigParser_1 = require("./AbstractConfigParser");
16
+ class BuildConfigParser extends AbstractConfigParser_1.AbstractConfigParser {
17
17
  constructor(ctx, { configPath, externalFunctions, externalFunctionGroups, }) {
18
18
  super(ctx, {
19
19
  externalFunctions,
@@ -23,13 +23,13 @@ class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
23
23
  }
24
24
  async parseConfigToBuildStepsAndBuildFunctionByIdMappingAsync() {
25
25
  var _a;
26
- const config = await (0, BuildConfig_js_1.readAndValidateBuildConfigFromPathAsync)(this.configPath, {
26
+ const config = await (0, BuildConfig_1.readAndValidateBuildConfigFromPathAsync)(this.configPath, {
27
27
  externalFunctionIds: this.getExternalFunctionFullIds(),
28
28
  externalFunctionGroupsIds: this.getExternalFunctionGroupFullIds(),
29
29
  });
30
30
  const configBuildFunctions = this.createBuildFunctionsFromConfig(config.functions);
31
31
  const buildFunctions = this.mergeBuildFunctionsWithExternal(configBuildFunctions, this.externalFunctions);
32
- const buildFunctionGroups = (0, BuildFunctionGroup_js_1.createBuildFunctionGroupByIdMapping)((_a = this.externalFunctionGroups) !== null && _a !== void 0 ? _a : []);
32
+ const buildFunctionGroups = (0, BuildFunctionGroup_1.createBuildFunctionGroupByIdMapping)((_a = this.externalFunctionGroups) !== null && _a !== void 0 ? _a : []);
33
33
  const buildSteps = [];
34
34
  for (const stepConfig of config.build.steps) {
35
35
  buildSteps.push(...this.createBuildStepFromConfig(stepConfig, buildFunctions, buildFunctionGroups));
@@ -40,30 +40,30 @@ class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
40
40
  };
41
41
  }
42
42
  createBuildStepFromConfig(buildStepConfig, buildFunctions, buildFunctionGroups) {
43
- if ((0, BuildConfig_js_1.isBuildStepCommandRun)(buildStepConfig)) {
43
+ if ((0, BuildConfig_1.isBuildStepCommandRun)(buildStepConfig)) {
44
44
  return [this.createBuildStepFromBuildStepCommandRun(buildStepConfig)];
45
45
  }
46
- else if ((0, BuildConfig_js_1.isBuildStepBareCommandRun)(buildStepConfig)) {
46
+ else if ((0, BuildConfig_1.isBuildStepBareCommandRun)(buildStepConfig)) {
47
47
  return [this.createBuildStepFromBuildStepBareCommandRun(buildStepConfig)];
48
48
  }
49
- else if ((0, BuildConfig_js_1.isBuildStepBareFunctionOrFunctionGroupCall)(buildStepConfig)) {
49
+ else if ((0, BuildConfig_1.isBuildStepBareFunctionOrFunctionGroupCall)(buildStepConfig)) {
50
50
  return this.createBuildStepsFromBareBuildStepFunctionOrBareBuildStepFunctionGroupCall(buildFunctions, buildFunctionGroups, buildStepConfig);
51
51
  }
52
52
  else if (buildStepConfig !== null) {
53
53
  return this.createBuildStepsFromBuildStepFunctionOrBuildStepFunctionGroupCall(buildFunctions, buildFunctionGroups, buildStepConfig);
54
54
  }
55
55
  else {
56
- throw new errors_js_1.BuildConfigError('Invalid build step configuration detected. Build step cannot be empty.');
56
+ throw new errors_1.BuildConfigError('Invalid build step configuration detected. Build step cannot be empty.');
57
57
  }
58
58
  }
59
59
  createBuildStepFromBuildStepCommandRun({ run }) {
60
60
  const { id: maybeId, inputs: inputsConfig, outputs: outputsConfig, name, workingDirectory, shell, command, env, if: ifCondition, timeout_minutes, __metrics_id, } = run;
61
- const id = BuildStep_js_1.BuildStep.getNewId(maybeId);
62
- const displayName = BuildStep_js_1.BuildStep.getDisplayName({ id, name, command });
61
+ const id = BuildStep_1.BuildStep.getNewId(maybeId);
62
+ const displayName = BuildStep_1.BuildStep.getDisplayName({ id, name, command });
63
63
  const inputs = inputsConfig && this.createBuildStepInputsFromDefinition(inputsConfig, displayName);
64
64
  const outputs = outputsConfig && this.createBuildStepOutputsFromDefinition(outputsConfig, displayName);
65
65
  const timeoutMs = timeout_minutes !== undefined ? timeout_minutes * 60 * 1000 : undefined;
66
- return new BuildStep_js_1.BuildStep(this.ctx, {
66
+ return new BuildStep_1.BuildStep(this.ctx, {
67
67
  id,
68
68
  inputs,
69
69
  outputs,
@@ -79,9 +79,9 @@ class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
79
79
  });
80
80
  }
81
81
  createBuildStepFromBuildStepBareCommandRun({ run: command, }) {
82
- const id = BuildStep_js_1.BuildStep.getNewId();
83
- const displayName = BuildStep_js_1.BuildStep.getDisplayName({ id, command });
84
- return new BuildStep_js_1.BuildStep(this.ctx, {
82
+ const id = BuildStep_1.BuildStep.getNewId();
83
+ const displayName = BuildStep_1.BuildStep.getDisplayName({ id, command });
84
+ return new BuildStep_1.BuildStep(this.ctx, {
85
85
  id,
86
86
  displayName,
87
87
  command,
@@ -156,7 +156,7 @@ class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
156
156
  createBuildFunctionFromConfig({ id, name, inputs: inputsConfig, outputs: outputsConfig, shell, command, supportedRuntimePlatforms, path: customFunctionModulePath, }) {
157
157
  const inputProviders = inputsConfig && this.createBuildStepInputProvidersFromBuildFunctionInputs(inputsConfig);
158
158
  const outputProviders = outputsConfig && this.createBuildStepOutputProvidersFromBuildFunctionOutputs(outputsConfig);
159
- return new BuildFunction_js_1.BuildFunction({
159
+ return new BuildFunction_1.BuildFunction({
160
160
  id,
161
161
  name,
162
162
  inputProviders,
@@ -168,13 +168,13 @@ class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
168
168
  });
169
169
  }
170
170
  createBuildStepInputsFromDefinition(buildStepInputs, stepDisplayName) {
171
- return Object.entries(buildStepInputs).map(([key, value]) => new BuildStepInput_js_1.BuildStepInput(this.ctx, {
171
+ return Object.entries(buildStepInputs).map(([key, value]) => new BuildStepInput_1.BuildStepInput(this.ctx, {
172
172
  id: key,
173
173
  stepDisplayName,
174
174
  defaultValue: value,
175
175
  required: true,
176
176
  allowedValueTypeName: typeof value === 'object'
177
- ? BuildStepInput_js_1.BuildStepInputValueTypeName.JSON
177
+ ? BuildStepInput_1.BuildStepInputValueTypeName.JSON
178
178
  : typeof value,
179
179
  }));
180
180
  }
@@ -182,12 +182,12 @@ class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
182
182
  return buildFunctionInputs.map((entry) => {
183
183
  var _a;
184
184
  return typeof entry === 'string'
185
- ? BuildStepInput_js_1.BuildStepInput.createProvider({
185
+ ? BuildStepInput_1.BuildStepInput.createProvider({
186
186
  id: entry,
187
187
  required: true,
188
- allowedValueTypeName: BuildStepInput_js_1.BuildStepInputValueTypeName.STRING,
188
+ allowedValueTypeName: BuildStepInput_1.BuildStepInputValueTypeName.STRING,
189
189
  })
190
- : BuildStepInput_js_1.BuildStepInput.createProvider({
190
+ : BuildStepInput_1.BuildStepInput.createProvider({
191
191
  id: entry.name,
192
192
  required: (_a = entry.required) !== null && _a !== void 0 ? _a : true,
193
193
  defaultValue: entry.defaultValue,
@@ -200,8 +200,8 @@ class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
200
200
  return buildStepOutputs.map((entry) => {
201
201
  var _a;
202
202
  return typeof entry === 'string'
203
- ? new BuildStepOutput_js_1.BuildStepOutput(this.ctx, { id: entry, stepDisplayName, required: true })
204
- : new BuildStepOutput_js_1.BuildStepOutput(this.ctx, {
203
+ ? new BuildStepOutput_1.BuildStepOutput(this.ctx, { id: entry, stepDisplayName, required: true })
204
+ : new BuildStepOutput_1.BuildStepOutput(this.ctx, {
205
205
  id: entry.name,
206
206
  stepDisplayName,
207
207
  required: (_a = entry.required) !== null && _a !== void 0 ? _a : true,
@@ -212,8 +212,8 @@ class BuildConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
212
212
  return buildFunctionOutputs.map((entry) => {
213
213
  var _a;
214
214
  return typeof entry === 'string'
215
- ? BuildStepOutput_js_1.BuildStepOutput.createProvider({ id: entry, required: true })
216
- : BuildStepOutput_js_1.BuildStepOutput.createProvider({ id: entry.name, required: (_a = entry.required) !== null && _a !== void 0 ? _a : true });
215
+ ? BuildStepOutput_1.BuildStepOutput.createProvider({ id: entry, required: true })
216
+ : BuildStepOutput_1.BuildStepOutput.createProvider({ id: entry.name, required: (_a = entry.required) !== null && _a !== void 0 ? _a : true });
217
217
  });
218
218
  }
219
219
  mergeBuildFunctionsWithExternal(configFunctions, externalFunctions) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildConfigParser.js","sourceRoot":"","sources":["../src/BuildConfigParser.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport {\n BuildConfig,\n BuildFunctionConfig,\n BuildFunctionInputs,\n BuildFunctionOutputs,\n BuildStepBareCommandRun,\n BuildStepBareFunctionOrFunctionGroupCall,\n BuildStepCommandRun,\n BuildStepConfig,\n BuildStepFunctionCall,\n BuildStepInputs,\n BuildStepOutputs,\n isBuildStepBareCommandRun,\n isBuildStepBareFunctionOrFunctionGroupCall,\n isBuildStepCommandRun,\n readAndValidateBuildConfigFromPathAsync,\n} from './BuildConfig';\nimport { BuildFunction, BuildFunctionById } from './BuildFunction';\nimport { BuildStep } from './BuildStep';\nimport {\n BuildStepInput,\n BuildStepInputProvider,\n BuildStepInputValueTypeName,\n} from './BuildStepInput';\nimport { BuildStepGlobalContext } from './BuildStepContext';\nimport { BuildStepOutput, BuildStepOutputProvider } from './BuildStepOutput';\nimport { BuildConfigError } from './errors';\nimport {\n BuildFunctionGroup,\n BuildFunctionGroupById,\n createBuildFunctionGroupByIdMapping,\n} from './BuildFunctionGroup';\nimport { AbstractConfigParser } from './AbstractConfigParser';\n\nexport class BuildConfigParser extends AbstractConfigParser {\n private readonly configPath: string;\n constructor(\n ctx: BuildStepGlobalContext,\n {\n configPath,\n externalFunctions,\n externalFunctionGroups,\n }: {\n configPath: string;\n externalFunctions?: BuildFunction[];\n externalFunctionGroups?: BuildFunctionGroup[];\n }\n ) {\n super(ctx, {\n externalFunctions,\n externalFunctionGroups,\n });\n\n this.configPath = configPath;\n }\n\n protected async parseConfigToBuildStepsAndBuildFunctionByIdMappingAsync(): Promise<{\n buildSteps: BuildStep[];\n buildFunctionById: BuildFunctionById;\n }> {\n const config = await readAndValidateBuildConfigFromPathAsync(this.configPath, {\n externalFunctionIds: this.getExternalFunctionFullIds(),\n externalFunctionGroupsIds: this.getExternalFunctionGroupFullIds(),\n });\n const configBuildFunctions = this.createBuildFunctionsFromConfig(config.functions);\n const buildFunctions = this.mergeBuildFunctionsWithExternal(\n configBuildFunctions,\n this.externalFunctions\n );\n const buildFunctionGroups = createBuildFunctionGroupByIdMapping(\n this.externalFunctionGroups ?? []\n );\n const buildSteps: BuildStep[] = [];\n for (const stepConfig of config.build.steps) {\n buildSteps.push(\n ...this.createBuildStepFromConfig(stepConfig, buildFunctions, buildFunctionGroups)\n );\n }\n return {\n buildSteps,\n buildFunctionById: buildFunctions,\n };\n }\n\n private createBuildStepFromConfig(\n buildStepConfig: BuildStepConfig,\n buildFunctions: BuildFunctionById,\n buildFunctionGroups: BuildFunctionGroupById\n ): BuildStep[] {\n if (isBuildStepCommandRun(buildStepConfig)) {\n return [this.createBuildStepFromBuildStepCommandRun(buildStepConfig)];\n } else if (isBuildStepBareCommandRun(buildStepConfig)) {\n return [this.createBuildStepFromBuildStepBareCommandRun(buildStepConfig)];\n } else if (isBuildStepBareFunctionOrFunctionGroupCall(buildStepConfig)) {\n return this.createBuildStepsFromBareBuildStepFunctionOrBareBuildStepFunctionGroupCall(\n buildFunctions,\n buildFunctionGroups,\n buildStepConfig\n );\n } else if (buildStepConfig !== null) {\n return this.createBuildStepsFromBuildStepFunctionOrBuildStepFunctionGroupCall(\n buildFunctions,\n buildFunctionGroups,\n buildStepConfig\n );\n } else {\n throw new BuildConfigError(\n 'Invalid build step configuration detected. Build step cannot be empty.'\n );\n }\n }\n\n private createBuildStepFromBuildStepCommandRun({ run }: BuildStepCommandRun): BuildStep {\n const {\n id: maybeId,\n inputs: inputsConfig,\n outputs: outputsConfig,\n name,\n workingDirectory,\n shell,\n command,\n env,\n if: ifCondition,\n timeout_minutes,\n __metrics_id,\n } = run;\n const id = BuildStep.getNewId(maybeId);\n const displayName = BuildStep.getDisplayName({ id, name, command });\n const inputs =\n inputsConfig && this.createBuildStepInputsFromDefinition(inputsConfig, displayName);\n const outputs =\n outputsConfig && this.createBuildStepOutputsFromDefinition(outputsConfig, displayName);\n const timeoutMs = timeout_minutes !== undefined ? timeout_minutes * 60 * 1000 : undefined;\n return new BuildStep(this.ctx, {\n id,\n inputs,\n outputs,\n name,\n displayName,\n workingDirectory,\n shell,\n command,\n env,\n ifCondition,\n timeoutMs,\n __metricsId: __metrics_id,\n });\n }\n\n private createBuildStepFromBuildStepBareCommandRun({\n run: command,\n }: BuildStepBareCommandRun): BuildStep {\n const id = BuildStep.getNewId();\n const displayName = BuildStep.getDisplayName({ id, command });\n return new BuildStep(this.ctx, {\n id,\n displayName,\n command,\n });\n }\n\n private createBuildStepsFromBuildStepFunctionGroupCall(\n buildFunctionGroups: BuildFunctionGroupById,\n buildStepFunctionCall: BuildStepFunctionCall\n ): BuildStep[] {\n const functionId = getFunctionIdFromBuildStepFunctionCall(buildStepFunctionCall);\n const buildFunctionGroup = buildFunctionGroups[functionId];\n assert(buildFunctionGroup, `Build function group with id \"${functionId}\" is not defined.`);\n return buildFunctionGroup.createBuildStepsFromFunctionGroupCall(this.ctx, {\n callInputs: buildStepFunctionCall[functionId].inputs,\n });\n }\n\n private createBuildStepsFromBuildStepBareFunctionGroupCall(\n buildFunctionGroups: BuildFunctionGroupById,\n functionGroupId: string\n ): BuildStep[] {\n const buildFunctionGroup = buildFunctionGroups[functionGroupId];\n assert(buildFunctionGroup, `Build function group with id \"${functionGroupId}\" is not defined.`);\n return buildFunctionGroup.createBuildStepsFromFunctionGroupCall(this.ctx);\n }\n\n private createBuildStepFromBuildStepBareFunctionCall(\n buildFunctions: BuildFunctionById,\n functionId: BuildStepBareFunctionOrFunctionGroupCall\n ): BuildStep {\n const buildFunction = buildFunctions[functionId];\n return buildFunction.createBuildStepFromFunctionCall(this.ctx);\n }\n\n private createBuildStepsFromBareBuildStepFunctionOrBareBuildStepFunctionGroupCall(\n buildFunctions: BuildFunctionById,\n buildFunctionGroups: BuildFunctionGroupById,\n functionOrFunctionGroupId: string\n ): BuildStep[] {\n const maybeFunctionGroup = buildFunctionGroups[functionOrFunctionGroupId];\n if (maybeFunctionGroup) {\n return this.createBuildStepsFromBuildStepBareFunctionGroupCall(\n buildFunctionGroups,\n functionOrFunctionGroupId\n );\n }\n return [\n this.createBuildStepFromBuildStepBareFunctionCall(buildFunctions, functionOrFunctionGroupId),\n ];\n }\n\n private createBuildStepsFromBuildStepFunctionOrBuildStepFunctionGroupCall(\n buildFunctions: BuildFunctionById,\n buildFunctionGroups: BuildFunctionGroupById,\n buildStepFunctionCall: BuildStepFunctionCall\n ): BuildStep[] {\n const functionId = getFunctionIdFromBuildStepFunctionCall(buildStepFunctionCall);\n\n const maybeFunctionGroup = buildFunctionGroups[functionId];\n if (maybeFunctionGroup) {\n return this.createBuildStepsFromBuildStepFunctionGroupCall(\n buildFunctionGroups,\n buildStepFunctionCall\n );\n }\n return [this.createBuildStepFromBuildStepFunctionCall(buildFunctions, buildStepFunctionCall)];\n }\n\n private createBuildStepFromBuildStepFunctionCall(\n buildFunctions: BuildFunctionById,\n buildStepFunctionCall: BuildStepFunctionCall\n ): BuildStep {\n const functionId = getFunctionIdFromBuildStepFunctionCall(buildStepFunctionCall);\n const buildFunctionCallConfig = buildStepFunctionCall[functionId];\n const buildFunction = buildFunctions[functionId];\n const timeoutMs =\n buildFunctionCallConfig.timeout_minutes !== undefined\n ? buildFunctionCallConfig.timeout_minutes * 60 * 1000\n : undefined;\n return buildFunction.createBuildStepFromFunctionCall(this.ctx, {\n id: buildFunctionCallConfig.id,\n name: buildFunctionCallConfig.name,\n callInputs: buildFunctionCallConfig.inputs,\n workingDirectory: buildFunctionCallConfig.workingDirectory,\n shell: buildFunctionCallConfig.shell,\n env: buildFunctionCallConfig.env,\n ifCondition: buildFunctionCallConfig.if,\n timeoutMs,\n });\n }\n\n private createBuildFunctionsFromConfig(\n buildFunctionsConfig: BuildConfig['functions']\n ): BuildFunctionById {\n if (!buildFunctionsConfig) {\n return {};\n }\n const result: BuildFunctionById = {};\n for (const [functionId, buildFunctionConfig] of Object.entries(buildFunctionsConfig)) {\n const buildFunction = this.createBuildFunctionFromConfig({\n id: functionId,\n ...buildFunctionConfig,\n });\n result[buildFunction.getFullId()] = buildFunction;\n }\n return result;\n }\n\n private createBuildFunctionFromConfig({\n id,\n name,\n inputs: inputsConfig,\n outputs: outputsConfig,\n shell,\n command,\n supportedRuntimePlatforms,\n path: customFunctionModulePath,\n }: BuildFunctionConfig & { id: string }): BuildFunction {\n const inputProviders =\n inputsConfig && this.createBuildStepInputProvidersFromBuildFunctionInputs(inputsConfig);\n const outputProviders =\n outputsConfig && this.createBuildStepOutputProvidersFromBuildFunctionOutputs(outputsConfig);\n return new BuildFunction({\n id,\n name,\n inputProviders,\n outputProviders,\n shell,\n command,\n customFunctionModulePath,\n supportedRuntimePlatforms,\n });\n }\n\n private createBuildStepInputsFromDefinition(\n buildStepInputs: BuildStepInputs,\n stepDisplayName: string\n ): BuildStepInput[] {\n return Object.entries(buildStepInputs).map(\n ([key, value]) =>\n new BuildStepInput(this.ctx, {\n id: key,\n stepDisplayName,\n defaultValue: value,\n required: true,\n allowedValueTypeName:\n typeof value === 'object'\n ? BuildStepInputValueTypeName.JSON\n : (typeof value as BuildStepInputValueTypeName),\n })\n );\n }\n\n private createBuildStepInputProvidersFromBuildFunctionInputs(\n buildFunctionInputs: BuildFunctionInputs\n ): BuildStepInputProvider[] {\n return buildFunctionInputs.map((entry) => {\n return typeof entry === 'string'\n ? BuildStepInput.createProvider({\n id: entry,\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n })\n : BuildStepInput.createProvider({\n id: entry.name,\n required: entry.required ?? true,\n defaultValue: entry.defaultValue,\n allowedValues: entry.allowedValues,\n allowedValueTypeName: entry.allowedValueType,\n });\n });\n }\n\n private createBuildStepOutputsFromDefinition(\n buildStepOutputs: BuildStepOutputs,\n stepDisplayName: string\n ): BuildStepOutput[] {\n return buildStepOutputs.map((entry) =>\n typeof entry === 'string'\n ? new BuildStepOutput(this.ctx, { id: entry, stepDisplayName, required: true })\n : new BuildStepOutput(this.ctx, {\n id: entry.name,\n stepDisplayName,\n required: entry.required ?? true,\n })\n );\n }\n\n private createBuildStepOutputProvidersFromBuildFunctionOutputs(\n buildFunctionOutputs: BuildFunctionOutputs\n ): BuildStepOutputProvider[] {\n return buildFunctionOutputs.map((entry) =>\n typeof entry === 'string'\n ? BuildStepOutput.createProvider({ id: entry, required: true })\n : BuildStepOutput.createProvider({ id: entry.name, required: entry.required ?? true })\n );\n }\n\n private mergeBuildFunctionsWithExternal(\n configFunctions: BuildFunctionById,\n externalFunctions?: BuildFunction[]\n ): BuildFunctionById {\n const result: BuildFunctionById = { ...configFunctions };\n if (externalFunctions === undefined) {\n return result;\n }\n for (const buildFunction of externalFunctions) {\n // functions defined in config shadow the external ones\n const fullId = buildFunction.getFullId();\n if (!(fullId in result)) {\n result[fullId] = buildFunction;\n }\n }\n return result;\n }\n}\n\nfunction getFunctionIdFromBuildStepFunctionCall(\n buildStepFunctionCall: BuildStepFunctionCall\n): string {\n const keys = Object.keys(buildStepFunctionCall);\n assert(\n keys.length === 1,\n 'There must be at most one function call in the step (enforced by joi).'\n );\n return keys[0];\n}\n"]}
@@ -1,9 +1,9 @@
1
- import { BuildRuntimePlatform } from './BuildRuntimePlatform.js';
2
- import { BuildStep, BuildStepFunction } from './BuildStep.js';
3
- import { BuildStepGlobalContext } from './BuildStepContext.js';
4
- import { BuildStepInputProvider } from './BuildStepInput.js';
5
- import { BuildStepOutputProvider } from './BuildStepOutput.js';
6
- import { BuildStepEnv } from './BuildStepEnv.js';
1
+ import { BuildRuntimePlatform } from './BuildRuntimePlatform';
2
+ import { BuildStep, BuildStepFunction } from './BuildStep';
3
+ import { BuildStepGlobalContext } from './BuildStepContext';
4
+ import { BuildStepInputProvider } from './BuildStepInput';
5
+ import { BuildStepOutputProvider } from './BuildStepOutput';
6
+ import { BuildStepEnv } from './BuildStepEnv';
7
7
  export type BuildFunctionById = Record<string, BuildFunction>;
8
8
  export type BuildFunctionCallInputs = Record<string, unknown>;
9
9
  export declare class BuildFunction {
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.BuildFunction = void 0;
7
7
  const assert_1 = __importDefault(require("assert"));
8
- const BuildStep_js_1 = require("./BuildStep.cjs");
9
- const customFunction_js_1 = require("./utils/customFunction.cjs");
8
+ const BuildStep_1 = require("./BuildStep");
9
+ const customFunction_1 = require("./utils/customFunction");
10
10
  class BuildFunction {
11
11
  constructor({ namespace, id, name, supportedRuntimePlatforms, inputProviders, outputProviders, command, fn, customFunctionModulePath, shell, __metricsId, }) {
12
12
  (0, assert_1.default)(command !== undefined || fn !== undefined || customFunctionModulePath !== undefined, 'Either command, fn or path must be defined.');
@@ -30,9 +30,9 @@ class BuildFunction {
30
30
  }
31
31
  createBuildStepFromFunctionCall(ctx, { id, name, callInputs = {}, workingDirectory, shell, env, ifCondition, timeoutMs, } = {}) {
32
32
  var _a, _b, _c;
33
- const buildStepId = BuildStep_js_1.BuildStep.getNewId(id);
33
+ const buildStepId = BuildStep_1.BuildStep.getNewId(id);
34
34
  const buildStepName = name !== null && name !== void 0 ? name : this.name;
35
- const buildStepDisplayName = BuildStep_js_1.BuildStep.getDisplayName({
35
+ const buildStepDisplayName = BuildStep_1.BuildStep.getDisplayName({
36
36
  id: buildStepId,
37
37
  command: this.command,
38
38
  name: buildStepName,
@@ -45,13 +45,13 @@ class BuildFunction {
45
45
  return input;
46
46
  });
47
47
  const outputs = (_b = this.outputProviders) === null || _b === void 0 ? void 0 : _b.map((outputProvider) => outputProvider(ctx, buildStepId));
48
- return new BuildStep_js_1.BuildStep(ctx, {
48
+ return new BuildStep_1.BuildStep(ctx, {
49
49
  id: buildStepId,
50
50
  name: buildStepName,
51
51
  displayName: buildStepDisplayName,
52
52
  command: this.command,
53
53
  fn: (_c = this.fn) !== null && _c !== void 0 ? _c : (this.customFunctionModulePath
54
- ? (0, customFunction_js_1.createCustomFunctionCall)(this.customFunctionModulePath)
54
+ ? (0, customFunction_1.createCustomFunctionCall)(this.customFunctionModulePath)
55
55
  : undefined),
56
56
  workingDirectory,
57
57
  inputs,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildFunction.js","sourceRoot":"","sources":["../src/BuildFunction.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { BuildRuntimePlatform } from './BuildRuntimePlatform';\nimport { BuildStep, BuildStepFunction } from './BuildStep';\nimport { BuildStepGlobalContext } from './BuildStepContext';\nimport { BuildStepInputProvider } from './BuildStepInput';\nimport { BuildStepOutputProvider } from './BuildStepOutput';\nimport { BuildStepEnv } from './BuildStepEnv';\nimport { createCustomFunctionCall } from './utils/customFunction';\n\nexport type BuildFunctionById = Record<string, BuildFunction>;\nexport type BuildFunctionCallInputs = Record<string, unknown>;\n\nexport class BuildFunction {\n public readonly namespace?: string;\n public readonly id: string;\n public readonly name?: string;\n public readonly supportedRuntimePlatforms?: BuildRuntimePlatform[];\n public readonly inputProviders?: BuildStepInputProvider[];\n public readonly outputProviders?: BuildStepOutputProvider[];\n public readonly command?: string;\n public readonly customFunctionModulePath?: string;\n public readonly fn?: BuildStepFunction;\n public readonly shell?: string;\n public readonly __metricsId?: string;\n\n constructor({\n namespace,\n id,\n name,\n supportedRuntimePlatforms,\n inputProviders,\n outputProviders,\n command,\n fn,\n customFunctionModulePath,\n shell,\n __metricsId,\n }: {\n namespace?: string;\n id: string;\n name?: string;\n supportedRuntimePlatforms?: BuildRuntimePlatform[];\n inputProviders?: BuildStepInputProvider[];\n outputProviders?: BuildStepOutputProvider[];\n command?: string;\n customFunctionModulePath?: string;\n fn?: BuildStepFunction;\n shell?: string;\n __metricsId?: string;\n }) {\n assert(\n command !== undefined || fn !== undefined || customFunctionModulePath !== undefined,\n 'Either command, fn or path must be defined.'\n );\n\n assert(!(command !== undefined && fn !== undefined), 'Command and fn cannot be both set.');\n assert(\n !(command !== undefined && customFunctionModulePath !== undefined),\n 'Command and path cannot be both set.'\n );\n assert(\n !(fn !== undefined && customFunctionModulePath !== undefined),\n 'Fn and path cannot be both set.'\n );\n\n this.namespace = namespace;\n this.id = id;\n this.name = name;\n this.supportedRuntimePlatforms = supportedRuntimePlatforms;\n this.inputProviders = inputProviders;\n this.outputProviders = outputProviders;\n this.command = command;\n this.fn = fn;\n this.shell = shell;\n this.customFunctionModulePath = customFunctionModulePath;\n this.__metricsId = __metricsId;\n }\n\n public getFullId(): string {\n return this.namespace === undefined ? this.id : `${this.namespace}/${this.id}`;\n }\n\n public createBuildStepFromFunctionCall(\n ctx: BuildStepGlobalContext,\n {\n id,\n name,\n callInputs = {},\n workingDirectory,\n shell,\n env,\n ifCondition,\n timeoutMs,\n }: {\n id?: string;\n name?: string;\n callInputs?: BuildFunctionCallInputs;\n workingDirectory?: string;\n shell?: string;\n env?: BuildStepEnv;\n ifCondition?: string;\n timeoutMs?: number;\n } = {}\n ): BuildStep {\n const buildStepId = BuildStep.getNewId(id);\n const buildStepName = name ?? this.name;\n const buildStepDisplayName = BuildStep.getDisplayName({\n id: buildStepId,\n command: this.command,\n name: buildStepName,\n });\n\n const inputs = this.inputProviders?.map((inputProvider) => {\n const input = inputProvider(ctx, buildStepId);\n if (input.id in callInputs) {\n input.set(callInputs[input.id]);\n }\n return input;\n });\n const outputs = this.outputProviders?.map((outputProvider) => outputProvider(ctx, buildStepId));\n\n return new BuildStep(ctx, {\n id: buildStepId,\n name: buildStepName,\n displayName: buildStepDisplayName,\n command: this.command,\n fn:\n this.fn ??\n (this.customFunctionModulePath\n ? createCustomFunctionCall(this.customFunctionModulePath)\n : undefined),\n workingDirectory,\n inputs,\n outputs,\n shell,\n supportedRuntimePlatforms: this.supportedRuntimePlatforms,\n env,\n ifCondition,\n timeoutMs,\n __metricsId: this.__metricsId,\n });\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { BuildFunctionCallInputs } from './BuildFunction.js';
2
- import { BuildStep } from './BuildStep.js';
3
- import { BuildStepGlobalContext } from './BuildStepContext.js';
4
- import { BuildStepInputById, BuildStepInputProvider } from './BuildStepInput.js';
1
+ import { BuildFunctionCallInputs } from './BuildFunction';
2
+ import { BuildStep } from './BuildStep';
3
+ import { BuildStepGlobalContext } from './BuildStepContext';
4
+ import { BuildStepInputById, BuildStepInputProvider } from './BuildStepInput';
5
5
  export type BuildFunctionGroupById = Record<string, BuildFunctionGroup | undefined>;
6
6
  export declare class BuildFunctionGroup {
7
7
  readonly namespace: string;