@optimizely/ocp-cli 1.0.0-beta.2

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 (283) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +18 -0
  3. package/bin/opti.js +3 -0
  4. package/dist/commands/accounts/Whoami.d.ts +3 -0
  5. package/dist/commands/accounts/Whoami.js +34 -0
  6. package/dist/commands/accounts/Whoami.js.map +1 -0
  7. package/dist/commands/accounts/Whois.d.ts +6 -0
  8. package/dist/commands/accounts/Whois.js +65 -0
  9. package/dist/commands/accounts/Whois.js.map +1 -0
  10. package/dist/commands/app/BaseBuildCommand.d.ts +23 -0
  11. package/dist/commands/app/BaseBuildCommand.js +227 -0
  12. package/dist/commands/app/BaseBuildCommand.js.map +1 -0
  13. package/dist/commands/app/Init.d.ts +20 -0
  14. package/dist/commands/app/Init.js +285 -0
  15. package/dist/commands/app/Init.js.map +1 -0
  16. package/dist/commands/app/Logs.d.ts +19 -0
  17. package/dist/commands/app/Logs.js +230 -0
  18. package/dist/commands/app/Logs.js.map +1 -0
  19. package/dist/commands/app/Package.d.ts +4 -0
  20. package/dist/commands/app/Package.js +51 -0
  21. package/dist/commands/app/Package.js.map +1 -0
  22. package/dist/commands/app/Prepare.d.ts +8 -0
  23. package/dist/commands/app/Prepare.js +112 -0
  24. package/dist/commands/app/Prepare.js.map +1 -0
  25. package/dist/commands/app/Register.d.ts +7 -0
  26. package/dist/commands/app/Register.js +58 -0
  27. package/dist/commands/app/Register.js.map +1 -0
  28. package/dist/commands/app/Validate.d.ts +4 -0
  29. package/dist/commands/app/Validate.js +27 -0
  30. package/dist/commands/app/Validate.js.map +1 -0
  31. package/dist/commands/availability/List.d.ts +4 -0
  32. package/dist/commands/availability/List.js +47 -0
  33. package/dist/commands/availability/List.js.map +1 -0
  34. package/dist/commands/directory/Info.d.ts +7 -0
  35. package/dist/commands/directory/Info.js +92 -0
  36. package/dist/commands/directory/Info.js.map +1 -0
  37. package/dist/commands/directory/Install.d.ts +6 -0
  38. package/dist/commands/directory/Install.js +54 -0
  39. package/dist/commands/directory/Install.js.map +1 -0
  40. package/dist/commands/directory/List.d.ts +8 -0
  41. package/dist/commands/directory/List.js +102 -0
  42. package/dist/commands/directory/List.js.map +1 -0
  43. package/dist/commands/directory/ListFunctions.d.ts +7 -0
  44. package/dist/commands/directory/ListFunctions.js +77 -0
  45. package/dist/commands/directory/ListFunctions.js.map +1 -0
  46. package/dist/commands/directory/ListGlobalFunctions.d.ts +6 -0
  47. package/dist/commands/directory/ListGlobalFunctions.js +72 -0
  48. package/dist/commands/directory/ListGlobalFunctions.js.map +1 -0
  49. package/dist/commands/directory/ListInstalls.d.ts +8 -0
  50. package/dist/commands/directory/ListInstalls.js +81 -0
  51. package/dist/commands/directory/ListInstalls.js.map +1 -0
  52. package/dist/commands/directory/Publish.d.ts +8 -0
  53. package/dist/commands/directory/Publish.js +180 -0
  54. package/dist/commands/directory/Publish.js.map +1 -0
  55. package/dist/commands/directory/Status.d.ts +5 -0
  56. package/dist/commands/directory/Status.js +60 -0
  57. package/dist/commands/directory/Status.js.map +1 -0
  58. package/dist/commands/directory/Uninstall.d.ts +6 -0
  59. package/dist/commands/directory/Uninstall.js +50 -0
  60. package/dist/commands/directory/Uninstall.js.map +1 -0
  61. package/dist/commands/directory/Unpublish.d.ts +10 -0
  62. package/dist/commands/directory/Unpublish.js +181 -0
  63. package/dist/commands/directory/Unpublish.js.map +1 -0
  64. package/dist/commands/directory/Uprade.d.ts +8 -0
  65. package/dist/commands/directory/Uprade.js +100 -0
  66. package/dist/commands/directory/Uprade.js.map +1 -0
  67. package/dist/commands/env/GetEnvironment.d.ts +3 -0
  68. package/dist/commands/env/GetEnvironment.js +28 -0
  69. package/dist/commands/env/GetEnvironment.js.map +1 -0
  70. package/dist/commands/env/SetEnvironment.d.ts +4 -0
  71. package/dist/commands/env/SetEnvironment.js +63 -0
  72. package/dist/commands/env/SetEnvironment.js.map +1 -0
  73. package/dist/commands/jobs/List.d.ts +21 -0
  74. package/dist/commands/jobs/List.js +268 -0
  75. package/dist/commands/jobs/List.js.map +1 -0
  76. package/dist/commands/jobs/RuntimeStatus.d.ts +5 -0
  77. package/dist/commands/jobs/RuntimeStatus.js +65 -0
  78. package/dist/commands/jobs/RuntimeStatus.js.map +1 -0
  79. package/dist/commands/jobs/Terminate.d.ts +5 -0
  80. package/dist/commands/jobs/Terminate.js +45 -0
  81. package/dist/commands/jobs/Terminate.js.map +1 -0
  82. package/dist/commands/jobs/Trigger.d.ts +8 -0
  83. package/dist/commands/jobs/Trigger.js +58 -0
  84. package/dist/commands/jobs/Trigger.js.map +1 -0
  85. package/dist/commands/review/List.d.ts +5 -0
  86. package/dist/commands/review/List.js +81 -0
  87. package/dist/commands/review/List.js.map +1 -0
  88. package/dist/commands/review/Open.d.ts +4 -0
  89. package/dist/commands/review/Open.js +42 -0
  90. package/dist/commands/review/Open.js.map +1 -0
  91. package/dist/index.d.ts +1 -0
  92. package/dist/index.js +15 -0
  93. package/dist/index.js.map +1 -0
  94. package/dist/lib/AppContext.d.ts +9 -0
  95. package/dist/lib/AppContext.js +43 -0
  96. package/dist/lib/AppContext.js.map +1 -0
  97. package/dist/lib/AppPackager.d.ts +8 -0
  98. package/dist/lib/AppPackager.js +40 -0
  99. package/dist/lib/AppPackager.js.map +1 -0
  100. package/dist/lib/AppUpdater.d.ts +9 -0
  101. package/dist/lib/AppUpdater.js +155 -0
  102. package/dist/lib/AppUpdater.js.map +1 -0
  103. package/dist/lib/AppUploader.d.ts +8 -0
  104. package/dist/lib/AppUploader.js +36 -0
  105. package/dist/lib/AppUploader.js.map +1 -0
  106. package/dist/lib/Config.d.ts +15 -0
  107. package/dist/lib/Config.js +47 -0
  108. package/dist/lib/Config.js.map +1 -0
  109. package/dist/lib/EnvironmentalOutput.d.ts +1 -0
  110. package/dist/lib/EnvironmentalOutput.js +21 -0
  111. package/dist/lib/EnvironmentalOutput.js.map +1 -0
  112. package/dist/lib/Moria.d.ts +51 -0
  113. package/dist/lib/Moria.js +30 -0
  114. package/dist/lib/Moria.js.map +1 -0
  115. package/dist/lib/MoriaApi.d.ts +22 -0
  116. package/dist/lib/MoriaApi.js +75 -0
  117. package/dist/lib/MoriaApi.js.map +1 -0
  118. package/dist/lib/Rivendell.d.ts +351 -0
  119. package/dist/lib/Rivendell.js +328 -0
  120. package/dist/lib/Rivendell.js.map +1 -0
  121. package/dist/lib/RivendellApi.d.ts +22 -0
  122. package/dist/lib/RivendellApi.js +90 -0
  123. package/dist/lib/RivendellApi.js.map +1 -0
  124. package/dist/lib/Shards.d.ts +3 -0
  125. package/dist/lib/Shards.js +34 -0
  126. package/dist/lib/Shards.js.map +1 -0
  127. package/dist/lib/StringUtils.d.ts +1 -0
  128. package/dist/lib/StringUtils.js +9 -0
  129. package/dist/lib/StringUtils.js.map +1 -0
  130. package/dist/lib/TeminalPassthru.d.ts +5 -0
  131. package/dist/lib/TeminalPassthru.js +12 -0
  132. package/dist/lib/TeminalPassthru.js.map +1 -0
  133. package/dist/lib/TerminalConfirm.d.ts +3 -0
  134. package/dist/lib/TerminalConfirm.js +26 -0
  135. package/dist/lib/TerminalConfirm.js.map +1 -0
  136. package/dist/lib/TerminalInput.d.ts +32 -0
  137. package/dist/lib/TerminalInput.js +207 -0
  138. package/dist/lib/TerminalInput.js.map +1 -0
  139. package/dist/lib/TerminalMenu.d.ts +34 -0
  140. package/dist/lib/TerminalMenu.js +186 -0
  141. package/dist/lib/TerminalMenu.js.map +1 -0
  142. package/dist/lib/TerminalOutput.d.ts +5 -0
  143. package/dist/lib/TerminalOutput.js +12 -0
  144. package/dist/lib/TerminalOutput.js.map +1 -0
  145. package/dist/lib/TerminalSpinner.d.ts +15 -0
  146. package/dist/lib/TerminalSpinner.js +71 -0
  147. package/dist/lib/TerminalSpinner.js.map +1 -0
  148. package/dist/lib/build.d.ts +5 -0
  149. package/dist/lib/build.js +35 -0
  150. package/dist/lib/build.js.map +1 -0
  151. package/dist/lib/checkForUpdate.d.ts +2 -0
  152. package/dist/lib/checkForUpdate.js +58 -0
  153. package/dist/lib/checkForUpdate.js.map +1 -0
  154. package/dist/lib/dev/app.d.ts +8 -0
  155. package/dist/lib/dev/app.js +53 -0
  156. package/dist/lib/dev/app.js.map +1 -0
  157. package/dist/lib/dev/index.d.ts +1 -0
  158. package/dist/lib/dev/index.js +14 -0
  159. package/dist/lib/dev/index.js.map +1 -0
  160. package/dist/lib/dev/logger.d.ts +15 -0
  161. package/dist/lib/dev/logger.js +58 -0
  162. package/dist/lib/dev/logger.js.map +1 -0
  163. package/dist/lib/die.d.ts +5 -0
  164. package/dist/lib/die.js +14 -0
  165. package/dist/lib/die.js.map +1 -0
  166. package/dist/lib/directoryExists.d.ts +1 -0
  167. package/dist/lib/directoryExists.js +9 -0
  168. package/dist/lib/directoryExists.js.map +1 -0
  169. package/dist/lib/formatBuildState.d.ts +2 -0
  170. package/dist/lib/formatBuildState.js +23 -0
  171. package/dist/lib/formatBuildState.js.map +1 -0
  172. package/dist/lib/formatError.d.ts +1 -0
  173. package/dist/lib/formatError.js +45 -0
  174. package/dist/lib/formatError.js.map +1 -0
  175. package/dist/lib/formatJobStatus.d.ts +3 -0
  176. package/dist/lib/formatJobStatus.js +28 -0
  177. package/dist/lib/formatJobStatus.js.map +1 -0
  178. package/dist/lib/formatReviewStatus.d.ts +4 -0
  179. package/dist/lib/formatReviewStatus.js +28 -0
  180. package/dist/lib/formatReviewStatus.js.map +1 -0
  181. package/dist/lib/formatTimstamp.d.ts +1 -0
  182. package/dist/lib/formatTimstamp.js +25 -0
  183. package/dist/lib/formatTimstamp.js.map +1 -0
  184. package/dist/lib/formatVersionState.d.ts +2 -0
  185. package/dist/lib/formatVersionState.js +35 -0
  186. package/dist/lib/formatVersionState.js.map +1 -0
  187. package/dist/lib/gatherAppEnv.d.ts +3 -0
  188. package/dist/lib/gatherAppEnv.js +71 -0
  189. package/dist/lib/gatherAppEnv.js.map +1 -0
  190. package/dist/lib/handleInterrupt.d.ts +1 -0
  191. package/dist/lib/handleInterrupt.js +17 -0
  192. package/dist/lib/handleInterrupt.js.map +1 -0
  193. package/dist/lib/jobRuntime.d.ts +3 -0
  194. package/dist/lib/jobRuntime.js +16 -0
  195. package/dist/lib/jobRuntime.js.map +1 -0
  196. package/dist/lib/parseDate.d.ts +2 -0
  197. package/dist/lib/parseDate.js +26 -0
  198. package/dist/lib/parseDate.js.map +1 -0
  199. package/dist/lib/templating/TemplateRenderer.d.ts +13 -0
  200. package/dist/lib/templating/TemplateRenderer.js +62 -0
  201. package/dist/lib/templating/TemplateRenderer.js.map +1 -0
  202. package/dist/lib/templating/fetchTemplatesManifest.d.ts +1 -0
  203. package/dist/lib/templating/fetchTemplatesManifest.js +10 -0
  204. package/dist/lib/templating/fetchTemplatesManifest.js.map +1 -0
  205. package/dist/lib/templating/types.d.ts +27 -0
  206. package/dist/lib/templating/types.js +3 -0
  207. package/dist/lib/templating/types.js.map +1 -0
  208. package/dist/oo-cli.manifest.json +1142 -0
  209. package/dist/test/setup.d.ts +0 -0
  210. package/dist/test/setup.js +4 -0
  211. package/dist/test/setup.js.map +1 -0
  212. package/package.json +94 -0
  213. package/src/commands/accounts/Whoami.ts +19 -0
  214. package/src/commands/accounts/Whois.ts +51 -0
  215. package/src/commands/app/BaseBuildCommand.ts +266 -0
  216. package/src/commands/app/Init.ts +303 -0
  217. package/src/commands/app/Logs.ts +241 -0
  218. package/src/commands/app/Package.ts +39 -0
  219. package/src/commands/app/Prepare.ts +108 -0
  220. package/src/commands/app/Register.ts +41 -0
  221. package/src/commands/app/Validate.ts +13 -0
  222. package/src/commands/availability/List.ts +37 -0
  223. package/src/commands/directory/Info.ts +83 -0
  224. package/src/commands/directory/Install.ts +37 -0
  225. package/src/commands/directory/List.ts +96 -0
  226. package/src/commands/directory/ListFunctions.ts +60 -0
  227. package/src/commands/directory/ListGlobalFunctions.ts +54 -0
  228. package/src/commands/directory/ListInstalls.ts +73 -0
  229. package/src/commands/directory/Publish.ts +179 -0
  230. package/src/commands/directory/Status.ts +45 -0
  231. package/src/commands/directory/Uninstall.ts +32 -0
  232. package/src/commands/directory/Unpublish.ts +173 -0
  233. package/src/commands/directory/Uprade.ts +85 -0
  234. package/src/commands/env/GetEnvironment.ts +14 -0
  235. package/src/commands/env/SetEnvironment.ts +52 -0
  236. package/src/commands/jobs/List.ts +278 -0
  237. package/src/commands/jobs/RuntimeStatus.ts +49 -0
  238. package/src/commands/jobs/Terminate.ts +29 -0
  239. package/src/commands/jobs/Trigger.ts +41 -0
  240. package/src/commands/review/List.ts +76 -0
  241. package/src/commands/review/Open.ts +28 -0
  242. package/src/index.ts +15 -0
  243. package/src/lib/AppContext.ts +47 -0
  244. package/src/lib/AppPackager.ts +47 -0
  245. package/src/lib/AppUpdater.ts +177 -0
  246. package/src/lib/AppUploader.ts +39 -0
  247. package/src/lib/Config.ts +60 -0
  248. package/src/lib/EnvironmentalOutput.ts +18 -0
  249. package/src/lib/Moria.ts +66 -0
  250. package/src/lib/MoriaApi.ts +86 -0
  251. package/src/lib/Rivendell.ts +572 -0
  252. package/src/lib/RivendellApi.ts +99 -0
  253. package/src/lib/Shards.ts +37 -0
  254. package/src/lib/StringUtils.ts +4 -0
  255. package/src/lib/TeminalPassthru.ts +7 -0
  256. package/src/lib/TerminalConfirm.ts +27 -0
  257. package/src/lib/TerminalInput.ts +236 -0
  258. package/src/lib/TerminalMenu.ts +221 -0
  259. package/src/lib/TerminalOutput.ts +7 -0
  260. package/src/lib/TerminalSpinner.ts +76 -0
  261. package/src/lib/build.ts +36 -0
  262. package/src/lib/checkForUpdate.ts +63 -0
  263. package/src/lib/dev/app.ts +58 -0
  264. package/src/lib/dev/index.ts +1 -0
  265. package/src/lib/dev/logger.ts +77 -0
  266. package/src/lib/die.ts +10 -0
  267. package/src/lib/directoryExists.ts +5 -0
  268. package/src/lib/formatBuildState.ts +20 -0
  269. package/src/lib/formatError.ts +39 -0
  270. package/src/lib/formatJobStatus.ts +24 -0
  271. package/src/lib/formatReviewStatus.ts +27 -0
  272. package/src/lib/formatTimstamp.ts +21 -0
  273. package/src/lib/formatVersionState.ts +31 -0
  274. package/src/lib/gatherAppEnv.ts +75 -0
  275. package/src/lib/handleInterrupt.ts +13 -0
  276. package/src/lib/jobRuntime.ts +12 -0
  277. package/src/lib/parseDate.ts +21 -0
  278. package/src/lib/templating/TemplateRenderer.ts +65 -0
  279. package/src/lib/templating/fetchTemplatesManifest.ts +6 -0
  280. package/src/lib/templating/types.ts +30 -0
  281. package/src/test/setup.ts +2 -0
  282. package/src/types/columnify.d.ts +27 -0
  283. package/src/types/gitignore-parser.d.ts +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directoryExists.js","sourceRoot":"","sources":["../../src/lib/directoryExists.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AAEzB,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAFD,0CAEC"}
