@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 +1 @@
1
- {"version":3,"file":"BuildTemporaryFiles.js","sourceRoot":"","sources":["../src/BuildTemporaryFiles.ts"],"names":[],"mappings":";;;;;AAOA,wEAUC;AAED,oFAUC;AAUD,gEAEC;AAED,0DAEC;AA7CD,gDAAwB;AACxB,2DAA6B;AAE7B,+BAAoC;AAI7B,KAAK,UAAU,8BAA8B,CAClD,GAA2B,EAC3B,MAAc,EACd,cAAsB;IAEtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,kBAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAA,SAAM,GAAE,KAAK,CAAC,CAAC;IACpE,MAAM,kBAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACxD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,oCAAoC,CACxD,GAA2B,EAC3B,MAAc;IAEd,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IACD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,kBAAE,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,EAAE,kCAAkC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,uBAAuB,CAAC,GAA2B,EAAE,MAAc;IAC1E,OAAO,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,GAA2B,EAAE,MAAc;IAC7E,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,0BAA0B,CAAC,GAA2B,EAAE,MAAc;IACpF,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,uBAAuB,CAAC,GAA2B,EAAE,MAAc;IACjF,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC","sourcesContent":["import path from 'path';\nimport fs from 'fs/promises';\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { BuildStepGlobalContext } from './BuildStepContext.js';\n\nexport async function saveScriptToTemporaryFileAsync(\n ctx: BuildStepGlobalContext,\n stepId: string,\n scriptContents: string\n): Promise<string> {\n const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);\n await fs.mkdir(scriptsDir, { recursive: true });\n const temporaryScriptPath = path.join(scriptsDir, `${uuidv4()}.sh`);\n await fs.writeFile(temporaryScriptPath, scriptContents);\n return temporaryScriptPath;\n}\n\nexport async function cleanUpStepTemporaryDirectoriesAsync(\n ctx: BuildStepGlobalContext,\n stepId: string\n): Promise<void> {\n if (ctx.skipCleanup) {\n return;\n }\n const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);\n await fs.rm(stepTemporaryDirectory, { recursive: true, force: true });\n ctx.baseLogger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');\n}\n\nfunction getTemporaryStepDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(ctx.stepsInternalBuildDirectory, 'steps', stepId);\n}\n\nfunction getTemporaryScriptsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');\n}\n\nexport function getTemporaryOutputsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');\n}\n\nexport function getTemporaryEnvsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'envs');\n}\n"]}
1
+ {"version":3,"file":"BuildTemporaryFiles.js","sourceRoot":"","sources":["../src/BuildTemporaryFiles.ts"],"names":[],"mappings":";;;;;AAOA,wEAUC;AAED,oFAUC;AAUD,gEAEC;AAED,0DAEC;AA7CD,gDAAwB;AACxB,2DAA6B;AAE7B,+BAAoC;AAI7B,KAAK,UAAU,8BAA8B,CAClD,GAA2B,EAC3B,MAAc,EACd,cAAsB;IAEtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,kBAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAA,SAAM,GAAE,KAAK,CAAC,CAAC;IACpE,MAAM,kBAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACxD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,oCAAoC,CACxD,GAA2B,EAC3B,MAAc;IAEd,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IACD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,kBAAE,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,EAAE,kCAAkC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,uBAAuB,CAAC,GAA2B,EAAE,MAAc;IAC1E,OAAO,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,GAA2B,EAAE,MAAc;IAC7E,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,0BAA0B,CAAC,GAA2B,EAAE,MAAc;IACpF,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,uBAAuB,CAAC,GAA2B,EAAE,MAAc;IACjF,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC","sourcesContent":["import path from 'path';\nimport fs from 'fs/promises';\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { BuildStepGlobalContext } from './BuildStepContext';\n\nexport async function saveScriptToTemporaryFileAsync(\n ctx: BuildStepGlobalContext,\n stepId: string,\n scriptContents: string\n): Promise<string> {\n const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);\n await fs.mkdir(scriptsDir, { recursive: true });\n const temporaryScriptPath = path.join(scriptsDir, `${uuidv4()}.sh`);\n await fs.writeFile(temporaryScriptPath, scriptContents);\n return temporaryScriptPath;\n}\n\nexport async function cleanUpStepTemporaryDirectoriesAsync(\n ctx: BuildStepGlobalContext,\n stepId: string\n): Promise<void> {\n if (ctx.skipCleanup) {\n return;\n }\n const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);\n await fs.rm(stepTemporaryDirectory, { recursive: true, force: true });\n ctx.baseLogger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');\n}\n\nfunction getTemporaryStepDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(ctx.stepsInternalBuildDirectory, 'steps', stepId);\n}\n\nfunction getTemporaryScriptsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');\n}\n\nexport function getTemporaryOutputsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');\n}\n\nexport function getTemporaryEnvsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'envs');\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { BuildFunctionById } from './BuildFunction.js';
2
- import { BuildStep } from './BuildStep.js';
3
- import { BuildStepGlobalContext } from './BuildStepContext.js';
1
+ import { BuildFunctionById } from './BuildFunction';
2
+ import { BuildStep } from './BuildStep';
3
+ import { BuildStepGlobalContext } from './BuildStepContext';
4
4
  export declare class BuildWorkflow {
5
5
  private readonly ctx;
6
6
  readonly buildSteps: BuildStep[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildWorkflow.js","sourceRoot":"","sources":["../src/BuildWorkflow.ts"],"names":[],"mappings":";;;AAKA,MAAa,aAAa;IAIxB,YACmB,GAA2B,EAC5C,EAAE,UAAU,EAAE,cAAc,EAAkE;QAD7E,QAAG,GAAH,GAAG,CAAwB;QAG5C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,IAAI,UAAU,GAAiB,IAAI,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC;gBACH,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CACnB,wDAAwD,IAAI,CAAC,WAAW,iCAAiC,IAAI,CAAC,WAAW,4JAA4J,CACtR,CAAC;gBACF,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,GAAG,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC1B,CAAC;YAED,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpC,IAAI,UAA4B,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC1B,UAAU,GAAG,SAAS,CAAC;gBACzB,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,UAAU,GAAG,QAAQ,CAAC;oBACtB,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,GAAG,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC1B,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAW,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,IAAe,EAAE,MAAwB,EAAE,UAAkB;QACtF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;YACrB,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;CACF;AA9DD,sCA8DC","sourcesContent":["import { BuildFunctionById } from './BuildFunction';\nimport { BuildStep } from './BuildStep';\nimport { BuildStepGlobalContext } from './BuildStepContext';\nimport { StepMetricResult } from './StepMetrics';\n\nexport class BuildWorkflow {\n public readonly buildSteps: BuildStep[];\n public readonly buildFunctions: BuildFunctionById;\n\n constructor(\n private readonly ctx: BuildStepGlobalContext,\n { buildSteps, buildFunctions }: { buildSteps: BuildStep[]; buildFunctions: BuildFunctionById }\n ) {\n this.buildSteps = buildSteps;\n this.buildFunctions = buildFunctions;\n }\n\n public async executeAsync(): Promise<void> {\n let maybeError: Error | null = null;\n for (const step of this.buildSteps) {\n let shouldExecuteStep = false;\n\n try {\n shouldExecuteStep = step.shouldExecuteStep();\n } catch (err: any) {\n step.ctx.logger.error({ err });\n step.ctx.logger.error(\n `Runner failed to evaluate if it should execute step \"${step.displayName}\", using step's if condition \"${step.ifCondition}\". This can be caused by trying to access non-existing object property. If you think this is a bug report it here: https://github.com/expo/eas-cli/issues.`\n );\n maybeError = maybeError ?? err;\n this.ctx.markAsFailed();\n }\n\n if (shouldExecuteStep) {\n const startTime = performance.now();\n let stepResult: StepMetricResult;\n try {\n await step.executeAsync();\n stepResult = 'success';\n } catch (err: any) {\n stepResult = 'failed';\n maybeError = maybeError ?? err;\n this.ctx.markAsFailed();\n } finally {\n this.collectStepMetrics(step, stepResult!, performance.now() - startTime);\n }\n } else {\n step.skip();\n }\n }\n\n if (maybeError) {\n throw maybeError;\n }\n }\n\n private collectStepMetrics(step: BuildStep, result: StepMetricResult, durationMs: number): void {\n if (!step.__metricsId) {\n return;\n }\n\n this.ctx.addStepMetric({\n metricsId: step.__metricsId,\n result,\n durationMs,\n });\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BuildWorkflow } from './BuildWorkflow.js';
1
+ import { BuildWorkflow } from './BuildWorkflow';
2
2
  export declare class BuildWorkflowValidator {
3
3
  private readonly workflow;
4
4
  constructor(workflow: BuildWorkflow);
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.BuildWorkflowValidator = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
- const BuildStepInput_js_1 = require("./BuildStepInput.cjs");
10
- const errors_js_1 = require("./errors.cjs");
11
- const duplicates_js_1 = require("./utils/expodash/duplicates.cjs");
12
- const nullthrows_js_1 = require("./utils/nullthrows.cjs");
13
- const template_js_1 = require("./utils/template.cjs");
9
+ const BuildStepInput_1 = require("./BuildStepInput");
10
+ const errors_1 = require("./errors");
11
+ const duplicates_1 = require("./utils/expodash/duplicates");
12
+ const nullthrows_1 = require("./utils/nullthrows");
13
+ const template_1 = require("./utils/template");
14
14
  class BuildWorkflowValidator {
15
15
  constructor(workflow) {
16
16
  this.workflow = workflow;
@@ -22,17 +22,17 @@ class BuildWorkflowValidator {
22
22
  errors.push(...this.validateAllowedPlatforms());
23
23
  errors.push(...(await this.validateCustomFunctionModulesAsync()));
24
24
  if (errors.length !== 0) {
25
- throw new errors_js_1.BuildWorkflowError('Build workflow is invalid.', errors);
25
+ throw new errors_1.BuildWorkflowError('Build workflow is invalid.', errors);
26
26
  }
27
27
  }
28
28
  validateUniqueStepIds() {
29
29
  const stepIds = this.workflow.buildSteps.map(({ id }) => id);
30
- const duplicatedStepIds = (0, duplicates_js_1.duplicates)(stepIds);
30
+ const duplicatedStepIds = (0, duplicates_1.duplicates)(stepIds);
31
31
  if (duplicatedStepIds.length === 0) {
32
32
  return [];
33
33
  }
34
34
  else {
35
- const error = new errors_js_1.BuildConfigError(`Duplicated step IDs: ${duplicatedStepIds.map((i) => `"${i}"`).join(', ')}`);
35
+ const error = new errors_1.BuildConfigError(`Duplicated step IDs: ${duplicatedStepIds.map((i) => `"${i}"`).join(', ')}`);
36
36
  return [error];
37
37
  }
38
38
  }
@@ -44,16 +44,16 @@ class BuildWorkflowValidator {
44
44
  for (const currentStep of this.workflow.buildSteps) {
45
45
  for (const currentStepInput of (_a = currentStep.inputs) !== null && _a !== void 0 ? _a : []) {
46
46
  if (currentStepInput.required && currentStepInput.rawValue === undefined) {
47
- const error = new errors_js_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" is required but it was not set.`);
47
+ const error = new errors_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" is required but it was not set.`);
48
48
  errors.push(error);
49
49
  }
50
50
  const currentType = typeof currentStepInput.rawValue === 'object'
51
- ? BuildStepInput_js_1.BuildStepInputValueTypeName.JSON
51
+ ? BuildStepInput_1.BuildStepInputValueTypeName.JSON
52
52
  : typeof currentStepInput.rawValue;
53
53
  if (currentStepInput.rawValue !== undefined &&
54
54
  !currentStepInput.isRawValueStepOrContextReference() &&
55
55
  currentType !== currentStepInput.allowedValueTypeName) {
56
- const error = new errors_js_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" is set to "${typeof currentStepInput.rawValue === 'object'
56
+ const error = new errors_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" is set to "${typeof currentStepInput.rawValue === 'object'
57
57
  ? JSON.stringify(currentStepInput.rawValue)
58
58
  : currentStepInput.rawValue}" which is not of type "${currentStepInput.allowedValueTypeName}" or is not step or context reference.`);
59
59
  errors.push(error);
@@ -62,28 +62,28 @@ class BuildWorkflowValidator {
62
62
  continue;
63
63
  }
64
64
  if (!currentStepInput.isRawValueOneOfAllowedValues()) {
65
- const error = new errors_js_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" is set to "${currentStepInput.rawValue}" which is not one of the allowed values: ${(0, nullthrows_js_1.nullthrows)(currentStepInput.allowedValues)
65
+ const error = new errors_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" is set to "${currentStepInput.rawValue}" which is not one of the allowed values: ${(0, nullthrows_1.nullthrows)(currentStepInput.allowedValues)
66
66
  .map((i) => `"${i}"`)
67
67
  .join(', ')}.`);
68
68
  errors.push(error);
69
69
  }
70
70
  const paths = typeof currentStepInput.defaultValue === 'string'
71
- ? (0, template_js_1.findOutputPaths)(currentStepInput.defaultValue)
71
+ ? (0, template_1.findOutputPaths)(currentStepInput.defaultValue)
72
72
  : [];
73
73
  for (const { stepId: referencedStepId, outputId: referencedStepOutputId } of paths) {
74
74
  if (!(referencedStepId in visitedStepByStepId)) {
75
75
  if (allStepIds.has(referencedStepId)) {
76
- const error = new errors_js_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" uses an expression that references an output parameter from the future step "${referencedStepId}".`);
76
+ const error = new errors_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" uses an expression that references an output parameter from the future step "${referencedStepId}".`);
77
77
  errors.push(error);
78
78
  }
79
79
  else {
80
- const error = new errors_js_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" uses an expression that references an output parameter from a non-existent step "${referencedStepId}".`);
80
+ const error = new errors_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" uses an expression that references an output parameter from a non-existent step "${referencedStepId}".`);
81
81
  errors.push(error);
82
82
  }
83
83
  }
84
84
  else {
85
85
  if (!visitedStepByStepId[referencedStepId].hasOutputParameter(referencedStepOutputId)) {
86
- const error = new errors_js_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" uses an expression that references an undefined output parameter "${referencedStepOutputId}" from step "${referencedStepId}".`);
86
+ const error = new errors_1.BuildConfigError(`Input parameter "${currentStepInput.id}" for step "${currentStep.displayName}" uses an expression that references an undefined output parameter "${referencedStepOutputId}" from step "${referencedStepId}".`);
87
87
  errors.push(error);
88
88
  }
89
89
  }
@@ -97,7 +97,7 @@ class BuildWorkflowValidator {
97
97
  const errors = [];
98
98
  for (const step of this.workflow.buildSteps) {
99
99
  if (!step.canBeRunOnRuntimePlatform()) {
100
- const error = new errors_js_1.BuildConfigError(`Step "${step.displayName}" is not allowed on platform "${step.ctx.global.runtimePlatform}". Allowed platforms for this step are: ${(0, nullthrows_js_1.nullthrows)(step.supportedRuntimePlatforms, `step.supportedRuntimePlatforms can't be falsy if canBeRunOnRuntimePlatform() is false`)
100
+ const error = new errors_1.BuildConfigError(`Step "${step.displayName}" is not allowed on platform "${step.ctx.global.runtimePlatform}". Allowed platforms for this step are: ${(0, nullthrows_1.nullthrows)(step.supportedRuntimePlatforms, `step.supportedRuntimePlatforms can't be falsy if canBeRunOnRuntimePlatform() is false`)
101
101
  .map((p) => `"${p}"`)
102
102
  .join(', ')}.`);
103
103
  errors.push(error);
@@ -112,12 +112,12 @@ class BuildWorkflowValidator {
112
112
  continue;
113
113
  }
114
114
  if (!(await fs_extra_1.default.exists(buildFunction.customFunctionModulePath))) {
115
- const error = new errors_js_1.BuildConfigError(`Custom function module path "${buildFunction.customFunctionModulePath}" for function "${buildFunction.id}" does not exist.`);
115
+ const error = new errors_1.BuildConfigError(`Custom function module path "${buildFunction.customFunctionModulePath}" for function "${buildFunction.id}" does not exist.`);
116
116
  errors.push(error);
117
117
  continue;
118
118
  }
119
119
  if (!(await fs_extra_1.default.exists(path_1.default.join(buildFunction.customFunctionModulePath, 'package.json')))) {
120
- const error = new errors_js_1.BuildConfigError(`Custom function module path "${buildFunction.customFunctionModulePath}" for function "${buildFunction.id}" does not contain a package.json file.`);
120
+ const error = new errors_1.BuildConfigError(`Custom function module path "${buildFunction.customFunctionModulePath}" for function "${buildFunction.id}" does not contain a package.json file.`);
121
121
  errors.push(error);
122
122
  }
123
123
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildWorkflowValidator.js","sourceRoot":"","sources":["../src/BuildWorkflowValidator.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport fs from 'fs-extra';\n\nimport { BuildStep } from './BuildStep';\nimport { BuildStepInputValueTypeName } from './BuildStepInput';\nimport { BuildWorkflow } from './BuildWorkflow';\nimport { BuildConfigError, BuildWorkflowError } from './errors';\nimport { duplicates } from './utils/expodash/duplicates';\nimport { nullthrows } from './utils/nullthrows';\nimport { findOutputPaths } from './utils/template';\n\nexport class BuildWorkflowValidator {\n constructor(private readonly workflow: BuildWorkflow) {}\n\n public async validateAsync(): Promise<void> {\n const errors: BuildConfigError[] = [];\n errors.push(...this.validateUniqueStepIds());\n errors.push(...this.validateInputs());\n errors.push(...this.validateAllowedPlatforms());\n errors.push(...(await this.validateCustomFunctionModulesAsync()));\n if (errors.length !== 0) {\n throw new BuildWorkflowError('Build workflow is invalid.', errors);\n }\n }\n\n private validateUniqueStepIds(): BuildConfigError[] {\n const stepIds = this.workflow.buildSteps.map(({ id }) => id);\n const duplicatedStepIds = duplicates(stepIds);\n if (duplicatedStepIds.length === 0) {\n return [];\n } else {\n const error = new BuildConfigError(\n `Duplicated step IDs: ${duplicatedStepIds.map((i) => `\"${i}\"`).join(', ')}`\n );\n return [error];\n }\n }\n\n private validateInputs(): BuildConfigError[] {\n const errors: BuildConfigError[] = [];\n\n const allStepIds = new Set(this.workflow.buildSteps.map((s) => s.id));\n const visitedStepByStepId: Record<string, BuildStep> = {};\n for (const currentStep of this.workflow.buildSteps) {\n for (const currentStepInput of currentStep.inputs ?? []) {\n if (currentStepInput.required && currentStepInput.rawValue === undefined) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${currentStep.displayName}\" is required but it was not set.`\n );\n errors.push(error);\n }\n\n const currentType =\n typeof currentStepInput.rawValue === 'object'\n ? BuildStepInputValueTypeName.JSON\n : typeof currentStepInput.rawValue;\n if (\n currentStepInput.rawValue !== undefined &&\n !currentStepInput.isRawValueStepOrContextReference() &&\n currentType !== currentStepInput.allowedValueTypeName\n ) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${\n currentStep.displayName\n }\" is set to \"${\n typeof currentStepInput.rawValue === 'object'\n ? JSON.stringify(currentStepInput.rawValue)\n : currentStepInput.rawValue\n }\" which is not of type \"${\n currentStepInput.allowedValueTypeName\n }\" or is not step or context reference.`\n );\n errors.push(error);\n }\n\n if (currentStepInput.defaultValue === undefined) {\n continue;\n }\n if (!currentStepInput.isRawValueOneOfAllowedValues()) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${\n currentStep.displayName\n }\" is set to \"${currentStepInput.rawValue}\" which is not one of the allowed values: ${nullthrows(\n currentStepInput.allowedValues\n )\n .map((i) => `\"${i}\"`)\n .join(', ')}.`\n );\n errors.push(error);\n }\n const paths =\n typeof currentStepInput.defaultValue === 'string'\n ? findOutputPaths(currentStepInput.defaultValue)\n : [];\n for (const { stepId: referencedStepId, outputId: referencedStepOutputId } of paths) {\n if (!(referencedStepId in visitedStepByStepId)) {\n if (allStepIds.has(referencedStepId)) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${currentStep.displayName}\" uses an expression that references an output parameter from the future step \"${referencedStepId}\".`\n );\n errors.push(error);\n } else {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${currentStep.displayName}\" uses an expression that references an output parameter from a non-existent step \"${referencedStepId}\".`\n );\n errors.push(error);\n }\n } else {\n if (!visitedStepByStepId[referencedStepId].hasOutputParameter(referencedStepOutputId)) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${currentStep.displayName}\" uses an expression that references an undefined output parameter \"${referencedStepOutputId}\" from step \"${referencedStepId}\".`\n );\n errors.push(error);\n }\n }\n }\n }\n visitedStepByStepId[currentStep.id] = currentStep;\n }\n\n return errors;\n }\n\n private validateAllowedPlatforms(): BuildConfigError[] {\n const errors: BuildConfigError[] = [];\n for (const step of this.workflow.buildSteps) {\n if (!step.canBeRunOnRuntimePlatform()) {\n const error = new BuildConfigError(\n `Step \"${step.displayName}\" is not allowed on platform \"${\n step.ctx.global.runtimePlatform\n }\". Allowed platforms for this step are: ${nullthrows(\n step.supportedRuntimePlatforms,\n `step.supportedRuntimePlatforms can't be falsy if canBeRunOnRuntimePlatform() is false`\n )\n .map((p) => `\"${p}\"`)\n .join(', ')}.`\n );\n errors.push(error);\n }\n }\n return errors;\n }\n\n private async validateCustomFunctionModulesAsync(): Promise<BuildConfigError[]> {\n const errors: BuildConfigError[] = [];\n for (const buildFunction of Object.values(this.workflow.buildFunctions)) {\n if (!buildFunction.customFunctionModulePath) {\n continue;\n }\n\n if (!(await fs.exists(buildFunction.customFunctionModulePath))) {\n const error = new BuildConfigError(\n `Custom function module path \"${buildFunction.customFunctionModulePath}\" for function \"${buildFunction.id}\" does not exist.`\n );\n errors.push(error);\n continue;\n }\n\n if (!(await fs.exists(path.join(buildFunction.customFunctionModulePath, 'package.json')))) {\n const error = new BuildConfigError(\n `Custom function module path \"${buildFunction.customFunctionModulePath}\" for function \"${buildFunction.id}\" does not contain a package.json file.`\n );\n errors.push(error);\n }\n }\n return errors;\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import { Step } from '@expo/eas-build-job';
2
- import { BuildFunction, BuildFunctionById } from './BuildFunction.js';
3
- import { BuildFunctionGroup } from './BuildFunctionGroup.js';
4
- import { BuildStepGlobalContext } from './BuildStepContext.js';
5
- import { BuildStep } from './BuildStep.js';
6
- import { AbstractConfigParser } from './AbstractConfigParser.js';
2
+ import { BuildFunction, BuildFunctionById } from './BuildFunction';
3
+ import { BuildFunctionGroup } from './BuildFunctionGroup';
4
+ import { BuildStepGlobalContext } from './BuildStepContext';
5
+ import { BuildStep } from './BuildStep';
6
+ import { AbstractConfigParser } from './AbstractConfigParser';
7
7
  export declare class StepsConfigParser extends AbstractConfigParser {
8
8
  private readonly steps;
9
9
  constructor(ctx: BuildStepGlobalContext, { steps, externalFunctions, externalFunctionGroups, }: {
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.StepsConfigParser = void 0;
7
7
  const node_assert_1 = __importDefault(require("node:assert"));
8
8
  const eas_build_job_1 = require("@expo/eas-build-job");
9
- const BuildFunctionGroup_js_1 = require("./BuildFunctionGroup.cjs");
10
- const BuildStep_js_1 = require("./BuildStep.cjs");
11
- const AbstractConfigParser_js_1 = require("./AbstractConfigParser.cjs");
12
- const errors_js_1 = require("./errors.cjs");
13
- const BuildStepOutput_js_1 = require("./BuildStepOutput.cjs");
14
- class StepsConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
9
+ const BuildFunctionGroup_1 = require("./BuildFunctionGroup");
10
+ const BuildStep_1 = require("./BuildStep");
11
+ const AbstractConfigParser_1 = require("./AbstractConfigParser");
12
+ const errors_1 = require("./errors");
13
+ const BuildStepOutput_1 = require("./BuildStepOutput");
14
+ class StepsConfigParser extends AbstractConfigParser_1.AbstractConfigParser {
15
15
  constructor(ctx, { steps, externalFunctions, externalFunctionGroups, }) {
16
16
  super(ctx, {
17
17
  externalFunctions,
@@ -27,7 +27,7 @@ class StepsConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
27
27
  externalFunctionGroupIds: this.getExternalFunctionGroupFullIds(),
28
28
  });
29
29
  const buildFunctionById = this.createBuildFunctionByIdMappingForExternalFunctions();
30
- const buildFunctionGroupById = (0, BuildFunctionGroup_js_1.createBuildFunctionGroupByIdMapping)((_a = this.externalFunctionGroups) !== null && _a !== void 0 ? _a : []);
30
+ const buildFunctionGroupById = (0, BuildFunctionGroup_1.createBuildFunctionGroupByIdMapping)((_a = this.externalFunctionGroups) !== null && _a !== void 0 ? _a : []);
31
31
  const buildSteps = [];
32
32
  for (const stepConfig of validatedSteps) {
33
33
  buildSteps.push(...this.createBuildStepsFromStepConfig(stepConfig, {
@@ -62,14 +62,14 @@ class StepsConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
62
62
  });
63
63
  }
64
64
  else {
65
- throw new errors_js_1.BuildConfigError('Invalid job step configuration detected. Step must be shell or function step');
65
+ throw new errors_1.BuildConfigError('Invalid job step configuration detected. Step must be shell or function step');
66
66
  }
67
67
  }
68
68
  createBuildStepFromShellStepConfig(step) {
69
- const id = BuildStep_js_1.BuildStep.getNewId(step.id);
70
- const displayName = BuildStep_js_1.BuildStep.getDisplayName({ id, name: step.name, command: step.run });
69
+ const id = BuildStep_1.BuildStep.getNewId(step.id);
70
+ const displayName = BuildStep_1.BuildStep.getDisplayName({ id, name: step.name, command: step.run });
71
71
  const outputs = step.outputs && this.createBuildStepOutputsFromDefinition(step.outputs, displayName);
72
- return new BuildStep_js_1.BuildStep(this.ctx, {
72
+ return new BuildStep_1.BuildStep(this.ctx, {
73
73
  id,
74
74
  outputs,
75
75
  name: step.name,
@@ -108,7 +108,7 @@ class StepsConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
108
108
  createBuildStepOutputsFromDefinition(stepOutputs, stepDisplayName) {
109
109
  return stepOutputs.map((entry) => {
110
110
  var _a;
111
- return new BuildStepOutput_js_1.BuildStepOutput(this.ctx, {
111
+ return new BuildStepOutput_1.BuildStepOutput(this.ctx, {
112
112
  id: entry.name,
113
113
  stepDisplayName,
114
114
  required: (_a = entry.required) !== null && _a !== void 0 ? _a : true,
@@ -130,7 +130,7 @@ class StepsConfigParser extends AbstractConfigParser_js_1.AbstractConfigParser {
130
130
  !externalFunctionGroupsIdsSet.has(calledFunctionOrFunctionGroup));
131
131
  });
132
132
  if (nonExistentFunctionsOrFunctionGroups.length > 0) {
133
- throw new errors_js_1.BuildConfigError(`Calling non-existent functions: ${nonExistentFunctionsOrFunctionGroups
133
+ throw new errors_1.BuildConfigError(`Calling non-existent functions: ${nonExistentFunctionsOrFunctionGroups
134
134
  .map((f) => `"${f}"`)
135
135
  .join(', ')}.`);
136
136
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepsConfigParser.js","sourceRoot":"","sources":["../src/StepsConfigParser.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert';\n\nimport {\n FunctionStep,\n isStepFunctionStep,\n isStepShellStep,\n ShellStep,\n Step,\n validateSteps,\n} from '@expo/eas-build-job';\n\nimport { BuildFunction, BuildFunctionById } from './BuildFunction';\nimport {\n BuildFunctionGroup,\n BuildFunctionGroupById,\n createBuildFunctionGroupByIdMapping,\n} from './BuildFunctionGroup';\nimport { BuildStepGlobalContext } from './BuildStepContext';\nimport { BuildStep } from './BuildStep';\nimport { AbstractConfigParser } from './AbstractConfigParser';\nimport { BuildConfigError } from './errors';\nimport { BuildStepOutput } from './BuildStepOutput';\n\nexport class StepsConfigParser extends AbstractConfigParser {\n private readonly steps: Step[];\n\n constructor(\n ctx: BuildStepGlobalContext,\n {\n steps,\n externalFunctions,\n externalFunctionGroups,\n }: {\n steps: Step[];\n externalFunctions?: BuildFunction[];\n externalFunctionGroups?: BuildFunctionGroup[];\n }\n ) {\n super(ctx, {\n externalFunctions,\n externalFunctionGroups,\n });\n\n this.steps = steps;\n }\n\n protected async parseConfigToBuildStepsAndBuildFunctionByIdMappingAsync(): Promise<{\n buildSteps: BuildStep[];\n buildFunctionById: BuildFunctionById;\n }> {\n const validatedSteps = validateSteps(this.steps);\n StepsConfigParser.validateAllFunctionsExist(validatedSteps, {\n externalFunctionIds: this.getExternalFunctionFullIds(),\n externalFunctionGroupIds: this.getExternalFunctionGroupFullIds(),\n });\n\n const buildFunctionById = this.createBuildFunctionByIdMappingForExternalFunctions();\n const buildFunctionGroupById = createBuildFunctionGroupByIdMapping(\n this.externalFunctionGroups ?? []\n );\n\n const buildSteps: BuildStep[] = [];\n for (const stepConfig of validatedSteps) {\n buildSteps.push(\n ...this.createBuildStepsFromStepConfig(stepConfig, {\n buildFunctionById,\n buildFunctionGroupById,\n })\n );\n }\n\n return {\n buildSteps,\n buildFunctionById,\n };\n }\n\n private createBuildFunctionByIdMappingForExternalFunctions(): BuildFunctionById {\n const result: BuildFunctionById = {};\n\n if (this.externalFunctions === undefined) {\n return result;\n }\n\n for (const buildFunction of this.externalFunctions) {\n const fullId = buildFunction.getFullId();\n result[fullId] = buildFunction;\n }\n return result;\n }\n\n private createBuildStepsFromStepConfig(\n stepConfig: Step,\n {\n buildFunctionById,\n buildFunctionGroupById,\n }: {\n buildFunctionById: BuildFunctionById;\n buildFunctionGroupById: BuildFunctionGroupById;\n }\n ): BuildStep[] {\n if (isStepShellStep(stepConfig)) {\n return [this.createBuildStepFromShellStepConfig(stepConfig)];\n } else if (isStepFunctionStep(stepConfig)) {\n return this.createBuildStepsFromFunctionStepConfig(stepConfig, {\n buildFunctionById,\n buildFunctionGroupById,\n });\n } else {\n throw new BuildConfigError(\n 'Invalid job step configuration detected. Step must be shell or function step'\n );\n }\n }\n\n private createBuildStepFromShellStepConfig(step: ShellStep): BuildStep {\n const id = BuildStep.getNewId(step.id);\n const displayName = BuildStep.getDisplayName({ id, name: step.name, command: step.run });\n const outputs =\n step.outputs && this.createBuildStepOutputsFromDefinition(step.outputs, displayName);\n return new BuildStep(this.ctx, {\n id,\n outputs,\n name: step.name,\n displayName,\n workingDirectory: step.working_directory,\n shell: step.shell,\n command: step.run,\n env: step.env,\n ifCondition: step.if,\n __metricsId: step.__metrics_id,\n });\n }\n\n private createBuildStepsFromFunctionStepConfig(\n step: FunctionStep,\n {\n buildFunctionById,\n buildFunctionGroupById,\n }: {\n buildFunctionById: BuildFunctionById;\n buildFunctionGroupById: BuildFunctionGroupById;\n }\n ): BuildStep[] {\n const functionId = step.uses;\n const maybeFunctionGroup = buildFunctionGroupById[functionId];\n if (maybeFunctionGroup) {\n // TODO: allow to set id, name, working_directory, shell, env and if for function groups\n return maybeFunctionGroup.createBuildStepsFromFunctionGroupCall(this.ctx, {\n callInputs: step.with,\n });\n }\n\n const buildFunction = buildFunctionById[functionId];\n assert(buildFunction, 'function ID must be ID of function or function group');\n\n return [\n buildFunction.createBuildStepFromFunctionCall(this.ctx, {\n id: step.id,\n name: step.name,\n callInputs: step.with,\n workingDirectory: step.working_directory,\n shell: step.shell,\n env: step.env,\n ifCondition: step.if,\n }),\n ];\n }\n\n private createBuildStepOutputsFromDefinition(\n stepOutputs: Required<ShellStep>['outputs'],\n stepDisplayName: string\n ): BuildStepOutput[] {\n return stepOutputs.map(\n (entry) =>\n new BuildStepOutput(this.ctx, {\n id: entry.name,\n stepDisplayName,\n required: entry.required ?? true,\n })\n );\n }\n\n private static validateAllFunctionsExist(\n steps: Step[],\n {\n externalFunctionIds,\n externalFunctionGroupIds,\n }: {\n externalFunctionIds: string[];\n externalFunctionGroupIds: string[];\n }\n ): void {\n const calledFunctionsOrFunctionGroupsSet = new Set<string>();\n for (const step of steps) {\n if (step.uses) {\n calledFunctionsOrFunctionGroupsSet.add(step.uses);\n }\n }\n const calledFunctionsOrFunctionGroup = Array.from(calledFunctionsOrFunctionGroupsSet);\n const externalFunctionIdsSet = new Set(externalFunctionIds);\n const externalFunctionGroupsIdsSet = new Set(externalFunctionGroupIds);\n const nonExistentFunctionsOrFunctionGroups = calledFunctionsOrFunctionGroup.filter(\n (calledFunctionOrFunctionGroup) => {\n return (\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}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { StaticJobInterpolationContext } from '@expo/eas-build-job';
2
2
  import { bunyan } from '@expo/logger';
3
- import { ExternalBuildContextProvider } from '../BuildStepContext.js';
4
- import { BuildRuntimePlatform } from '../BuildRuntimePlatform.js';
5
- import { BuildStepEnv } from '../BuildStepEnv.js';
3
+ import { ExternalBuildContextProvider } from '../BuildStepContext';
4
+ import { BuildRuntimePlatform } from '../BuildRuntimePlatform';
5
+ import { BuildStepEnv } from '../BuildStepEnv';
6
6
  export declare class CliContextProvider implements ExternalBuildContextProvider {
7
7
  readonly logger: bunyan;
8
8
  readonly runtimePlatform: BuildRuntimePlatform;
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.CliContextProvider = void 0;
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const logger_1 = require("@expo/logger");
10
- const BuildConfigParser_js_1 = require("../BuildConfigParser.cjs");
11
- const BuildStepContext_js_1 = require("../BuildStepContext.cjs");
12
- const errors_js_1 = require("../errors.cjs");
10
+ const BuildConfigParser_1 = require("../BuildConfigParser");
11
+ const BuildStepContext_1 = require("../BuildStepContext");
12
+ const errors_1 = require("../errors");
13
13
  const logger = (0, logger_1.createLogger)({
14
14
  name: 'steps-cli',
15
15
  level: 'info',
@@ -40,8 +40,8 @@ class CliContextProvider {
40
40
  }
41
41
  exports.CliContextProvider = CliContextProvider;
42
42
  async function runAsync(configPath, relativeProjectDirectory, runtimePlatform) {
43
- const ctx = new BuildStepContext_js_1.BuildStepGlobalContext(new CliContextProvider(logger, runtimePlatform, relativeProjectDirectory, relativeProjectDirectory, relativeProjectDirectory, relativeProjectDirectory), false);
44
- const parser = new BuildConfigParser_js_1.BuildConfigParser(ctx, {
43
+ const ctx = new BuildStepContext_1.BuildStepGlobalContext(new CliContextProvider(logger, runtimePlatform, relativeProjectDirectory, relativeProjectDirectory, relativeProjectDirectory, relativeProjectDirectory), false);
44
+ const parser = new BuildConfigParser_1.BuildConfigParser(ctx, {
45
45
  configPath,
46
46
  });
47
47
  const workflow = await parser.parseAsync();
@@ -58,7 +58,7 @@ const configPath = path_1.default.resolve(process.cwd(), relativeConfigPath);
58
58
  const workingDirectory = path_1.default.resolve(process.cwd(), relativeProjectDirectoryPath);
59
59
  runAsync(configPath, workingDirectory, platform).catch((err) => {
60
60
  logger.error({ err }, 'Build failed');
61
- if (err instanceof errors_js_1.BuildWorkflowError) {
61
+ if (err instanceof errors_1.BuildWorkflowError) {
62
62
  logger.error('Failed to parse the custom build config file.');
63
63
  for (const detailedErr of err.errors) {
64
64
  logger.error({ err: detailedErr });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport { Job, Metadata, StaticJobInterpolationContext } from '@expo/eas-build-job';\nimport { bunyan, createLogger } from '@expo/logger';\n\nimport { BuildConfigParser } from '../BuildConfigParser';\nimport { ExternalBuildContextProvider, BuildStepGlobalContext } from '../BuildStepContext';\nimport { BuildWorkflowError } from '../errors';\nimport { BuildRuntimePlatform } from '../BuildRuntimePlatform';\nimport { BuildStepEnv } from '../BuildStepEnv';\n\nconst logger = createLogger({\n name: 'steps-cli',\n level: 'info',\n});\n\nexport class CliContextProvider implements ExternalBuildContextProvider {\n private _env: BuildStepEnv = {};\n\n constructor(\n public readonly logger: bunyan,\n public readonly runtimePlatform: BuildRuntimePlatform,\n public readonly projectSourceDirectory: string,\n public readonly projectTargetDirectory: string,\n public readonly defaultWorkingDirectory: string,\n public readonly buildLogsDirectory: string\n ) {}\n public get env(): BuildStepEnv {\n return this._env;\n }\n public staticContext(): Omit<StaticJobInterpolationContext, 'steps'> {\n return {\n job: {} as Job,\n metadata: {} as Metadata,\n expoApiServerURL: 'http://api.expo.test',\n };\n }\n public updateEnv(env: BuildStepEnv): void {\n this._env = env;\n }\n}\n\nasync function runAsync(\n configPath: string,\n relativeProjectDirectory: string,\n runtimePlatform: BuildRuntimePlatform\n): Promise<void> {\n const ctx = new BuildStepGlobalContext(\n new CliContextProvider(\n logger,\n runtimePlatform,\n relativeProjectDirectory,\n relativeProjectDirectory,\n relativeProjectDirectory,\n relativeProjectDirectory\n ),\n false\n );\n const parser = new BuildConfigParser(ctx, {\n configPath,\n });\n const workflow = await parser.parseAsync();\n await workflow.executeAsync();\n}\n\nconst relativeConfigPath = process.argv[2];\nconst relativeProjectDirectoryPath = process.argv[3];\nconst platform: BuildRuntimePlatform = (process.argv[4] ??\n process.platform) as BuildRuntimePlatform;\n\nif (!relativeConfigPath || !relativeProjectDirectoryPath) {\n console.error('Usage: yarn cli config.yml path/to/project/directory [darwin|linux]');\n process.exit(1);\n}\n\nconst configPath = path.resolve(process.cwd(), relativeConfigPath);\nconst workingDirectory = path.resolve(process.cwd(), relativeProjectDirectoryPath);\n\nrunAsync(configPath, workingDirectory, platform).catch((err) => {\n logger.error({ err }, 'Build failed');\n if (err instanceof BuildWorkflowError) {\n logger.error('Failed to parse the custom build config file.');\n for (const detailedErr of err.errors) {\n logger.error({ err: detailedErr });\n }\n }\n});\n"]}
@@ -0,0 +1,19 @@
1
+ export { BuildStepContext } from './BuildStepContext';
2
+ export { readAndValidateBuildConfigFromPathAsync } from './BuildConfig';
3
+ export { BuildConfigParser } from './BuildConfigParser';
4
+ export { StepsConfigParser } from './StepsConfigParser';
5
+ export { BuildFunction } from './BuildFunction';
6
+ export { BuildRuntimePlatform } from './BuildRuntimePlatform';
7
+ export { BuildStepInput, BuildStepInputValueTypeName } from './BuildStepInput';
8
+ export { BuildStepOutput } from './BuildStepOutput';
9
+ export { BuildStepGlobalContext, ExternalBuildContextProvider } from './BuildStepContext';
10
+ export { BuildWorkflow } from './BuildWorkflow';
11
+ export { BuildStepEnv } from './BuildStepEnv';
12
+ export { BuildFunctionGroup } from './BuildFunctionGroup';
13
+ export { BuildStep } from './BuildStep';
14
+ export * as errors from './errors';
15
+ export * from './interpolation';
16
+ export * from './utils/shell/spawn';
17
+ export * from './utils/jsepEval';
18
+ export * from './utils/hashFiles';
19
+ export { StepMetric, StepMetricResult, StepMetricsCollection } from './StepMetrics';
@@ -27,34 +27,34 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.errors = exports.BuildStep = exports.BuildFunctionGroup = exports.BuildWorkflow = exports.BuildStepGlobalContext = exports.BuildStepOutput = exports.BuildStepInputValueTypeName = exports.BuildStepInput = exports.BuildRuntimePlatform = exports.BuildFunction = exports.StepsConfigParser = exports.BuildConfigParser = exports.readAndValidateBuildConfigFromPathAsync = exports.BuildStepContext = void 0;
30
- var BuildStepContext_js_1 = require("./BuildStepContext.cjs");
31
- Object.defineProperty(exports, "BuildStepContext", { enumerable: true, get: function () { return BuildStepContext_js_1.BuildStepContext; } });
32
- var BuildConfig_js_1 = require("./BuildConfig.cjs");
33
- Object.defineProperty(exports, "readAndValidateBuildConfigFromPathAsync", { enumerable: true, get: function () { return BuildConfig_js_1.readAndValidateBuildConfigFromPathAsync; } });
34
- var BuildConfigParser_js_1 = require("./BuildConfigParser.cjs");
35
- Object.defineProperty(exports, "BuildConfigParser", { enumerable: true, get: function () { return BuildConfigParser_js_1.BuildConfigParser; } });
36
- var StepsConfigParser_js_1 = require("./StepsConfigParser.cjs");
37
- Object.defineProperty(exports, "StepsConfigParser", { enumerable: true, get: function () { return StepsConfigParser_js_1.StepsConfigParser; } });
38
- var BuildFunction_js_1 = require("./BuildFunction.cjs");
39
- Object.defineProperty(exports, "BuildFunction", { enumerable: true, get: function () { return BuildFunction_js_1.BuildFunction; } });
40
- var BuildRuntimePlatform_js_1 = require("./BuildRuntimePlatform.cjs");
41
- Object.defineProperty(exports, "BuildRuntimePlatform", { enumerable: true, get: function () { return BuildRuntimePlatform_js_1.BuildRuntimePlatform; } });
42
- var BuildStepInput_js_1 = require("./BuildStepInput.cjs");
43
- Object.defineProperty(exports, "BuildStepInput", { enumerable: true, get: function () { return BuildStepInput_js_1.BuildStepInput; } });
44
- Object.defineProperty(exports, "BuildStepInputValueTypeName", { enumerable: true, get: function () { return BuildStepInput_js_1.BuildStepInputValueTypeName; } });
45
- var BuildStepOutput_js_1 = require("./BuildStepOutput.cjs");
46
- Object.defineProperty(exports, "BuildStepOutput", { enumerable: true, get: function () { return BuildStepOutput_js_1.BuildStepOutput; } });
47
- var BuildStepContext_js_2 = require("./BuildStepContext.cjs");
48
- Object.defineProperty(exports, "BuildStepGlobalContext", { enumerable: true, get: function () { return BuildStepContext_js_2.BuildStepGlobalContext; } });
49
- var BuildWorkflow_js_1 = require("./BuildWorkflow.cjs");
50
- Object.defineProperty(exports, "BuildWorkflow", { enumerable: true, get: function () { return BuildWorkflow_js_1.BuildWorkflow; } });
51
- var BuildFunctionGroup_js_1 = require("./BuildFunctionGroup.cjs");
52
- Object.defineProperty(exports, "BuildFunctionGroup", { enumerable: true, get: function () { return BuildFunctionGroup_js_1.BuildFunctionGroup; } });
53
- var BuildStep_js_1 = require("./BuildStep.cjs");
54
- Object.defineProperty(exports, "BuildStep", { enumerable: true, get: function () { return BuildStep_js_1.BuildStep; } });
55
- exports.errors = __importStar(require("./errors.cjs"));
56
- __exportStar(require("./interpolation.cjs"), exports);
57
- __exportStar(require("./utils/shell/spawn.cjs"), exports);
58
- __exportStar(require("./utils/jsepEval.cjs"), exports);
59
- __exportStar(require("./utils/hashFiles.cjs"), exports);
30
+ var BuildStepContext_1 = require("./BuildStepContext");
31
+ Object.defineProperty(exports, "BuildStepContext", { enumerable: true, get: function () { return BuildStepContext_1.BuildStepContext; } });
32
+ var BuildConfig_1 = require("./BuildConfig");
33
+ Object.defineProperty(exports, "readAndValidateBuildConfigFromPathAsync", { enumerable: true, get: function () { return BuildConfig_1.readAndValidateBuildConfigFromPathAsync; } });
34
+ var BuildConfigParser_1 = require("./BuildConfigParser");
35
+ Object.defineProperty(exports, "BuildConfigParser", { enumerable: true, get: function () { return BuildConfigParser_1.BuildConfigParser; } });
36
+ var StepsConfigParser_1 = require("./StepsConfigParser");
37
+ Object.defineProperty(exports, "StepsConfigParser", { enumerable: true, get: function () { return StepsConfigParser_1.StepsConfigParser; } });
38
+ var BuildFunction_1 = require("./BuildFunction");
39
+ Object.defineProperty(exports, "BuildFunction", { enumerable: true, get: function () { return BuildFunction_1.BuildFunction; } });
40
+ var BuildRuntimePlatform_1 = require("./BuildRuntimePlatform");
41
+ Object.defineProperty(exports, "BuildRuntimePlatform", { enumerable: true, get: function () { return BuildRuntimePlatform_1.BuildRuntimePlatform; } });
42
+ var BuildStepInput_1 = require("./BuildStepInput");
43
+ Object.defineProperty(exports, "BuildStepInput", { enumerable: true, get: function () { return BuildStepInput_1.BuildStepInput; } });
44
+ Object.defineProperty(exports, "BuildStepInputValueTypeName", { enumerable: true, get: function () { return BuildStepInput_1.BuildStepInputValueTypeName; } });
45
+ var BuildStepOutput_1 = require("./BuildStepOutput");
46
+ Object.defineProperty(exports, "BuildStepOutput", { enumerable: true, get: function () { return BuildStepOutput_1.BuildStepOutput; } });
47
+ var BuildStepContext_2 = require("./BuildStepContext");
48
+ Object.defineProperty(exports, "BuildStepGlobalContext", { enumerable: true, get: function () { return BuildStepContext_2.BuildStepGlobalContext; } });
49
+ var BuildWorkflow_1 = require("./BuildWorkflow");
50
+ Object.defineProperty(exports, "BuildWorkflow", { enumerable: true, get: function () { return BuildWorkflow_1.BuildWorkflow; } });
51
+ var BuildFunctionGroup_1 = require("./BuildFunctionGroup");
52
+ Object.defineProperty(exports, "BuildFunctionGroup", { enumerable: true, get: function () { return BuildFunctionGroup_1.BuildFunctionGroup; } });
53
+ var BuildStep_1 = require("./BuildStep");
54
+ Object.defineProperty(exports, "BuildStep", { enumerable: true, get: function () { return BuildStep_1.BuildStep; } });
55
+ exports.errors = __importStar(require("./errors"));
56
+ __exportStar(require("./interpolation"), exports);
57
+ __exportStar(require("./utils/shell/spawn"), exports);
58
+ __exportStar(require("./utils/jsepEval"), exports);
59
+ __exportStar(require("./utils/hashFiles"), exports);
60
60
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,6CAAwE;AAA/D,sIAAA,uCAAuC,OAAA;AAChD,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mDAA+E;AAAtE,gHAAA,cAAc,OAAA;AAAE,6HAAA,2BAA2B,OAAA;AACpD,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,uDAA0F;AAAjF,0HAAA,sBAAsB,OAAA;AAC/B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,mDAAmC;AACnC,kDAAgC;AAChC,sDAAoC;AACpC,mDAAiC;AACjC,oDAAkC","sourcesContent":["export { BuildStepContext } from './BuildStepContext';\nexport { readAndValidateBuildConfigFromPathAsync } from './BuildConfig';\nexport { BuildConfigParser } from './BuildConfigParser';\nexport { StepsConfigParser } from './StepsConfigParser';\nexport { BuildFunction } from './BuildFunction';\nexport { BuildRuntimePlatform } from './BuildRuntimePlatform';\nexport { BuildStepInput, BuildStepInputValueTypeName } from './BuildStepInput';\nexport { BuildStepOutput } from './BuildStepOutput';\nexport { BuildStepGlobalContext, ExternalBuildContextProvider } from './BuildStepContext';\nexport { BuildWorkflow } from './BuildWorkflow';\nexport { BuildStepEnv } from './BuildStepEnv';\nexport { BuildFunctionGroup } from './BuildFunctionGroup';\nexport { BuildStep } from './BuildStep';\nexport * as errors from './errors';\nexport * from './interpolation';\nexport * from './utils/shell/spawn';\nexport * from './utils/jsepEval';\nexport * from './utils/hashFiles';\nexport { StepMetric, StepMetricResult, StepMetricsCollection } from './StepMetrics';\n"]}
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.interpolateJobContext = interpolateJobContext;
4
- const jsepEval_js_1 = require("./utils/jsepEval.cjs");
4
+ const jsepEval_1 = require("./utils/jsepEval");
5
5
  function interpolateJobContext({ target, context, }) {
6
6
  if (typeof target === 'string') {
7
7
  // If the value is e.g. `build: ${{ inputs.build }}`, we will interpolate the value
8
8
  // without changing `inputs.build` type, i.e. if it is an object it'll be like `build: {...inputs.build}`.
9
9
  if (target.startsWith('${{') && target.endsWith('}}')) {
10
- return (0, jsepEval_js_1.jsepEval)(target.slice(3, -2), context);
10
+ return (0, jsepEval_1.jsepEval)(target.slice(3, -2), context);
11
11
  }
12
12
  // Otherwise we replace all occurrences of `${{...}}` with the result of the expression.
13
13
  // e.g. `echo ${{ build.profile }}` becomes `echo production`.
14
14
  return target.replace(/\$\{\{(.+?)\}\}/g, (_match, expression) => {
15
- return `${(0, jsepEval_js_1.jsepEval)(expression, context)}`;
15
+ return `${(0, jsepEval_1.jsepEval)(expression, context)}`;
16
16
  });
17
17
  }
18
18
  else if (Array.isArray(target)) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolation.js","sourceRoot":"","sources":["../src/interpolation.ts"],"names":[],"mappings":";;AAIA,sDA8BC;AAhCD,+CAA4C;AAE5C,SAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,GAIR;IACC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,mFAAmF;QACnF,0GAA0G;QAC1G,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,OAAO,IAAA,mBAAQ,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAED,wFAAwF;QACxF,8DAA8D;QAC9D,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;YAC/D,OAAO,GAAG,IAAA,mBAAQ,EAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAC3C,GAAG;YACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SAClD,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { JobInterpolationContext } from '@expo/eas-build-job';\n\nimport { jsepEval } from './utils/jsepEval';\n\nexport function interpolateJobContext({\n target,\n context,\n}: {\n target: unknown;\n context: JobInterpolationContext;\n}): unknown {\n if (typeof target === 'string') {\n // If the value is e.g. `build: ${{ inputs.build }}`, we will interpolate the value\n // without changing `inputs.build` type, i.e. if it is an object it'll be like `build: {...inputs.build}`.\n if (target.startsWith('${{') && target.endsWith('}}')) {\n return jsepEval(target.slice(3, -2), context);\n }\n\n // Otherwise we replace all occurrences of `${{...}}` with the result of the expression.\n // e.g. `echo ${{ build.profile }}` becomes `echo production`.\n return target.replace(/\\$\\{\\{(.+?)\\}\\}/g, (_match, expression) => {\n return `${jsepEval(expression, context)}`;\n });\n } else if (Array.isArray(target)) {\n return target.map((value) => interpolateJobContext({ target: value, context }));\n } else if (typeof target === 'object' && target) {\n return Object.fromEntries(\n Object.entries(target).map(([key, value]) => [\n key,\n interpolateJobContext({ target: value, context }),\n ])\n );\n }\n return target;\n}\n"]}
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const assert_1 = __importDefault(require("assert"));
7
7
  const logger_1 = require("@expo/logger");
8
8
  const lodash_clonedeep_1 = __importDefault(require("lodash.clonedeep"));
9
- const BuildStepOutput_js_1 = require("../BuildStepOutput.cjs");
10
- const customFunction_js_1 = require("../utils/customFunction.cjs");
11
- const BuildStepContext_js_1 = require("../BuildStepContext.cjs");
12
- const spawn_js_1 = require("../utils/shell/spawn.cjs");
9
+ const BuildStepOutput_1 = require("../BuildStepOutput");
10
+ const customFunction_1 = require("../utils/customFunction");
11
+ const BuildStepContext_1 = require("../BuildStepContext");
12
+ const spawn_1 = require("../utils/shell/spawn");
13
13
  async function runCustomJsFunctionAsync() {
14
14
  const customJavascriptFunctionModulePath = process.argv[2];
15
15
  const functionArgs = process.argv[3];
@@ -62,11 +62,11 @@ async function runCustomJsFunctionAsync() {
62
62
  },
63
63
  ],
64
64
  });
65
- const ctx = BuildStepContext_js_1.BuildStepContext.deserialize(serializedFunctionArguments.ctx, logger);
66
- const inputs = (0, customFunction_js_1.deserializeInputs)(serializedFunctionArguments.inputs);
65
+ const ctx = BuildStepContext_1.BuildStepContext.deserialize(serializedFunctionArguments.ctx, logger);
66
+ const inputs = (0, customFunction_1.deserializeInputs)(serializedFunctionArguments.inputs);
67
67
  const outputs = Object.fromEntries(Object.entries(serializedFunctionArguments.outputs).map(([id, output]) => [
68
68
  id,
69
- BuildStepOutput_js_1.BuildStepOutput.deserialize(output),
69
+ BuildStepOutput_1.BuildStepOutput.deserialize(output),
70
70
  ]));
71
71
  const env = serializedFunctionArguments.env;
72
72
  const envBefore = (0, lodash_clonedeep_1.default)(serializedFunctionArguments.env);
@@ -84,7 +84,7 @@ async function runCustomJsFunctionAsync() {
84
84
  for (const output of Object.values(outputs)) {
85
85
  if (output.rawValue) {
86
86
  (0, assert_1.default)(output.value, 'output.value is required');
87
- promises.push((0, spawn_js_1.spawnAsync)('set-output', [output.id, output.value], {
87
+ promises.push((0, spawn_1.spawnAsync)('set-output', [output.id, output.value], {
88
88
  env,
89
89
  stdio: 'pipe',
90
90
  }));
@@ -93,7 +93,7 @@ async function runCustomJsFunctionAsync() {
93
93
  for (const envName of Object.keys(env)) {
94
94
  const envValue = env[envName];
95
95
  if (envValue !== envBefore[envName] && envValue) {
96
- promises.push((0, spawn_js_1.spawnAsync)('set-env', [envName, envValue], {
96
+ promises.push((0, spawn_1.spawnAsync)('set-env', [envName, envValue], {
97
97
  env,
98
98
  stdio: 'pipe',
99
99
  }));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runCustomFunction.js","sourceRoot":"","sources":["../../src/scripts/runCustomFunction.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { createLogger } from '@expo/logger';\nimport { SpawnPromise, SpawnResult } from '@expo/spawn-async';\nimport cloneDeep from 'lodash.clonedeep';\n\nimport { BuildStepOutput } from '../BuildStepOutput';\nimport { SerializedCustomBuildFunctionArguments, deserializeInputs } from '../utils/customFunction';\nimport { BuildStepContext } from '../BuildStepContext';\nimport { BuildStepFunction } from '../BuildStep';\nimport { spawnAsync } from '../utils/shell/spawn';\n\nasync function runCustomJsFunctionAsync(): Promise<void> {\n const customJavascriptFunctionModulePath = process.argv[2];\n const functionArgs = process.argv[3];\n\n assert(customJavascriptFunctionModulePath, 'customJavascriptFunctionModulePath is required');\n assert(functionArgs, 'serializedFunctionParams is required');\n\n let serializedFunctionArguments: SerializedCustomBuildFunctionArguments;\n try {\n serializedFunctionArguments = JSON.parse(functionArgs);\n } catch (e) {\n console.error('Failed to parse serializedFunctionParams');\n throw e;\n }\n\n const logger = createLogger({\n name: 'customFunctionLogger',\n streams: [\n {\n type: 'raw',\n stream: {\n write: (rec: any) => {\n if (rec) {\n switch (rec.level) {\n case 20: // Debug level\n if (rec.msg) {\n console.debug(rec.msg);\n }\n break;\n case 30: // Info level\n if (rec.msg) {\n console.log(rec.msg);\n }\n break;\n case 40: // Warn level\n if (rec.msg) {\n console.warn(rec.msg);\n }\n break;\n case 50: // Error level\n case 60: // Fatal level\n if (rec.msg) {\n console.error(rec.msg);\n }\n break;\n default:\n break;\n }\n }\n },\n },\n },\n ],\n });\n\n const ctx = BuildStepContext.deserialize(serializedFunctionArguments.ctx, logger);\n const inputs = deserializeInputs(serializedFunctionArguments.inputs);\n const outputs = Object.fromEntries(\n Object.entries(serializedFunctionArguments.outputs).map(([id, output]) => [\n id,\n BuildStepOutput.deserialize(output),\n ])\n );\n const env = serializedFunctionArguments.env;\n const envBefore = cloneDeep(serializedFunctionArguments.env);\n\n let customModule: { default: BuildStepFunction };\n try {\n customModule = await require(customJavascriptFunctionModulePath);\n } catch (e) {\n console.error('Failed to load custom function module');\n throw e;\n }\n\n const customJavascriptFunction = customModule.default;\n\n await customJavascriptFunction(ctx, { inputs, outputs, env });\n\n const promises: SpawnPromise<SpawnResult>[] = [];\n for (const output of Object.values(outputs)) {\n if (output.rawValue) {\n assert(output.value, 'output.value is required');\n promises.push(\n spawnAsync('set-output', [output.id, output.value], {\n env,\n stdio: 'pipe',\n })\n );\n }\n }\n for (const envName of Object.keys(env)) {\n const envValue = env[envName];\n if (envValue !== envBefore[envName] && envValue) {\n promises.push(\n spawnAsync('set-env', [envName, envValue], {\n env,\n stdio: 'pipe',\n })\n );\n }\n }\n await Promise.all(promises);\n}\n\nvoid runCustomJsFunctionAsync();\n"]}
@@ -1,7 +1,7 @@
1
- import { BuildStepFunction } from '../BuildStep.js';
2
- import { BuildStepEnv } from '../BuildStepEnv.js';
3
- import { SerializedBuildStepOutput } from '../BuildStepOutput.js';
4
- import { SerializedBuildStepContext } from '../BuildStepContext.js';
1
+ import { BuildStepFunction } from '../BuildStep';
2
+ import { BuildStepEnv } from '../BuildStepEnv';
3
+ import { SerializedBuildStepOutput } from '../BuildStepOutput';
4
+ import { SerializedBuildStepContext } from '../BuildStepContext';
5
5
  export declare const SCRIPTS_PATH: string;
6
6
  type SerializedBuildStepInput = {
7
7
  serializedValue: string | undefined;