@monolayer/sdk 1.2.0-canary.4

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 (320) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/dist/bin/cli.js +21609 -0
  4. package/dist/cjs/configuration.d.ts +65 -0
  5. package/dist/cjs/configuration.js +45 -0
  6. package/dist/cjs/index.d.ts +4 -0
  7. package/dist/cjs/index.js +20 -0
  8. package/dist/cjs/introspection.d.ts +2 -0
  9. package/dist/cjs/introspection.js +11 -0
  10. package/dist/cjs/make/broadcast.d.ts +10 -0
  11. package/dist/cjs/make/broadcast.js +37 -0
  12. package/dist/cjs/make/config.d.ts +2 -0
  13. package/dist/cjs/make/config.js +44 -0
  14. package/dist/cjs/make/cron.d.ts +9 -0
  15. package/dist/cjs/make/cron.js +30 -0
  16. package/dist/cjs/make/make.d.ts +6 -0
  17. package/dist/cjs/make/make.js +134 -0
  18. package/dist/cjs/make/manifest.d.ts +202 -0
  19. package/dist/cjs/make/manifest.js +165 -0
  20. package/dist/cjs/make/required-filtes.d.ts +1 -0
  21. package/dist/cjs/make/required-filtes.js +17 -0
  22. package/dist/cjs/make/task.d.ts +9 -0
  23. package/dist/cjs/make/task.js +30 -0
  24. package/dist/cjs/package.json +3 -0
  25. package/dist/cjs/packages/docker/df.d.ts +543 -0
  26. package/dist/cjs/packages/docker/df.js +395 -0
  27. package/dist/cjs/packages/docker/validator.d.ts +7 -0
  28. package/dist/cjs/packages/docker/validator.js +18 -0
  29. package/dist/cjs/packages/utils/create-file.d.ts +1 -0
  30. package/dist/cjs/packages/utils/create-file.js +18 -0
  31. package/dist/cjs/packages/utils/date-string.d.ts +1 -0
  32. package/dist/cjs/packages/utils/date-string.js +12 -0
  33. package/dist/cjs/packages/utils/exception.d.ts +1 -0
  34. package/dist/cjs/packages/utils/exception.js +8 -0
  35. package/dist/cjs/packages/utils/hash-value.d.ts +16 -0
  36. package/dist/cjs/packages/utils/hash-value.js +25 -0
  37. package/dist/cjs/packages/utils/import-default.d.ts +1 -0
  38. package/dist/cjs/packages/utils/import-default.js +14 -0
  39. package/dist/cjs/packages/utils/import-file.d.ts +8 -0
  40. package/dist/cjs/packages/utils/import-file.js +41 -0
  41. package/dist/cjs/packages/utils/log-with-spinner.d.ts +1 -0
  42. package/dist/cjs/packages/utils/log-with-spinner.js +24 -0
  43. package/dist/cjs/packages/utils/path.d.ts +2 -0
  44. package/dist/cjs/packages/utils/path.js +21 -0
  45. package/dist/cjs/packages/utils/playground.d.ts +1 -0
  46. package/dist/cjs/packages/utils/playground.js +35 -0
  47. package/dist/cjs/scaffolding/add-env-var.d.ts +6 -0
  48. package/dist/cjs/scaffolding/add-env-var.js +65 -0
  49. package/dist/cjs/scaffolding/add-import.d.ts +16 -0
  50. package/dist/cjs/scaffolding/add-import.js +43 -0
  51. package/dist/cjs/scaffolding/add-script.d.ts +1 -0
  52. package/dist/cjs/scaffolding/add-script.js +35 -0
  53. package/dist/cjs/scaffolding/broadcast-workload.d.ts +1 -0
  54. package/dist/cjs/scaffolding/broadcast-workload.js +36 -0
  55. package/dist/cjs/scaffolding/bucket-workload.d.ts +6 -0
  56. package/dist/cjs/scaffolding/bucket-workload.js +23 -0
  57. package/dist/cjs/scaffolding/cron-workload.d.ts +6 -0
  58. package/dist/cjs/scaffolding/cron-workload.js +28 -0
  59. package/dist/cjs/scaffolding/drizzle.d.ts +4 -0
  60. package/dist/cjs/scaffolding/drizzle.js +22 -0
  61. package/dist/cjs/scaffolding/lifecycle.d.ts +9 -0
  62. package/dist/cjs/scaffolding/lifecycle.js +61 -0
  63. package/dist/cjs/scaffolding/postgres-database-workload.d.ts +15 -0
  64. package/dist/cjs/scaffolding/postgres-database-workload.js +39 -0
  65. package/dist/cjs/scaffolding/prisma.d.ts +4 -0
  66. package/dist/cjs/scaffolding/prisma.js +40 -0
  67. package/dist/cjs/scaffolding/replace-string.d.ts +10 -0
  68. package/dist/cjs/scaffolding/replace-string.js +37 -0
  69. package/dist/cjs/scaffolding/task-workload.d.ts +6 -0
  70. package/dist/cjs/scaffolding/task-workload.js +30 -0
  71. package/dist/cjs/scaffolding/workload.d.ts +1 -0
  72. package/dist/cjs/scaffolding/workload.js +18 -0
  73. package/dist/cjs/scan/project.d.ts +23 -0
  74. package/dist/cjs/scan/project.js +79 -0
  75. package/dist/cjs/scan/workload-imports.d.ts +21 -0
  76. package/dist/cjs/scan/workload-imports.js +188 -0
  77. package/dist/cjs/test-helpers/postgres.d.ts +13 -0
  78. package/dist/cjs/test-helpers/postgres.js +52 -0
  79. package/dist/cjs/test-helpers/redis.d.ts +13 -0
  80. package/dist/cjs/test-helpers/redis.js +46 -0
  81. package/dist/cjs/test-helpers/task.d.ts +14 -0
  82. package/dist/cjs/test-helpers/task.js +18 -0
  83. package/dist/cjs/test-helpers.d.ts +3 -0
  84. package/dist/cjs/test-helpers.js +10 -0
  85. package/dist/cjs/workloads/app-lifecycle/after-rollout.d.ts +22 -0
  86. package/dist/cjs/workloads/app-lifecycle/after-rollout.js +28 -0
  87. package/dist/cjs/workloads/app-lifecycle/before-rollout.d.ts +22 -0
  88. package/dist/cjs/workloads/app-lifecycle/before-rollout.js +28 -0
  89. package/dist/cjs/workloads/app-lifecycle/bootstrap.d.ts +22 -0
  90. package/dist/cjs/workloads/app-lifecycle/bootstrap.js +28 -0
  91. package/dist/cjs/workloads/app-lifecycle/lifecycle-workload.d.ts +11 -0
  92. package/dist/cjs/workloads/app-lifecycle/lifecycle-workload.js +11 -0
  93. package/dist/cjs/workloads/assertions.d.ts +13 -0
  94. package/dist/cjs/workloads/assertions.js +14 -0
  95. package/dist/cjs/workloads/stateful/bucket.d.ts +82 -0
  96. package/dist/cjs/workloads/stateful/bucket.js +95 -0
  97. package/dist/cjs/workloads/stateful/database.d.ts +25 -0
  98. package/dist/cjs/workloads/stateful/database.js +42 -0
  99. package/dist/cjs/workloads/stateful/postgres-database.d.ts +29 -0
  100. package/dist/cjs/workloads/stateful/postgres-database.js +39 -0
  101. package/dist/cjs/workloads/stateful/redis.d.ts +30 -0
  102. package/dist/cjs/workloads/stateful/redis.js +40 -0
  103. package/dist/cjs/workloads/stateful/stateful-workload.d.ts +25 -0
  104. package/dist/cjs/workloads/stateful/stateful-workload.js +41 -0
  105. package/dist/cjs/workloads/stateless/broadcast/channel-data.d.ts +3 -0
  106. package/dist/cjs/workloads/stateless/broadcast/channel-data.js +6 -0
  107. package/dist/cjs/workloads/stateless/broadcast/client/app-sync-client.d.ts +78 -0
  108. package/dist/cjs/workloads/stateless/broadcast/client/app-sync-client.js +128 -0
  109. package/dist/cjs/workloads/stateless/broadcast/client/app-sync-publisher.d.ts +34 -0
  110. package/dist/cjs/workloads/stateless/broadcast/client/app-sync-publisher.js +78 -0
  111. package/dist/cjs/workloads/stateless/broadcast/client/authenticator.d.ts +28 -0
  112. package/dist/cjs/workloads/stateless/broadcast/client/authenticator.js +43 -0
  113. package/dist/cjs/workloads/stateless/broadcast/client/broadcast-provider.d.ts +17 -0
  114. package/dist/cjs/workloads/stateless/broadcast/client/broadcast-provider.js +34 -0
  115. package/dist/cjs/workloads/stateless/broadcast/client/client.d.ts +8 -0
  116. package/dist/cjs/workloads/stateless/broadcast/client/client.js +28 -0
  117. package/dist/cjs/workloads/stateless/broadcast/client/connectionManager.d.ts +62 -0
  118. package/dist/cjs/workloads/stateless/broadcast/client/connectionManager.js +166 -0
  119. package/dist/cjs/workloads/stateless/broadcast/client/eventEmitter.d.ts +32 -0
  120. package/dist/cjs/workloads/stateless/broadcast/client/eventEmitter.js +53 -0
  121. package/dist/cjs/workloads/stateless/broadcast/client/messageBuilder.d.ts +24 -0
  122. package/dist/cjs/workloads/stateless/broadcast/client/messageBuilder.js +43 -0
  123. package/dist/cjs/workloads/stateless/broadcast/client/parser.d.ts +12 -0
  124. package/dist/cjs/workloads/stateless/broadcast/client/parser.js +22 -0
  125. package/dist/cjs/workloads/stateless/broadcast/client/provider.d.ts +4 -0
  126. package/dist/cjs/workloads/stateless/broadcast/client/provider.js +11 -0
  127. package/dist/cjs/workloads/stateless/broadcast/client/subscriptionManager.d.ts +34 -0
  128. package/dist/cjs/workloads/stateless/broadcast/client/subscriptionManager.js +91 -0
  129. package/dist/cjs/workloads/stateless/broadcast/client/types.d.ts +72 -0
  130. package/dist/cjs/workloads/stateless/broadcast/client/types.js +6 -0
  131. package/dist/cjs/workloads/stateless/broadcast/matcher.d.ts +13 -0
  132. package/dist/cjs/workloads/stateless/broadcast/matcher.js +46 -0
  133. package/dist/cjs/workloads/stateless/broadcast/router.d.ts +103 -0
  134. package/dist/cjs/workloads/stateless/broadcast/router.js +98 -0
  135. package/dist/cjs/workloads/stateless/broadcast/types.d.ts +17 -0
  136. package/dist/cjs/workloads/stateless/broadcast/types.js +2 -0
  137. package/dist/cjs/workloads/stateless/cron.d.ts +49 -0
  138. package/dist/cjs/workloads/stateless/cron.js +55 -0
  139. package/dist/cjs/workloads/stateless/stateless-workload.d.ts +3 -0
  140. package/dist/cjs/workloads/stateless/stateless-workload.js +7 -0
  141. package/dist/cjs/workloads/stateless/task/backoffs.d.ts +9 -0
  142. package/dist/cjs/workloads/stateless/task/backoffs.js +17 -0
  143. package/dist/cjs/workloads/stateless/task/dispatcher.d.ts +3 -0
  144. package/dist/cjs/workloads/stateless/task/dispatcher.js +22 -0
  145. package/dist/cjs/workloads/stateless/task/local.d.ts +14 -0
  146. package/dist/cjs/workloads/stateless/task/local.js +54 -0
  147. package/dist/cjs/workloads/stateless/task/perform-later.d.ts +2 -0
  148. package/dist/cjs/workloads/stateless/task/perform-later.js +7 -0
  149. package/dist/cjs/workloads/stateless/task/perform-now.d.ts +5 -0
  150. package/dist/cjs/workloads/stateless/task/perform-now.js +24 -0
  151. package/dist/cjs/workloads/stateless/task/perform.d.ts +7 -0
  152. package/dist/cjs/workloads/stateless/task/perform.js +10 -0
  153. package/dist/cjs/workloads/stateless/task/task.d.ts +88 -0
  154. package/dist/cjs/workloads/stateless/task/task.js +61 -0
  155. package/dist/cjs/workloads/stateless/task/validate-data-size.d.ts +1 -0
  156. package/dist/cjs/workloads/stateless/task/validate-data-size.js +10 -0
  157. package/dist/cjs/workloads/workload.d.ts +14 -0
  158. package/dist/cjs/workloads/workload.js +16 -0
  159. package/dist/cjs/workloads.d.ts +22 -0
  160. package/dist/cjs/workloads.js +30 -0
  161. package/dist/esm/configuration.d.ts +65 -0
  162. package/dist/esm/configuration.js +15 -0
  163. package/dist/esm/index.d.ts +4 -0
  164. package/dist/esm/index.js +4 -0
  165. package/dist/esm/introspection.d.ts +2 -0
  166. package/dist/esm/introspection.js +2 -0
  167. package/dist/esm/make/broadcast.d.ts +10 -0
  168. package/dist/esm/make/broadcast.js +30 -0
  169. package/dist/esm/make/config.d.ts +2 -0
  170. package/dist/esm/make/config.js +41 -0
  171. package/dist/esm/make/cron.d.ts +9 -0
  172. package/dist/esm/make/cron.js +23 -0
  173. package/dist/esm/make/make.d.ts +6 -0
  174. package/dist/esm/make/make.js +120 -0
  175. package/dist/esm/make/manifest.d.ts +202 -0
  176. package/dist/esm/make/manifest.js +162 -0
  177. package/dist/esm/make/required-filtes.d.ts +1 -0
  178. package/dist/esm/make/required-filtes.js +11 -0
  179. package/dist/esm/make/task.d.ts +9 -0
  180. package/dist/esm/make/task.js +23 -0
  181. package/dist/esm/package.json +3 -0
  182. package/dist/esm/packages/docker/df.d.ts +543 -0
  183. package/dist/esm/packages/docker/df.js +381 -0
  184. package/dist/esm/packages/docker/validator.d.ts +7 -0
  185. package/dist/esm/packages/docker/validator.js +14 -0
  186. package/dist/esm/packages/utils/create-file.d.ts +1 -0
  187. package/dist/esm/packages/utils/create-file.js +11 -0
  188. package/dist/esm/packages/utils/date-string.d.ts +1 -0
  189. package/dist/esm/packages/utils/date-string.js +8 -0
  190. package/dist/esm/packages/utils/exception.d.ts +1 -0
  191. package/dist/esm/packages/utils/exception.js +4 -0
  192. package/dist/esm/packages/utils/hash-value.d.ts +16 -0
  193. package/dist/esm/packages/utils/hash-value.js +20 -0
  194. package/dist/esm/packages/utils/import-default.d.ts +1 -0
  195. package/dist/esm/packages/utils/import-default.js +10 -0
  196. package/dist/esm/packages/utils/import-file.d.ts +8 -0
  197. package/dist/esm/packages/utils/import-file.js +13 -0
  198. package/dist/esm/packages/utils/log-with-spinner.d.ts +1 -0
  199. package/dist/esm/packages/utils/log-with-spinner.js +17 -0
  200. package/dist/esm/packages/utils/path.d.ts +2 -0
  201. package/dist/esm/packages/utils/path.js +17 -0
  202. package/dist/esm/packages/utils/playground.d.ts +1 -0
  203. package/dist/esm/packages/utils/playground.js +11 -0
  204. package/dist/esm/scaffolding/add-env-var.d.ts +6 -0
  205. package/dist/esm/scaffolding/add-env-var.js +57 -0
  206. package/dist/esm/scaffolding/add-import.d.ts +16 -0
  207. package/dist/esm/scaffolding/add-import.js +39 -0
  208. package/dist/esm/scaffolding/add-script.d.ts +1 -0
  209. package/dist/esm/scaffolding/add-script.js +29 -0
  210. package/dist/esm/scaffolding/broadcast-workload.d.ts +1 -0
  211. package/dist/esm/scaffolding/broadcast-workload.js +30 -0
  212. package/dist/esm/scaffolding/bucket-workload.d.ts +6 -0
  213. package/dist/esm/scaffolding/bucket-workload.js +17 -0
  214. package/dist/esm/scaffolding/cron-workload.d.ts +6 -0
  215. package/dist/esm/scaffolding/cron-workload.js +22 -0
  216. package/dist/esm/scaffolding/drizzle.d.ts +4 -0
  217. package/dist/esm/scaffolding/drizzle.js +19 -0
  218. package/dist/esm/scaffolding/lifecycle.d.ts +9 -0
  219. package/dist/esm/scaffolding/lifecycle.js +53 -0
  220. package/dist/esm/scaffolding/postgres-database-workload.d.ts +15 -0
  221. package/dist/esm/scaffolding/postgres-database-workload.js +31 -0
  222. package/dist/esm/scaffolding/prisma.d.ts +4 -0
  223. package/dist/esm/scaffolding/prisma.js +34 -0
  224. package/dist/esm/scaffolding/replace-string.d.ts +10 -0
  225. package/dist/esm/scaffolding/replace-string.js +30 -0
  226. package/dist/esm/scaffolding/task-workload.d.ts +6 -0
  227. package/dist/esm/scaffolding/task-workload.js +24 -0
  228. package/dist/esm/scaffolding/workload.d.ts +1 -0
  229. package/dist/esm/scaffolding/workload.js +12 -0
  230. package/dist/esm/scan/project.d.ts +23 -0
  231. package/dist/esm/scan/project.js +69 -0
  232. package/dist/esm/scan/workload-imports.d.ts +21 -0
  233. package/dist/esm/scan/workload-imports.js +144 -0
  234. package/dist/esm/test-helpers/postgres.d.ts +13 -0
  235. package/dist/esm/test-helpers/postgres.js +26 -0
  236. package/dist/esm/test-helpers/redis.d.ts +13 -0
  237. package/dist/esm/test-helpers/redis.js +20 -0
  238. package/dist/esm/test-helpers/task.d.ts +14 -0
  239. package/dist/esm/test-helpers/task.js +14 -0
  240. package/dist/esm/test-helpers.d.ts +3 -0
  241. package/dist/esm/test-helpers.js +3 -0
  242. package/dist/esm/workloads/app-lifecycle/after-rollout.d.ts +22 -0
  243. package/dist/esm/workloads/app-lifecycle/after-rollout.js +24 -0
  244. package/dist/esm/workloads/app-lifecycle/before-rollout.d.ts +22 -0
  245. package/dist/esm/workloads/app-lifecycle/before-rollout.js +24 -0
  246. package/dist/esm/workloads/app-lifecycle/bootstrap.d.ts +22 -0
  247. package/dist/esm/workloads/app-lifecycle/bootstrap.js +24 -0
  248. package/dist/esm/workloads/app-lifecycle/lifecycle-workload.d.ts +11 -0
  249. package/dist/esm/workloads/app-lifecycle/lifecycle-workload.js +7 -0
  250. package/dist/esm/workloads/assertions.d.ts +13 -0
  251. package/dist/esm/workloads/assertions.js +6 -0
  252. package/dist/esm/workloads/stateful/bucket.d.ts +82 -0
  253. package/dist/esm/workloads/stateful/bucket.js +95 -0
  254. package/dist/esm/workloads/stateful/database.d.ts +25 -0
  255. package/dist/esm/workloads/stateful/database.js +42 -0
  256. package/dist/esm/workloads/stateful/postgres-database.d.ts +29 -0
  257. package/dist/esm/workloads/stateful/postgres-database.js +35 -0
  258. package/dist/esm/workloads/stateful/redis.d.ts +30 -0
  259. package/dist/esm/workloads/stateful/redis.js +36 -0
  260. package/dist/esm/workloads/stateful/stateful-workload.d.ts +25 -0
  261. package/dist/esm/workloads/stateful/stateful-workload.js +41 -0
  262. package/dist/esm/workloads/stateless/broadcast/channel-data.d.ts +3 -0
  263. package/dist/esm/workloads/stateless/broadcast/channel-data.js +2 -0
  264. package/dist/esm/workloads/stateless/broadcast/client/app-sync-client.d.ts +78 -0
  265. package/dist/esm/workloads/stateless/broadcast/client/app-sync-client.js +130 -0
  266. package/dist/esm/workloads/stateless/broadcast/client/app-sync-publisher.d.ts +34 -0
  267. package/dist/esm/workloads/stateless/broadcast/client/app-sync-publisher.js +76 -0
  268. package/dist/esm/workloads/stateless/broadcast/client/authenticator.d.ts +28 -0
  269. package/dist/esm/workloads/stateless/broadcast/client/authenticator.js +39 -0
  270. package/dist/esm/workloads/stateless/broadcast/client/broadcast-provider.d.ts +17 -0
  271. package/dist/esm/workloads/stateless/broadcast/client/broadcast-provider.js +29 -0
  272. package/dist/esm/workloads/stateless/broadcast/client/client.d.ts +8 -0
  273. package/dist/esm/workloads/stateless/broadcast/client/client.js +25 -0
  274. package/dist/esm/workloads/stateless/broadcast/client/connectionManager.d.ts +62 -0
  275. package/dist/esm/workloads/stateless/broadcast/client/connectionManager.js +164 -0
  276. package/dist/esm/workloads/stateless/broadcast/client/eventEmitter.d.ts +32 -0
  277. package/dist/esm/workloads/stateless/broadcast/client/eventEmitter.js +50 -0
  278. package/dist/esm/workloads/stateless/broadcast/client/messageBuilder.d.ts +24 -0
  279. package/dist/esm/workloads/stateless/broadcast/client/messageBuilder.js +39 -0
  280. package/dist/esm/workloads/stateless/broadcast/client/parser.d.ts +12 -0
  281. package/dist/esm/workloads/stateless/broadcast/client/parser.js +19 -0
  282. package/dist/esm/workloads/stateless/broadcast/client/provider.d.ts +4 -0
  283. package/dist/esm/workloads/stateless/broadcast/client/provider.js +8 -0
  284. package/dist/esm/workloads/stateless/broadcast/client/subscriptionManager.d.ts +34 -0
  285. package/dist/esm/workloads/stateless/broadcast/client/subscriptionManager.js +91 -0
  286. package/dist/esm/workloads/stateless/broadcast/client/types.d.ts +72 -0
  287. package/dist/esm/workloads/stateless/broadcast/client/types.js +5 -0
  288. package/dist/esm/workloads/stateless/broadcast/matcher.d.ts +13 -0
  289. package/dist/esm/workloads/stateless/broadcast/matcher.js +43 -0
  290. package/dist/esm/workloads/stateless/broadcast/router.d.ts +103 -0
  291. package/dist/esm/workloads/stateless/broadcast/router.js +93 -0
  292. package/dist/esm/workloads/stateless/broadcast/server/broadcast-server.d.ts +2 -0
  293. package/dist/esm/workloads/stateless/broadcast/server/broadcast-server.js +316 -0
  294. package/dist/esm/workloads/stateless/broadcast/types.d.ts +17 -0
  295. package/dist/esm/workloads/stateless/broadcast/types.js +1 -0
  296. package/dist/esm/workloads/stateless/cron.d.ts +49 -0
  297. package/dist/esm/workloads/stateless/cron.js +52 -0
  298. package/dist/esm/workloads/stateless/stateless-workload.d.ts +3 -0
  299. package/dist/esm/workloads/stateless/stateless-workload.js +8 -0
  300. package/dist/esm/workloads/stateless/task/backoffs.d.ts +9 -0
  301. package/dist/esm/workloads/stateless/task/backoffs.js +14 -0
  302. package/dist/esm/workloads/stateless/task/dispatcher.d.ts +3 -0
  303. package/dist/esm/workloads/stateless/task/dispatcher.js +18 -0
  304. package/dist/esm/workloads/stateless/task/local.d.ts +14 -0
  305. package/dist/esm/workloads/stateless/task/local.js +48 -0
  306. package/dist/esm/workloads/stateless/task/perform-later.d.ts +2 -0
  307. package/dist/esm/workloads/stateless/task/perform-later.js +4 -0
  308. package/dist/esm/workloads/stateless/task/perform-now.d.ts +5 -0
  309. package/dist/esm/workloads/stateless/task/perform-now.js +18 -0
  310. package/dist/esm/workloads/stateless/task/perform.d.ts +7 -0
  311. package/dist/esm/workloads/stateless/task/perform.js +8 -0
  312. package/dist/esm/workloads/stateless/task/task.d.ts +88 -0
  313. package/dist/esm/workloads/stateless/task/task.js +59 -0
  314. package/dist/esm/workloads/stateless/task/validate-data-size.d.ts +1 -0
  315. package/dist/esm/workloads/stateless/task/validate-data-size.js +7 -0
  316. package/dist/esm/workloads/workload.d.ts +14 -0
  317. package/dist/esm/workloads/workload.js +16 -0
  318. package/dist/esm/workloads.d.ts +22 -0
  319. package/dist/esm/workloads.js +13 -0
  320. package/package.json +155 -0