@@ -0,0 +1,2 @@
1
+ import { Rivendell } from './Rivendell';
2
+ export declare function formatBuildState(state: Rivendell.BuildState): string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatBuildState = void 0;
4
+ const chalk_1 = require("chalk");
5
+ const Rivendell_1 = require("./Rivendell");
6
+ function formatBuildState(state) {
7
+ switch (state) {
8
+ case Rivendell_1.Rivendell.BuildState.NEW:
9
+ return chalk_1.default.yellow('NEW');
10
+ case Rivendell_1.Rivendell.BuildState.QUEUED:
11
+ return chalk_1.default.yellow('QUEUED');
12
+ case Rivendell_1.Rivendell.BuildState.RUNNING:
13
+ return chalk_1.default.yellow('BUILDING');
14
+ case Rivendell_1.Rivendell.BuildState.FINISHED:
15
+ return chalk_1.default.yellow('FINISHED');
16
+ default: {
17
+ console.error(chalk_1.default.red(`Unrecognized BuildState ${state} `));
18
+ return chalk_1.default.red('UNKNOWN');
19
+ }
20
+ }
21
+ }
22
+ exports.formatBuildState = formatBuildState;
23
+ //# sourceMappingURL=formatBuildState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatBuildState.js","sourceRoot":"","sources":["../../src/lib/formatBuildState.ts"],"names":[],"mappings":";;;AAAA,iCAA0B;AAC1B,2CAAsC;AAEtC,SAAgB,gBAAgB,CAAC,KAA2B;IAC1D,QAAQ,KAAK,EAAE;QACb,KAAK,qBAAS,CAAC,UAAU,CAAC,GAAG;YAC3B,OAAO,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,qBAAS,CAAC,UAAU,CAAC,MAAM;YAC9B,OAAO,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,KAAK,qBAAS,CAAC,UAAU,CAAC,OAAO;YAC/B,OAAO,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,qBAAS,CAAC,UAAU,CAAC,QAAQ;YAChC,OAAO,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAElC,OAAO,CAAC,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,2BAA2B,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9D,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SAC7B;KACF;AACH,CAAC;AAhBD,4CAgBC"}
@@ -0,0 +1 @@
1
+ export declare function formatError(error: Error): any;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatError = void 0;
4
+ const RivendellApi_1 = require("./RivendellApi");
5
+ const MoriaApi_1 = require("./MoriaApi");
6
+ var RivendellApiError = RivendellApi_1.RivendellApi.ApiError;
7
+ var MoriaApiError = MoriaApi_1.MoriaApi.ApiError;
8
+ function formatError(error) {
9
+ var _a;
10
+ if (error instanceof RivendellApiError) {
11
+ if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 403) {
12
+ return 'Could not authenticate with the credential configured in ~/.ocp/credentials.json.';
13
+ }
14
+ else {
15
+ return sanitize(errorMessageFromJsonResponse(error));
16
+ }
17
+ }
18
+ else if (error instanceof MoriaApiError) {
19
+ return sanitize(errorMessageFromJsonResponse(error));
20
+ }
21
+ else {
22
+ return sanitize(error.message);
23
+ }
24
+ }
25
+ exports.formatError = formatError;
26
+ function errorMessageFromJsonResponse(error) {
27
+ var _a, _b;
28
+ const contentType = (_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b.get('content-type');
29
+ if ((contentType === null || contentType === void 0 ? void 0 : contentType.includes('application/json')) && error.responseText) {
30
+ const response = JSON.parse(error.responseText);
31
+ // protocol is that detail will have either a `message` or an `invalids` child
32
+ if (response.detail) {
33
+ return response.detail.message
34
+ ? response.detail.message
35
+ : response.detail.invalids
36
+ .map((violation) => `* ${violation.field} ${violation.reason}`)
37
+ .join('\n');
38
+ }
39
+ }
40
+ return error.message;
41
+ }
42
+ function sanitize(body) {
43
+ return body.replace('FAILED_PRECONDITION: ', '').replace('INTERNAL: ', '');
44
+ }
45
+ //# sourceMappingURL=formatError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatError.js","sourceRoot":"","sources":["../../src/lib/formatError.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAC5C,yCAAoC;AACpC,IAAO,iBAAiB,GAAG,2BAAY,CAAC,QAAQ,CAAC;AACjD,IAAO,aAAa,GAAG,mBAAQ,CAAC,QAAQ,CAAC;AAEzC,SAAgB,WAAW,CAAC,KAAY;;IACtC,IAAI,KAAK,YAAY,iBAAiB,EAAE;QACtC,IAAI,OAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE;YAClC,OAAO,mFAAmF,CAAC;SAC5F;aAAM;YACL,OAAO,QAAQ,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;SACtD;KACF;SAAM,IAAI,KAAK,YAAY,aAAa,EAAE;QACzC,OAAO,QAAQ,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;KACtD;SAAM;QACL,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAChC;AACH,CAAC;AAZD,kCAYC;AAED,SAAS,4BAA4B,CAAC,KAAwC;;IAC5E,MAAM,WAAW,eAAG,KAAK,CAAC,QAAQ,0CAAE,OAAO,0CAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACjE,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,kBAAkB,MAAK,KAAK,CAAC,YAAY,EAAE;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChD,8EAA8E;QAC9E,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO;gBAC5B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;gBACzB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ;qBACvB,GAAG,CAAC,CAAC,SAAoC,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;qBACzF,IAAI,CAAC,IAAI,CAAC,CAAC;SACjB;KACF;IAED,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAS;IACzB,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Rivendell } from './Rivendell';
2
+ import JobStatus = Rivendell.JobStatus;
3
+ export declare function formatJobStatus(status: JobStatus): string;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatJobStatus = void 0;
4
+ const chalk_1 = require("chalk");
5
+ const Rivendell_1 = require("./Rivendell");
6
+ var JobStatus = Rivendell_1.Rivendell.JobStatus;
7
+ function formatJobStatus(status) {
8
+ switch (status) {
9
+ case JobStatus.PENDING:
10
+ return chalk_1.default.gray('PENDING');
11
+ case JobStatus.SCHEDULED:
12
+ return chalk_1.default.gray('SCHEDULED');
13
+ case JobStatus.RUNNING:
14
+ return chalk_1.default.yellow('RUNNING');
15
+ case JobStatus.COMPLETE:
16
+ return chalk_1.default.green('COMPLETE');
17
+ case JobStatus.TERMINATED:
18
+ return chalk_1.default.green('TERMINATED');
19
+ case JobStatus.ERROR:
20
+ return chalk_1.default.red('ERROR');
21
+ default: {
22
+ console.error(chalk_1.default.red(`Unrecognized JobStatus ${status}`));
23
+ return chalk_1.default.red('UNKNOWN');
24
+ }
25
+ }
26
+ }
27
+ exports.formatJobStatus = formatJobStatus;
28
+ //# sourceMappingURL=formatJobStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatJobStatus.js","sourceRoot":"","sources":["../../src/lib/formatJobStatus.ts"],"names":[],"mappings":";;;AAAA,iCAA0B;AAC1B,2CAAsC;AACtC,IAAO,SAAS,GAAG,qBAAS,CAAC,SAAS,CAAC;AAEvC,SAAgB,eAAe,CAAC,MAAiB;IAC/C,QAAQ,MAAM,EAAE;QACd,KAAK,SAAS,CAAC,OAAO;YACpB,OAAO,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,KAAK,SAAS,CAAC,SAAS;YACtB,OAAO,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,KAAK,SAAS,CAAC,OAAO;YACpB,OAAO,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,KAAK,SAAS,CAAC,QAAQ;YACrB,OAAO,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,KAAK,SAAS,CAAC,UAAU;YACvB,OAAO,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACnC,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SAC7B;KACF;AACH,CAAC;AAnBD,0CAmBC"}
@@ -0,0 +1,4 @@
1
+ import { Rivendell } from './Rivendell';
2
+ import AppVersionState = Rivendell.AppVersionState;
3
+ import ReviewStatus = Rivendell.ReviewStatus;
4
+ export declare function formatReviewStatus(reviewStatus: ReviewStatus, state?: AppVersionState): string;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatReviewStatus = void 0;
4
+ const chalk_1 = require("chalk");
5
+ const Rivendell_1 = require("./Rivendell");
6
+ var AppVersionState = Rivendell_1.Rivendell.AppVersionState;
7
+ var ReviewStatus = Rivendell_1.Rivendell.ReviewStatus;
8
+ function formatReviewStatus(reviewStatus, state = AppVersionState.PUBLISHED) {
9
+ if (state !== AppVersionState.PUBLISHED) {
10
+ return '';
11
+ }
12
+ switch (reviewStatus) {
13
+ case ReviewStatus.NOT_STARTED:
14
+ return chalk_1.default.yellow('NOT_STARTED');
15
+ case ReviewStatus.IN_REVIEW:
16
+ return chalk_1.default.hex('#EE7600')('IN_REVIEW');
17
+ case ReviewStatus.APPROVED:
18
+ return chalk_1.default.green('APPROVED');
19
+ case ReviewStatus.NOT_REQUIRED:
20
+ return chalk_1.default.green('NOT_REQUIRED');
21
+ default: {
22
+ console.error(chalk_1.default.red(`Unrecognized ReviewStatus ${reviewStatus} `));
23
+ return chalk_1.default.red('UNKNOWN');
24
+ }
25
+ }
26
+ }
27
+ exports.formatReviewStatus = formatReviewStatus;
28
+ //# sourceMappingURL=formatReviewStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatReviewStatus.js","sourceRoot":"","sources":["../../src/lib/formatReviewStatus.ts"],"names":[],"mappings":";;;AAAA,iCAA0B;AAC1B,2CAAsC;AACtC,IAAO,eAAe,GAAG,qBAAS,CAAC,eAAe,CAAC;AACnD,IAAO,YAAY,GAAG,qBAAS,CAAC,YAAY,CAAC;AAE7C,SAAgB,kBAAkB,CAChC,YAA0B,EAC1B,QAAyB,eAAe,CAAC,SAAS;IAElD,IAAI,KAAK,KAAK,eAAe,CAAC,SAAS,EAAE;QACvC,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,YAAY,EAAE;QACpB,KAAK,YAAY,CAAC,WAAW;YAC3B,OAAO,eAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACrC,KAAK,YAAY,CAAC,SAAS;YACzB,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;QAC3C,KAAK,YAAY,CAAC,QAAQ;YACxB,OAAO,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,KAAK,YAAY,CAAC,YAAY;YAC5B,OAAO,eAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6BAA6B,YAAY,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SAC7B;KACF;AACH,CAAC;AArBD,gDAqBC"}
@@ -0,0 +1 @@
1
+ export declare function timestampToDurationString(ms: number | undefined): string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.timestampToDurationString = void 0;
4
+ function timestampToDurationString(ms) {
5
+ if (!ms || ms <= 0) {
6
+ return '-';
7
+ }
8
+ const duration = ms / 1000;
9
+ const hours = Math.floor(duration / 3600);
10
+ const minutes = Math.floor((duration - (hours * 3600)) / 60);
11
+ const seconds = Math.trunc(duration - (hours * 3600) - (minutes * 60));
12
+ const out = [];
13
+ if (hours > 0) {
14
+ out.push(`${hours}h`);
15
+ }
16
+ if (minutes > 0) {
17
+ out.push(`${minutes}m`);
18
+ }
19
+ if (seconds > 0) {
20
+ out.push(`${seconds}s`);
21
+ }
22
+ return out.join(' ');
23
+ }
24
+ exports.timestampToDurationString = timestampToDurationString;
25
+ //# sourceMappingURL=formatTimstamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatTimstamp.js","sourceRoot":"","sources":["../../src/lib/formatTimstamp.ts"],"names":[],"mappings":";;;AACA,SAAgB,yBAAyB,CAAC,EAAsB;IAC9D,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;QAClB,OAAO,GAAG,CAAC;KACZ;IACD,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;KACvB;IACD,IAAI,OAAO,GAAG,CAAC,EAAE;QACf,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;KACzB;IACD,IAAI,OAAO,GAAG,CAAC,EAAE;QACf,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;KACzB;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAnBD,8DAmBC"}
@@ -0,0 +1,2 @@
1
+ import { Rivendell } from './Rivendell';
2
+ export declare function formatVersionState(state: Rivendell.AppVersionState): string;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatVersionState = void 0;
4
+ const chalk_1 = require("chalk");
5
+ const Rivendell_1 = require("./Rivendell");
6
+ function formatVersionState(state) {
7
+ switch (state) {
8
+ case Rivendell_1.Rivendell.AppVersionState.NEW:
9
+ return chalk_1.default.yellow('NEW');
10
+ case Rivendell_1.Rivendell.AppVersionState.PUBLISHED:
11
+ return chalk_1.default.yellow('BUILT');
12
+ case Rivendell_1.Rivendell.AppVersionState.BUILD_FAILED:
13
+ return chalk_1.default.red('BUILD_FAILED');
14
+ case Rivendell_1.Rivendell.AppVersionState.STARTING:
15
+ return chalk_1.default.yellow('PUBLISHING');
16
+ case Rivendell_1.Rivendell.AppVersionState.START_FAILED:
17
+ return chalk_1.default.red('PUBLISHING_FAILED');
18
+ case Rivendell_1.Rivendell.AppVersionState.RUNNING:
19
+ return chalk_1.default.green('PUBLISHED');
20
+ case Rivendell_1.Rivendell.AppVersionState.STOPPING:
21
+ return chalk_1.default.yellow('UNPUBLISHING');
22
+ case Rivendell_1.Rivendell.AppVersionState.STOP_FAILED:
23
+ return chalk_1.default.red('UNPUBLISHING_FAILED');
24
+ case Rivendell_1.Rivendell.AppVersionState.STOPPED:
25
+ return chalk_1.default.red('UNPUBLISHED');
26
+ case Rivendell_1.Rivendell.AppVersionState.UPGRADING_RUNTIME:
27
+ return chalk_1.default.yellow('UPGRADING_RUNTIME');
28
+ default: {
29
+ console.error(chalk_1.default.red(`Unrecognized AppVersionState ${state} `));
30
+ return chalk_1.default.red('UNKNOWN');
31
+ }
32
+ }
33
+ }
34
+ exports.formatVersionState = formatVersionState;
35
+ //# sourceMappingURL=formatVersionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatVersionState.js","sourceRoot":"","sources":["../../src/lib/formatVersionState.ts"],"names":[],"mappings":";;;AAAA,iCAA0B;AAC1B,2CAAsC;AAEtC,SAAgB,kBAAkB,CAAC,KAAgC;IACjE,QAAQ,KAAK,EAAE;QACb,KAAK,qBAAS,CAAC,eAAe,CAAC,GAAG;YAChC,OAAO,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,qBAAS,CAAC,eAAe,CAAC,SAAS;YACtC,OAAO,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,KAAK,qBAAS,CAAC,eAAe,CAAC,YAAY;YACzC,OAAO,eAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnC,KAAK,qBAAS,CAAC,eAAe,CAAC,QAAQ;YACrC,OAAO,eAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACpC,KAAK,qBAAS,CAAC,eAAe,CAAC,YAAY;YACzC,OAAO,eAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACxC,KAAK,qBAAS,CAAC,eAAe,CAAC,OAAO;YACpC,OAAO,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClC,KAAK,qBAAS,CAAC,eAAe,CAAC,QAAQ;YACrC,OAAO,eAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACtC,KAAK,qBAAS,CAAC,eAAe,CAAC,WAAW;YACxC,OAAO,eAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC1C,KAAK,qBAAS,CAAC,eAAe,CAAC,OAAO;YACpC,OAAO,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClC,KAAK,qBAAS,CAAC,eAAe,CAAC,iBAAiB;YAC9C,OAAO,eAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,KAAK,GAAG,CAAC,CAAC,CAAC;YACnE,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SAC7B;KACF;AACH,CAAC;AA3BD,gDA2BC"}
@@ -0,0 +1,3 @@
1
+ import { DotenvParseOutput } from 'dotenv';
2
+ export declare function gatherAppEnv(shard: string): DotenvParseOutput;
3
+ export declare function validateAppEnvs(shards: string[]): void;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAppEnvs = exports.gatherAppEnv = void 0;
4
+ const dotenv_1 = require("dotenv");
5
+ const fs = require("fs");
6
+ const AppContext_1 = require("./AppContext");
7
+ const Config_1 = require("./Config");
8
+ const die_1 = require("./die");
9
+ function gatherAppEnv(shard) {
10
+ return buildAppEnv(gatherEnvFiles(shard));
11
+ }
12
+ exports.gatherAppEnv = gatherAppEnv;
13
+ function validateAppEnvs(shards) {
14
+ const manifest = AppContext_1.readAppYaml();
15
+ const expected = (manifest && manifest.environment) || [];
16
+ if (Config_1.getEnv() === 'production') {
17
+ validateEnvFiles(shards, manifest);
18
+ }
19
+ validateEnvContents(shards, expected);
20
+ }
21
+ exports.validateAppEnvs = validateAppEnvs;
22
+ function validateEnvFiles(shards, manifest) {
23
+ const errors = [];
24
+ if (manifest.meta.availability && manifest.meta.availability.includes('all')) {
25
+ if (shards.map((s) => `.env.${s}`).some((f) => fs.existsSync(f))) {
26
+ errors.push("Shard specific .env files are not allowed for 'all' availability");
27
+ }
28
+ }
29
+ if (errors.length) {
30
+ die_1.die(errors.map((s) => `* ${s}`).join('\n'));
31
+ }
32
+ }
33
+ function validateEnvContents(shards, expected) {
34
+ const errors = [];
35
+ for (const shard of shards) {
36
+ const files = gatherEnvFiles(shard);
37
+ errors.push(...validateAppEnv(buildAppEnv(files), expected, files));
38
+ }
39
+ if (errors.length) {
40
+ die_1.die(errors.map((s) => `* ${s}`).join('\n'));
41
+ }
42
+ }
43
+ function validateAppEnv(appEnv, expected, envFiles) {
44
+ const errors = [];
45
+ Object.keys(appEnv).forEach((name) => {
46
+ if (!expected.includes(name)) {
47
+ errors.push(`${envFiles}: One of the env files contains a variable not listed in the app.yml: ${name}`);
48
+ }
49
+ });
50
+ expected.forEach((name) => {
51
+ if (!appEnv[name]) {
52
+ errors.push(`${envFiles}: None of the env files provide a value for the required variable: ${name}`);
53
+ }
54
+ });
55
+ return errors;
56
+ }
57
+ function gatherEnvFiles(shard) {
58
+ const files = ['.env', `.env.${Config_1.getEnv()}`];
59
+ if (Config_1.getEnv() === 'production') {
60
+ files.push(`.env.${shard}`);
61
+ }
62
+ return files;
63
+ }
64
+ function buildAppEnv(files) {
65
+ const appEnv = {};
66
+ files.filter((f) => fs.existsSync(f)).forEach((f) => {
67
+ Object.assign(appEnv, dotenv_1.parse(fs.readFileSync(f)));
68
+ });
69
+ return appEnv;
70
+ }
71
+ //# sourceMappingURL=gatherAppEnv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gatherAppEnv.js","sourceRoot":"","sources":["../../src/lib/gatherAppEnv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function handleInterrupt(): void;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleInterrupt = void 0;
4
+ const terminal_kit_1 = require("terminal-kit");
5
+ function handleInterrupt() {
6
+ terminal_kit_1.terminal.on('key', (name) => {
7
+ if (name === 'CTRL_C') {
8
+ terminal_kit_1.terminal.grabInput(false);
9
+ terminal_kit_1.terminal.hideCursor(false);
10
+ console.log('^C');
11
+ terminal_kit_1.terminal.eraseDisplayBelow();
12
+ process.exit(1);
13
+ }
14
+ });
15
+ }
16
+ exports.handleInterrupt = handleInterrupt;
17
+ //# sourceMappingURL=handleInterrupt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleInterrupt.js","sourceRoot":"","sources":["../../src/lib/handleInterrupt.ts"],"names":[],"mappings":";;;AAAA,+CAAsC;AAEtC,SAAgB,eAAe;IAC7B,uBAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE;QAClC,IAAI,IAAI,KAAK,QAAQ,EAAE;YACrB,uBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,uBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,uBAAQ,CAAC,iBAAiB,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,0CAUC"}
@@ -0,0 +1,3 @@
1
+ import { Rivendell } from './Rivendell';
2
+ import Job = Rivendell.Job;
3
+ export declare function jobRuntime(job: Job): number;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jobRuntime = void 0;
4
+ function jobRuntime(job) {
5
+ if (job.completedAt) {
6
+ return (new Date(job.completedAt).getTime() - new Date(job.triggeredAt).getTime());
7
+ }
8
+ else if (job.terminatedAt) {
9
+ return (new Date(job.terminatedAt).getTime() - new Date(job.triggeredAt).getTime());
10
+ }
11
+ else {
12
+ return (new Date().getTime() - new Date(job.triggeredAt).getTime());
13
+ }
14
+ }
15
+ exports.jobRuntime = jobRuntime;
16
+ //# sourceMappingURL=jobRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobRuntime.js","sourceRoot":"","sources":["../../src/lib/jobRuntime.ts"],"names":[],"mappings":";;;AAGA,SAAgB,UAAU,CAAC,GAAQ;IACjC,IAAI,GAAG,CAAC,WAAW,EAAE;QACnB,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KACpF;SAAM,IAAI,GAAG,CAAC,YAAY,EAAE;QAC3B,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KACrF;SAAM;QACL,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KACrE;AACH,CAAC;AARD,gCAQC"}
@@ -0,0 +1,2 @@
1
+ export declare function parseDate(value: string): Date;
2
+ export declare function isValidDateOrEpochOrDurationString(value: string): boolean;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidDateOrEpochOrDurationString = exports.parseDate = void 0;
4
+ const parse_duration_1 = require("parse-duration");
5
+ const date_fns_1 = require("date-fns");
6
+ const EPOCH_TIMESTAMP_REGEX = /^\d+$/;
7
+ function parseDate(value) {
8
+ const iso = date_fns_1.parseISO(value);
9
+ if (iso.getTime()) {
10
+ return iso;
11
+ }
12
+ else if (EPOCH_TIMESTAMP_REGEX.test(value)) {
13
+ return date_fns_1.fromUnixTime(parseInt(value, 10));
14
+ }
15
+ else {
16
+ return new Date(Date.now() - parse_duration_1.default(value));
17
+ }
18
+ }
19
+ exports.parseDate = parseDate;
20
+ function isValidDateOrEpochOrDurationString(value) {
21
+ return EPOCH_TIMESTAMP_REGEX.test(value) ||
22
+ date_fns_1.parseISO(value).getTime() ||
23
+ parse_duration_1.default(value) ? true : false;
24
+ }
25
+ exports.isValidDateOrEpochOrDurationString = isValidDateOrEpochOrDurationString;
26
+ //# sourceMappingURL=parseDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseDate.js","sourceRoot":"","sources":["../../src/lib/parseDate.ts"],"names":[],"mappings":";;;AAAA,mDAAwD;AACxD,uCAAkD;AAElD,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,SAAgB,SAAS,CAAC,KAAa;IACrC,MAAM,GAAG,GAAG,mBAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO,GAAG,CAAC;KACZ;SAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC5C,OAAO,uBAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;KAC1C;SAAM;QACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,wBAAa,CAAC,KAAK,CAAE,CAAC,CAAC;KACrD;AACH,CAAC;AATD,8BASC;AAED,SAAgB,kCAAkC,CAAC,KAAa;IAC9D,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,mBAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QACzB,wBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,CAAC;AAJD,gFAIC"}
@@ -0,0 +1,13 @@
1
+ import { Template } from './types';
2
+ export declare class TemplateRenderer {
3
+ private targetDir;
4
+ private template;
5
+ private statusUpdater;
6
+ constructor(targetDir: string, template: Template, statusUpdater: (status: string) => void);
7
+ render(substitutions: {
8
+ [key: string]: string;
9
+ }): Promise<void>;
10
+ private downloadTemplate;
11
+ private extract;
12
+ private pipe;
13
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemplateRenderer = void 0;
4
+ const AdmZip = require("adm-zip");
5
+ const chalk_1 = require("chalk");
6
+ const fs = require("fs");
7
+ const glob = require("glob");
8
+ const mustache = require("mustache");
9
+ const node_fetch_1 = require("node-fetch");
10
+ const path = require("path");
11
+ class TemplateRenderer {
12
+ constructor(targetDir, template, statusUpdater) {
13
+ this.targetDir = targetDir;
14
+ this.template = template;
15
+ this.statusUpdater = statusUpdater;
16
+ // globally disable HTML escaping
17
+ mustache.escape = (text) => text;
18
+ }
19
+ async render(substitutions) {
20
+ process.chdir(this.targetDir);
21
+ this.statusUpdater(chalk_1.default.gray(`Downloading ${this.template.name} template...`));
22
+ await this.downloadTemplate();
23
+ this.statusUpdater(chalk_1.default.gray(`Extracting template...`));
24
+ this.extract();
25
+ this.statusUpdater(chalk_1.default.gray(`Rendering template...`));
26
+ glob.sync('**/*', { nodir: true }).forEach((file) => {
27
+ // exclude template.yml`
28
+ if (file === 'template.yml') {
29
+ fs.unlinkSync(file);
30
+ return;
31
+ }
32
+ const f = mustache.render(file, substitutions);
33
+ if (f !== file) {
34
+ fs.renameSync(path.resolve(file), path.resolve(f));
35
+ file = f;
36
+ }
37
+ const transformed = mustache.render(fs.readFileSync(path.resolve(file)).toString(), substitutions);
38
+ fs.writeFileSync(path.resolve(file), transformed);
39
+ });
40
+ }
41
+ async downloadTemplate() {
42
+ const response = await node_fetch_1.default(`https://s3.amazonaws.com/zaius-public/zdp/app-templates/${this.template.id}.zip`);
43
+ if (response.ok) {
44
+ await this.pipe(response.body, fs.createWriteStream(path.resolve(`${this.template.name}.zip`)));
45
+ }
46
+ else {
47
+ const body = response.body.read();
48
+ throw new Error(`Failed to download template: ${response.statusText}\n${body.toString()}`);
49
+ }
50
+ }
51
+ extract() {
52
+ const zipFile = path.resolve(`${this.template.name}.zip`);
53
+ const zip = new AdmZip(zipFile);
54
+ zip.extractAllTo(this.targetDir);
55
+ fs.unlinkSync(zipFile);
56
+ }
57
+ async pipe(input, output) {
58
+ return new Promise((resolve) => input.pipe(output).on('finish', resolve));
59
+ }
60
+ }
61
+ exports.TemplateRenderer = TemplateRenderer;
62
+ //# sourceMappingURL=TemplateRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateRenderer.js","sourceRoot":"","sources":["../../../src/lib/templating/TemplateRenderer.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAClC,iCAA0B;AAC1B,yBAAyB;AACzB,6BAA6B;AAC7B,qCAAqC;AACrC,2CAA+B;AAC/B,6BAA6B;AAI7B,MAAa,gBAAgB;IAC3B,YAAoB,SAAiB,EAAU,QAAkB,EAAU,aAAuC;QAA9F,cAAS,GAAT,SAAS,CAAQ;QAAU,aAAQ,GAAR,QAAQ,CAAU;QAAU,kBAAa,GAAb,aAAa,CAA0B;QAChH,iCAAiC;QAChC,QAAQ,CAAC,MAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,aAAsC;QACxD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC;QAChF,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,CAAC,aAAa,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChD,wBAAwB;YACxB,IAAI,IAAI,KAAK,cAAc,EAAE;gBAC3B,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpB,OAAO;aACR;YAED,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,IAAI,EAAE;gBACd,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,GAAG,CAAC,CAAC;aACV;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;YACnG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,QAAQ,GAAG,MAAM,oBAAK,CAAC,2DAA2D,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAChH,IAAI,QAAQ,CAAC,EAAE,EAAE;YACf,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;SACjG;aAAM;YACL,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC5F;IACH,CAAC;IAEO,OAAO;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,KAA4B,EAAE,MAAuB;QACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC;CACF;AAtDD,4CAsDC"}
@@ -0,0 +1 @@
1
+ export declare function fetchTemplatesManifest(): Promise<any>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchTemplatesManifest = void 0;
4
+ const node_fetch_1 = require("node-fetch");
5
+ async function fetchTemplatesManifest() {
6
+ const result = await node_fetch_1.default('http://s3.amazonaws.com/zaius-public/zdp/app-templates/manifest.json');
7
+ return await result.json();
8
+ }
9
+ exports.fetchTemplatesManifest = fetchTemplatesManifest;
10
+ //# sourceMappingURL=fetchTemplatesManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchTemplatesManifest.js","sourceRoot":"","sources":["../../../src/lib/templating/fetchTemplatesManifest.ts"],"names":[],"mappings":";;;AAAA,2CAA+B;AAExB,KAAK,UAAU,sBAAsB;IAC1C,MAAM,MAAM,GAAG,MAAM,oBAAK,CAAC,sEAAsE,CAAC,CAAC;IACnG,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC;AAHD,wDAGC"}
@@ -0,0 +1,27 @@
1
+ export interface Template {
2
+ id: string;
3
+ name: string;
4
+ summary: string;
5
+ variables: TemplateVariable;
6
+ type: 'template';
7
+ }
8
+ export interface Scaffold {
9
+ name: string;
10
+ summary: string;
11
+ variables: TemplateVariable;
12
+ type: 'scaffold';
13
+ }
14
+ export interface TemplateVariable {
15
+ name: string;
16
+ question?: string;
17
+ hint?: string;
18
+ suggest?: string;
19
+ required?: boolean;
20
+ hidden?: boolean;
21
+ }
22
+ export interface TemplateManifest {
23
+ version: number;
24
+ baseTemplateVariables: TemplateVariable[];
25
+ templates: Template[];
26
+ scaffolds: Scaffold[];
27
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/templating/types.ts"],"names":[],"mappings":""}