@actions/workflow-parser 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +87 -0
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +5 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/model/convert.d.ts +31 -0
  8. package/dist/model/convert.d.ts.map +1 -0
  9. package/dist/model/convert.js +105 -0
  10. package/dist/model/convert.js.map +1 -0
  11. package/dist/model/converter/concurrency.d.ts +5 -0
  12. package/dist/model/converter/concurrency.d.ts.map +1 -0
  13. package/dist/model/converter/concurrency.js +30 -0
  14. package/dist/model/converter/concurrency.js.map +1 -0
  15. package/dist/model/converter/container.d.ts +6 -0
  16. package/dist/model/converter/container.d.ts.map +1 -0
  17. package/dist/model/converter/container.js +97 -0
  18. package/dist/model/converter/container.js.map +1 -0
  19. package/dist/model/converter/cron-constants.d.ts +44 -0
  20. package/dist/model/converter/cron-constants.d.ts.map +1 -0
  21. package/dist/model/converter/cron-constants.js +30 -0
  22. package/dist/model/converter/cron-constants.js.map +1 -0
  23. package/dist/model/converter/cron.d.ts +3 -0
  24. package/dist/model/converter/cron.d.ts.map +1 -0
  25. package/dist/model/converter/cron.js +92 -0
  26. package/dist/model/converter/cron.js.map +1 -0
  27. package/dist/model/converter/events.d.ts +5 -0
  28. package/dist/model/converter/events.d.ts.map +1 -0
  29. package/dist/model/converter/events.js +123 -0
  30. package/dist/model/converter/events.js.map +1 -0
  31. package/dist/model/converter/handle-errors.d.ts +4 -0
  32. package/dist/model/converter/handle-errors.d.ts.map +1 -0
  33. package/dist/model/converter/handle-errors.js +18 -0
  34. package/dist/model/converter/handle-errors.js.map +1 -0
  35. package/dist/model/converter/id-builder.d.ts +23 -0
  36. package/dist/model/converter/id-builder.d.ts.map +1 -0
  37. package/dist/model/converter/id-builder.js +113 -0
  38. package/dist/model/converter/id-builder.js.map +1 -0
  39. package/dist/model/converter/job/environment.d.ts +5 -0
  40. package/dist/model/converter/job/environment.d.ts.map +1 -0
  41. package/dist/model/converter/job/environment.js +28 -0
  42. package/dist/model/converter/job/environment.js.map +1 -0
  43. package/dist/model/converter/job/inputs.d.ts +8 -0
  44. package/dist/model/converter/job/inputs.d.ts.map +1 -0
  45. package/dist/model/converter/job/inputs.js +38 -0
  46. package/dist/model/converter/job/inputs.js.map +1 -0
  47. package/dist/model/converter/job/runs-on.d.ts +9 -0
  48. package/dist/model/converter/job/runs-on.d.ts.map +1 -0
  49. package/dist/model/converter/job/runs-on.js +78 -0
  50. package/dist/model/converter/job/runs-on.js.map +1 -0
  51. package/dist/model/converter/job/secrets.d.ts +4 -0
  52. package/dist/model/converter/job/secrets.d.ts.map +1 -0
  53. package/dist/model/converter/job/secrets.js +32 -0
  54. package/dist/model/converter/job/secrets.js.map +1 -0
  55. package/dist/model/converter/job.d.ts +5 -0
  56. package/dist/model/converter/job.d.ts.map +1 -0
  57. package/dist/model/converter/job.js +144 -0
  58. package/dist/model/converter/job.js.map +1 -0
  59. package/dist/model/converter/jobs.d.ts +5 -0
  60. package/dist/model/converter/jobs.d.ts.map +1 -0
  61. package/dist/model/converter/jobs.js +74 -0
  62. package/dist/model/converter/jobs.js.map +1 -0
  63. package/dist/model/converter/referencedWorkflow.d.ts +5 -0
  64. package/dist/model/converter/referencedWorkflow.d.ts.map +1 -0
  65. package/dist/model/converter/referencedWorkflow.js +85 -0
  66. package/dist/model/converter/referencedWorkflow.js.map +1 -0
  67. package/dist/model/converter/steps.d.ts +5 -0
  68. package/dist/model/converter/steps.d.ts.map +1 -0
  69. package/dist/model/converter/steps.js +113 -0
  70. package/dist/model/converter/steps.js.map +1 -0
  71. package/dist/model/converter/string-list.d.ts +3 -0
  72. package/dist/model/converter/string-list.d.ts.map +1 -0
  73. package/dist/model/converter/string-list.js +8 -0
  74. package/dist/model/converter/string-list.js.map +1 -0
  75. package/dist/model/converter/workflow-call.d.ts +5 -0
  76. package/dist/model/converter/workflow-call.d.ts.map +1 -0
  77. package/dist/model/converter/workflow-call.js +45 -0
  78. package/dist/model/converter/workflow-call.js.map +1 -0
  79. package/dist/model/converter/workflow-dispatch.d.ts +9 -0
  80. package/dist/model/converter/workflow-dispatch.d.ts.map +1 -0
  81. package/dist/model/converter/workflow-dispatch.js +82 -0
  82. package/dist/model/converter/workflow-dispatch.js.map +1 -0
  83. package/dist/model/type-guards.d.ts +6 -0
  84. package/dist/model/type-guards.d.ts.map +1 -0
  85. package/dist/model/type-guards.js +13 -0
  86. package/dist/model/type-guards.js.map +1 -0
  87. package/dist/model/workflow-template.d.ts +157 -0
  88. package/dist/model/workflow-template.d.ts.map +1 -0
  89. package/dist/model/workflow-template.js +8 -0
  90. package/dist/model/workflow-template.js.map +1 -0
  91. package/dist/templates/allowed-context.d.ts +6 -0
  92. package/dist/templates/allowed-context.d.ts.map +1 -0
  93. package/dist/templates/allowed-context.js +30 -0
  94. package/dist/templates/allowed-context.js.map +1 -0
  95. package/dist/templates/json-object-reader.d.ts +20 -0
  96. package/dist/templates/json-object-reader.d.ts.map +1 -0
  97. package/dist/templates/json-object-reader.js +135 -0
  98. package/dist/templates/json-object-reader.js.map +1 -0
  99. package/dist/templates/object-reader.d.ts +15 -0
  100. package/dist/templates/object-reader.d.ts.map +1 -0
  101. package/dist/templates/object-reader.js +2 -0
  102. package/dist/templates/object-reader.js.map +1 -0
  103. package/dist/templates/parse-event.d.ts +16 -0
  104. package/dist/templates/parse-event.d.ts.map +1 -0
  105. package/dist/templates/parse-event.js +17 -0
  106. package/dist/templates/parse-event.js.map +1 -0
  107. package/dist/templates/schema/boolean-definition.d.ts +10 -0
  108. package/dist/templates/schema/boolean-definition.d.ts.map +1 -0
  109. package/dist/templates/schema/boolean-definition.js +41 -0
  110. package/dist/templates/schema/boolean-definition.js.map +1 -0
  111. package/dist/templates/schema/definition-info.d.ts +16 -0
  112. package/dist/templates/schema/definition-info.d.ts.map +1 -0
  113. package/dist/templates/schema/definition-info.js +40 -0
  114. package/dist/templates/schema/definition-info.js.map +1 -0
  115. package/dist/templates/schema/definition-type.d.ts +11 -0
  116. package/dist/templates/schema/definition-type.d.ts.map +1 -0
  117. package/dist/templates/schema/definition-type.js +12 -0
  118. package/dist/templates/schema/definition-type.js.map +1 -0
  119. package/dist/templates/schema/definition.d.ts +24 -0
  120. package/dist/templates/schema/definition.d.ts.map +1 -0
  121. package/dist/templates/schema/definition.js +62 -0
  122. package/dist/templates/schema/definition.js.map +1 -0
  123. package/dist/templates/schema/index.d.ts +2 -0
  124. package/dist/templates/schema/index.d.ts.map +1 -0
  125. package/dist/templates/schema/index.js +2 -0
  126. package/dist/templates/schema/index.js.map +1 -0
  127. package/dist/templates/schema/mapping-definition.d.ts +16 -0
  128. package/dist/templates/schema/mapping-definition.d.ts.map +1 -0
  129. package/dist/templates/schema/mapping-definition.js +81 -0
  130. package/dist/templates/schema/mapping-definition.js.map +1 -0
  131. package/dist/templates/schema/null-definition.d.ts +10 -0
  132. package/dist/templates/schema/null-definition.d.ts.map +1 -0
  133. package/dist/templates/schema/null-definition.js +41 -0
  134. package/dist/templates/schema/null-definition.js.map +1 -0
  135. package/dist/templates/schema/number-definition.d.ts +10 -0
  136. package/dist/templates/schema/number-definition.d.ts.map +1 -0
  137. package/dist/templates/schema/number-definition.js +41 -0
  138. package/dist/templates/schema/number-definition.js.map +1 -0
  139. package/dist/templates/schema/one-of-definition.d.ts +15 -0
  140. package/dist/templates/schema/one-of-definition.d.ts.map +1 -0
  141. package/dist/templates/schema/one-of-definition.js +154 -0
  142. package/dist/templates/schema/one-of-definition.js.map +1 -0
  143. package/dist/templates/schema/property-definition.d.ts +8 -0
  144. package/dist/templates/schema/property-definition.d.ts.map +1 -0
  145. package/dist/templates/schema/property-definition.js +31 -0
  146. package/dist/templates/schema/property-definition.js.map +1 -0
  147. package/dist/templates/schema/scalar-definition.d.ts +7 -0
  148. package/dist/templates/schema/scalar-definition.d.ts.map +1 -0
  149. package/dist/templates/schema/scalar-definition.js +7 -0
  150. package/dist/templates/schema/scalar-definition.js.map +1 -0
  151. package/dist/templates/schema/sequence-definition.d.ts +11 -0
  152. package/dist/templates/schema/sequence-definition.d.ts.map +1 -0
  153. package/dist/templates/schema/sequence-definition.js +47 -0
  154. package/dist/templates/schema/sequence-definition.js.map +1 -0
  155. package/dist/templates/schema/string-definition.d.ts +14 -0
  156. package/dist/templates/schema/string-definition.d.ts.map +1 -0
  157. package/dist/templates/schema/string-definition.js +79 -0
  158. package/dist/templates/schema/string-definition.js.map +1 -0
  159. package/dist/templates/schema/template-schema.d.ts +47 -0
  160. package/dist/templates/schema/template-schema.d.ts.map +1 -0
  161. package/dist/templates/schema/template-schema.js +377 -0
  162. package/dist/templates/schema/template-schema.js.map +1 -0
  163. package/dist/templates/template-constants.d.ts +49 -0
  164. package/dist/templates/template-constants.d.ts.map +1 -0
  165. package/dist/templates/template-constants.js +49 -0
  166. package/dist/templates/template-constants.js.map +1 -0
  167. package/dist/templates/template-context.d.ts +66 -0
  168. package/dist/templates/template-context.d.ts.map +1 -0
  169. package/dist/templates/template-context.js +118 -0
  170. package/dist/templates/template-context.js.map +1 -0
  171. package/dist/templates/template-reader.d.ts +9 -0
  172. package/dist/templates/template-reader.d.ts.map +1 -0
  173. package/dist/templates/template-reader.js +595 -0
  174. package/dist/templates/template-reader.js.map +1 -0
  175. package/dist/templates/template-validation-error.d.ts +14 -0
  176. package/dist/templates/template-validation-error.d.ts.map +1 -0
  177. package/dist/templates/template-validation-error.js +21 -0
  178. package/dist/templates/template-validation-error.js.map +1 -0
  179. package/dist/templates/tokens/basic-expression-token.d.ts +27 -0
  180. package/dist/templates/tokens/basic-expression-token.d.ts.map +1 -0
  181. package/dist/templates/tokens/basic-expression-token.js +38 -0
  182. package/dist/templates/tokens/basic-expression-token.js.map +1 -0
  183. package/dist/templates/tokens/boolean-token.d.ts +12 -0
  184. package/dist/templates/tokens/boolean-token.d.ts.map +1 -0
  185. package/dist/templates/tokens/boolean-token.js +23 -0
  186. package/dist/templates/tokens/boolean-token.js.map +1 -0
  187. package/dist/templates/tokens/expression-token.d.ts +11 -0
  188. package/dist/templates/tokens/expression-token.d.ts.map +1 -0
  189. package/dist/templates/tokens/expression-token.js +24 -0
  190. package/dist/templates/tokens/expression-token.js.map +1 -0
  191. package/dist/templates/tokens/index.d.ts +14 -0
  192. package/dist/templates/tokens/index.d.ts.map +1 -0
  193. package/dist/templates/tokens/index.js +14 -0
  194. package/dist/templates/tokens/index.js.map +1 -0
  195. package/dist/templates/tokens/insert-expression-token.d.ts +12 -0
  196. package/dist/templates/tokens/insert-expression-token.d.ts.map +1 -0
  197. package/dist/templates/tokens/insert-expression-token.js +26 -0
  198. package/dist/templates/tokens/insert-expression-token.js.map +1 -0
  199. package/dist/templates/tokens/key-value-pair.d.ts +8 -0
  200. package/dist/templates/tokens/key-value-pair.d.ts.map +1 -0
  201. package/dist/templates/tokens/key-value-pair.js +7 -0
  202. package/dist/templates/tokens/key-value-pair.js.map +1 -0
  203. package/dist/templates/tokens/literal-token.d.ts +14 -0
  204. package/dist/templates/tokens/literal-token.d.ts.map +1 -0
  205. package/dist/templates/tokens/literal-token.js +22 -0
  206. package/dist/templates/tokens/literal-token.js.map +1 -0
  207. package/dist/templates/tokens/mapping-token.d.ts +20 -0
  208. package/dist/templates/tokens/mapping-token.d.ts.map +1 -0
  209. package/dist/templates/tokens/mapping-token.js +58 -0
  210. package/dist/templates/tokens/mapping-token.js.map +1 -0
  211. package/dist/templates/tokens/null-token.d.ts +10 -0
  212. package/dist/templates/tokens/null-token.d.ts.map +1 -0
  213. package/dist/templates/tokens/null-token.js +19 -0
  214. package/dist/templates/tokens/null-token.js.map +1 -0
  215. package/dist/templates/tokens/number-token.d.ts +12 -0
  216. package/dist/templates/tokens/number-token.d.ts.map +1 -0
  217. package/dist/templates/tokens/number-token.js +23 -0
  218. package/dist/templates/tokens/number-token.js.map +1 -0
  219. package/dist/templates/tokens/scalar-token.d.ts +14 -0
  220. package/dist/templates/tokens/scalar-token.d.ts.map +1 -0
  221. package/dist/templates/tokens/scalar-token.js +22 -0
  222. package/dist/templates/tokens/scalar-token.js.map +1 -0
  223. package/dist/templates/tokens/sequence-token.d.ts +18 -0
  224. package/dist/templates/tokens/sequence-token.d.ts.map +1 -0
  225. package/dist/templates/tokens/sequence-token.js +47 -0
  226. package/dist/templates/tokens/sequence-token.js.map +1 -0
  227. package/dist/templates/tokens/serialization.d.ts +21 -0
  228. package/dist/templates/tokens/serialization.d.ts.map +1 -0
  229. package/dist/templates/tokens/serialization.js +2 -0
  230. package/dist/templates/tokens/serialization.js.map +1 -0
  231. package/dist/templates/tokens/string-token.d.ts +12 -0
  232. package/dist/templates/tokens/string-token.d.ts.map +1 -0
  233. package/dist/templates/tokens/string-token.js +21 -0
  234. package/dist/templates/tokens/string-token.js.map +1 -0
  235. package/dist/templates/tokens/template-token.d.ts +70 -0
  236. package/dist/templates/tokens/template-token.d.ts.map +1 -0
  237. package/dist/templates/tokens/template-token.js +138 -0
  238. package/dist/templates/tokens/template-token.js.map +1 -0
  239. package/dist/templates/tokens/token-range.d.ts +12 -0
  240. package/dist/templates/tokens/token-range.d.ts.map +1 -0
  241. package/dist/templates/tokens/token-range.js +2 -0
  242. package/dist/templates/tokens/token-range.js.map +1 -0
  243. package/dist/templates/tokens/traversal-state.d.ts +12 -0
  244. package/dist/templates/tokens/traversal-state.d.ts.map +1 -0
  245. package/dist/templates/tokens/traversal-state.js +54 -0
  246. package/dist/templates/tokens/traversal-state.js.map +1 -0
  247. package/dist/templates/tokens/type-guards.d.ts +18 -0
  248. package/dist/templates/tokens/type-guards.d.ts.map +1 -0
  249. package/dist/templates/tokens/type-guards.js +28 -0
  250. package/dist/templates/tokens/type-guards.js.map +1 -0
  251. package/dist/templates/tokens/types.d.ts +12 -0
  252. package/dist/templates/tokens/types.d.ts.map +1 -0
  253. package/dist/templates/tokens/types.js +37 -0
  254. package/dist/templates/tokens/types.js.map +1 -0
  255. package/dist/templates/trace-writer.d.ts +11 -0
  256. package/dist/templates/trace-writer.d.ts.map +1 -0
  257. package/dist/templates/trace-writer.js +12 -0
  258. package/dist/templates/trace-writer.js.map +1 -0
  259. package/dist/test-utils/null-trace.d.ts +3 -0
  260. package/dist/test-utils/null-trace.d.ts.map +1 -0
  261. package/dist/test-utils/null-trace.js +3 -0
  262. package/dist/test-utils/null-trace.js.map +1 -0
  263. package/dist/workflow-v1.0.json +2511 -0
  264. package/dist/workflows/file-provider.d.ts +6 -0
  265. package/dist/workflows/file-provider.d.ts.map +1 -0
  266. package/dist/workflows/file-provider.js +2 -0
  267. package/dist/workflows/file-provider.js.map +1 -0
  268. package/dist/workflows/file-reference.d.ts +13 -0
  269. package/dist/workflows/file-reference.d.ts.map +1 -0
  270. package/dist/workflows/file-reference.js +25 -0
  271. package/dist/workflows/file-reference.js.map +1 -0
  272. package/dist/workflows/file.d.ts +5 -0
  273. package/dist/workflows/file.d.ts.map +1 -0
  274. package/dist/workflows/file.js +2 -0
  275. package/dist/workflows/file.js.map +1 -0
  276. package/dist/workflows/workflow-constants.d.ts +2 -0
  277. package/dist/workflows/workflow-constants.d.ts.map +1 -0
  278. package/dist/workflows/workflow-constants.js +2 -0
  279. package/dist/workflows/workflow-constants.js.map +1 -0
  280. package/dist/workflows/workflow-parser.d.ts +11 -0
  281. package/dist/workflows/workflow-parser.d.ts.map +1 -0
  282. package/dist/workflows/workflow-parser.js +28 -0
  283. package/dist/workflows/workflow-parser.js.map +1 -0
  284. package/dist/workflows/workflow-schema.d.ts +3 -0
  285. package/dist/workflows/workflow-schema.d.ts.map +1 -0
  286. package/dist/workflows/workflow-schema.js +12 -0
  287. package/dist/workflows/workflow-schema.js.map +1 -0
  288. package/dist/workflows/yaml-object-reader.d.ts +26 -0
  289. package/dist/workflows/yaml-object-reader.d.ts.map +1 -0
  290. package/dist/workflows/yaml-object-reader.js +178 -0
  291. package/dist/workflows/yaml-object-reader.js.map +1 -0
  292. package/package.json +70 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright GitHub
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,87 @@
1
+ # actions/workflow-parser
2
+
3
+ `@actions/workflow-parser` is a library to parse GitHub Actions [workflows](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions).
4
+
5
+ ## Installation
6
+
7
+ The [package](https://www.npmjs.com/package/@actions/workflow-parser) contains TypeScript types and compiled ECMAScript modules.
8
+
9
+ ```bash
10
+ npm install @actions/workflow-parser
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ The parser is driven by a custom schema defined in [`worflows-v1.0.json`](./src/workflow-v1.0.json).
16
+
17
+ ### Simple example
18
+
19
+ `parseWorkflow` parses the workflow YAML into an intermediate representation and validates that it conforms to the schema. Any parsing errors are returned in the `errors` property of the result context.
20
+
21
+ ```typescript
22
+ var trace: TraceWriter;
23
+
24
+ const result = parseWorkflow(
25
+ {
26
+ name: "test.yaml",
27
+ content: `on: push
28
+ jobs:
29
+ build:
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - run: echo 'hello'`
33
+ },
34
+ trace
35
+ );
36
+ ```
37
+
38
+ `convertWorkflowTemplate` then takes that intermediate representation and converts it to a [`WorkflowTemplate`](./src/workflow-template.ts) object, which is a more convenient representation for working with workflows.
39
+
40
+ ```typescript
41
+ const workflowTemplate = await convertWorkflowTemplate(result.context, result.value);
42
+
43
+ // workflowTemplate.jobs[0].id === "build"
44
+ // workflowTemplate.jobs[0].steps[0].run === "echo 'hello'"
45
+ ```
46
+
47
+ ## Contributing
48
+
49
+ See [CONTRIBUTING.md](../CONTRIBUTING.md) at the root of the repository for general guidelines and recommendations.
50
+
51
+ Similar to [`actions/expressions](../expressions/), this project is just one of multiple implementations of the GitHub Actions workflow parser. We therefore cannot accept contributions that significantly modify the schema or the overall behavior of the parser. If you would like to propose changes to Actions itself, please use our [Community Forum](https://github.com/community/community/discussions/categories/actions-and-packages).
52
+
53
+ If you do want to contribute, please run [prettier](https://prettier.io/) to format your code and add unit tests as appropriate before submitting your PR. [./testdata](./testdata) contains test cases that all implementations should pass, please also make sure those tests are still passing.
54
+
55
+ ### Build
56
+
57
+ ```bash
58
+ npm run build
59
+ ```
60
+
61
+ or to watch for changes
62
+
63
+ ```bash
64
+ npm run watch
65
+ ```
66
+
67
+ ### Test
68
+
69
+ ```bash
70
+ npm test
71
+ ```
72
+
73
+ or to watch for changes and run tests:
74
+
75
+ ```bash
76
+ npm run test-watch
77
+ ```
78
+
79
+ ### Lint
80
+
81
+ ```bash
82
+ npm run format-check
83
+ ```
84
+
85
+ ## License
86
+
87
+ This project is licensed under the terms of the MIT open source license. Please refer to [MIT](../LICENSE) for the full terms.
@@ -0,0 +1,6 @@
1
+ export { convertWorkflowTemplate } from "./model/convert";
2
+ export { WorkflowTemplate } from "./model/workflow-template";
3
+ export * from "./templates/tokens/type-guards";
4
+ export { NoOperationTraceWriter, TraceWriter } from "./templates/trace-writer";
5
+ export { parseWorkflow, ParseWorkflowResult } from "./workflows/workflow-parser";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAC,sBAAsB,EAAE,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAC,aAAa,EAAE,mBAAmB,EAAC,MAAM,6BAA6B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { convertWorkflowTemplate } from "./model/convert";
2
+ export * from "./templates/tokens/type-guards";
3
+ export { NoOperationTraceWriter } from "./templates/trace-writer";
4
+ export { parseWorkflow } from "./workflows/workflow-parser";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,iBAAiB,CAAC;AAExD,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAC,sBAAsB,EAAc,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAC,aAAa,EAAsB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { TemplateContext } from "../templates/template-context";
2
+ import { TemplateToken } from "../templates/tokens/template-token";
3
+ import { FileProvider } from "../workflows/file-provider";
4
+ import { WorkflowTemplate } from "./workflow-template";
5
+ export declare enum ErrorPolicy {
6
+ ReturnErrorsOnly = 0,
7
+ TryConversion = 1
8
+ }
9
+ export type WorkflowTemplateConverterOptions = {
10
+ /**
11
+ * The maximum depth of reusable workflows allowed in the workflow.
12
+ * If this depth is exceeded, an error will be reported.
13
+ * If {@link fetchReusableWorkflowDepth} is less than this value, the maximum depth
14
+ * won't be enforced.
15
+ * Default: 4
16
+ */
17
+ maxReusableWorkflowDepth?: number;
18
+ /**
19
+ * The depth to fetch reusable workflows, up to {@link maxReusableWorkflowDepth}.
20
+ * Currently only a fetch depth of 0 or 1 is supported.
21
+ * Default: 0
22
+ */
23
+ fetchReusableWorkflowDepth?: number;
24
+ /**
25
+ * The error policy to use when converting the workflow.
26
+ * By default, conversion will be skipped if there are errors in the {@link TemplateContext}.
27
+ */
28
+ errorPolicy?: ErrorPolicy;
29
+ };
30
+ export declare function convertWorkflowTemplate(context: TemplateContext, root: TemplateToken, fileProvider?: FileProvider, options?: WorkflowTemplateConverterOptions): Promise<WorkflowTemplate>;
31
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/model/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAC,aAAa,EAAqB,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AASxD,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAErD,oBAAY,WAAW;IACrB,gBAAgB,IAAA;IAChB,aAAa,IAAA;CACd;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAQF,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,aAAa,EACnB,YAAY,CAAC,EAAE,YAAY,EAC3B,OAAO,GAAE,gCAAiD,GACzD,OAAO,CAAC,gBAAgB,CAAC,CAgF3B"}
@@ -0,0 +1,105 @@
1
+ import { TemplateTokenError } from "../templates/tokens/template-token";
2
+ import { parseFileReference } from "../workflows/file-reference";
3
+ import { parseWorkflow } from "../workflows/workflow-parser";
4
+ import { convertConcurrency } from "./converter/concurrency";
5
+ import { convertOn } from "./converter/events";
6
+ import { handleTemplateTokenErrors } from "./converter/handle-errors";
7
+ import { convertJobs } from "./converter/jobs";
8
+ import { convertReferencedWorkflow } from "./converter/referencedWorkflow";
9
+ import { isReusableWorkflowJob } from "./type-guards";
10
+ export var ErrorPolicy;
11
+ (function (ErrorPolicy) {
12
+ ErrorPolicy[ErrorPolicy["ReturnErrorsOnly"] = 0] = "ReturnErrorsOnly";
13
+ ErrorPolicy[ErrorPolicy["TryConversion"] = 1] = "TryConversion";
14
+ })(ErrorPolicy || (ErrorPolicy = {}));
15
+ const defaultOptions = {
16
+ maxReusableWorkflowDepth: 4,
17
+ fetchReusableWorkflowDepth: 0,
18
+ errorPolicy: ErrorPolicy.ReturnErrorsOnly
19
+ };
20
+ export async function convertWorkflowTemplate(context, root, fileProvider, options = defaultOptions) {
21
+ const result = {};
22
+ const opts = getOptionsWithDefaults(options);
23
+ if (context.errors.getErrors().length > 0 && opts.errorPolicy === ErrorPolicy.ReturnErrorsOnly) {
24
+ result.errors = context.errors.getErrors().map(x => ({
25
+ Message: x.message
26
+ }));
27
+ return result;
28
+ }
29
+ if (fileProvider === undefined && opts.fetchReusableWorkflowDepth > 0) {
30
+ context.error(root, new Error("A file provider is required to fetch reusable workflows"));
31
+ }
32
+ try {
33
+ const rootMapping = root.assertMapping("root");
34
+ for (const item of rootMapping) {
35
+ const key = item.key.assertString("root key");
36
+ switch (key.value) {
37
+ case "on":
38
+ result.events = handleTemplateTokenErrors(root, context, {}, () => convertOn(context, item.value));
39
+ break;
40
+ case "jobs":
41
+ result.jobs = handleTemplateTokenErrors(root, context, [], () => convertJobs(context, item.value));
42
+ break;
43
+ case "concurrency":
44
+ handleTemplateTokenErrors(root, context, {}, () => convertConcurrency(context, item.value));
45
+ result.concurrency = item.value;
46
+ break;
47
+ case "env":
48
+ result.env = item.value;
49
+ break;
50
+ }
51
+ }
52
+ // Load referenced workflows
53
+ for (const job of result.jobs || []) {
54
+ if (isReusableWorkflowJob(job)) {
55
+ if (opts.maxReusableWorkflowDepth === 0) {
56
+ context.error(job.ref, new Error("Reusable workflows are not allowed"));
57
+ continue;
58
+ }
59
+ if (opts.fetchReusableWorkflowDepth === 0 || fileProvider === undefined) {
60
+ continue;
61
+ }
62
+ try {
63
+ const file = await fileProvider.getFileContent(parseFileReference(job.ref.value));
64
+ const workflow = parseWorkflow(file, context);
65
+ if (!workflow.value) {
66
+ continue;
67
+ }
68
+ convertReferencedWorkflow(context, workflow.value, job);
69
+ }
70
+ catch {
71
+ context.error(job.ref, new Error("Unable to find reusable workflow"));
72
+ }
73
+ }
74
+ }
75
+ }
76
+ catch (err) {
77
+ if (err instanceof TemplateTokenError) {
78
+ context.error(err.token, err);
79
+ }
80
+ else {
81
+ // Report error for the root node
82
+ context.error(root, err);
83
+ }
84
+ }
85
+ finally {
86
+ if (context.errors.getErrors().length > 0) {
87
+ result.errors = context.errors.getErrors().map(x => ({
88
+ Message: x.message
89
+ }));
90
+ }
91
+ }
92
+ return result;
93
+ }
94
+ function getOptionsWithDefaults(options) {
95
+ return {
96
+ maxReusableWorkflowDepth: options.maxReusableWorkflowDepth !== undefined
97
+ ? options.maxReusableWorkflowDepth
98
+ : defaultOptions.maxReusableWorkflowDepth,
99
+ fetchReusableWorkflowDepth: options.fetchReusableWorkflowDepth !== undefined
100
+ ? options.fetchReusableWorkflowDepth
101
+ : defaultOptions.fetchReusableWorkflowDepth,
102
+ errorPolicy: options.errorPolicy !== undefined ? options.errorPolicy : defaultOptions.errorPolicy
103
+ };
104
+ }
105
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/model/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TemplateContext } from "../../templates/template-context";
2
+ import { TemplateToken } from "../../templates/tokens/template-token";
3
+ import { ConcurrencySetting } from "../workflow-template";
4
+ export declare function convertConcurrency(context: TemplateContext, token: TemplateToken): ConcurrencySetting;
5
+ //# sourceMappingURL=concurrency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../../src/model/converter/concurrency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAC,aAAa,EAAC,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,GAAG,kBAAkB,CA6BrG"}
@@ -0,0 +1,30 @@
1
+ import { isString } from "../../templates/tokens/type-guards";
2
+ export function convertConcurrency(context, token) {
3
+ const result = {};
4
+ if (token.isExpression) {
5
+ return result;
6
+ }
7
+ if (isString(token)) {
8
+ result.group = token;
9
+ return result;
10
+ }
11
+ const concurrencyProperty = token.assertMapping("concurrency group");
12
+ for (const property of concurrencyProperty) {
13
+ const propertyName = property.key.assertString("concurrency group key");
14
+ if (property.key.isExpression || property.value.isExpression) {
15
+ continue;
16
+ }
17
+ switch (propertyName.value) {
18
+ case "group":
19
+ result.group = property.value.assertString("concurrency group");
20
+ break;
21
+ case "cancel-in-progress":
22
+ result.cancelInProgress = property.value.assertBoolean("cancel-in-progress").value;
23
+ break;
24
+ default:
25
+ context.error(propertyName, `Invalid property name: ${propertyName.value}`);
26
+ }
27
+ }
28
+ return result;
29
+ }
30
+ //# sourceMappingURL=concurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../../src/model/converter/concurrency.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,oCAAoC,CAAC;AAG5D,MAAM,UAAU,kBAAkB,CAAC,OAAwB,EAAE,KAAoB;IAC/E,MAAM,MAAM,GAAuB,EAAE,CAAC;IAEtC,IAAI,KAAK,CAAC,YAAY,EAAE;QACtB,OAAO,MAAM,CAAC;KACf;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,OAAO,MAAM,CAAC;KACf;IACD,MAAM,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACrE,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;QACxE,IAAI,QAAQ,CAAC,GAAG,CAAC,YAAY,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;YAC5D,SAAS;SACV;QACD,QAAQ,YAAY,CAAC,KAAK,EAAE;YAC1B,KAAK,OAAO;gBACV,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC;gBACnF,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,0BAA0B,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;SAC/E;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { TemplateContext } from "../../templates/template-context";
2
+ import { TemplateToken } from "../../templates/tokens";
3
+ import { Container } from "../workflow-template";
4
+ export declare function convertToJobContainer(context: TemplateContext, container: TemplateToken): Container | undefined;
5
+ export declare function convertToJobServices(context: TemplateContext, services: TemplateToken): Container[] | undefined;
6
+ //# sourceMappingURL=container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/model/converter/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAA2C,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAE/F,OAAO,EAAC,SAAS,EAAa,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAiE/G;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,EAAE,GAAG,SAAS,CAY/G"}
@@ -0,0 +1,97 @@
1
+ import { TemplateToken } from "../../templates/tokens";
2
+ import { isString } from "../../templates/tokens/type-guards";
3
+ export function convertToJobContainer(context, container) {
4
+ let image;
5
+ let env;
6
+ let ports;
7
+ let volumes;
8
+ let options;
9
+ // Skip validation for expressions for now to match
10
+ // behavior of the other parsers
11
+ for (const [, token] of TemplateToken.traverse(container)) {
12
+ if (token.isExpression) {
13
+ return;
14
+ }
15
+ }
16
+ if (isString(container)) {
17
+ // Workflow uses shorthand syntax `container: image-name`
18
+ image = container.assertString("container item");
19
+ return { image: image };
20
+ }
21
+ const mapping = container.assertMapping("container item");
22
+ if (mapping)
23
+ for (const item of mapping) {
24
+ const key = item.key.assertString("container item key");
25
+ const value = item.value;
26
+ switch (key.value) {
27
+ case "image":
28
+ image = value.assertString("container image");
29
+ break;
30
+ case "credentials":
31
+ convertToJobCredentials(context, value);
32
+ break;
33
+ case "env":
34
+ env = value.assertMapping("container env");
35
+ for (const envItem of env) {
36
+ envItem.key.assertString("container env value");
37
+ }
38
+ break;
39
+ case "ports":
40
+ ports = value.assertSequence("container ports");
41
+ for (const port of ports) {
42
+ port.assertString("container port");
43
+ }
44
+ break;
45
+ case "volumes":
46
+ volumes = value.assertSequence("container volumes");
47
+ for (const volume of volumes) {
48
+ volume.assertString("container volume");
49
+ }
50
+ break;
51
+ case "options":
52
+ options = value.assertString("container options");
53
+ break;
54
+ default:
55
+ context.error(key, `Unexpected container item key: ${key.value}`);
56
+ }
57
+ }
58
+ if (!image) {
59
+ context.error(container, "Container image cannot be empty");
60
+ }
61
+ else {
62
+ return { image, env, ports, volumes, options };
63
+ }
64
+ }
65
+ export function convertToJobServices(context, services) {
66
+ const serviceList = [];
67
+ const mapping = services.assertMapping("services");
68
+ for (const service of mapping) {
69
+ service.key.assertString("service key");
70
+ const container = convertToJobContainer(context, service.value);
71
+ if (container) {
72
+ serviceList.push(container);
73
+ }
74
+ }
75
+ return serviceList;
76
+ }
77
+ function convertToJobCredentials(context, value) {
78
+ const mapping = value.assertMapping("credentials");
79
+ let username;
80
+ let password;
81
+ for (const item of mapping) {
82
+ const key = item.key.assertString("credentials item");
83
+ const value = item.value;
84
+ switch (key.value) {
85
+ case "username":
86
+ username = value.assertString("credentials username");
87
+ break;
88
+ case "password":
89
+ password = value.assertString("credentials password");
90
+ break;
91
+ default:
92
+ context.error(key, `credentials key ${key.value}`);
93
+ }
94
+ }
95
+ return { username, password };
96
+ }
97
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/model/converter/container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export declare const MINUTE_RANGE: {
2
+ min: number;
3
+ max: number;
4
+ };
5
+ export declare const HOUR_RANGE: {
6
+ min: number;
7
+ max: number;
8
+ };
9
+ export declare const DOM_RANGE: {
10
+ min: number;
11
+ max: number;
12
+ };
13
+ export declare const MONTH_RANGE: {
14
+ min: number;
15
+ max: number;
16
+ names: {
17
+ jan: number;
18
+ feb: number;
19
+ mar: number;
20
+ apr: number;
21
+ may: number;
22
+ jun: number;
23
+ jul: number;
24
+ aug: number;
25
+ sep: number;
26
+ oct: number;
27
+ nov: number;
28
+ dec: number;
29
+ };
30
+ };
31
+ export declare const DOW_RANGE: {
32
+ min: number;
33
+ max: number;
34
+ names: {
35
+ sun: number;
36
+ mon: number;
37
+ tue: number;
38
+ wed: number;
39
+ thu: number;
40
+ fri: number;
41
+ sat: number;
42
+ };
43
+ };
44
+ //# sourceMappingURL=cron-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-constants.d.ts","sourceRoot":"","sources":["../../../src/model/converter/cron-constants.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,YAAY;;;CAAoB,CAAC;AAC9C,eAAO,MAAM,UAAU;;;CAAoB,CAAC;AAC5C,eAAO,MAAM,SAAS;;;CAAoB,CAAC;AAC3C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;CAAmC,CAAC;AAC5D,eAAO,MAAM,SAAS;;;;;;;;;;;;CAAgC,CAAC"}
@@ -0,0 +1,30 @@
1
+ // Constants for parsing and validating cron expressions
2
+ const MONTHS = {
3
+ jan: 1,
4
+ feb: 2,
5
+ mar: 3,
6
+ apr: 4,
7
+ may: 5,
8
+ jun: 6,
9
+ jul: 7,
10
+ aug: 8,
11
+ sep: 9,
12
+ oct: 10,
13
+ nov: 11,
14
+ dec: 12
15
+ };
16
+ const DAYS = {
17
+ sun: 0,
18
+ mon: 1,
19
+ tue: 2,
20
+ wed: 3,
21
+ thu: 4,
22
+ fri: 5,
23
+ sat: 6
24
+ };
25
+ export const MINUTE_RANGE = { min: 0, max: 59 };
26
+ export const HOUR_RANGE = { min: 0, max: 23 };
27
+ export const DOM_RANGE = { min: 1, max: 31 };
28
+ export const MONTH_RANGE = { min: 1, max: 12, names: MONTHS };
29
+ export const DOW_RANGE = { min: 0, max: 6, names: DAYS };
30
+ //# sourceMappingURL=cron-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-constants.js","sourceRoot":"","sources":["../../../src/model/converter/cron-constants.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,MAAM,MAAM,GAAG;IACb,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;CACR,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,SAAS,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function isValidCron(cron: string): boolean;
2
+ export declare function getCronDescription(cronspec: string): string | undefined;
3
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../src/model/converter/cron.ts"],"names":[],"mappings":"AAUA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBjD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyBvE"}
@@ -0,0 +1,92 @@
1
+ import cronstrue from "cronstrue";
2
+ import { MONTH_RANGE, HOUR_RANGE, MINUTE_RANGE, DOM_RANGE, DOW_RANGE } from "./cron-constants";
3
+ export function isValidCron(cron) {
4
+ // https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
5
+ const parts = cron.split(/ +/);
6
+ if (parts.length != 5) {
7
+ return false;
8
+ }
9
+ const [minutes, hours, dom, months, dow] = parts;
10
+ return (validateCronPart(minutes, MINUTE_RANGE) &&
11
+ validateCronPart(hours, HOUR_RANGE) &&
12
+ validateCronPart(dom, DOM_RANGE) &&
13
+ validateCronPart(months, MONTH_RANGE) &&
14
+ validateCronPart(dow, DOW_RANGE));
15
+ }
16
+ export function getCronDescription(cronspec) {
17
+ if (!isValidCron(cronspec)) {
18
+ return;
19
+ }
20
+ let desc = "";
21
+ try {
22
+ desc = cronstrue.toString(cronspec, {
23
+ dayOfWeekStartIndexZero: true,
24
+ monthStartIndexZero: false,
25
+ use24HourTimeFormat: true,
26
+ // cronstrue sets the description as the error if throwExceptionOnParseError is false
27
+ // so we need to distinguish between an error and a valid description
28
+ throwExceptionOnParseError: true
29
+ });
30
+ }
31
+ catch (err) {
32
+ return;
33
+ }
34
+ // Make first character lowercase
35
+ let result = "Runs " + desc.charAt(0).toLowerCase() + desc.slice(1);
36
+ result +=
37
+ "\n\nActions schedules run at most every 5 minutes." +
38
+ " [Learn more](https://docs.github.com/actions/using-workflows/workflow-syntax-for-github-actions#onschedule)";
39
+ return result;
40
+ }
41
+ function validateCronPart(value, range, allowSeparators = true) {
42
+ if (range.names && range.names[value.toLowerCase()] !== undefined) {
43
+ return true;
44
+ }
45
+ if (value === "*") {
46
+ return true;
47
+ }
48
+ // Operator precedence: , > / > -
49
+ if (value.includes(",")) {
50
+ if (!allowSeparators) {
51
+ return false;
52
+ }
53
+ return value.split(",").every(v => v && validateCronPart(v, range));
54
+ }
55
+ if (value.includes("/")) {
56
+ if (!allowSeparators) {
57
+ return false;
58
+ }
59
+ const [start, step, ...rest] = value.split("/");
60
+ const stepNumber = +step;
61
+ if (rest.length > 0 || isNaN(stepNumber) || stepNumber <= 0 || !start || !step) {
62
+ return false;
63
+ }
64
+ // Separators are only allowed in the part before the `/`, e.g. `1-5/2`
65
+ return validateCronPart(start, range) && validateCronPart(step, range, false);
66
+ }
67
+ if (value.includes("-")) {
68
+ if (!allowSeparators) {
69
+ return false;
70
+ }
71
+ const [start, end, ...rest] = value.split("-");
72
+ if (rest.length > 0 || !start || !end) {
73
+ return false;
74
+ }
75
+ // Convert name to integers so we can make sure end >= start
76
+ const startNumber = convertToNumber(start, range.names);
77
+ const endNumber = convertToNumber(end, range.names);
78
+ return validateCronPart(start, range, false) && validateCronPart(end, range, false) && endNumber >= startNumber;
79
+ }
80
+ const number = +value;
81
+ return !isNaN(number) && number >= range.min && number <= range.max;
82
+ }
83
+ // Converts a string integer or a short name to a number
84
+ function convertToNumber(value, names) {
85
+ if (names && names[value.toLowerCase()] !== undefined) {
86
+ return +names[value.toLowerCase()];
87
+ }
88
+ else {
89
+ return +value;
90
+ }
91
+ }
92
+ //# sourceMappingURL=cron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/model/converter/cron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TemplateContext } from "../../templates/template-context";
2
+ import { TemplateToken } from "../../templates/tokens/template-token";
3
+ import { EventsConfig } from "../workflow-template";
4
+ export declare function convertOn(context: TemplateContext, token: TemplateToken): EventsConfig;
5
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/model/converter/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AAGjE,OAAO,EAAC,aAAa,EAAC,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAEL,YAAY,EAMb,MAAM,sBAAsB,CAAC;AAM9B,wBAAgB,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,GAAG,YAAY,CA4DtF"}