@vendure/cloud 0.4.0 → 0.5.0-dev.20261016123507.ge07a06e

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 (522) hide show
  1. package/README.md +43 -10
  2. package/dist/cli/arguments.d.ts.map +1 -1
  3. package/dist/cli/arguments.js +9 -31
  4. package/dist/cli/arguments.js.map +1 -1
  5. package/dist/cli/command.d.ts.map +1 -1
  6. package/dist/cli/command.js +13 -30
  7. package/dist/cli/command.js.map +1 -1
  8. package/dist/cli/commands/access/access.d.ts +5 -0
  9. package/dist/cli/commands/access/access.d.ts.map +1 -0
  10. package/dist/cli/commands/access/access.js +73 -0
  11. package/dist/cli/commands/access/access.js.map +1 -0
  12. package/dist/cli/commands/access/index.d.ts +2 -0
  13. package/dist/cli/commands/access/index.d.ts.map +1 -0
  14. package/dist/cli/commands/access/index.js +46 -0
  15. package/dist/cli/commands/access/index.js.map +1 -0
  16. package/dist/cli/commands/deployment/arguments.d.ts.map +1 -1
  17. package/dist/cli/commands/deployment/arguments.js +1 -8
  18. package/dist/cli/commands/deployment/arguments.js.map +1 -1
  19. package/dist/cli/commands/deployment/build-logs.d.ts.map +1 -1
  20. package/dist/cli/commands/deployment/build-logs.js +12 -16
  21. package/dist/cli/commands/deployment/build-logs.js.map +1 -1
  22. package/dist/cli/commands/deployment/deploy.d.ts.map +1 -1
  23. package/dist/cli/commands/deployment/deploy.js +88 -45
  24. package/dist/cli/commands/deployment/deploy.js.map +1 -1
  25. package/dist/cli/commands/deployment/index.d.ts.map +1 -1
  26. package/dist/cli/commands/deployment/index.js +18 -30
  27. package/dist/cli/commands/deployment/index.js.map +1 -1
  28. package/dist/cli/commands/deployment/list.d.ts.map +1 -1
  29. package/dist/cli/commands/deployment/list.js +5 -5
  30. package/dist/cli/commands/deployment/list.js.map +1 -1
  31. package/dist/cli/commands/deployment/log-export.d.ts.map +1 -1
  32. package/dist/cli/commands/deployment/log-export.js +14 -27
  33. package/dist/cli/commands/deployment/log-export.js.map +1 -1
  34. package/dist/cli/commands/deployment/log-query-output.d.ts.map +1 -1
  35. package/dist/cli/commands/deployment/log-query-output.js +18 -32
  36. package/dist/cli/commands/deployment/log-query-output.js.map +1 -1
  37. package/dist/cli/commands/deployment/logs.d.ts.map +1 -1
  38. package/dist/cli/commands/deployment/logs.js +52 -72
  39. package/dist/cli/commands/deployment/logs.js.map +1 -1
  40. package/dist/cli/commands/deployment/options.d.ts.map +1 -1
  41. package/dist/cli/commands/deployment/options.js +11 -20
  42. package/dist/cli/commands/deployment/options.js.map +1 -1
  43. package/dist/cli/commands/deployment/plan-format.d.ts.map +1 -1
  44. package/dist/cli/commands/deployment/plan-format.js +2 -2
  45. package/dist/cli/commands/deployment/plan-format.js.map +1 -1
  46. package/dist/cli/commands/deployment/plan.d.ts.map +1 -1
  47. package/dist/cli/commands/deployment/plan.js +7 -8
  48. package/dist/cli/commands/deployment/plan.js.map +1 -1
  49. package/dist/cli/commands/deployment/recovery.d.ts.map +1 -1
  50. package/dist/cli/commands/deployment/recovery.js +25 -35
  51. package/dist/cli/commands/deployment/recovery.js.map +1 -1
  52. package/dist/cli/commands/deployment/rollback.d.ts.map +1 -1
  53. package/dist/cli/commands/deployment/rollback.js +58 -12
  54. package/dist/cli/commands/deployment/rollback.js.map +1 -1
  55. package/dist/cli/commands/deployment/shared.d.ts.map +1 -1
  56. package/dist/cli/commands/deployment/shared.js +4 -7
  57. package/dist/cli/commands/deployment/shared.js.map +1 -1
  58. package/dist/cli/commands/deployment/show.d.ts.map +1 -1
  59. package/dist/cli/commands/deployment/show.js +8 -9
  60. package/dist/cli/commands/deployment/show.js.map +1 -1
  61. package/dist/cli/commands/deployment/source.d.ts.map +1 -1
  62. package/dist/cli/commands/deployment/source.js +2 -2
  63. package/dist/cli/commands/deployment/source.js.map +1 -1
  64. package/dist/cli/commands/deployment/status.d.ts.map +1 -1
  65. package/dist/cli/commands/deployment/status.js +10 -11
  66. package/dist/cli/commands/deployment/status.js.map +1 -1
  67. package/dist/cli/commands/deployment/teardown.js +22 -31
  68. package/dist/cli/commands/deployment/teardown.js.map +1 -1
  69. package/dist/cli/commands/identity-context/context.d.ts.map +1 -1
  70. package/dist/cli/commands/identity-context/context.js +3 -4
  71. package/dist/cli/commands/identity-context/context.js.map +1 -1
  72. package/dist/cli/commands/identity-context/index.d.ts.map +1 -1
  73. package/dist/cli/commands/identity-context/index.js +16 -50
  74. package/dist/cli/commands/identity-context/index.js.map +1 -1
  75. package/dist/cli/commands/identity-context/keys.d.ts.map +1 -1
  76. package/dist/cli/commands/identity-context/keys.js +13 -15
  77. package/dist/cli/commands/identity-context/keys.js.map +1 -1
  78. package/dist/cli/commands/identity-context/use.js +1 -1
  79. package/dist/cli/commands/identity-context/use.js.map +1 -1
  80. package/dist/cli/commands/index.d.ts.map +1 -1
  81. package/dist/cli/commands/index.js +13 -20
  82. package/dist/cli/commands/index.js.map +1 -1
  83. package/dist/cli/commands/project-config/config/build-fields.d.ts.map +1 -1
  84. package/dist/cli/commands/project-config/config/build-fields.js +2 -3
  85. package/dist/cli/commands/project-config/config/build-fields.js.map +1 -1
  86. package/dist/cli/commands/project-config/config/build.d.ts.map +1 -1
  87. package/dist/cli/commands/project-config/config/build.js +8 -9
  88. package/dist/cli/commands/project-config/config/build.js.map +1 -1
  89. package/dist/cli/commands/project-config/config/desired-state.d.ts.map +1 -1
  90. package/dist/cli/commands/project-config/config/desired-state.js +10 -12
  91. package/dist/cli/commands/project-config/config/desired-state.js.map +1 -1
  92. package/dist/cli/commands/project-config/config/email/domain.d.ts.map +1 -1
  93. package/dist/cli/commands/project-config/config/email/domain.js +12 -9
  94. package/dist/cli/commands/project-config/config/email/domain.js.map +1 -1
  95. package/dist/cli/commands/project-config/config/email/events.d.ts.map +1 -1
  96. package/dist/cli/commands/project-config/config/email/events.js +9 -9
  97. package/dist/cli/commands/project-config/config/email/events.js.map +1 -1
  98. package/dist/cli/commands/project-config/config/email/index.d.ts.map +1 -1
  99. package/dist/cli/commands/project-config/config/email/index.js +5 -6
  100. package/dist/cli/commands/project-config/config/email/index.js.map +1 -1
  101. package/dist/cli/commands/project-config/config/email/test-sending.d.ts.map +1 -1
  102. package/dist/cli/commands/project-config/config/email/test-sending.js +6 -5
  103. package/dist/cli/commands/project-config/config/email/test-sending.js.map +1 -1
  104. package/dist/cli/commands/project-config/config/index.d.ts.map +1 -1
  105. package/dist/cli/commands/project-config/config/index.js +8 -10
  106. package/dist/cli/commands/project-config/config/index.js.map +1 -1
  107. package/dist/cli/commands/project-config/config/runtime.d.ts.map +1 -1
  108. package/dist/cli/commands/project-config/config/runtime.js +10 -21
  109. package/dist/cli/commands/project-config/config/runtime.js.map +1 -1
  110. package/dist/cli/commands/project-config/config/set.js +3 -3
  111. package/dist/cli/commands/project-config/config/set.js.map +1 -1
  112. package/dist/cli/commands/project-config/config/show.d.ts.map +1 -1
  113. package/dist/cli/commands/project-config/config/show.js +7 -7
  114. package/dist/cli/commands/project-config/config/show.js.map +1 -1
  115. package/dist/cli/commands/project-config/env/add.d.ts.map +1 -1
  116. package/dist/cli/commands/project-config/env/add.js +4 -3
  117. package/dist/cli/commands/project-config/env/add.js.map +1 -1
  118. package/dist/cli/commands/project-config/env/get.d.ts.map +1 -1
  119. package/dist/cli/commands/project-config/env/get.js +7 -2
  120. package/dist/cli/commands/project-config/env/get.js.map +1 -1
  121. package/dist/cli/commands/project-config/env/import.d.ts.map +1 -1
  122. package/dist/cli/commands/project-config/env/import.js +15 -8
  123. package/dist/cli/commands/project-config/env/import.js.map +1 -1
  124. package/dist/cli/commands/project-config/env/index.js +7 -8
  125. package/dist/cli/commands/project-config/env/index.js.map +1 -1
  126. package/dist/cli/commands/project-config/env/list.d.ts.map +1 -1
  127. package/dist/cli/commands/project-config/env/list.js +29 -8
  128. package/dist/cli/commands/project-config/env/list.js.map +1 -1
  129. package/dist/cli/commands/project-config/env/metadata-options.d.ts.map +1 -1
  130. package/dist/cli/commands/project-config/env/metadata-options.js +0 -1
  131. package/dist/cli/commands/project-config/env/metadata-options.js.map +1 -1
  132. package/dist/cli/commands/project-config/env/pull.d.ts.map +1 -1
  133. package/dist/cli/commands/project-config/env/pull.js +22 -8
  134. package/dist/cli/commands/project-config/env/pull.js.map +1 -1
  135. package/dist/cli/commands/project-config/env/read-value.d.ts.map +1 -1
  136. package/dist/cli/commands/project-config/env/read-value.js +8 -4
  137. package/dist/cli/commands/project-config/env/read-value.js.map +1 -1
  138. package/dist/cli/commands/project-config/env/rm.d.ts.map +1 -1
  139. package/dist/cli/commands/project-config/env/rm.js +4 -3
  140. package/dist/cli/commands/project-config/env/rm.js.map +1 -1
  141. package/dist/cli/commands/project-config/env/run.d.ts.map +1 -1
  142. package/dist/cli/commands/project-config/env/run.js +9 -8
  143. package/dist/cli/commands/project-config/env/run.js.map +1 -1
  144. package/dist/cli/commands/project-config/env/update.d.ts.map +1 -1
  145. package/dist/cli/commands/project-config/env/update.js +4 -3
  146. package/dist/cli/commands/project-config/env/update.js.map +1 -1
  147. package/dist/cli/commands/project-config/environment/create.d.ts.map +1 -1
  148. package/dist/cli/commands/project-config/environment/create.js +5 -6
  149. package/dist/cli/commands/project-config/environment/create.js.map +1 -1
  150. package/dist/cli/commands/project-config/environment/delete.d.ts.map +1 -1
  151. package/dist/cli/commands/project-config/environment/delete.js +6 -6
  152. package/dist/cli/commands/project-config/environment/delete.js.map +1 -1
  153. package/dist/cli/commands/project-config/environment/find.js +3 -3
  154. package/dist/cli/commands/project-config/environment/find.js.map +1 -1
  155. package/dist/cli/commands/project-config/environment/index.d.ts.map +1 -1
  156. package/dist/cli/commands/project-config/environment/index.js +8 -10
  157. package/dist/cli/commands/project-config/environment/index.js.map +1 -1
  158. package/dist/cli/commands/project-config/environment/initial-superadmin.d.ts.map +1 -1
  159. package/dist/cli/commands/project-config/environment/initial-superadmin.js +4 -5
  160. package/dist/cli/commands/project-config/environment/initial-superadmin.js.map +1 -1
  161. package/dist/cli/commands/project-config/environment/list.d.ts.map +1 -1
  162. package/dist/cli/commands/project-config/environment/list.js +5 -5
  163. package/dist/cli/commands/project-config/environment/list.js.map +1 -1
  164. package/dist/cli/commands/project-config/environment/regions.d.ts.map +1 -1
  165. package/dist/cli/commands/project-config/environment/regions.js +3 -3
  166. package/dist/cli/commands/project-config/environment/regions.js.map +1 -1
  167. package/dist/cli/commands/project-config/environment/show.d.ts.map +1 -1
  168. package/dist/cli/commands/project-config/environment/show.js +3 -4
  169. package/dist/cli/commands/project-config/environment/show.js.map +1 -1
  170. package/dist/cli/commands/project-config/environment/update.d.ts.map +1 -1
  171. package/dist/cli/commands/project-config/environment/update.js +3 -4
  172. package/dist/cli/commands/project-config/environment/update.js.map +1 -1
  173. package/dist/cli/commands/project-config/index.js +5 -5
  174. package/dist/cli/commands/project-config/index.js.map +1 -1
  175. package/dist/cli/commands/project-config/init/build-detection.d.ts.map +1 -1
  176. package/dist/cli/commands/project-config/init/build-detection.js +4 -4
  177. package/dist/cli/commands/project-config/init/build-detection.js.map +1 -1
  178. package/dist/cli/commands/project-config/init/index.d.ts.map +1 -1
  179. package/dist/cli/commands/project-config/init/index.js +4 -5
  180. package/dist/cli/commands/project-config/init/index.js.map +1 -1
  181. package/dist/cli/commands/project-config/init/init.d.ts.map +1 -1
  182. package/dist/cli/commands/project-config/init/init.js +18 -22
  183. package/dist/cli/commands/project-config/init/init.js.map +1 -1
  184. package/dist/cli/commands/project-config/options.d.ts.map +1 -1
  185. package/dist/cli/commands/project-config/options.js +9 -14
  186. package/dist/cli/commands/project-config/options.js.map +1 -1
  187. package/dist/cli/commands/project-config/project/create.d.ts.map +1 -1
  188. package/dist/cli/commands/project-config/project/create.js +3 -3
  189. package/dist/cli/commands/project-config/project/create.js.map +1 -1
  190. package/dist/cli/commands/project-config/project/delete.d.ts.map +1 -1
  191. package/dist/cli/commands/project-config/project/delete.js +4 -5
  192. package/dist/cli/commands/project-config/project/delete.js.map +1 -1
  193. package/dist/cli/commands/project-config/project/index.d.ts.map +1 -1
  194. package/dist/cli/commands/project-config/project/index.js +4 -5
  195. package/dist/cli/commands/project-config/project/index.js.map +1 -1
  196. package/dist/cli/commands/project-config/project/link.d.ts.map +1 -1
  197. package/dist/cli/commands/project-config/project/link.js +4 -4
  198. package/dist/cli/commands/project-config/project/link.js.map +1 -1
  199. package/dist/cli/commands/project-config/project/list.d.ts.map +1 -1
  200. package/dist/cli/commands/project-config/project/list.js +5 -5
  201. package/dist/cli/commands/project-config/project/list.js.map +1 -1
  202. package/dist/cli/commands/project-config/project/show.d.ts.map +1 -1
  203. package/dist/cli/commands/project-config/project/show.js +11 -14
  204. package/dist/cli/commands/project-config/project/show.js.map +1 -1
  205. package/dist/cli/commands/project-config/project/subscription-state.d.ts.map +1 -1
  206. package/dist/cli/commands/project-config/project/subscription-state.js +17 -20
  207. package/dist/cli/commands/project-config/project/subscription-state.js.map +1 -1
  208. package/dist/cli/commands/project-config/project/unlink.d.ts.map +1 -1
  209. package/dist/cli/commands/project-config/project/unlink.js +2 -3
  210. package/dist/cli/commands/project-config/project/unlink.js.map +1 -1
  211. package/dist/cli/commands/project-config/project/update.d.ts.map +1 -1
  212. package/dist/cli/commands/project-config/project/update.js +3 -4
  213. package/dist/cli/commands/project-config/project/update.js.map +1 -1
  214. package/dist/cli/commands/project-config/source/connect.d.ts.map +1 -1
  215. package/dist/cli/commands/project-config/source/connect.js +24 -26
  216. package/dist/cli/commands/project-config/source/connect.js.map +1 -1
  217. package/dist/cli/commands/project-config/source/disconnect.d.ts.map +1 -1
  218. package/dist/cli/commands/project-config/source/disconnect.js +4 -4
  219. package/dist/cli/commands/project-config/source/disconnect.js.map +1 -1
  220. package/dist/cli/commands/project-config/source/index.js +7 -7
  221. package/dist/cli/commands/project-config/source/index.js.map +1 -1
  222. package/dist/cli/commands/project-config/source/map.d.ts.map +1 -1
  223. package/dist/cli/commands/project-config/source/map.js +12 -16
  224. package/dist/cli/commands/project-config/source/map.js.map +1 -1
  225. package/dist/cli/commands/project-config/source/repos.d.ts.map +1 -1
  226. package/dist/cli/commands/project-config/source/repos.js +5 -5
  227. package/dist/cli/commands/project-config/source/repos.js.map +1 -1
  228. package/dist/cli/commands/project-config/source/status.d.ts.map +1 -1
  229. package/dist/cli/commands/project-config/source/status.js +16 -25
  230. package/dist/cli/commands/project-config/source/status.js.map +1 -1
  231. package/dist/cli/commands/runtime-data/backup.d.ts.map +1 -1
  232. package/dist/cli/commands/runtime-data/backup.js +34 -36
  233. package/dist/cli/commands/runtime-data/backup.js.map +1 -1
  234. package/dist/cli/commands/runtime-data/index.d.ts.map +1 -1
  235. package/dist/cli/commands/runtime-data/index.js +38 -39
  236. package/dist/cli/commands/runtime-data/index.js.map +1 -1
  237. package/dist/cli/commands/runtime-data/resource.d.ts +1 -0
  238. package/dist/cli/commands/runtime-data/resource.d.ts.map +1 -1
  239. package/dist/cli/commands/runtime-data/resource.js +92 -33
  240. package/dist/cli/commands/runtime-data/resource.js.map +1 -1
  241. package/dist/cli/commands/runtime-data/restore.d.ts.map +1 -1
  242. package/dist/cli/commands/runtime-data/restore.js +32 -45
  243. package/dist/cli/commands/runtime-data/restore.js.map +1 -1
  244. package/dist/cli/commands/runtime-data/seeds.d.ts.map +1 -1
  245. package/dist/cli/commands/runtime-data/seeds.js +24 -26
  246. package/dist/cli/commands/runtime-data/seeds.js.map +1 -1
  247. package/dist/cli/commands/runtime-data/tunnel.d.ts.map +1 -1
  248. package/dist/cli/commands/runtime-data/tunnel.js +33 -43
  249. package/dist/cli/commands/runtime-data/tunnel.js.map +1 -1
  250. package/dist/cli/host-arguments.d.ts.map +1 -1
  251. package/dist/cli/host-arguments.js +10 -18
  252. package/dist/cli/host-arguments.js.map +1 -1
  253. package/dist/cli/host-nodes.js +1 -1
  254. package/dist/cli/host-nodes.js.map +1 -1
  255. package/dist/cli/index.d.ts +10 -13
  256. package/dist/cli/index.d.ts.map +1 -1
  257. package/dist/cli/index.js +22 -33
  258. package/dist/cli/index.js.map +1 -1
  259. package/dist/cli/lib/api-client.d.ts +10 -5
  260. package/dist/cli/lib/api-client.d.ts.map +1 -1
  261. package/dist/cli/lib/api-client.js +23 -42
  262. package/dist/cli/lib/api-client.js.map +1 -1
  263. package/dist/cli/lib/auth.d.ts +4 -145
  264. package/dist/cli/lib/auth.d.ts.map +1 -1
  265. package/dist/cli/lib/auth.js +8 -515
  266. package/dist/cli/lib/auth.js.map +1 -1
  267. package/dist/cli/lib/cli-login.d.ts +12 -0
  268. package/dist/cli/lib/cli-login.d.ts.map +1 -0
  269. package/dist/cli/lib/cli-login.js +155 -0
  270. package/dist/cli/lib/cli-login.js.map +1 -0
  271. package/dist/cli/lib/cloud-api-url.d.ts +2 -0
  272. package/dist/cli/lib/cloud-api-url.d.ts.map +1 -0
  273. package/dist/cli/lib/cloud-api-url.js +3 -0
  274. package/dist/cli/lib/cloud-api-url.js.map +1 -0
  275. package/dist/cli/lib/commit.d.ts.map +1 -1
  276. package/dist/cli/lib/commit.js +2 -3
  277. package/dist/cli/lib/commit.js.map +1 -1
  278. package/dist/cli/lib/config-revisions.d.ts +9 -0
  279. package/dist/cli/lib/config-revisions.d.ts.map +1 -0
  280. package/dist/cli/lib/config-revisions.js +52 -0
  281. package/dist/cli/lib/config-revisions.js.map +1 -0
  282. package/dist/cli/lib/config.d.ts +0 -4
  283. package/dist/cli/lib/config.d.ts.map +1 -1
  284. package/dist/cli/lib/config.js +3 -5
  285. package/dist/cli/lib/config.js.map +1 -1
  286. package/dist/cli/lib/console-pairing.d.ts +1 -14
  287. package/dist/cli/lib/console-pairing.d.ts.map +1 -1
  288. package/dist/cli/lib/console-pairing.js +48 -60
  289. package/dist/cli/lib/console-pairing.js.map +1 -1
  290. package/dist/cli/lib/contract/backup-schedule-reasons.d.ts.map +1 -1
  291. package/dist/cli/lib/contract/backup-schedule-reasons.js +3 -7
  292. package/dist/cli/lib/contract/backup-schedule-reasons.js.map +1 -1
  293. package/dist/cli/lib/contract/build-settings.d.ts +1 -1
  294. package/dist/cli/lib/contract/build-settings.d.ts.map +1 -1
  295. package/dist/cli/lib/contract/build-settings.js +12 -18
  296. package/dist/cli/lib/contract/build-settings.js.map +1 -1
  297. package/dist/cli/lib/contract/database.d.ts.map +1 -1
  298. package/dist/cli/lib/contract/database.js +7 -13
  299. package/dist/cli/lib/contract/database.js.map +1 -1
  300. package/dist/cli/lib/contract/deployment-resource-labels.d.ts.map +1 -1
  301. package/dist/cli/lib/contract/deployment-resource-labels.js +2 -6
  302. package/dist/cli/lib/contract/deployment-resource-labels.js.map +1 -1
  303. package/dist/cli/lib/contract/deployments.d.ts +1 -0
  304. package/dist/cli/lib/contract/deployments.d.ts.map +1 -1
  305. package/dist/cli/lib/contract/deployments.js +32 -40
  306. package/dist/cli/lib/contract/deployments.js.map +1 -1
  307. package/dist/cli/lib/contract/desired-state.d.ts +3 -1
  308. package/dist/cli/lib/contract/desired-state.d.ts.map +1 -1
  309. package/dist/cli/lib/contract/desired-state.js +33 -50
  310. package/dist/cli/lib/contract/desired-state.js.map +1 -1
  311. package/dist/cli/lib/contract/env-vars.d.ts +37 -0
  312. package/dist/cli/lib/contract/env-vars.d.ts.map +1 -0
  313. package/dist/cli/lib/contract/env-vars.js +6 -0
  314. package/dist/cli/lib/contract/env-vars.js.map +1 -0
  315. package/dist/cli/lib/contract/foreign-credentials.d.ts +14 -27
  316. package/dist/cli/lib/contract/foreign-credentials.d.ts.map +1 -1
  317. package/dist/cli/lib/contract/foreign-credentials.js +19 -32
  318. package/dist/cli/lib/contract/foreign-credentials.js.map +1 -1
  319. package/dist/cli/lib/contract/logs.d.ts.map +1 -1
  320. package/dist/cli/lib/contract/logs.js +26 -34
  321. package/dist/cli/lib/contract/logs.js.map +1 -1
  322. package/dist/cli/lib/contract/managed-email.d.ts.map +1 -1
  323. package/dist/cli/lib/contract/managed-email.js +2 -3
  324. package/dist/cli/lib/contract/managed-email.js.map +1 -1
  325. package/dist/cli/lib/contract/permission-denied.d.ts +16 -0
  326. package/dist/cli/lib/contract/permission-denied.d.ts.map +1 -0
  327. package/dist/cli/lib/contract/permission-denied.js +20 -0
  328. package/dist/cli/lib/contract/permission-denied.js.map +1 -0
  329. package/dist/cli/lib/contract/project-grants.d.ts +16 -0
  330. package/dist/cli/lib/contract/project-grants.d.ts.map +1 -0
  331. package/dist/cli/lib/contract/project-grants.js +58 -0
  332. package/dist/cli/lib/contract/project-grants.js.map +1 -0
  333. package/dist/cli/lib/contract/projects.d.ts.map +1 -1
  334. package/dist/cli/lib/contract/projects.js +2 -3
  335. package/dist/cli/lib/contract/projects.js.map +1 -1
  336. package/dist/cli/lib/contract/public-error-details.d.ts.map +1 -1
  337. package/dist/cli/lib/contract/public-error-details.js +28 -43
  338. package/dist/cli/lib/contract/public-error-details.js.map +1 -1
  339. package/dist/cli/lib/contract/regions.js +2 -2
  340. package/dist/cli/lib/contract/regions.js.map +1 -1
  341. package/dist/cli/lib/contract/runtime-operations.d.ts +16 -0
  342. package/dist/cli/lib/contract/runtime-operations.d.ts.map +1 -1
  343. package/dist/cli/lib/contract/runtime-operations.js +16 -21
  344. package/dist/cli/lib/contract/runtime-operations.js.map +1 -1
  345. package/dist/cli/lib/contract/seeds.d.ts.map +1 -1
  346. package/dist/cli/lib/contract/seeds.js +12 -21
  347. package/dist/cli/lib/contract/seeds.js.map +1 -1
  348. package/dist/cli/lib/contract/source-disconnect-reasons.d.ts.map +1 -1
  349. package/dist/cli/lib/contract/source-disconnect-reasons.js +9 -17
  350. package/dist/cli/lib/contract/source-disconnect-reasons.js.map +1 -1
  351. package/dist/cli/lib/contract/source-repository.d.ts.map +1 -1
  352. package/dist/cli/lib/contract/source-repository.js +5 -9
  353. package/dist/cli/lib/contract/source-repository.js.map +1 -1
  354. package/dist/cli/lib/contract/wire-types.d.ts.map +1 -1
  355. package/dist/cli/lib/contract/wire-types.js +3 -8
  356. package/dist/cli/lib/contract/wire-types.js.map +1 -1
  357. package/dist/cli/lib/contract/wire-values.d.ts.map +1 -1
  358. package/dist/cli/lib/contract/wire-values.js +2 -3
  359. package/dist/cli/lib/contract/wire-values.js.map +1 -1
  360. package/dist/cli/lib/dotenv.d.ts +6 -0
  361. package/dist/cli/lib/dotenv.d.ts.map +1 -1
  362. package/dist/cli/lib/dotenv.js +62 -20
  363. package/dist/cli/lib/dotenv.js.map +1 -1
  364. package/dist/cli/lib/env-file.d.ts.map +1 -1
  365. package/dist/cli/lib/env-file.js +5 -11
  366. package/dist/cli/lib/env-file.js.map +1 -1
  367. package/dist/cli/lib/env-preflight.d.ts +6 -1
  368. package/dist/cli/lib/env-preflight.d.ts.map +1 -1
  369. package/dist/cli/lib/env-preflight.js +91 -63
  370. package/dist/cli/lib/env-preflight.js.map +1 -1
  371. package/dist/cli/lib/errors.d.ts +17 -49
  372. package/dist/cli/lib/errors.d.ts.map +1 -1
  373. package/dist/cli/lib/errors.js +47 -106
  374. package/dist/cli/lib/errors.js.map +1 -1
  375. package/dist/cli/lib/format.d.ts.map +1 -1
  376. package/dist/cli/lib/format.js +3 -5
  377. package/dist/cli/lib/format.js.map +1 -1
  378. package/dist/cli/lib/invocation.d.ts +4 -5
  379. package/dist/cli/lib/invocation.d.ts.map +1 -1
  380. package/dist/cli/lib/invocation.js +5 -33
  381. package/dist/cli/lib/invocation.js.map +1 -1
  382. package/dist/cli/lib/log-stream.d.ts.map +1 -1
  383. package/dist/cli/lib/log-stream.js +15 -23
  384. package/dist/cli/lib/log-stream.js.map +1 -1
  385. package/dist/cli/lib/logger.d.ts.map +1 -1
  386. package/dist/cli/lib/logger.js +7 -12
  387. package/dist/cli/lib/logger.js.map +1 -1
  388. package/dist/cli/lib/organization.d.ts.map +1 -1
  389. package/dist/cli/lib/organization.js +5 -13
  390. package/dist/cli/lib/organization.js.map +1 -1
  391. package/dist/cli/lib/project-link.d.ts.map +1 -1
  392. package/dist/cli/lib/project-link.js +2 -4
  393. package/dist/cli/lib/project-link.js.map +1 -1
  394. package/dist/cli/lib/resolve.d.ts +1 -6
  395. package/dist/cli/lib/resolve.d.ts.map +1 -1
  396. package/dist/cli/lib/resolve.js +26 -48
  397. package/dist/cli/lib/resolve.js.map +1 -1
  398. package/dist/cli/lib/source-repository-link.d.ts.map +1 -1
  399. package/dist/cli/lib/source-repository-link.js +6 -9
  400. package/dist/cli/lib/source-repository-link.js.map +1 -1
  401. package/dist/cli/lib/terminal-output.d.ts +4 -0
  402. package/dist/cli/lib/terminal-output.d.ts.map +1 -1
  403. package/dist/cli/lib/terminal-output.js +35 -18
  404. package/dist/cli/lib/terminal-output.js.map +1 -1
  405. package/dist/cli/lib/types.d.ts +3 -7
  406. package/dist/cli/lib/types.d.ts.map +1 -1
  407. package/dist/cli/lib/types.js.map +1 -1
  408. package/dist/cli/lib/utf8.d.ts +2 -0
  409. package/dist/cli/lib/utf8.d.ts.map +1 -0
  410. package/dist/cli/lib/utf8.js +12 -0
  411. package/dist/cli/lib/utf8.js.map +1 -0
  412. package/dist/cli/root-options.d.ts.map +1 -1
  413. package/dist/cli/root-options.js +11 -14
  414. package/dist/cli/root-options.js.map +1 -1
  415. package/dist/cli-plugin.d.ts.map +1 -1
  416. package/dist/cli-plugin.js +2 -6
  417. package/dist/cli-plugin.js.map +1 -1
  418. package/dist/cloud-config-module.js +2 -2
  419. package/dist/cloud-config-module.js.map +1 -1
  420. package/dist/dev/cli-host.d.ts.map +1 -1
  421. package/dist/dev/cli-host.js +16 -19
  422. package/dist/dev/cli-host.js.map +1 -1
  423. package/dist/dev/dashboard-vite-config.d.ts.map +1 -1
  424. package/dist/dev/dashboard-vite-config.js +17 -20
  425. package/dist/dev/dashboard-vite-config.js.map +1 -1
  426. package/dist/dev/dev-command.d.ts.map +1 -1
  427. package/dist/dev/dev-command.js +72 -55
  428. package/dist/dev/dev-command.js.map +1 -1
  429. package/dist/dev/dev-config.d.ts +3 -0
  430. package/dist/dev/dev-config.d.ts.map +1 -1
  431. package/dist/dev/dev-config.js +43 -13
  432. package/dist/dev/dev-config.js.map +1 -1
  433. package/dist/dev/dev-migrate.js +7 -11
  434. package/dist/dev/dev-migrate.js.map +1 -1
  435. package/dist/dev/dev-process.d.ts.map +1 -1
  436. package/dist/dev/dev-process.js +6 -10
  437. package/dist/dev/dev-process.js.map +1 -1
  438. package/dist/dev/dev-server.js +7 -9
  439. package/dist/dev/dev-server.js.map +1 -1
  440. package/dist/dev/dev-worker.js +5 -3
  441. package/dist/dev/dev-worker.js.map +1 -1
  442. package/dist/dev/local-services.d.ts.map +1 -1
  443. package/dist/dev/local-services.js +163 -106
  444. package/dist/dev/local-services.js.map +1 -1
  445. package/dist/dev/project-layout.d.ts.map +1 -1
  446. package/dist/dev/project-layout.js +12 -17
  447. package/dist/dev/project-layout.js.map +1 -1
  448. package/dist/dev/project-plugin-scope.d.ts +2 -0
  449. package/dist/dev/project-plugin-scope.d.ts.map +1 -0
  450. package/dist/dev/project-plugin-scope.js +38 -0
  451. package/dist/dev/project-plugin-scope.js.map +1 -0
  452. package/dist/entrypoint.js +2 -0
  453. package/dist/entrypoint.js.map +1 -1
  454. package/dist/index.d.ts.map +1 -1
  455. package/dist/index.js +3 -6
  456. package/dist/index.js.map +1 -1
  457. package/dist/local-asset-server.d.ts.map +1 -1
  458. package/dist/local-asset-server.js +7 -13
  459. package/dist/local-asset-server.js.map +1 -1
  460. package/dist/local-cache-plugin.d.ts.map +1 -1
  461. package/dist/local-cache-plugin.js +20 -28
  462. package/dist/local-cache-plugin.js.map +1 -1
  463. package/dist/local-cache.d.ts.map +1 -1
  464. package/dist/local-cache.js +40 -55
  465. package/dist/local-cache.js.map +1 -1
  466. package/dist/local-core.d.ts.map +1 -1
  467. package/dist/local-core.js +3 -5
  468. package/dist/local-core.js.map +1 -1
  469. package/dist/local-dashboard-plugin.d.ts.map +1 -1
  470. package/dist/local-dashboard-plugin.js +6 -11
  471. package/dist/local-dashboard-plugin.js.map +1 -1
  472. package/dist/local-database.d.ts.map +1 -1
  473. package/dist/local-database.js +20 -23
  474. package/dist/local-database.js.map +1 -1
  475. package/dist/local-durable-execution-plugin.d.ts +12 -0
  476. package/dist/local-durable-execution-plugin.d.ts.map +1 -1
  477. package/dist/local-durable-execution-plugin.js +296 -24
  478. package/dist/local-durable-execution-plugin.js.map +1 -1
  479. package/dist/local-runtime-guard.d.ts +2 -0
  480. package/dist/local-runtime-guard.d.ts.map +1 -1
  481. package/dist/local-runtime-guard.js +40 -3
  482. package/dist/local-runtime-guard.js.map +1 -1
  483. package/dist/local-runtime.d.ts.map +1 -1
  484. package/dist/local-runtime.js +51 -48
  485. package/dist/local-runtime.js.map +1 -1
  486. package/package.json +16 -9
  487. package/dist/cli/commands/identity-context/login.d.ts +0 -2
  488. package/dist/cli/commands/identity-context/login.d.ts.map +0 -1
  489. package/dist/cli/commands/identity-context/login.js +0 -158
  490. package/dist/cli/commands/identity-context/login.js.map +0 -1
  491. package/dist/cli/commands/identity-context/logout.d.ts +0 -2
  492. package/dist/cli/commands/identity-context/logout.d.ts.map +0 -1
  493. package/dist/cli/commands/identity-context/logout.js +0 -11
  494. package/dist/cli/commands/identity-context/logout.js.map +0 -1
  495. package/dist/cli/commands/identity-context/org-switch.d.ts +0 -3
  496. package/dist/cli/commands/identity-context/org-switch.d.ts.map +0 -1
  497. package/dist/cli/commands/identity-context/org-switch.js +0 -83
  498. package/dist/cli/commands/identity-context/org-switch.js.map +0 -1
  499. package/dist/cli/commands/identity-context/whoami.d.ts +0 -3
  500. package/dist/cli/commands/identity-context/whoami.d.ts.map +0 -1
  501. package/dist/cli/commands/identity-context/whoami.js +0 -101
  502. package/dist/cli/commands/identity-context/whoami.js.map +0 -1
  503. package/dist/cli/lib/console-credential.d.ts +0 -55
  504. package/dist/cli/lib/console-credential.d.ts.map +0 -1
  505. package/dist/cli/lib/console-credential.js +0 -164
  506. package/dist/cli/lib/console-credential.js.map +0 -1
  507. package/dist/cli/lib/console-origins.d.ts +0 -30
  508. package/dist/cli/lib/console-origins.d.ts.map +0 -1
  509. package/dist/cli/lib/console-origins.js +0 -87
  510. package/dist/cli/lib/console-origins.js.map +0 -1
  511. package/dist/cli/lib/console-session-lock.d.ts +0 -39
  512. package/dist/cli/lib/console-session-lock.d.ts.map +0 -1
  513. package/dist/cli/lib/console-session-lock.js +0 -235
  514. package/dist/cli/lib/console-session-lock.js.map +0 -1
  515. package/dist/cli/lib/console-session.d.ts +0 -47
  516. package/dist/cli/lib/console-session.d.ts.map +0 -1
  517. package/dist/cli/lib/console-session.js +0 -235
  518. package/dist/cli/lib/console-session.js.map +0 -1
  519. package/dist/cli/lib/file-lock.d.ts +0 -23
  520. package/dist/cli/lib/file-lock.d.ts.map +0 -1
  521. package/dist/cli/lib/file-lock.js +0 -121
  522. package/dist/cli/lib/file-lock.js.map +0 -1
