@vaharoni/devops 1.2.12 → 1.2.14

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 (330) hide show
  1. package/dist/chunk-N7EX3HJH.js +139 -0
  2. package/dist/chunk-RZ46YYZZ.js +420 -0
  3. package/dist/chunk-WKP7EQNU.js +421 -0
  4. package/dist/devops.d.ts +0 -2
  5. package/dist/devops.js +3235 -91
  6. package/dist/index.d.ts +972 -4
  7. package/dist/index.js +67 -3
  8. package/dist/plugins.d.ts +95 -4
  9. package/dist/plugins.js +20 -6
  10. package/dist/src/target-templates/README.md +1 -0
  11. package/dist/src/target-templates/cluster-resource-options/README.md +2 -0
  12. package/dist/src/target-templates/cluster-resource-options/dns-test/dns-test.yaml +60 -0
  13. package/dist/src/target-templates/cluster-resource-options/milvus/production/milvus-values.yaml +2 -0
  14. package/dist/src/target-templates/cluster-resource-options/milvus/staging/milvus-values.yaml +2 -0
  15. package/dist/src/target-templates/cluster-resource-options/monitoring-ingress/monitoring-ingress.yaml +62 -0
  16. package/dist/src/target-templates/cluster-resource-options/postgres/daily-operator-restart.yaml +54 -0
  17. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/PodDisruptionBudget.yaml +27 -0
  18. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/SGCluster.yaml +47 -0
  19. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/StackGres-alerts.yaml +191 -0
  20. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/06-SGDistributedLogs.yaml +11 -0
  21. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/07-SGObjectStorage.yaml +18 -0
  22. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/08-SGScript.yaml +12 -0
  23. package/dist/src/target-templates/cluster-resource-options/postgres/stackgres-ui-ingress.yaml +35 -0
  24. package/dist/src/target-templates/cluster-resource-options/postgres/staging/cluster/SGCluster.yaml +42 -0
  25. package/dist/src/target-templates/cluster-resource-options/postgres/staging/configurations/07-SGObjectStorage.yaml +18 -0
  26. package/dist/src/target-templates/cluster-resource-options/postgres/staging/configurations/08-SGScript.yaml +12 -0
  27. package/dist/src/target-templates/cluster-resource-options/prefect/production/prefect-values.yaml +14 -0
  28. package/dist/src/target-templates/cluster-resource-options/prefect/staging/prefect-values.yaml +14 -0
  29. package/dist/src/target-templates/cluster-resource-options/redis/production/redis-values.yaml +20 -0
  30. package/dist/src/target-templates/cluster-resource-options/redis/staging/redis-values.yaml +8 -0
  31. package/dist/src/target-templates/infra-variants/README.md +2 -0
  32. package/dist/src/target-templates/infra-variants/digitalocean/.devops/config/constants.yaml +18 -0
  33. package/dist/src/target-templates/infra-variants/digitalocean/.github/workflows/k8s-build.yaml +91 -0
  34. package/dist/src/target-templates/infra-variants/gcloud/.devops/config/constants.yaml +15 -0
  35. package/dist/src/target-templates/infra-variants/gcloud/.devops/manifests/ingress.yaml.hb +22 -0
  36. package/dist/src/target-templates/infra-variants/gcloud/.github/workflows/k8s-build.yaml +95 -0
  37. package/dist/src/target-templates/infra-variants/hetzner/.devops/config/constants.yaml +18 -0
  38. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/abandoned/harbor-values.yaml +30 -0
  39. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/abandoned/hcloud-config.yaml +134 -0
  40. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/cert-manager.yaml +25 -0
  41. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/harbor-cert.yaml +13 -0
  42. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/harbor-values.yaml +76 -0
  43. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/hcloud-config.yaml +113 -0
  44. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/ingress-nginx-annotations.yaml +49 -0
  45. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/ingress-nginx-configmap.yaml +8 -0
  46. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/retain-storage-class.yaml +8 -0
  47. package/dist/src/target-templates/infra-variants/hetzner/.github/workflows/k8s-build.yaml +93 -0
  48. package/dist/src/target-templates/lang-variants-common/README.md +4 -0
  49. package/dist/src/target-templates/lang-variants-common/python/.cursor/rules/monorepo-python.mdc +56 -0
  50. package/dist/src/target-templates/lang-variants-common/python/.devops/config/images.yaml +89 -0
  51. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services/python-exec.sh +8 -0
  52. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services/python-run.sh +8 -0
  53. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services.Dockerfile +29 -0
  54. package/dist/src/target-templates/lang-variants-common/python/.devops/manifests/_index.yaml +21 -0
  55. package/dist/src/target-templates/lang-variants-common/python/.devops/manifests/prefect.yaml.hb +63 -0
  56. package/dist/src/target-templates/lang-variants-common/python/applications/example-data-pipeline/pyproject.toml +14 -0
  57. package/dist/src/target-templates/lang-variants-common/python/applications/example-data-pipeline/src/example_data_pipeline/main.py +38 -0
  58. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/pyproject.toml +20 -0
  59. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/__init__.py +0 -0
  60. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/main.py +13 -0
  61. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/scripts.py +17 -0
  62. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/tests/__init__.py +0 -0
  63. package/dist/src/target-templates/lang-variants-common/python/devopspy +3 -0
  64. package/dist/src/target-templates/lang-variants-common/python/libs/example-python-lib/pyproject.toml +11 -0
  65. package/dist/src/target-templates/lang-variants-common/python/libs/example-python-lib/src/example_python_lib/__init__.py +2 -0
  66. package/dist/src/target-templates/lang-variants-common/python/pyproject.toml +16 -0
  67. package/dist/src/target-templates/lang-variants-common/typescript/.cursor/rules/monorepo-typescript.mdc +51 -0
  68. package/dist/src/target-templates/lang-variants-common/typescript/.devops/config/images.yaml +69 -0
  69. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/cloudrun.Dockerfile +31 -0
  70. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/common/docker-common.sh +23 -0
  71. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services/node-exec.sh +8 -0
  72. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services/node-run.sh +8 -0
  73. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services.Dockerfile +31 -0
  74. package/dist/src/target-templates/lang-variants-common/typescript/.devops/env.example.yaml +23 -0
  75. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/_index.yaml +19 -0
  76. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/cron-jobs.yaml.hb +56 -0
  77. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/db-migrate-job.yaml.hb +43 -0
  78. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-debug.yaml.hb +42 -0
  79. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-process.yaml.hb +48 -0
  80. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-web.yaml.hb +54 -0
  81. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/ingress.yaml.hb +21 -0
  82. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/service.yaml.hb +15 -0
  83. package/dist/src/target-templates/lang-variants-common/typescript/.envrc +5 -0
  84. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/build-image@v1/action.yaml +81 -0
  85. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-digital-ocean@v1/action.yaml +29 -0
  86. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-gke@v1/action.yaml +43 -0
  87. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-hetzner@v1/action.yaml +31 -0
  88. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/db-migrate@v1/action.yaml +23 -0
  89. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/deploy-image-cloudrun@v1/action.yaml +71 -0
  90. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/deploy-image-k8s@v1/action.yaml +37 -0
  91. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/setup-prereq@v1/action.yaml +24 -0
  92. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/index.ts +30 -0
  93. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/package.json +26 -0
  94. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/tsconfig.json +3 -0
  95. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/README.md +68 -0
  96. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/index.ts +1 -0
  97. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/package.json +30 -0
  98. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/tsconfig.json +3 -0
  99. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.development +1 -0
  100. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.global +4 -0
  101. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.test +1 -0
  102. package/dist/src/target-templates/lang-variants-common/typescript/devops +3 -0
  103. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/index.ts +3 -0
  104. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/package.json +12 -0
  105. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/tsconfig.json +3 -0
  106. package/dist/src/target-templates/lang-variants-common/typescript/tmp/.gitkeep +0 -0
  107. package/dist/src/target-templates/lang-variants-common/typescript/tsconfig.json +27 -0
  108. package/dist/src/target-templates/lang-variants-prisma/README.md +3 -0
  109. package/dist/src/target-templates/lang-variants-prisma/python/.cursor/rules/prisma-python.mdc +55 -0
  110. package/dist/src/target-templates/lang-variants-prisma/python/.cursor/rules/testing-python.mdc +89 -0
  111. package/dist/src/target-templates/lang-variants-prisma/python/db/db/__init__.py +0 -0
  112. package/dist/src/target-templates/lang-variants-prisma/python/db/db/db_client_test.py +46 -0
  113. package/dist/src/target-templates/lang-variants-prisma/python/db/pyproject.toml +14 -0
  114. package/dist/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/prisma-typescript.mdc +54 -0
  115. package/dist/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/testing-typescript.mdc +103 -0
  116. package/dist/src/target-templates/lang-variants-prisma/typescript/db/db-client-test.ts +142 -0
  117. package/dist/src/target-templates/lang-variants-prisma/typescript/db/db-client.ts +19 -0
  118. package/dist/src/target-templates/lang-variants-prisma/typescript/db/env.yaml +4 -0
  119. package/dist/src/target-templates/lang-variants-prisma/typescript/db/package.json +17 -0
  120. package/dist/src/target-templates/lang-variants-prisma/typescript/db/prisma/schema.prisma +24 -0
  121. package/dist/src/target-templates/lang-variants-prisma/typescript/db/prisma-setup-vitest.ts +27 -0
  122. package/dist/src/target-templates/lang-variants-prisma/typescript/db/tsconfig.json +3 -0
  123. package/dist/src/target-templates/lang-variants-prisma/typescript/dml/package.json +7 -0
  124. package/dist/src/target-templates/lang-variants-prisma/typescript/dml/tsconfig.json +3 -0
  125. package/package.json +3 -2
  126. package/src/cli/core/exec.ts +2 -4
  127. package/src/cli/core/run.ts +2 -4
  128. package/src/cli/extensions/prisma.ts +2 -4
  129. package/src/libs/init-generator.ts +2 -4
  130. package/src/pkg-root.ts +14 -0
  131. package/src/plugins.ts +2 -4
  132. package/src/target-templates/lang-variants-common/python/.cursor/rules/monorepo-python.mdc +56 -0
  133. package/src/target-templates/lang-variants-common/typescript/.cursor/rules/monorepo-typescript.mdc +51 -0
  134. package/src/target-templates/lang-variants-prisma/python/.cursor/rules/prisma-python.mdc +55 -0
  135. package/src/target-templates/lang-variants-prisma/python/.cursor/rules/testing-python.mdc +89 -0
  136. package/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/prisma-typescript.mdc +54 -0
  137. package/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/testing-typescript.mdc +103 -0
  138. package/src/target-templates/lang-variants-prisma/typescript/db/db-client-test.ts +5 -3
  139. package/dist/app-support/crypto/aes.d.ts +0 -15
  140. package/dist/app-support/crypto/aes.d.ts.map +0 -1
  141. package/dist/app-support/crypto/aes.js +0 -56
  142. package/dist/app-support/crypto/aes.spec.d.ts +0 -2
  143. package/dist/app-support/crypto/aes.spec.d.ts.map +0 -1
  144. package/dist/app-support/crypto/aes.spec.js +0 -58
  145. package/dist/app-support/crypto/index.d.ts +0 -16
  146. package/dist/app-support/crypto/index.d.ts.map +0 -1
  147. package/dist/app-support/crypto/index.js +0 -31
  148. package/dist/app-support/crypto/internal-token.d.ts +0 -20
  149. package/dist/app-support/crypto/internal-token.d.ts.map +0 -1
  150. package/dist/app-support/crypto/internal-token.js +0 -42
  151. package/dist/app-support/crypto/internal-token.spec.d.ts +0 -2
  152. package/dist/app-support/crypto/internal-token.spec.d.ts.map +0 -1
  153. package/dist/app-support/crypto/internal-token.spec.js +0 -45
  154. package/dist/app-support/crypto/secret.d.ts +0 -3
  155. package/dist/app-support/crypto/secret.d.ts.map +0 -1
  156. package/dist/app-support/crypto/secret.js +0 -12
  157. package/dist/app-support/crypto/secret.spec.d.ts +0 -2
  158. package/dist/app-support/crypto/secret.spec.d.ts.map +0 -1
  159. package/dist/app-support/crypto/secret.spec.js +0 -15
  160. package/dist/app-support/discovery/dev-discovery-loader.d.ts +0 -2
  161. package/dist/app-support/discovery/dev-discovery-loader.d.ts.map +0 -1
  162. package/dist/app-support/discovery/dev-discovery-loader.js +0 -30
  163. package/dist/app-support/discovery/service-endpoint.d.ts +0 -2
  164. package/dist/app-support/discovery/service-endpoint.d.ts.map +0 -1
  165. package/dist/app-support/discovery/service-endpoint.js +0 -10
  166. package/dist/cli/common.d.ts +0 -89
  167. package/dist/cli/common.d.ts.map +0 -1
  168. package/dist/cli/common.js +0 -246
  169. package/dist/cli/common.spec.d.ts +0 -2
  170. package/dist/cli/common.spec.d.ts.map +0 -1
  171. package/dist/cli/common.spec.js +0 -64
  172. package/dist/cli/core/affected.d.ts +0 -9
  173. package/dist/cli/core/affected.d.ts.map +0 -1
  174. package/dist/cli/core/affected.js +0 -101
  175. package/dist/cli/core/cloudrun.d.ts +0 -9
  176. package/dist/cli/core/cloudrun.d.ts.map +0 -1
  177. package/dist/cli/core/cloudrun.js +0 -119
  178. package/dist/cli/core/console.d.ts +0 -10
  179. package/dist/cli/core/console.d.ts.map +0 -1
  180. package/dist/cli/core/console.js +0 -50
  181. package/dist/cli/core/constant.d.ts +0 -9
  182. package/dist/cli/core/constant.d.ts.map +0 -1
  183. package/dist/cli/core/constant.js +0 -20
  184. package/dist/cli/core/env.d.ts +0 -9
  185. package/dist/cli/core/env.d.ts.map +0 -1
  186. package/dist/cli/core/env.js +0 -65
  187. package/dist/cli/core/exec.d.ts +0 -9
  188. package/dist/cli/core/exec.d.ts.map +0 -1
  189. package/dist/cli/core/exec.js +0 -48
  190. package/dist/cli/core/image.d.ts +0 -9
  191. package/dist/cli/core/image.d.ts.map +0 -1
  192. package/dist/cli/core/image.js +0 -153
  193. package/dist/cli/core/index.d.ts +0 -16
  194. package/dist/cli/core/index.d.ts.map +0 -1
  195. package/dist/cli/core/index.js +0 -15
  196. package/dist/cli/core/init.d.ts +0 -9
  197. package/dist/cli/core/init.d.ts.map +0 -1
  198. package/dist/cli/core/init.js +0 -219
  199. package/dist/cli/core/job.d.ts +0 -9
  200. package/dist/cli/core/job.d.ts.map +0 -1
  201. package/dist/cli/core/job.js +0 -65
  202. package/dist/cli/core/namespace.d.ts +0 -9
  203. package/dist/cli/core/namespace.d.ts.map +0 -1
  204. package/dist/cli/core/namespace.js +0 -67
  205. package/dist/cli/core/prep-build.d.ts +0 -10
  206. package/dist/cli/core/prep-build.d.ts.map +0 -1
  207. package/dist/cli/core/prep-build.js +0 -109
  208. package/dist/cli/core/registry.d.ts +0 -9
  209. package/dist/cli/core/registry.d.ts.map +0 -1
  210. package/dist/cli/core/registry.js +0 -66
  211. package/dist/cli/core/run-many.d.ts +0 -10
  212. package/dist/cli/core/run-many.d.ts.map +0 -1
  213. package/dist/cli/core/run-many.js +0 -48
  214. package/dist/cli/core/run.d.ts +0 -9
  215. package/dist/cli/core/run.d.ts.map +0 -1
  216. package/dist/cli/core/run.js +0 -35
  217. package/dist/cli/core/test.d.ts +0 -9
  218. package/dist/cli/core/test.d.ts.map +0 -1
  219. package/dist/cli/core/test.js +0 -26
  220. package/dist/cli/extensions/dml.d.ts +0 -9
  221. package/dist/cli/extensions/dml.d.ts.map +0 -1
  222. package/dist/cli/extensions/dml.js +0 -114
  223. package/dist/cli/extensions/index.d.ts +0 -9
  224. package/dist/cli/extensions/index.d.ts.map +0 -1
  225. package/dist/cli/extensions/index.js +0 -8
  226. package/dist/cli/extensions/internal-curl.d.ts +0 -10
  227. package/dist/cli/extensions/internal-curl.d.ts.map +0 -1
  228. package/dist/cli/extensions/internal-curl.js +0 -41
  229. package/dist/cli/extensions/jwt.d.ts +0 -9
  230. package/dist/cli/extensions/jwt.d.ts.map +0 -1
  231. package/dist/cli/extensions/jwt.js +0 -25
  232. package/dist/cli/extensions/prisma.d.ts +0 -9
  233. package/dist/cli/extensions/prisma.d.ts.map +0 -1
  234. package/dist/cli/extensions/prisma.js +0 -23
  235. package/dist/cli/extensions/redis-bitnami.d.ts +0 -11
  236. package/dist/cli/extensions/redis-bitnami.d.ts.map +0 -1
  237. package/dist/cli/extensions/redis-bitnami.js +0 -74
  238. package/dist/cli/extensions/redis-ha.d.ts +0 -11
  239. package/dist/cli/extensions/redis-ha.d.ts.map +0 -1
  240. package/dist/cli/extensions/redis-ha.js +0 -51
  241. package/dist/cli/extensions/stackgres.d.ts +0 -10
  242. package/dist/cli/extensions/stackgres.d.ts.map +0 -1
  243. package/dist/cli/extensions/stackgres.js +0 -117
  244. package/dist/cli/extensions/template.d.ts +0 -9
  245. package/dist/cli/extensions/template.d.ts.map +0 -1
  246. package/dist/cli/extensions/template.js +0 -121
  247. package/dist/devops.d.ts.map +0 -1
  248. package/dist/index.d.ts.map +0 -1
  249. package/dist/libs/affected-entities.d.ts +0 -15
  250. package/dist/libs/affected-entities.d.ts.map +0 -1
  251. package/dist/libs/affected-entities.js +0 -52
  252. package/dist/libs/cloudrun-helpers.d.ts +0 -16
  253. package/dist/libs/cloudrun-helpers.d.ts.map +0 -1
  254. package/dist/libs/cloudrun-helpers.js +0 -81
  255. package/dist/libs/config.d.ts +0 -7
  256. package/dist/libs/config.d.ts.map +0 -1
  257. package/dist/libs/config.js +0 -102
  258. package/dist/libs/digital-ocean/container-reg.d.ts +0 -6
  259. package/dist/libs/digital-ocean/container-reg.d.ts.map +0 -1
  260. package/dist/libs/digital-ocean/container-reg.js +0 -74
  261. package/dist/libs/discovery/dependencies.d.ts +0 -19
  262. package/dist/libs/discovery/dependencies.d.ts.map +0 -1
  263. package/dist/libs/discovery/dependencies.js +0 -62
  264. package/dist/libs/discovery/dependencies.spec.d.ts +0 -2
  265. package/dist/libs/discovery/dependencies.spec.d.ts.map +0 -1
  266. package/dist/libs/discovery/dependencies.spec.js +0 -21
  267. package/dist/libs/discovery/images.d.ts +0 -5
  268. package/dist/libs/discovery/images.d.ts.map +0 -1
  269. package/dist/libs/discovery/images.js +0 -45
  270. package/dist/libs/discovery/index.d.ts +0 -6
  271. package/dist/libs/discovery/index.d.ts.map +0 -1
  272. package/dist/libs/discovery/index.js +0 -67
  273. package/dist/libs/discovery/process-common.d.ts +0 -25
  274. package/dist/libs/discovery/process-common.d.ts.map +0 -1
  275. package/dist/libs/discovery/process-common.js +0 -40
  276. package/dist/libs/discovery/process-package-json.d.ts +0 -3
  277. package/dist/libs/discovery/process-package-json.d.ts.map +0 -1
  278. package/dist/libs/discovery/process-package-json.js +0 -40
  279. package/dist/libs/discovery/process-pyproject-toml.d.ts +0 -3
  280. package/dist/libs/discovery/process-pyproject-toml.d.ts.map +0 -1
  281. package/dist/libs/discovery/process-pyproject-toml.js +0 -49
  282. package/dist/libs/git-helpers.d.ts +0 -8
  283. package/dist/libs/git-helpers.d.ts.map +0 -1
  284. package/dist/libs/git-helpers.js +0 -20
  285. package/dist/libs/hetzner/reg-secret.d.ts +0 -3
  286. package/dist/libs/hetzner/reg-secret.d.ts.map +0 -1
  287. package/dist/libs/hetzner/reg-secret.js +0 -39
  288. package/dist/libs/init-generator.d.ts +0 -41
  289. package/dist/libs/init-generator.d.ts.map +0 -1
  290. package/dist/libs/init-generator.js +0 -123
  291. package/dist/libs/k8s-constants.d.ts +0 -13
  292. package/dist/libs/k8s-constants.d.ts.map +0 -1
  293. package/dist/libs/k8s-constants.js +0 -91
  294. package/dist/libs/k8s-db.d.ts +0 -18
  295. package/dist/libs/k8s-db.d.ts.map +0 -1
  296. package/dist/libs/k8s-db.js +0 -73
  297. package/dist/libs/k8s-generate.d.ts +0 -17
  298. package/dist/libs/k8s-generate.d.ts.map +0 -1
  299. package/dist/libs/k8s-generate.js +0 -193
  300. package/dist/libs/k8s-helpers.d.ts +0 -11
  301. package/dist/libs/k8s-helpers.d.ts.map +0 -1
  302. package/dist/libs/k8s-helpers.js +0 -42
  303. package/dist/libs/k8s-image-config.d.ts +0 -8
  304. package/dist/libs/k8s-image-config.d.ts.map +0 -1
  305. package/dist/libs/k8s-image-config.js +0 -113
  306. package/dist/libs/k8s-job-waiter.d.ts +0 -8
  307. package/dist/libs/k8s-job-waiter.d.ts.map +0 -1
  308. package/dist/libs/k8s-job-waiter.js +0 -84
  309. package/dist/libs/k8s-namespace.d.ts +0 -7
  310. package/dist/libs/k8s-namespace.d.ts.map +0 -1
  311. package/dist/libs/k8s-namespace.js +0 -27
  312. package/dist/libs/k8s-redis-bitnami.d.ts +0 -6
  313. package/dist/libs/k8s-redis-bitnami.d.ts.map +0 -1
  314. package/dist/libs/k8s-redis-bitnami.js +0 -31
  315. package/dist/libs/k8s-redis-ha.d.ts +0 -3
  316. package/dist/libs/k8s-redis-ha.d.ts.map +0 -1
  317. package/dist/libs/k8s-redis-ha.js +0 -15
  318. package/dist/libs/k8s-secrets-manager.d.ts +0 -6
  319. package/dist/libs/k8s-secrets-manager.d.ts.map +0 -1
  320. package/dist/libs/k8s-secrets-manager.js +0 -64
  321. package/dist/libs/validate-env.d.ts +0 -56
  322. package/dist/libs/validate-env.d.ts.map +0 -1
  323. package/dist/libs/validate-env.js +0 -214
  324. package/dist/libs/validate-env.spec.d.ts +0 -2
  325. package/dist/libs/validate-env.spec.d.ts.map +0 -1
  326. package/dist/libs/validate-env.spec.js +0 -168
  327. package/dist/plugins.d.ts.map +0 -1
  328. package/dist/types/index.d.ts +0 -939
  329. package/dist/types/index.d.ts.map +0 -1
  330. package/dist/types/index.js +0 -82