@@ -0,0 +1,144 @@
1
+ import { existsSync } from "fs";
2
+ import fs from "fs/promises";
3
+ import path from "node:path";
4
+ import { cwd, exit } from "node:process";
5
+ import color from "picocolors";
6
+ import { workloadsConfiguration } from "../configuration.js";
7
+ import { assertBroadcast, assertBucket, assertCron, assertPostgresDatabase, assertRedis, assertTask, } from "../workloads/assertions.js";
8
+ export async function importWorkloads() {
9
+ const workloadsPath = path.join(cwd(), (await workloadsConfiguration()).workloadsPath);
10
+ if (!existsSync(workloadsPath)) {
11
+ console.log(`${color.red("error")} Workloads folder not found`);
12
+ console.log("Check your configuration file: ./monolayer.config.ts");
13
+ exit(1);
14
+ }
15
+ const files = await fs.readdir(workloadsPath);
16
+ const imports = new WorkloadImports();
17
+ for (const fileName of files) {
18
+ if (fileName.endsWith(".ts") && !fileName.endsWith(".d.ts")) {
19
+ const importPath = path.join(workloadsPath, fileName);
20
+ const imported = (await import(importPath));
21
+ for (const [, workload] of Object.entries(imported)) {
22
+ if (workload !== undefined) {
23
+ const workloadKind = workload.constructor.name;
24
+ const workloadPath = path.relative(cwd(), importPath);
25
+ if (validWorkload(workloadKind)) {
26
+ imports.add(workloadPath, workload);
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
32
+ return imports;
33
+ }
34
+ const validConstructor = [
35
+ "PostgresDatabase",
36
+ "Redis",
37
+ "Bucket",
38
+ "Cron",
39
+ "Task",
40
+ "Broadcast",
41
+ ];
42
+ function validWorkload(workloadConstructor) {
43
+ return validConstructor.includes(workloadConstructor);
44
+ }
45
+ export class WorkloadImports {
46
+ #importsByWorkload;
47
+ #imports = [];
48
+ constructor() {
49
+ this.#importsByWorkload = {
50
+ PostgresDatabase: [],
51
+ Bucket: [],
52
+ Redis: [],
53
+ Cron: [],
54
+ Task: [],
55
+ Broadcast: [],
56
+ };
57
+ }
58
+ get workloadsWithContainers() {
59
+ return [
60
+ ...this.Bucket,
61
+ ...this.PostgresDatabase,
62
+ ...this.Redis,
63
+ ...this.Broadcast,
64
+ ].map((i) => i.workload);
65
+ }
66
+ get Redis() {
67
+ return this.#importsByWorkload.Redis;
68
+ }
69
+ get PostgresDatabase() {
70
+ return this.#importsByWorkload.PostgresDatabase;
71
+ }
72
+ get Bucket() {
73
+ return this.#importsByWorkload.Bucket;
74
+ }
75
+ get Cron() {
76
+ return this.#importsByWorkload.Cron;
77
+ }
78
+ get Task() {
79
+ return this.#importsByWorkload.Task;
80
+ }
81
+ get Broadcast() {
82
+ return this.#importsByWorkload.Broadcast;
83
+ }
84
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ addBroadcast(src, workload) {
86
+ this.#importsByWorkload.Broadcast = [{ src, workload }];
87
+ }
88
+ add(src, workload) {
89
+ if (validWorkload(workload.constructor.name)) {
90
+ const key = workload.constructor.name;
91
+ if (this.#importsByWorkload[key] === undefined) {
92
+ this.#importsByWorkload[key] = [];
93
+ }
94
+ switch (key) {
95
+ case "Redis":
96
+ assertRedis(workload);
97
+ this.#importsByWorkload[key].push({
98
+ src,
99
+ workload,
100
+ });
101
+ break;
102
+ case "Bucket":
103
+ assertBucket(workload);
104
+ this.#importsByWorkload[key].push({
105
+ src,
106
+ workload,
107
+ });
108
+ break;
109
+ case "PostgresDatabase":
110
+ assertPostgresDatabase(workload);
111
+ this.#importsByWorkload[key].push({
112
+ src,
113
+ workload,
114
+ });
115
+ break;
116
+ case "Cron":
117
+ assertCron(workload);
118
+ this.#importsByWorkload[key].push({
119
+ src,
120
+ workload,
121
+ });
122
+ break;
123
+ case "Task":
124
+ assertTask(workload);
125
+ this.#importsByWorkload[key].push({
126
+ src,
127
+ workload,
128
+ });
129
+ break;
130
+ case "Broadcast":
131
+ assertBroadcast(workload);
132
+ this.#importsByWorkload[key].push({
133
+ src,
134
+ workload,
135
+ });
136
+ break;
137
+ }
138
+ }
139
+ this.#imports.push({
140
+ src,
141
+ workload,
142
+ });
143
+ }
144
+ }
@@ -0,0 +1,13 @@
1
+ import type { PostgresDatabase } from "../workloads/stateful/postgres-database.js";
2
+ /**
3
+ * Truncates all the tables in a {@link PostgresDatabase} workload.
4
+ */
5
+ export declare function truncatePostgresTables(
6
+ /**
7
+ * PostgresDatabase workload
8
+ */
9
+ workload: PostgresDatabase,
10
+ /**
11
+ * Schema name (default: `public`)
12
+ */
13
+ schemaName?: string): Promise<void>;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Truncates all the tables in a {@link PostgresDatabase} workload.
3
+ */
4
+ export async function truncatePostgresTables(
5
+ /**
6
+ * PostgresDatabase workload
7
+ */
8
+ workload,
9
+ /**
10
+ * Schema name (default: `public`)
11
+ */
12
+ schemaName) {
13
+ const pg = await import("pg");
14
+ const pool = new pg.Pool({
15
+ connectionString: process.env[workload.connectionStringEnvVar],
16
+ });
17
+ const result = await pool.query(`
18
+ SELECT c.relname as table_name, n.nspname as schema_name
19
+ FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
20
+ WHERE n.nspname = '${schemaName ?? "public"}'
21
+ AND c.relkind IN ('r','p');`);
22
+ const tables = result.rows;
23
+ const queries = tables.map((table) => `TRUNCATE TABLE ${table.schema_name}.${table.table_name} RESTART IDENTITY CASCADE;`);
24
+ await pool.query(queries.join("\n"));
25
+ await pool.end();
26
+ }
@@ -0,0 +1,13 @@
1
+ import type { Redis } from "../workloads/stateful/redis.js";
2
+ /**
3
+ * Deletes all the keys of a {@link Redis} workload database.
4
+ */
5
+ export declare function flushRedis(
6
+ /**
7
+ * Redis workload
8
+ */
9
+ workload: Redis,
10
+ /**
11
+ * Redis database (default: 0)
12
+ */
13
+ db?: number): Promise<void>;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Deletes all the keys of a {@link Redis} workload database.
3
+ */
4
+ export async function flushRedis(
5
+ /**
6
+ * Redis workload
7
+ */
8
+ workload,
9
+ /**
10
+ * Redis database (default: 0)
11
+ */
12
+ db) {
13
+ const Redis = (await import("ioredis")).Redis;
14
+ const client = new Redis(process.env[workload.connectionStringEnvVar]);
15
+ if (db) {
16
+ await client.select(db);
17
+ }
18
+ await client.flushdb();
19
+ client.disconnect();
20
+ }
@@ -0,0 +1,14 @@
1
+ import type { ExecutionId } from "../workloads/stateless/task/perform-now.js";
2
+ import type { Task } from "../workloads/stateless/task/task.js";
3
+ export interface PerformedTask<P> {
4
+ executionId: ExecutionId;
5
+ data: P;
6
+ }
7
+ /**
8
+ * Returns all the performed tasks for a `Task` workload.
9
+ */
10
+ export declare function performedTasks<P>(task: Task<P>): PerformedTask<P>[];
11
+ /**
12
+ * Deletes all the performed tasks for a `Task` workload.
13
+ */
14
+ export declare function clearPerformedTasks<P>(task: Task<P>): void;
@@ -0,0 +1,14 @@
1
+ import { dispatcherForTask, testDispatchers, } from "../workloads/stateless/task/local.js";
2
+ /**
3
+ * Returns all the performed tasks for a `Task` workload.
4
+ */
5
+ export function performedTasks(task) {
6
+ return dispatcherForTask(task);
7
+ }
8
+ /**
9
+ * Deletes all the performed tasks for a `Task` workload.
10
+ */
11
+ export function clearPerformedTasks(task) {
12
+ const dispatchers = testDispatchers;
13
+ delete dispatchers[task.id];
14
+ }
@@ -0,0 +1,3 @@
1
+ export { truncatePostgresTables } from "./test-helpers/postgres.js";
2
+ export { flushRedis } from "./test-helpers/redis.js";
3
+ export { clearPerformedTasks, performedTasks, type PerformedTask, } from "./test-helpers/task.js";
@@ -0,0 +1,3 @@
1
+ export { truncatePostgresTables } from "./test-helpers/postgres.js";
2
+ export { flushRedis } from "./test-helpers/redis.js";
3
+ export { clearPerformedTasks, performedTasks, } from "./test-helpers/task.js";
@@ -0,0 +1,22 @@
1
+ import { LifecycleWorkload, type LifecycleWorkloadOptions } from "../../workloads/app-lifecycle/lifecycle-workload.js";
2
+ /**
3
+ * Workload for defining an npm script to run after rolling out a new application version.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { AfterRollout } from "@monolayer/sdk";
8
+ *
9
+ * const rollout = new AfterRollout("after-rollout-1",{
10
+ * script: "notify",
11
+ * });
12
+ *
13
+ * export rollout;
14
+ * ```
15
+ */
16
+ export declare class AfterRollout extends LifecycleWorkload {
17
+ constructor(
18
+ /**
19
+ * Unique ID
20
+ */
21
+ id: string, options: LifecycleWorkloadOptions);
22
+ }
@@ -0,0 +1,24 @@
1
+ import { LifecycleWorkload, } from "../../workloads/app-lifecycle/lifecycle-workload.js";
2
+ /**
3
+ * Workload for defining an npm script to run after rolling out a new application version.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { AfterRollout } from "@monolayer/sdk";
8
+ *
9
+ * const rollout = new AfterRollout("after-rollout-1",{
10
+ * script: "notify",
11
+ * });
12
+ *
13
+ * export rollout;
14
+ * ```
15
+ */
16
+ export class AfterRollout extends LifecycleWorkload {
17
+ constructor(
18
+ /**
19
+ * Unique ID
20
+ */
21
+ id, options) {
22
+ super(id, options);
23
+ }
24
+ }
@@ -0,0 +1,22 @@
1
+ import { LifecycleWorkload, type LifecycleWorkloadOptions } from "../../workloads/app-lifecycle/lifecycle-workload.js";
2
+ /**
3
+ * Workload for defining an npm script to run before rolling out a new application version.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { BeforeRollout } from "@monolayer/sdk";
8
+ *
9
+ * const rollout = new BeforeRollout("before-1", {
10
+ * script: "db:migrate",
11
+ * });
12
+ *
13
+ * export default rollout;
14
+ * ```
15
+ */
16
+ export declare class BeforeRollout extends LifecycleWorkload {
17
+ constructor(
18
+ /**
19
+ * Unique ID
20
+ */
21
+ id: string, options: LifecycleWorkloadOptions);
22
+ }
@@ -0,0 +1,24 @@
1
+ import { LifecycleWorkload, } from "../../workloads/app-lifecycle/lifecycle-workload.js";
2
+ /**
3
+ * Workload for defining an npm script to run before rolling out a new application version.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { BeforeRollout } from "@monolayer/sdk";
8
+ *
9
+ * const rollout = new BeforeRollout("before-1", {
10
+ * script: "db:migrate",
11
+ * });
12
+ *
13
+ * export default rollout;
14
+ * ```
15
+ */
16
+ export class BeforeRollout extends LifecycleWorkload {
17
+ constructor(
18
+ /**
19
+ * Unique ID
20
+ */
21
+ id, options) {
22
+ super(id, options);
23
+ }
24
+ }
@@ -0,0 +1,22 @@
1
+ import { LifecycleWorkload, type LifecycleWorkloadOptions } from "../../workloads/app-lifecycle/lifecycle-workload.js";
2
+ /**
3
+ * Workload for defining bootstrap an npm script to run when rolling out a fresh application.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { Bootstrap } from "@monolayer/sdk";
8
+ *
9
+ * const bootstrap = new Bootstrap("bootstrap", {
10
+ * script: "db:create",
11
+ * });
12
+ *
13
+ * export default bootstrap;
14
+ * ```
15
+ */
16
+ export declare class Bootstrap extends LifecycleWorkload {
17
+ constructor(
18
+ /**
19
+ * Unique ID
20
+ */
21
+ id: string, options: LifecycleWorkloadOptions);
22
+ }
@@ -0,0 +1,24 @@
1
+ import { LifecycleWorkload, } from "../../workloads/app-lifecycle/lifecycle-workload.js";
2
+ /**
3
+ * Workload for defining bootstrap an npm script to run when rolling out a fresh application.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { Bootstrap } from "@monolayer/sdk";
8
+ *
9
+ * const bootstrap = new Bootstrap("bootstrap", {
10
+ * script: "db:create",
11
+ * });
12
+ *
13
+ * export default bootstrap;
14
+ * ```
15
+ */
16
+ export class Bootstrap extends LifecycleWorkload {
17
+ constructor(
18
+ /**
19
+ * Unique ID
20
+ */
21
+ id, options) {
22
+ super(id, options);
23
+ }
24
+ }
@@ -0,0 +1,11 @@
1
+ import { Workload } from "../../workloads/workload.js";
2
+ export interface LifecycleWorkloadOptions {
3
+ /**
4
+ * Array of script names defined in `package.json`.
5
+ */
6
+ script: string;
7
+ }
8
+ export declare abstract class LifecycleWorkload extends Workload {
9
+ script: LifecycleWorkloadOptions["script"];
10
+ constructor(id: string, options: LifecycleWorkloadOptions);
11
+ }
@@ -0,0 +1,7 @@
1
+ import { Workload } from "../../workloads/workload.js";
2
+ export class LifecycleWorkload extends Workload {
3
+ constructor(id, options) {
4
+ super(id);
5
+ this.script = options.script;
6
+ }
7
+ }
@@ -0,0 +1,13 @@
1
+ import type { Bucket } from "../workloads/stateful/bucket.js";
2
+ import type { PostgresDatabase } from "../workloads/stateful/postgres-database.js";
3
+ import type { Redis } from "../workloads/stateful/redis.js";
4
+ import type { Cron } from "../workloads/stateless/cron.js";
5
+ import type { Task } from "../workloads/stateless/task/task.js";
6
+ import type { Workload } from "../workloads/workload.js";
7
+ import type { AnyBroadcast } from "./stateless/broadcast/router.js";
8
+ export declare function assertRedis(workload: Workload): asserts workload is Redis;
9
+ export declare function assertPostgresDatabase(workload: Workload): asserts workload is PostgresDatabase;
10
+ export declare function assertBucket(workload: Workload): asserts workload is Bucket;
11
+ export declare function assertCron(workload: Workload): asserts workload is Cron;
12
+ export declare function assertTask(workload: Workload): asserts workload is Task<unknown>;
13
+ export declare function assertBroadcast(workload: Workload): asserts workload is AnyBroadcast;
@@ -0,0 +1,6 @@
1
+ export function assertRedis(workload) { }
2
+ export function assertPostgresDatabase(workload) { }
3
+ export function assertBucket(workload) { }
4
+ export function assertCron(workload) { }
5
+ export function assertTask(workload) { }
6
+ export function assertBroadcast(workload) { }
@@ -0,0 +1,82 @@
1
+ import { StatefulWorkload } from "../../workloads/stateful/stateful-workload.js";
2
+ /**
3
+ * Workload for an AWS S3 compatible storage.
4
+ *
5
+ * The `Bucket` workload is initialized with:
6
+ * - A valid bucket name.
7
+ *
8
+ * **NOTES**
9
+ *
10
+ * Launching the development or test containers with `npx monolayer start dev` will write the environment
11
+ * variable `ML_AWS_ENDPOINT_URL` will be written to the corresponding dotenv file (`.env` or `.env.test`)
12
+ *
13
+ * When initializing the S3 client, you need to configure `forcePathStyle` and `endpoint`
14
+ * if the dev or test container is running (*check for the `ML_AWS_ENDPOINT_URL` environment
15
+ * variable*). See the example.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import { Bucket } from "@monolayer/sdk";
20
+ *
21
+ * const documents = new Bucket("documents");
22
+ *
23
+ * export default documents;
24
+ *
25
+ * // Client configuration
26
+ *
27
+ * import { S3Client } from "@aws-sdk/client-s3";
28
+ * import { bucketLocalConfiguration } from "@monolayer/sdk";
29
+ * export const s3Client = new S3Client({
30
+ * ...bucketLocalConfiguration(),
31
+ * });
32
+ *
33
+ * // Get Object
34
+ *
35
+ * const response = await s3Client.send(
36
+ * new GetObjectCommand({
37
+ * Bucket: documents.name,
38
+ * Key: "README.md",
39
+ * }),
40
+ * );
41
+ *
42
+ * ```
43
+ */
44
+ export declare class Bucket extends StatefulWorkload {
45
+ /**
46
+ * Defines public access permissions for specific paths within the bucket.
47
+ * This allows anonymous users to perform actions on objects matching the specified path patterns.
48
+ */
49
+ publicAccess: PublicAccess;
50
+ constructor(
51
+ /**
52
+ * Bucket ID.
53
+ */
54
+ id: string,
55
+ /**
56
+ * Bucket options
57
+ */
58
+ options?: BucketOptions);
59
+ get name(): string;
60
+ }
61
+ export declare function bucketLocalConfiguration(): {
62
+ forcePathStyle?: undefined;
63
+ endpoint?: undefined;
64
+ credentials?: undefined;
65
+ } | {
66
+ forcePathStyle: boolean;
67
+ endpoint: string | undefined;
68
+ credentials: {
69
+ accessKeyId: string;
70
+ secretAccessKey: string;
71
+ };
72
+ };
73
+ export type AccessGrant = "get" | "list" | "write" | "delete";
74
+ export type PublicAccess = Record<string, AccessGrant[]>;
75
+ export interface BucketOptions {
76
+ /**
77
+ * Defines public access permissions for specific paths within the bucket.
78
+ * This allows anonymous users to perform actions like 'get', 'list', 'write', or 'delete'
79
+ * on objects matching the specified path patterns.
80
+ */
81
+ publicAccess?: PublicAccess;
82
+ }
@@ -0,0 +1,95 @@
1
+ import { snakeCase } from "case-anything";
2
+ import { StatefulWorkload } from "../../workloads/stateful/stateful-workload.js";
3
+ /**
4
+ * Workload for an AWS S3 compatible storage.
5
+ *
6
+ * The `Bucket` workload is initialized with:
7
+ * - A valid bucket name.
8
+ *
9
+ * **NOTES**
10
+ *
11
+ * Launching the development or test containers with `npx monolayer start dev` will write the environment
12
+ * variable `ML_AWS_ENDPOINT_URL` will be written to the corresponding dotenv file (`.env` or `.env.test`)
13
+ *
14
+ * When initializing the S3 client, you need to configure `forcePathStyle` and `endpoint`
15
+ * if the dev or test container is running (*check for the `ML_AWS_ENDPOINT_URL` environment
16
+ * variable*). See the example.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { Bucket } from "@monolayer/sdk";
21
+ *
22
+ * const documents = new Bucket("documents");
23
+ *
24
+ * export default documents;
25
+ *
26
+ * // Client configuration
27
+ *
28
+ * import { S3Client } from "@aws-sdk/client-s3";
29
+ * import { bucketLocalConfiguration } from "@monolayer/sdk";
30
+ * export const s3Client = new S3Client({
31
+ * ...bucketLocalConfiguration(),
32
+ * });
33
+ *
34
+ * // Get Object
35
+ *
36
+ * const response = await s3Client.send(
37
+ * new GetObjectCommand({
38
+ * Bucket: documents.name,
39
+ * Key: "README.md",
40
+ * }),
41
+ * );
42
+ *
43
+ * ```
44
+ */
45
+ export class Bucket extends StatefulWorkload {
46
+ /**
47
+ * Defines public access permissions for specific paths within the bucket.
48
+ * This allows anonymous users to perform actions on objects matching the specified path patterns.
49
+ */
50
+ publicAccess;
51
+ constructor(
52
+ /**
53
+ * Bucket ID.
54
+ */
55
+ id,
56
+ /**
57
+ * Bucket options
58
+ */
59
+ options) {
60
+ super(id);
61
+ this.publicAccess = options?.publicAccess ?? {};
62
+ }
63
+ get name() {
64
+ if (process.env.NODE_ENV === "production") {
65
+ const envVarName = snakeCase(["ml", this.id, "bucket", "name"].join("-")).toUpperCase();
66
+ const bucketName = process.env[envVarName];
67
+ if (bucketName === undefined) {
68
+ throw new Error(`Undefined bucket name for Bucket ${this.id}. ${envVarName} not set.`);
69
+ }
70
+ return bucketName;
71
+ }
72
+ else {
73
+ return [this.id, process.env.NODE_ENV].join("-");
74
+ }
75
+ }
76
+ /**
77
+ * @internal
78
+ */
79
+ get connectionStringEnvVar() {
80
+ return bucketEndPointEnvVarName;
81
+ }
82
+ }
83
+ export function bucketLocalConfiguration() {
84
+ if (process.env.NODE_ENV === "production")
85
+ return {};
86
+ return {
87
+ forcePathStyle: true,
88
+ endpoint: process.env[bucketEndPointEnvVarName],
89
+ credentials: {
90
+ accessKeyId: "minioadmin",
91
+ secretAccessKey: "minioadmin",
92
+ },
93
+ };
94
+ }
95
+ const bucketEndPointEnvVarName = "ML_BUCKET_ENDPOINT";
@@ -0,0 +1,25 @@
1
+ import { StatefulWorkloadWithClient } from "../../workloads/stateful/stateful-workload.js";
2
+ /**
3
+ * Database workload.
4
+ *
5
+ * @group Abstract Classes
6
+ * @typeParam C - Client type
7
+ */
8
+ export declare abstract class Database extends StatefulWorkloadWithClient {
9
+ /**
10
+ * Database name.
11
+ */
12
+ readonly databaseName: string;
13
+ constructor(
14
+ /**
15
+ * Database name.
16
+ */
17
+ databaseName: string);
18
+ /**
19
+ * Database ID
20
+ *
21
+ * **Note:**
22
+ * Alias of `ìd`.
23
+ */
24
+ get databaseId(): string;
25
+ }