@@ -1,32 +1,304 @@
1
- import { CLOUD_PLUGIN_COMPATIBILITY } from "@vendure/cloud-config";
1
+ import { realpathSync } from "node:fs";
2
+ import { createRequire } from "node:module";
3
+ import { join } from "node:path";
4
+ import { CLOUD_PLUGIN_COMPATIBILITY, DurableWorkflowNotFoundError, durableWorkflowSteps, installCloudDurableWorkflows, listDurableWorkflowStatuses, readDurableWorkflowStatus, } from "@vendure/cloud-config";
2
5
  import { PluginCommonModule, VendurePlugin } from "@vendure/core";
3
- // The local runtime's answer to the durable-execution capability, and today it is an empty module.
4
- //
5
- // **It runs nothing, and there is nothing yet for it to run.** `declareTenantWorkflows` is in
6
- // `@vendure/cloud-config`, so a customer can declare a workflow here and on the platform alike. The
7
- // half that starts one is not reachable from either: the managed submission path lives on
8
- // `TenantDurableExecution` in `@vendure-cloud/cloud-runtime`, which a customer never installs, and
9
- // nothing in this package offers an equivalent. So a declared workflow is a declaration and no more,
10
- // whichever runtime reads it, and this plugin exists to keep the capability inventory complete
11
- // rather than to behave.
12
- //
13
- // **What it will do when the submission half lands is run the workflow and record nothing.** On the
14
- // platform a workflow is a row in a `dbos` schema: it survives the process, resumes from its last
15
- // completed step, and starts exactly once for a given id. A local substitute cannot be that. Running
16
- // a real executor here was considered and is worse — `@vendure/cloud` supervises the server, the
17
- // worker and the migration run, so a substitute that created the schema would reproduce at laptop
18
- // scale the DDL race ADR-0060 removes on the platform side, and it would put the durable execution
19
- // SDK in the dependency tree of every application that installs this package.
20
- //
21
- // So recovery is not testable locally, by design, and the deployed environment is where it is
22
- // exercised. When the submission half lands, this header says what it does instead of what it will.
6
+ const SCHEMA = "dbos";
7
+ const QUEUE = "vendure-cloud.tenant-workflows";
8
+ const APPLICATION_NAME = "vendure-dev";
9
+ // Duplicates `TERMINAL_WORKFLOW_STATUSES` and the query in
10
+ // `packages/cloud-runtime/src/durable-execution/unfinished-runs.ts`, which this published package
11
+ // cannot import. `local-durable-workflows.test.ts` fails when the status lists differ.
12
+ export const TERMINAL_WORKFLOW_STATUSES = [
13
+ "SUCCESS",
14
+ "ERROR",
15
+ "CANCELLED",
16
+ "MAX_RECOVERY_ATTEMPTS_EXCEEDED",
17
+ ];
18
+ const UNFINISHED_RUNS_SQL = `
19
+ SELECT CASE WHEN COALESCE(class_name, '') = '' THEN name ELSE class_name || '.' || name END
20
+ AS workflow,
21
+ count(*)::int AS count
22
+ FROM ${SCHEMA}.workflow_status
23
+ WHERE (application_name = $1 OR application_name IS NULL)
24
+ AND status <> ALL ($2::text[])
25
+ GROUP BY 1`;
26
+ // Fixed so a restarted worker recovers the workflows the previous one left running.
27
+ const APPLICATION_VERSION = "local";
28
+ export class LocalDurableWorkflowError extends Error {
29
+ constructor(message, options) {
30
+ super(message, options);
31
+ this.name = "LocalDurableWorkflowError";
32
+ }
33
+ }
34
+ const SDK = "@dbos-inc/dbos-sdk";
35
+ // Resolved from this package. `durable-workflows.mdx` requires the project to install one copy, so
36
+ // the copy found here is the one the application registers its workflows with. A second copy is
37
+ // refused, because workflows registered on it would never run.
38
+ export function findDbosSdk(resolveHere, resolveFromProject) {
39
+ const here = resolveOrNull(resolveHere);
40
+ const project = resolveOrNull(resolveFromProject);
41
+ if (here === null) {
42
+ if (project === null)
43
+ return null;
44
+ throw new LocalDurableWorkflowError(`Vendure Cloud: this project installs \`${SDK}\` at ${project}, and \`@vendure/cloud\` cannot resolve it from where it is installed, so durable workflows cannot run. Install both in the same \`node_modules\`; with pnpm, set \`node-linker=hoisted\` in \`.npmrc\`.\n`);
45
+ }
46
+ if (project !== null && realpathSync(project) !== realpathSync(here)) {
47
+ throw new LocalDurableWorkflowError(`Vendure Cloud: this project resolves two copies of \`${SDK}\`, at ${project} and at ${here}. Workflows registered with the first would never run. Install one copy; with pnpm, set \`node-linker=hoisted\` in \`.npmrc\`.\n`);
48
+ }
49
+ return here;
50
+ }
51
+ function resolveOrNull(resolve) {
52
+ try {
53
+ return resolve(SDK);
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ }
59
+ const requireHere = createRequire(import.meta.url);
60
+ function sdkPath() {
61
+ return findDbosSdk(requireHere.resolve, createRequire(join(process.cwd(), "package.json")).resolve);
62
+ }
63
+ // Loading the SDK replaces `DBOS.setConfig` and `DBOS.launch` with refusals and keeps the originals
64
+ // for the worker's launch.
65
+ let sdk;
66
+ function loadSdk() {
67
+ if (sdk !== undefined)
68
+ return sdk;
69
+ const path = sdkPath();
70
+ if (path === null) {
71
+ sdk = null;
72
+ return sdk;
73
+ }
74
+ const module = requireHere(path);
75
+ const { DBOS } = module;
76
+ sdk = { module, setConfig: DBOS.setConfig, launch: DBOS.launch };
77
+ DBOS.setConfig = () => {
78
+ throw launcherRefusal("DBOS.setConfig()");
79
+ };
80
+ DBOS.launch = async () => {
81
+ throw launcherRefusal("DBOS.launch()");
82
+ };
83
+ return sdk;
84
+ }
85
+ // Called before the Cloud Config is loaded, so a launch at a module's top level fails at its call.
86
+ export function refuseOtherLocalDbosLaunchers() {
87
+ loadSdk();
88
+ }
89
+ // Resolves without loading, so the announcement patches nothing and agrees with the launch.
90
+ export function localDurableWorkflowsAvailable() {
91
+ return sdkPath() !== null;
92
+ }
93
+ function requireSdk() {
94
+ const loaded = loadSdk();
95
+ if (!loaded) {
96
+ throw new LocalDurableWorkflowError("Vendure Cloud: durable workflows need `@dbos-inc/dbos-sdk`, and this project does not install it. Add it as a development dependency.\n");
97
+ }
98
+ return loaded.module;
99
+ }
100
+ // Duplicates `packages/cloud-runtime/src/durable-execution/dbos-ownership.ts`, which this published
101
+ // package cannot import.
102
+ function launcherRefusal(call) {
103
+ return new LocalDurableWorkflowError(`Vendure Cloud: ${call} was called by code in this application. Vendure Cloud configures and launches durable execution itself, in the local worker. Remove the call, or run the plugin that makes it in its Vendure Cloud hosted mode. Refusing to boot.\n`);
104
+ }
105
+ function systemDatabaseUrl(database) {
106
+ const user = encodeURIComponent(database.username);
107
+ const password = encodeURIComponent(database.password);
108
+ return `postgresql://${user}:${password}@${database.host}:${database.port}/${encodeURIComponent(database.database)}`;
109
+ }
110
+ class LocalDurableWorkflows {
111
+ database;
112
+ clientPromise;
113
+ // A client built against one database is kept until the application closes, so a second database
114
+ // while it is open is refused.
115
+ target(database) {
116
+ if (this.clientPromise &&
117
+ this.database &&
118
+ systemDatabaseUrl(this.database) !== systemDatabaseUrl(database)) {
119
+ throw new LocalDurableWorkflowError("Vendure Cloud: this process composed the local runtime against a second database while durable workflows were in use on the first. Close the first application before composing another.\n");
120
+ }
121
+ this.database = database;
122
+ }
123
+ systemDatabaseUrl() {
124
+ if (!this.database) {
125
+ throw new LocalDurableWorkflowError("Vendure Cloud: durable workflows were used before the local runtime composed its configuration, so there is no database to run them on.\n");
126
+ }
127
+ return systemDatabaseUrl(this.database);
128
+ }
129
+ async start(transaction, options, ...args) {
130
+ if (options.workflowId.trim() === "") {
131
+ throw new LocalDurableWorkflowError("Vendure Cloud: a durable workflow needs an id of your own choosing, which is what stops a retried request starting a second one. Pass a value derived from the work itself.\n");
132
+ }
133
+ const client = await transactionClient(transaction);
134
+ await (await this.connect())
135
+ .enqueueInTransaction(client, {
136
+ queueName: QUEUE,
137
+ workflowName: options.workflowName,
138
+ ...(options.workflowClassName ? { workflowClassName: options.workflowClassName } : {}),
139
+ ...(options.workflowConfigName ? { workflowConfigName: options.workflowConfigName } : {}),
140
+ workflowID: options.workflowId,
141
+ appVersion: APPLICATION_VERSION,
142
+ }, ...args)
143
+ .catch(explainMissingSchema);
144
+ }
145
+ async send(transaction, workflowId, message, options = {}) {
146
+ const client = await transactionClient(transaction);
147
+ await (await this.connect())
148
+ .sendInTransaction(client, workflowId, message, options.topic, options.idempotencyKey)
149
+ .catch(explainMissingSchema);
150
+ }
151
+ async unfinishedRuns() {
152
+ const rows = await this.query(UNFINISHED_RUNS_SQL, [
153
+ APPLICATION_NAME,
154
+ [...TERMINAL_WORKFLOW_STATUSES],
155
+ ]);
156
+ return Object.fromEntries(rows.map(({ workflow, count }) => [workflow, count]));
157
+ }
158
+ async retrieve(workflowId) {
159
+ return this.withDatabase((database) => readDurableWorkflowStatus(database, SCHEMA, APPLICATION_NAME, workflowId));
160
+ }
161
+ async steps(workflowId) {
162
+ return durableWorkflowSteps(await (await this.connect()).listWorkflowSteps(workflowId));
163
+ }
164
+ async event(workflowId, key, options = {}) {
165
+ return (await this.connect()).getEvent(workflowId, key, options);
166
+ }
167
+ // The SDK's handle waits for a row that never appears when no run has the id.
168
+ async result(workflowId) {
169
+ if (!(await this.retrieve(workflowId)))
170
+ throw new DurableWorkflowNotFoundError(workflowId);
171
+ return (await this.connect()).retrieveWorkflow(workflowId).getResult();
172
+ }
173
+ async list(filter = {}) {
174
+ return this.withDatabase((database) => listDurableWorkflowStatuses(database, SCHEMA, APPLICATION_NAME, filter));
175
+ }
176
+ // The SDK's cancel skips SUCCESS and ERROR only, so a run that finished any other way, or does
177
+ // not exist, is left alone here first. A run that recovery moves to MAX_RECOVERY_ATTEMPTS_EXCEEDED
178
+ // between the read and the update is still marked CANCELLED.
179
+ async cancel(workflowId, options = {}) {
180
+ const run = await this.retrieve(workflowId);
181
+ if (!run || TERMINAL_WORKFLOW_STATUSES.some((status) => status === run.status))
182
+ return;
183
+ await (await this.connect()).cancelWorkflow(workflowId, {
184
+ cancelChildren: options.cancelChildren ?? false,
185
+ });
186
+ }
187
+ async query(sql, values) {
188
+ return this.withDatabase(async (database) => (await database.query(sql, values)).rows);
189
+ }
190
+ // `pg` is loaded here because the local runtime checks it is installed before composing.
191
+ async withDatabase(work) {
192
+ requireSdk();
193
+ const { Client } = requireHere("pg");
194
+ const client = new Client({ connectionString: this.systemDatabaseUrl() });
195
+ await client.connect();
196
+ try {
197
+ return await work(client).catch(explainMissingSchema);
198
+ }
199
+ finally {
200
+ await client.end();
201
+ }
202
+ }
203
+ // Cached as a promise so two concurrent first submissions share one client.
204
+ async connect() {
205
+ if (this.clientPromise)
206
+ return this.clientPromise;
207
+ this.clientPromise = requireSdk().DBOSClient.create({
208
+ systemDatabaseUrl: this.systemDatabaseUrl(),
209
+ systemDatabaseSchemaName: SCHEMA,
210
+ applicationName: APPLICATION_NAME,
211
+ });
212
+ try {
213
+ return await this.clientPromise;
214
+ }
215
+ catch (error) {
216
+ this.clientPromise = undefined;
217
+ throw error;
218
+ }
219
+ }
220
+ async close() {
221
+ const pending = this.clientPromise;
222
+ this.clientPromise = undefined;
223
+ const client = await pending?.catch(() => undefined);
224
+ await client?.destroy();
225
+ }
226
+ }
227
+ // The worker's first launch creates the `dbos` schema, so on a new database a submission made before
228
+ // it fails on a missing table (PostgreSQL code 42P01).
229
+ export function explainMissingSchema(error) {
230
+ if (typeof error === "object" && error !== null && Reflect.get(error, "code") === "42P01") {
231
+ throw new LocalDurableWorkflowError("Vendure Cloud: the local worker has not launched durable execution on this database yet, so its workflow tables do not exist. Wait for the worker to start, then try again.\n", { cause: error });
232
+ }
233
+ throw error;
234
+ }
235
+ // Duplicates `packages/cloud-runtime/src/durable-execution/query-runner-client.ts`, which this
236
+ // published package cannot import.
237
+ // `QueryRunner.connect()` inside an open transaction returns the `pg` client already checked out
238
+ // for it, so the workflow row commits or rolls back with the caller's writes.
239
+ async function transactionClient(transaction) {
240
+ const queryRunner = transaction.queryRunner;
241
+ if (!queryRunner?.isTransactionActive) {
242
+ throw new LocalDurableWorkflowError("Vendure Cloud: a durable workflow must be started or signalled inside an open transaction, so that the data it acts on and the workflow or its signal are committed together. Start or signal it with the entity manager of a transaction, such as `TransactionalConnection.getRepository(ctx, Entity).manager` inside `withTransaction`.\n");
243
+ }
244
+ const connection = await queryRunner.connect();
245
+ if (!isPgClient(connection)) {
246
+ throw new LocalDurableWorkflowError("Vendure Cloud: the local database connection did not yield the PostgreSQL client a durable workflow is started on.\n");
247
+ }
248
+ return connection;
249
+ }
250
+ function isPgClient(value) {
251
+ if (typeof value !== "object" || value === null)
252
+ return false;
253
+ const candidate = value;
254
+ return typeof candidate.query === "function";
255
+ }
256
+ const host = new LocalDurableWorkflows();
257
+ let hostInstalled = false;
258
+ // Every run mode installs the host before composing, so a plugin's `configure()` finds it in
259
+ // `migrate` too.
260
+ export function installLocalDurableWorkflows(database) {
261
+ refuseOtherLocalDbosLaunchers();
262
+ if (!hostInstalled) {
263
+ installCloudDurableWorkflows(host);
264
+ hostInstalled = true;
265
+ }
266
+ host.target(database);
267
+ }
268
+ let launched = false;
269
+ // Called once the worker's bootstrap has resolved, after every plugin registered its workflows.
270
+ // Only the worker launches, so only it runs the engine's schema migrations. A project that does not
271
+ // install the SDK has no workflows to run.
272
+ export async function launchLocalDurableExecution() {
273
+ const loaded = loadSdk();
274
+ if (!loaded)
275
+ return;
276
+ const { DBOS } = loaded.module;
277
+ if (DBOS.isInitialized()) {
278
+ throw new LocalDurableWorkflowError("Vendure Cloud: durable execution was already launched by code in this application before Vendure Cloud launched it. Vendure Cloud configures and launches durable execution itself; remove the other launch. Refusing to boot.\n");
279
+ }
280
+ loaded.setConfig.call(DBOS, {
281
+ name: APPLICATION_NAME,
282
+ applicationVersion: APPLICATION_VERSION,
283
+ systemDatabaseUrl: host.systemDatabaseUrl(),
284
+ systemDatabaseSchemaName: SCHEMA,
285
+ });
286
+ await loaded.launch.call(DBOS);
287
+ launched = true;
288
+ await DBOS.registerQueue(QUEUE);
289
+ }
23
290
  export class LocalDurableExecutionPlugin {
291
+ async onApplicationShutdown() {
292
+ if (launched) {
293
+ launched = false;
294
+ await requireSdk().DBOS.shutdown();
295
+ }
296
+ await host.close();
297
+ }
24
298
  }
25
299
  VendurePlugin({
26
300
  imports: [PluginCommonModule],
27
- // No entities, for the reason the managed binding declares none: the platform's workflow tables
28
- // are created outside TypeORM's ledger, so a table declared on one side and not the other is a
29
- // table nobody can write a migration for.
301
+ // No entities, as in the managed binding: the `dbos` schema is created outside TypeORM's ledger.
30
302
  entities: [],
31
303
  compatibility: CLOUD_PLUGIN_COMPATIBILITY,
32
304
  })(LocalDurableExecutionPlugin);
@@ -1 +1 @@
1
- {"version":3,"file":"local-durable-execution-plugin.js","sourceRoot":"","sources":["../src/local-durable-execution-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAElE,mGAAmG;AACnG,EAAE;AACF,8FAA8F;AAC9F,oGAAoG;AACpG,0FAA0F;AAC1F,mGAAmG;AACnG,qGAAqG;AACrG,+FAA+F;AAC/F,yBAAyB;AACzB,EAAE;AACF,oGAAoG;AACpG,kGAAkG;AAClG,qGAAqG;AACrG,iGAAiG;AACjG,kGAAkG;AAClG,mGAAmG;AACnG,8EAA8E;AAC9E,EAAE;AACF,8FAA8F;AAC9F,oGAAoG;AAEpG,MAAM,OAAO,2BAA2B;CAAG;AAE3C,aAAa,CAAC;IACZ,OAAO,EAAE,CAAC,kBAAkB,CAAC;IAC7B,gGAAgG;IAChG,+FAA+F;IAC/F,0CAA0C;IAC1C,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,0BAA0B;CAC1C,CAAC,CAAC,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"local-durable-execution-plugin.js","sourceRoot":"","sources":["../src/local-durable-execution-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
+ export declare const MANAGED_RUNTIME_ENV_NAMES: readonly ["VC_ENVIRONMENT_ID", "VC_VENDURE_CONFIG", "VC_SERVER_PORT", "VC_AWS_REGION", "VC_DATABASE_HOST", "VC_DATABASE_PORT", "VC_DATABASE_NAME", "VC_DATABASE_USER", "VC_SUPERADMIN_IDENTIFIER", "VC_SUPERADMIN_PASSWORD", "VC_ASSET_BUCKET_NAME", "VC_PLATFORM_HOSTNAME", "VC_CACHE_HOST", "VC_CACHE_PORT", "VC_CACHE_NAME", "VC_CACHE_USER", "VC_JOB_QUEUE_URL", "VC_WAKE_QUEUE_URL", "VC_WORKER_SERVICE_NAME", "VC_DURABLE_EXECUTION_ADMITTED", "VC_ARTIFACT_DIGEST"];
1
2
  export declare function assertLocalRuntimeAllowed(environment: NodeJS.ProcessEnv): void;
3
+ export declare function isLoopbackHost(host: string): boolean;
2
4
  //# sourceMappingURL=local-runtime-guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-runtime-guard.d.ts","sourceRoot":"","sources":["../src/local-runtime-guard.ts"],"names":[],"mappings":"AAEA,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAM9E"}
1
+ {"version":3,"file":"local-runtime-guard.d.ts","sourceRoot":"","sources":["../src/local-runtime-guard.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,yBAAyB,4cAsB5B,CAAC;AAEX,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAY9E;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIpD"}
@@ -1,7 +1,44 @@
1
- const MANAGED_ENVIRONMENT_MARKER = "VC_ENVIRONMENT_ID";
1
+ // The configuration a deployed VC Environment's runtime receives (ADR-0030). Not every `VC_*` name:
2
+ // a workspace's own `.env` sets `VC_*` ports for its compose services. `local-runtime-guard.test.ts`
3
+ // keeps this list equal to `CLOUD_RUNTIME_ENV` and `CLOUD_RUNTIME_OPTIONAL_ENV` in
4
+ // `packages/runtime-contract`, which this published package cannot depend on.
5
+ export const MANAGED_RUNTIME_ENV_NAMES = [
6
+ "VC_ENVIRONMENT_ID",
7
+ "VC_VENDURE_CONFIG",
8
+ "VC_SERVER_PORT",
9
+ "VC_AWS_REGION",
10
+ "VC_DATABASE_HOST",
11
+ "VC_DATABASE_PORT",
12
+ "VC_DATABASE_NAME",
13
+ "VC_DATABASE_USER",
14
+ "VC_SUPERADMIN_IDENTIFIER",
15
+ "VC_SUPERADMIN_PASSWORD",
16
+ "VC_ASSET_BUCKET_NAME",
17
+ "VC_PLATFORM_HOSTNAME",
18
+ "VC_CACHE_HOST",
19
+ "VC_CACHE_PORT",
20
+ "VC_CACHE_NAME",
21
+ "VC_CACHE_USER",
22
+ "VC_JOB_QUEUE_URL",
23
+ "VC_WAKE_QUEUE_URL",
24
+ "VC_WORKER_SERVICE_NAME",
25
+ "VC_DURABLE_EXECUTION_ADMITTED",
26
+ "VC_ARTIFACT_DIGEST",
27
+ ];
2
28
  export function assertLocalRuntimeAllowed(environment) {
3
- if (environment[MANAGED_ENVIRONMENT_MARKER] === undefined)
29
+ const present = MANAGED_RUNTIME_ENV_NAMES.filter((name) => environment[name] !== undefined);
30
+ if (present.length === 0)
4
31
  return;
5
- throw new Error("Vendure Cloud: managed configuration is present, but the platform runtime entrypoint is not running. Refusing to boot with local substitutes.");
32
+ throw new Error([
33
+ "Vendure Cloud: managed configuration is present, but the platform runtime entrypoint is not running. Refusing to boot with local substitutes.",
34
+ ` This process carries ${present.join(", ")}, which local substitutes do not accept.`,
35
+ " Unset them, or start a new terminal without them, and run the command again.",
36
+ "",
37
+ ].join("\n"));
38
+ }
39
+ // A local substitute reaches only this machine. Any other host could be a deployed environment's
40
+ // database or cache, and connecting to it would let a development run write to it.
41
+ export function isLoopbackHost(host) {
42
+ return (host === "localhost" || host === "::1" || host === "[::1]" || /^127(\.\d{1,3}){3}$/.test(host));
6
43
  }
7
44
  //# sourceMappingURL=local-runtime-guard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-runtime-guard.js","sourceRoot":"","sources":["../src/local-runtime-guard.ts"],"names":[],"mappings":"AAAA,MAAM,0BAA0B,GAAG,mBAAmB,CAAC;AAEvD,MAAM,UAAU,yBAAyB,CAAC,WAA8B;IACtE,IAAI,WAAW,CAAC,0BAA0B,CAAC,KAAK,SAAS;QAAE,OAAO;IAElE,MAAM,IAAI,KAAK,CACb,+IAA+I,CAChJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"local-runtime-guard.js","sourceRoot":"","sources":["../src/local-runtime-guard.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,qGAAqG;AACrG,mFAAmF;AACnF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,0BAA0B;IAC1B,wBAAwB;IACxB,sBAAsB;IACtB,sBAAsB;IACtB,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,mBAAmB;IACnB,wBAAwB;IACxB,+BAA+B;IAC/B,oBAAoB;CACZ,CAAC;AAEX,MAAM,UAAU,yBAAyB,CAAC,WAA8B;IACtE,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,IAAI,KAAK,CACb;QACE,+IAA+I;QAC/I,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;QACtF,gFAAgF;QAChF,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,CACL,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/F,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"local-runtime.d.ts","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAWpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAKL,KAAK,aAAa,EAElB,SAAS,EACT,eAAe,EAEhB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,uBAAuB,EAG7B,MAAM,qBAAqB,CAAC;AAS7B,MAAM,WAAW,mBAAmB;IAGlC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IAInC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAG7B,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAGvC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,mBAAwB,GAChC,UAAU,CAAC,OAAO,SAAS,CAAC,CAE9B;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,mBAAwB,GAChC,UAAU,CAAC,OAAO,eAAe,CAAC,CAEpC;AAID,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,qBAAa,yBAA0B,SAAQ,KAAK;;CAOnD;AAED,qBAAa,yBAA0B,SAAQ,KAAK;;CAanD;AAsBD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,mBAAwB,GAChC,aAAa,CAyFf"}
1
+ {"version":3,"file":"local-runtime.d.ts","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAWpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAKL,KAAK,aAAa,EAElB,SAAS,EACT,eAAe,EAEhB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,uBAAuB,EAG7B,MAAM,qBAAqB,CAAC;AAa7B,MAAM,WAAW,mBAAmB;IAGlC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IAGnC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAG7B,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAGvC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,mBAAwB,GAChC,UAAU,CAAC,OAAO,SAAS,CAAC,CAE9B;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,mBAAwB,GAChC,UAAU,CAAC,OAAO,eAAe,CAAC,CAUpC;AAID,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,qBAAa,yBAA0B,SAAQ,KAAK;;CAOnD;AAED,qBAAa,yBAA0B,SAAQ,KAAK;;CAanD;AA6BD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,mBAAwB,GAChC,aAAa,CAiFf"}
@@ -7,38 +7,43 @@ import { localCachePlugin } from "./local-cache-plugin.js";
7
7
  import { assertLocalCacheDriverAvailable, describeLocalCache, resolveLocalCache, } from "./local-cache.js";
8
8
  import { DEFAULT_VITE_DEV_SERVER_PORT, localDashboardPlugin } from "./local-dashboard-plugin.js";
9
9
  import { assertLocalDatabaseDriverAvailable, resolveLocalDatabase, } from "./local-database.js";
10
- import { LocalDurableExecutionPlugin } from "./local-durable-execution-plugin.js";
10
+ import { LocalDurableExecutionPlugin, installLocalDurableWorkflows, launchLocalDurableExecution, localDurableWorkflowsAvailable, } from "./local-durable-execution-plugin.js";
11
11
  import { assertLocalRuntimeAllowed } from "./local-runtime-guard.js";
12
- // Where the local runtime keeps the files it writes, relative to the working directory the
13
- // application was started from. One directory rather than several, so nothing the substitutes
14
- // produce lands among the customer's own files.
12
+ // Where the local runtime keeps the files it writes, relative to the working directory, apart from
13
+ // the customer's own files.
15
14
  const LOCAL_STATE_DIR = ".vendure-cloud";
16
15
  export async function bootstrapLocalServer(handle, options = {}) {
17
16
  return bootstrap(await composeWithDeclaredMigrations(handle, options));
18
17
  }
19
18
  export async function bootstrapLocalWorker(handle, options = {}) {
20
- return bootstrapWorker(await composeWithDeclaredMigrations(handle, options));
19
+ const worker = await bootstrapWorker(await composeWithDeclaredMigrations(handle, options));
20
+ try {
21
+ await launchLocalDurableExecution();
22
+ }
23
+ catch (error) {
24
+ // The open app would otherwise keep the process alive, and the supervisor would not see it fail.
25
+ await worker.app.close();
26
+ throw error;
27
+ }
28
+ return worker;
21
29
  }
22
- // The local `migrate` run mode. The application's own migration chain is what builds its schema,
23
- // here and on a deploy alike, so this runs that chain and creates nothing outside it.
30
+ // The local `migrate` run mode. It runs the application's migration chain and creates nothing
31
+ // outside it.
24
32
  export async function runLocalMigrations(handle, options = {}) {
33
+ installDurableWorkflowHost(options);
25
34
  const migrations = options.migrations ?? (await declaredMigrations(handle));
26
- // Checked here rather than during composition. Composition runs in all three run modes and knows
27
- // nothing about the state of the database, and a server booting against a database its migrations
28
- // already built is legitimate. This is the one run mode where an empty chain is actionable.
35
+ // Checked here, not during composition: a server booting against a database its migrations
36
+ // already built is legitimate.
29
37
  if (migrations.length === 0) {
30
38
  throw new NoDeclaredMigrationsError();
31
39
  }
32
- // `runMigrations` reports a failed migration by setting the exit code and returning, rather than
33
- // by throwing (`packages/core/src/migrate.ts`, read against `@vendure/core@3.7.2`: it rethrows
34
- // only under Vendure's own CLI). Without the check below, a chain that stopped part of the way
35
- // through returns normally and whatever called this carries on against a half-built schema.
40
+ // `runMigrations` reports a failed migration by setting the exit code and returning
41
+ // (`packages/core/src/migrate.ts` at `@vendure/core@3.7.2` rethrows only under Vendure's own
42
+ // CLI). Without the check below, a chain that stopped part way returns normally and the caller
43
+ // carries on against a half-built schema.
36
44
  //
37
- // The exit code is put back rather than left set. Throwing is this function's signal, and the
38
- // entrypoint's `main().catch` is what turns that into a non-zero exit for the CLI-shaped process
39
- // — so the process still exits non-zero when nobody handles the failure. A supervisor that calls
40
- // this in its own process and handles the failure would otherwise be left with a process marked
41
- // as failed for something it had already dealt with.
45
+ // The exit code is restored so a supervisor that handles the thrown error is not left with a
46
+ // failed process.
42
47
  const exitCodeBeforeMigrations = process.exitCode;
43
48
  process.exitCode = undefined;
44
49
  try {
@@ -69,10 +74,10 @@ export class NoDeclaredMigrationsError extends Error {
69
74
  this.name = "NoDeclaredMigrationsError";
70
75
  }
71
76
  }
72
- // Loading the declared migrations reads the filesystem and composition is synchronous, so the two
73
- // are split here exactly as `createManagedRuntime` splits them. ADR-0048 is why the array is built
74
- // rather than a glob handed to TypeORM: the order is a property of the array.
77
+ // Loading migrations reads the filesystem and composition is synchronous, so they are split as in
78
+ // `createManagedRuntime`. ADR-0048 requires an array, since a glob does not fix the order.
75
79
  async function composeWithDeclaredMigrations(handle, options) {
80
+ installDurableWorkflowHost(options);
76
81
  if (options.migrations)
77
82
  return composeLocalConfig(handle, options);
78
83
  return composeLocalConfig(handle, {
@@ -80,13 +85,19 @@ async function composeWithDeclaredMigrations(handle, options) {
80
85
  migrations: await declaredMigrations(handle),
81
86
  });
82
87
  }
88
+ // In the run modes and not in `composeLocalConfig`, so composing a configuration changes no
89
+ // process-wide state.
90
+ function installDurableWorkflowHost(options) {
91
+ assertLocalRuntimeAllowed(process.env);
92
+ installLocalDurableWorkflows(resolveLocalDatabase(options.database, process.env));
93
+ }
83
94
  async function declaredMigrations(handle) {
84
95
  const loaded = await readCloudConfig(handle).loadMigrations();
85
96
  return loaded.map(({ migration }) => migration);
86
97
  }
87
98
  export function composeLocalConfig(handle, options = {}) {
88
- // ADR-0043's fail-closed rule, checked at the composition boundary rather than only in the
89
- // entrypoint, because every caller that reaches a substitute reaches it through here.
99
+ // ADR-0043 fail-closed rule. Every substitute is composed through this function, and the run modes
100
+ // also check it before installing the durable workflow host.
90
101
  assertLocalRuntimeAllowed(process.env);
91
102
  assertLocalDatabaseDriverAvailable();
92
103
  assertLocalCacheDriverAvailable();
@@ -95,24 +106,20 @@ export function composeLocalConfig(handle, options = {}) {
95
106
  const assetUploadDir = resolve(options.assetUploadDir ?? `${LOCAL_STATE_DIR}/assets`);
96
107
  const dashboardAppDir = resolve(options.dashboardAppDir ?? `${LOCAL_STATE_DIR}/dashboard`);
97
108
  const viteDevServerPort = options.dashboardViteDevServerPort ?? DEFAULT_VITE_DEV_SERVER_PORT;
98
- // The wrapped plugins the customer may have declared, read before composition because
99
- // composition drops the declaration markers from the array it hands core. The same two calls the
100
- // managed runtime makes, so a route the platform would refuse is refused here too and a preset
101
- // the platform would honour is honoured here.
109
+ // Read before composition, which drops the declaration markers from the array it hands core. The
110
+ // same calls as the managed runtime, so routes and presets are refused or honoured identically.
102
111
  const config = readCloudConfig(handle).config;
103
112
  const dashboard = resolveDashboardSettings(config);
104
113
  const assets = resolveAssetServerSettings(config);
105
114
  const substitutes = {
106
- // A Valkey the server and the worker share, in place of the platform's own cache. Not
107
- // `DefaultCachePlugin`: it keeps the cache in the customer's database and declares `CacheItem`
108
- // and `CacheTag`, and a migration generated from this configuration is the one a deploy applies,
109
- // so those two tables would reach a managed runtime that never reads them (CLO-645).
115
+ // A Valkey shared by the server and worker. `DefaultCachePlugin` declares `CacheItem` and
116
+ // `CacheTag`; a migration generated here is the one a deploy applies, so those tables would
117
+ // reach a managed runtime that never reads them (CLO-645).
110
118
  cache: localCachePlugin(cache),
111
- // The job queue does live in the same database the store runs on. `JobRecord` is declared by
112
- // the managed runtime too, so it is in the customer's migrations either way.
119
+ // The job queue lives in the store's database. `JobRecord` is also declared by the managed
120
+ // runtime, so it is in the customer's migrations either way.
113
121
  jobQueue: DefaultJobQueuePlugin.init({}),
114
- // Vendure's own scheduler, which the managed runtime replaces because it has a worker that
115
- // sleeps. Nothing sleeps locally, so the default is the substitute rather than a stand-in.
122
+ // Vendure's scheduler. The managed runtime replaces it because its worker sleeps.
116
123
  scheduler: DefaultSchedulerPlugin.init(),
117
124
  dashboard: localDashboardPlugin({
118
125
  route: dashboard.route,
@@ -120,8 +127,6 @@ export function composeLocalConfig(handle, options = {}) {
120
127
  viteDevServerPort,
121
128
  }),
122
129
  assets: AssetServerPlugin.init(localAssetServerOptions(assets, assetUploadDir)),
123
- // An empty module. Nothing can start a workflow in either runtime yet, and the plugin's own
124
- // header says why and what it will do when something can.
125
130
  durableExecution: LocalDurableExecutionPlugin,
126
131
  };
127
132
  const announcements = {
@@ -130,15 +135,15 @@ export function composeLocalConfig(handle, options = {}) {
130
135
  scheduler: "Vendure's default scheduler, running in this process",
131
136
  dashboard: `served at /${dashboard.route}, from a Vite development server on port ${viteDevServerPort} while one is listening and from ${dashboardAppDir} otherwise`,
132
137
  assets: `served at /${CLOUD_ASSET_ROUTE}, stored in ${assetUploadDir}`,
133
- durableExecution: "no workflow can be started in either runtime yet; declaring one is supported",
138
+ durableExecution: localDurableWorkflowsAvailable()
139
+ ? "run by the worker, recorded in the dbos schema of the same database"
140
+ : "not run, because this project does not install @dbos-inc/dbos-sdk",
134
141
  };
135
142
  const values = {
136
143
  ...platformDefaultFieldValues(new DefaultSessionCacheStrategy()),
137
- // The two settings a locally generated migration depends on, holding the values the managed
138
- // runtime gives them. `synchronize: false` leaves the schema to the migration chain, so a
139
- // comparison against this database is a comparison against what the migrations built —
140
- // anything that created the schema on the way to serving would leave nothing to generate.
141
- // `migrations` is the customer's own chain, run here in the order a deploy runs it in.
144
+ // `synchronize: false` leaves the schema to the migration chain, so a diff against this
145
+ // database is a diff against what the migrations built. `migrations` is the customer's chain
146
+ // in deploy order.
142
147
  dbConnectionOptions: {
143
148
  type: "postgres",
144
149
  host: database.host,
@@ -146,7 +151,6 @@ export function composeLocalConfig(handle, options = {}) {
146
151
  database: database.database,
147
152
  username: database.username,
148
153
  password: database.password,
149
- // Keep migration progress and failures visible without printing every SQL statement.
150
154
  logging: ["error", "schema"],
151
155
  synchronize: false,
152
156
  migrations: [...(options.migrations ?? [])],
@@ -167,9 +171,8 @@ export function composeLocalConfig(handle, options = {}) {
167
171
  vendurePlugin: VendurePlugin,
168
172
  });
169
173
  }
170
- // One line per capability, read off the inventory rather than written out, so a capability added to
171
- // it cannot reach a developer's terminal unnamed. The database is named on its own line above them
172
- // because it is not one of the capabilities, and without its password because this is printed.
174
+ // One line per capability, read off the inventory so a new capability cannot reach the terminal
175
+ // unnamed. The database line omits the password.
173
176
  function substituteAnnouncement(database, substitutes) {
174
177
  return [
175
178
  "Vendure Cloud local substitutes are active; no cloud infrastructure is in use.",