@@ -0,0 +1,139 @@
1
+ import {
2
+ getConst
3
+ } from "./chunk-RZ46YYZZ.js";
4
+
5
+ // src/app-support/crypto/aes.ts
6
+ import crypto from "crypto";
7
+ var ALGORITHM = "aes-256-gcm";
8
+ var IV_LENGTH = 12;
9
+ var AUTH_TAG_LENGTH = 16;
10
+ function getKey() {
11
+ const keyStr = process.env.MONOREPO_BASE_SECRET;
12
+ if (!keyStr) throw new Error("MONOREPO_BASE_SECRET not set");
13
+ return Buffer.from(keyStr, "hex");
14
+ }
15
+ function encryptAes256Gcm(plaintext, key) {
16
+ key ??= getKey();
17
+ const iv = crypto.randomBytes(IV_LENGTH);
18
+ const cipher = crypto.createCipheriv(ALGORITHM, key, iv, {
19
+ authTagLength: AUTH_TAG_LENGTH
20
+ });
21
+ const encrypted = Buffer.concat([
22
+ cipher.update(plaintext, "utf8"),
23
+ cipher.final()
24
+ ]);
25
+ const authTag = cipher.getAuthTag();
26
+ return [
27
+ iv.toString("base64"),
28
+ authTag.toString("base64"),
29
+ encrypted.toString("base64")
30
+ ].join(":");
31
+ }
32
+ function decryptAes256Gcm(ciphertext, key) {
33
+ key ??= getKey();
34
+ const [ivB64, authTagB64, encryptedB64] = ciphertext.split(":");
35
+ const iv = Buffer.from(ivB64, "base64");
36
+ const authTag = Buffer.from(authTagB64, "base64");
37
+ const encrypted = Buffer.from(encryptedB64, "base64");
38
+ const decipher = crypto.createDecipheriv(ALGORITHM, key, iv, {
39
+ authTagLength: AUTH_TAG_LENGTH
40
+ });
41
+ decipher.setAuthTag(authTag);
42
+ return Buffer.concat([
43
+ decipher.update(encrypted),
44
+ decipher.final()
45
+ ]).toString("utf8");
46
+ }
47
+
48
+ // src/app-support/crypto/secret.ts
49
+ import { createHmac } from "crypto";
50
+ function sign(data) {
51
+ const keyStr = process.env.MONOREPO_BASE_SECRET;
52
+ if (!keyStr) throw new Error("Secret not set");
53
+ const key = Buffer.from(keyStr, "hex");
54
+ return createHmac("sha256", key).update(data).digest("hex");
55
+ }
56
+ function verify(data, signature) {
57
+ const generatedSignature = sign(data);
58
+ return generatedSignature === signature;
59
+ }
60
+
61
+ // src/app-support/crypto/internal-token.ts
62
+ var InternalTokenError = class extends Error {
63
+ constructor(message) {
64
+ super(message);
65
+ this.name = "InternalTokenError";
66
+ Object.setPrototypeOf(this, new.target.prototype);
67
+ }
68
+ };
69
+ function defaultClaims({
70
+ expiresInSeconds,
71
+ sub,
72
+ aud
73
+ }) {
74
+ return {
75
+ iss: `${getConst("project-name")}-internal`,
76
+ iat: Math.floor(Date.now() / 1e3),
77
+ exp: Math.floor(Date.now() / 1e3) + expiresInSeconds,
78
+ sub,
79
+ aud
80
+ };
81
+ }
82
+ function generateInternalAuthToken({
83
+ customClaims = {},
84
+ expiresInSeconds = 60,
85
+ sub,
86
+ aud
87
+ } = {}) {
88
+ const data = {
89
+ ...customClaims,
90
+ // This should be after the customClaims so that custom claims cannot override the default claims
91
+ ...defaultClaims({ expiresInSeconds, sub, aud })
92
+ };
93
+ const str = JSON.stringify(data);
94
+ const encodedData = Buffer.from(str).toString("base64");
95
+ const signature = sign(encodedData);
96
+ return `${encodedData}.${signature}`;
97
+ }
98
+ function parseInternalAuthTokenOrThrow(token) {
99
+ const [encodedData, signature] = token.split(".");
100
+ const isSignatureOk = verify(encodedData, signature);
101
+ if (!isSignatureOk) {
102
+ throw new InternalTokenError("Invalid token");
103
+ }
104
+ const dataStr = Buffer.from(encodedData, "base64").toString("utf-8");
105
+ const data = JSON.parse(dataStr);
106
+ if (data.exp < Math.floor(Date.now() / 1e3)) {
107
+ throw new InternalTokenError("Token expired");
108
+ }
109
+ return data;
110
+ }
111
+
112
+ // src/app-support/crypto/index.ts
113
+ var InternalToken = class {
114
+ constructor(subject) {
115
+ this.subject = subject;
116
+ }
117
+ generate() {
118
+ return generateInternalAuthToken({ sub: this.subject });
119
+ }
120
+ verifyOrThrow(token) {
121
+ const parsedToken = parseInternalAuthTokenOrThrow(token);
122
+ if (parsedToken.sub !== this.subject) {
123
+ throw new Error("Invalid token");
124
+ }
125
+ }
126
+ verifyFromHeaderOrThrow(authorizationHeader) {
127
+ if (!authorizationHeader) {
128
+ throw new Error("Authorization header not found");
129
+ }
130
+ const token = authorizationHeader.replace("Bearer ", "");
131
+ this.verifyOrThrow(token);
132
+ }
133
+ };
134
+
135
+ export {
136
+ encryptAes256Gcm,
137
+ decryptAes256Gcm,
138
+ InternalToken
139
+ };
@@ -0,0 +1,420 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
5
+ };
6
+
7
+ // src/types/index.ts
8
+ import { z } from "zod";
9
+ var SUPPORTED_LANGUAGES = ["python", "node"];
10
+ var constFileSchema = z.object({
11
+ "project-name": z.string(),
12
+ "infra": z.enum(["hetzner", "digitalocean", "gcloud"]),
13
+ "image-versions-to-keep": z.number().optional(),
14
+ "registry-base-url": z.string(),
15
+ "registry-image-path-prefix": z.string().optional(),
16
+ "cloudrun-artifact-registry-repo-path": z.string().optional(),
17
+ "extra-remote-environments": z.array(z.string()),
18
+ "extra-local-environments": z.array(z.string()),
19
+ "extensions": z.array(z.string()).optional()
20
+ });
21
+ var singleTemplateSchema = z.object({
22
+ "copy-common": z.boolean().optional(),
23
+ "extra-content": z.array(z.string()).optional()
24
+ });
25
+ var singleImageSchema = z.object({
26
+ "image-template": z.string(),
27
+ "language": z.enum(SUPPORTED_LANGUAGES),
28
+ "domains": z.record(z.string()).optional(),
29
+ "debug-template": z.string().optional(),
30
+ "cloudrun": z.boolean().optional(),
31
+ "can-db-migrate": z.boolean().optional(),
32
+ applications: z.array(z.string())
33
+ });
34
+ var imageFileSchema = z.object({
35
+ templates: z.record(singleTemplateSchema),
36
+ images: z.record(singleImageSchema)
37
+ });
38
+ var deploymentSchema = z.object({
39
+ /** The name of the composite template to build in order to support this deployment */
40
+ template: z.string(),
41
+ /** The name used by kubernetes objects. If ommitted, the name field from the enclosing context (e.g. package.json) is used. */
42
+ app_name: z.string().optional(),
43
+ /** This will be the name of the internal service used for intra-cluster communication */
44
+ service_name: z.string().optional(),
45
+ /** For services, the port to expose */
46
+ port: z.number().optional(),
47
+ /** This will be the subdomain of the exposed ingress. If not provided, taken from service_name */
48
+ subdomain: z.string().optional(),
49
+ /** For cron jobs */
50
+ cronJobs: z.array(
51
+ z.object({
52
+ /** The name of the cron job. Used to identify in k8s. Should be unique among all cron jobs. */
53
+ name: z.string().optional(),
54
+ /** The cron schedule */
55
+ cron: z.string().optional(),
56
+ /** The curl command to invoke. Must be an array. */
57
+ curl: z.array(z.string()).optional()
58
+ })
59
+ ).optional(),
60
+ prefectFlows: z.array(
61
+ z.object({
62
+ /** The name of the container inside the prefect pod */
63
+ flow_name: z.string(),
64
+ /** The path to the file that runs the flow, relative to the project folder. E.g. src/data_pipeline/main.py */
65
+ script_path: z.string()
66
+ })
67
+ ).optional()
68
+ /** The catchall below allows any other fields that might be in the package.json file */
69
+ }).catchall(z.any());
70
+ var packageFileNodeSchema = z.object({
71
+ /** This is considered the project name */
72
+ name: z.string(),
73
+ /** Scripts exposed by this project. */
74
+ scripts: z.record(z.string()).optional(),
75
+ /** The dependencies of the project */
76
+ dependencies: z.record(z.string()).optional(),
77
+ /** When a deployment data is available, a k8s deployment is created */
78
+ deployment: deploymentSchema.optional()
79
+ });
80
+ var packageFilePythonSchema = z.object({
81
+ project: z.object({
82
+ name: z.string(),
83
+ dependencies: z.string().array().optional()
84
+ }),
85
+ tool: z.object({
86
+ devops: z.object({
87
+ deployment: deploymentSchema.optional(),
88
+ scripts: z.record(z.string()).optional()
89
+ }).optional()
90
+ }).optional()
91
+ });
92
+
93
+ // src/libs/config.ts
94
+ import { readFileSync } from "fs";
95
+ import yaml from "yaml";
96
+ import path5 from "path";
97
+
98
+ // src/libs/discovery/index.ts
99
+ import chalk3 from "chalk";
100
+ import fs4 from "fs";
101
+ import path4 from "path";
102
+
103
+ // src/libs/discovery/process-package-json.ts
104
+ import chalk from "chalk";
105
+ import fs2 from "fs";
106
+ import { globSync } from "glob";
107
+ import path2 from "path";
108
+
109
+ // src/libs/discovery/process-common.ts
110
+ import fs from "fs";
111
+ import path from "path";
112
+ var IGNORED_PATHS = ["node_modules/", "venv/"];
113
+ var PackageDataProcessor = class {
114
+ workspaceNames = /* @__PURE__ */ new Set();
115
+ loadedFiles = {};
116
+ language;
117
+ nameExtractor;
118
+ constructor(config) {
119
+ this.language = config.language;
120
+ this.nameExtractor = config.nameExtractor;
121
+ this._runFirstPass(config.pathList, config.zodSchema, config.fileParser);
122
+ }
123
+ _runFirstPass(pathList, zodSchema, fileParser) {
124
+ pathList.forEach((packageFilePath) => {
125
+ if (IGNORED_PATHS.find((path6) => packageFilePath.includes(path6))) return;
126
+ const unsafeData = fileParser(fs.readFileSync(packageFilePath, "utf8"));
127
+ const parsedRes = zodSchema.safeParse(unsafeData);
128
+ if (parsedRes.error) {
129
+ console.error(`Error parsing ${packageFilePath}: ${parsedRes.error}`);
130
+ process.exit(1);
131
+ }
132
+ const rootDir = path.relative(process.cwd(), path.dirname(packageFilePath));
133
+ const name = this.nameExtractor(parsedRes.data);
134
+ this.workspaceNames.add(name);
135
+ this.loadedFiles[rootDir] = { name, data: parsedRes.data };
136
+ });
137
+ }
138
+ // Should be used by the iterator sent to convert in order to filter out dependencies that are not workspaces
139
+ filterDependencies(dependencyNames) {
140
+ return dependencyNames.filter((name) => this.workspaceNames.has(name));
141
+ }
142
+ convert(iterator) {
143
+ return Object.entries(this.loadedFiles).map(([rootPath4, { name, data }]) => {
144
+ const res = iterator(data);
145
+ return { rootPath: rootPath4, language: this.language, name, ...res };
146
+ });
147
+ }
148
+ };
149
+
150
+ // src/libs/discovery/process-package-json.ts
151
+ var rootPath = process.env.MONOREPO_ROOT || process.cwd();
152
+ var rootPkgJsonPath = path2.join(rootPath, "package.json");
153
+ var rootPkgJson = JSON.parse(fs2.readFileSync(rootPkgJsonPath, "utf8"));
154
+ var _workspaces = {};
155
+ var _workspacesLoaded = false;
156
+ function nodeWorkspaces() {
157
+ if (!_workspacesLoaded) {
158
+ const allPackageJsons = (rootPkgJson.workspaces ?? []).flatMap(
159
+ (workspaceGlob) => globSync(path2.join(rootPath, workspaceGlob, "package.json"))
160
+ );
161
+ const processor = new PackageDataProcessor({
162
+ language: "node",
163
+ pathList: allPackageJsons,
164
+ zodSchema: packageFileNodeSchema,
165
+ fileParser: JSON.parse,
166
+ nameExtractor: (data) => data.name
167
+ });
168
+ processor.convert((data) => {
169
+ const { dependencies, ...rest } = data;
170
+ const dependencyNames = Object.keys(dependencies ?? []);
171
+ return {
172
+ ...rest,
173
+ dependencyNames: processor.filterDependencies(dependencyNames)
174
+ };
175
+ }).forEach((pkgData) => {
176
+ _workspaces[pkgData.name] = pkgData;
177
+ });
178
+ console.warn(
179
+ chalk.yellow(
180
+ // prettier-ignore
181
+ `Node workspace discovery initialized. Workspaces found: ${Object.keys(_workspaces).join(", ")}`
182
+ )
183
+ );
184
+ _workspacesLoaded = true;
185
+ }
186
+ return _workspaces;
187
+ }
188
+
189
+ // src/libs/discovery/process-pyproject-toml.ts
190
+ import chalk2 from "chalk";
191
+ import fs3 from "fs";
192
+ import { globSync as globSync2 } from "glob";
193
+ import TOML from "@iarna/toml";
194
+ import path3 from "path";
195
+ var rootPath2 = process.env.MONOREPO_ROOT || process.cwd();
196
+ var rootPyprojectPath = path3.join(rootPath2, "pyproject.toml");
197
+ var _workspaces2 = {};
198
+ var _workspacesLoaded2 = false;
199
+ function pythonWorkspaces() {
200
+ if (_workspacesLoaded2) return _workspaces2;
201
+ if (!fs3.existsSync(rootPyprojectPath)) {
202
+ _workspacesLoaded2 = true;
203
+ return _workspaces2;
204
+ }
205
+ const rootPyproject = TOML.parse(
206
+ fs3.readFileSync(rootPyprojectPath, "utf8")
207
+ );
208
+ const workspaceMembers = rootPyproject?.tool?.uv?.workspace?.members ?? [];
209
+ const allPyprojectTomls = workspaceMembers.flatMap(
210
+ (member) => globSync2(path3.join(rootPath2, member, "pyproject.toml"))
211
+ );
212
+ const processor = new PackageDataProcessor({
213
+ language: "python",
214
+ pathList: allPyprojectTomls,
215
+ zodSchema: packageFilePythonSchema,
216
+ fileParser: TOML.parse,
217
+ nameExtractor: (data) => data.project.name
218
+ });
219
+ processor.convert((data) => {
220
+ const deployment = data.tool?.devops?.deployment;
221
+ const scripts = data.tool?.devops?.scripts;
222
+ const dependencyNames = data.project.dependencies ?? [];
223
+ return {
224
+ scripts,
225
+ deployment,
226
+ dependencyNames: processor.filterDependencies(dependencyNames)
227
+ };
228
+ }).forEach((pkgData) => {
229
+ _workspaces2[pkgData.name] = pkgData;
230
+ });
231
+ console.warn(
232
+ chalk2.yellow(
233
+ // prettier-ignore
234
+ `Python workspace discovery initialized. Workspaces found: ${Object.keys(_workspaces2).join(", ")}`
235
+ )
236
+ );
237
+ _workspacesLoaded2 = true;
238
+ return _workspaces2;
239
+ }
240
+
241
+ // src/libs/discovery/index.ts
242
+ var rootPath3 = process.env.MONOREPO_ROOT || process.cwd();
243
+ var _workspaces3 = {};
244
+ var _workspacesLoaded3 = false;
245
+ function workspaces() {
246
+ if (_workspacesLoaded3) return _workspaces3;
247
+ const nodeWorkspacesData = nodeWorkspaces();
248
+ const pythonWorkspacesData = pythonWorkspaces();
249
+ Object.values(nodeWorkspacesData).forEach((data) => {
250
+ _workspaces3[data.name] = {
251
+ rootPath: data.rootPath,
252
+ packageDataEntries: [data]
253
+ };
254
+ });
255
+ Object.values(pythonWorkspacesData).forEach((data) => {
256
+ const existing = _workspaces3[data.name];
257
+ if (existing) {
258
+ if (existing.rootPath !== data.rootPath) {
259
+ console.error(chalk3.red(`
260
+ Workspace ${data.name} has conflicting root paths:
261
+ ${existing.rootPath}
262
+ ${data.rootPath}
263
+ `));
264
+ process.exit(1);
265
+ }
266
+ } else {
267
+ _workspaces3[data.name] = {
268
+ rootPath: data.rootPath,
269
+ packageDataEntries: []
270
+ };
271
+ }
272
+ _workspaces3[data.name].packageDataEntries.push(data);
273
+ });
274
+ _workspacesLoaded3 = true;
275
+ return _workspaces3;
276
+ }
277
+ function workspaceDirectoryForLanguage(language) {
278
+ switch (language) {
279
+ case "node":
280
+ return nodeWorkspaces();
281
+ case "python":
282
+ return pythonWorkspaces();
283
+ default:
284
+ throw new Error(`Unsupported language: ${language}`);
285
+ }
286
+ }
287
+ function getWorkspace(workspaceName) {
288
+ const workspace = workspaces()[workspaceName];
289
+ if (!workspace) {
290
+ console.error(chalk3.red(`
291
+ Workspace ${workspaceName} not found
292
+ `));
293
+ process.exit(13);
294
+ }
295
+ return workspace;
296
+ }
297
+ function globEnvYamlFiles() {
298
+ const allWorkspaces = workspaces();
299
+ const workspacePaths = [
300
+ ...new Set(Object.values(allWorkspaces).map((w) => w.rootPath))
301
+ ];
302
+ return workspacePaths.map((wsPath) => path4.join(rootPath3, wsPath, "env.yaml")).filter((p) => fs4.existsSync(p));
303
+ }
304
+
305
+ // src/libs/config.ts
306
+ var constantsFilePath = path5.join(process.cwd(), ".devops/config/constants.yaml");
307
+ var imagesFilePath = path5.join(process.cwd(), ".devops/config/images.yaml");
308
+ var { getConst } = processConstFile();
309
+ var { getImageData, getImageNames, getTemplateData } = processImagesFile();
310
+ function getImageType(image) {
311
+ const imageData = getImageData(image);
312
+ return imageData["cloudrun"] ? "cloudrun" : "k8s";
313
+ }
314
+ function processConstFile() {
315
+ let constants;
316
+ function constFileData() {
317
+ if (constants) return constants;
318
+ try {
319
+ const constantsYaml = readFileSync(constantsFilePath, "utf8");
320
+ constants = yaml.parse(constantsYaml);
321
+ } catch (e) {
322
+ console.warn("Warning: cannot read .devops/config/constants.yaml");
323
+ return { valid: false };
324
+ }
325
+ const parseRes = constFileSchema.safeParse(constants);
326
+ if (parseRes.error) {
327
+ console.error(`Error parsing config/constants.yaml: ${parseRes.error.toString()}`);
328
+ process.exit(1);
329
+ }
330
+ constants = { valid: true, data: parseRes.data };
331
+ return constants;
332
+ }
333
+ function getConst2(key, opts = {}) {
334
+ const { valid, data } = constFileData();
335
+ if (!valid && !opts.ignoreIfInvalid) {
336
+ console.error(".devops/config/constants.yaml is invalid");
337
+ process.exit(1);
338
+ }
339
+ const value = data?.[key];
340
+ if (!value && !opts.ignoreIfInvalid) {
341
+ console.error(`Missing constant in .devops/config/constants.yaml: ${key}`);
342
+ process.exit(1);
343
+ }
344
+ return value;
345
+ }
346
+ return { getConst: getConst2 };
347
+ }
348
+ function processImagesFile() {
349
+ let images;
350
+ function imagesFileData() {
351
+ if (images) return images;
352
+ try {
353
+ const imagesYaml = readFileSync(imagesFilePath, "utf8");
354
+ images = yaml.parse(imagesYaml);
355
+ } catch (e) {
356
+ console.error("Error reading .devops/config/images.yaml");
357
+ process.exit(1);
358
+ }
359
+ const parseRes = imageFileSchema.safeParse(images);
360
+ if (parseRes.error) {
361
+ console.error(
362
+ `Error parsing config/images.yaml: ${parseRes.error.toString()}`
363
+ );
364
+ process.exit(1);
365
+ }
366
+ return images;
367
+ }
368
+ function getImageData2(imageName) {
369
+ const imageData = imagesFileData()["images"][imageName];
370
+ if (!imageData) {
371
+ console.error(
372
+ `Image ${imageName} not found in .devops/config/images.yaml`
373
+ );
374
+ process.exit(1);
375
+ }
376
+ imageData.applications.forEach((project) => {
377
+ const data = getWorkspace(project);
378
+ if (!data) {
379
+ console.error(
380
+ `Project ${project} not found for image ${imageName} in .devops/config/images.yaml`
381
+ );
382
+ process.exit(1);
383
+ }
384
+ });
385
+ return imageData;
386
+ }
387
+ function getTemplateData2(templateName) {
388
+ const templateData = imagesFileData()["templates"][templateName];
389
+ if (!templateData) {
390
+ console.error(
391
+ `Template ${templateName} not found in .devops/config/images.yaml`
392
+ );
393
+ process.exit(1);
394
+ }
395
+ return templateData;
396
+ }
397
+ function getImageNames2() {
398
+ return Object.keys(imagesFileData()["images"]);
399
+ }
400
+ return { getImageData: getImageData2, getImageNames: getImageNames2, getTemplateData: getTemplateData2 };
401
+ }
402
+
403
+ export {
404
+ __export,
405
+ SUPPORTED_LANGUAGES,
406
+ constFileSchema,
407
+ imageFileSchema,
408
+ packageFileNodeSchema,
409
+ packageFilePythonSchema,
410
+ IGNORED_PATHS,
411
+ workspaces,
412
+ workspaceDirectoryForLanguage,
413
+ getWorkspace,
414
+ globEnvYamlFiles,
415
+ getConst,
416
+ getImageData,
417
+ getImageNames,
418
+ getTemplateData,
419
+ getImageType
420
+ };