@salesforce/b2c-tooling-sdk 1.24.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/data/content-schemas/componenttype.json +0 -30
  2. package/data/scapi-snippets/campaign-promotions.js +40 -0
  3. package/data/scapi-snippets/code-version-inspect.js +31 -0
  4. package/data/scapi-snippets/create-product.js +108 -0
  5. package/data/scapi-snippets/failed-job-triage.js +37 -0
  6. package/data/scapi-snippets/job-execution-inspect.js +52 -0
  7. package/data/scapi-snippets/job-execution-review.js +46 -0
  8. package/data/scapi-snippets/manifest.json +220 -0
  9. package/data/scapi-snippets/site-cartridge-inspect.js +27 -0
  10. package/data/tooling/index.json +80 -116
  11. package/dist/esm/auth/index.d.ts +2 -2
  12. package/dist/esm/auth/index.js +1 -1
  13. package/dist/esm/auth/index.js.map +1 -1
  14. package/dist/esm/auth/oauth-implicit.d.ts +1 -0
  15. package/dist/esm/auth/oauth-implicit.js +1 -0
  16. package/dist/esm/auth/oauth-implicit.js.map +1 -1
  17. package/dist/esm/auth/oauth-jwt.d.ts +18 -4
  18. package/dist/esm/auth/oauth-jwt.js +67 -17
  19. package/dist/esm/auth/oauth-jwt.js.map +1 -1
  20. package/dist/esm/auth/oauth-pkce-fallback.d.ts +1 -0
  21. package/dist/esm/auth/oauth-pkce-fallback.js +1 -0
  22. package/dist/esm/auth/oauth-pkce-fallback.js.map +1 -1
  23. package/dist/esm/auth/oauth-pkce.d.ts +1 -0
  24. package/dist/esm/auth/oauth-pkce.js +1 -0
  25. package/dist/esm/auth/oauth-pkce.js.map +1 -1
  26. package/dist/esm/auth/oauth.d.ts +55 -6
  27. package/dist/esm/auth/oauth.js +139 -21
  28. package/dist/esm/auth/oauth.js.map +1 -1
  29. package/dist/esm/auth/resolve.d.ts +37 -0
  30. package/dist/esm/auth/resolve.js +48 -0
  31. package/dist/esm/auth/resolve.js.map +1 -1
  32. package/dist/esm/auth/types.d.ts +44 -0
  33. package/dist/esm/auth/types.js.map +1 -1
  34. package/dist/esm/cli/base-command.d.ts +9 -0
  35. package/dist/esm/cli/base-command.js +31 -0
  36. package/dist/esm/cli/base-command.js.map +1 -1
  37. package/dist/esm/cli/bm-command.d.ts +15 -0
  38. package/dist/esm/cli/bm-command.js +25 -0
  39. package/dist/esm/cli/bm-command.js.map +1 -0
  40. package/dist/esm/cli/code-command.d.ts +14 -0
  41. package/dist/esm/cli/code-command.js +22 -0
  42. package/dist/esm/cli/code-command.js.map +1 -0
  43. package/dist/esm/cli/config.js +3 -0
  44. package/dist/esm/cli/config.js.map +1 -1
  45. package/dist/esm/cli/index.d.ts +5 -1
  46. package/dist/esm/cli/index.js +7 -1
  47. package/dist/esm/cli/index.js.map +1 -1
  48. package/dist/esm/cli/instance-command.d.ts +45 -0
  49. package/dist/esm/cli/instance-command.js +66 -1
  50. package/dist/esm/cli/instance-command.js.map +1 -1
  51. package/dist/esm/cli/job-command.d.ts +37 -16
  52. package/dist/esm/cli/job-command.js +73 -23
  53. package/dist/esm/cli/job-command.js.map +1 -1
  54. package/dist/esm/cli/mrt-command.d.ts +138 -9
  55. package/dist/esm/cli/mrt-command.js +277 -16
  56. package/dist/esm/cli/mrt-command.js.map +1 -1
  57. package/dist/esm/cli/oauth-command.d.ts +1 -1
  58. package/dist/esm/cli/oauth-command.js +2 -0
  59. package/dist/esm/cli/oauth-command.js.map +1 -1
  60. package/dist/esm/cli/webdav-command.d.ts +1 -0
  61. package/dist/esm/clients/cdn-zones.js +2 -5
  62. package/dist/esm/clients/cdn-zones.js.map +1 -1
  63. package/dist/esm/clients/cip.d.ts +12 -3
  64. package/dist/esm/clients/cip.js +85 -30
  65. package/dist/esm/clients/cip.js.map +1 -1
  66. package/dist/esm/clients/custom-apis.js +2 -5
  67. package/dist/esm/clients/custom-apis.js.map +1 -1
  68. package/dist/esm/clients/dual-backend-factory.d.ts +70 -0
  69. package/dist/esm/clients/dual-backend-factory.js +48 -0
  70. package/dist/esm/clients/dual-backend-factory.js.map +1 -0
  71. package/dist/esm/clients/error-utils.d.ts +62 -0
  72. package/dist/esm/clients/error-utils.js +98 -0
  73. package/dist/esm/clients/error-utils.js.map +1 -1
  74. package/dist/esm/clients/granular-replications.js +2 -5
  75. package/dist/esm/clients/granular-replications.js.map +1 -1
  76. package/dist/esm/clients/index.d.ts +28 -3
  77. package/dist/esm/clients/index.js +24 -2
  78. package/dist/esm/clients/index.js.map +1 -1
  79. package/dist/esm/clients/metrics.js +2 -5
  80. package/dist/esm/clients/metrics.js.map +1 -1
  81. package/dist/esm/clients/middleware-registry.d.ts +4 -2
  82. package/dist/esm/clients/middleware-registry.js +3 -1
  83. package/dist/esm/clients/middleware-registry.js.map +1 -1
  84. package/dist/esm/clients/middleware.d.ts +39 -0
  85. package/dist/esm/clients/middleware.js +126 -25
  86. package/dist/esm/clients/middleware.js.map +1 -1
  87. package/dist/esm/clients/mrt-b2c.js +3 -0
  88. package/dist/esm/clients/mrt-b2c.js.map +1 -1
  89. package/dist/esm/clients/mrt.d.ts +27 -10
  90. package/dist/esm/clients/mrt.generated.d.ts +77 -0
  91. package/dist/esm/clients/mrt.js +68 -0
  92. package/dist/esm/clients/mrt.js.map +1 -1
  93. package/dist/esm/clients/preferences.js +2 -5
  94. package/dist/esm/clients/preferences.js.map +1 -1
  95. package/dist/esm/clients/scapi-backend-utils.d.ts +163 -0
  96. package/dist/esm/clients/scapi-backend-utils.js +180 -0
  97. package/dist/esm/clients/scapi-backend-utils.js.map +1 -0
  98. package/dist/esm/clients/scapi-catalogs.d.ts +12 -0
  99. package/dist/esm/clients/scapi-catalogs.generated.d.ts +104 -0
  100. package/dist/esm/clients/scapi-catalogs.generated.js +6 -0
  101. package/dist/esm/clients/scapi-catalogs.generated.js.map +1 -0
  102. package/dist/esm/clients/scapi-catalogs.js +14 -0
  103. package/dist/esm/clients/scapi-catalogs.js.map +1 -0
  104. package/dist/esm/clients/scapi-client-factory.d.ts +81 -0
  105. package/dist/esm/clients/scapi-client-factory.js +84 -0
  106. package/dist/esm/clients/scapi-client-factory.js.map +1 -0
  107. package/dist/esm/clients/scapi-fallback-backend.d.ts +34 -0
  108. package/dist/esm/clients/scapi-fallback-backend.js +132 -0
  109. package/dist/esm/clients/scapi-fallback-backend.js.map +1 -0
  110. package/dist/esm/clients/scapi-jobs.d.ts +32 -0
  111. package/dist/esm/clients/scapi-jobs.generated.d.ts +535 -0
  112. package/dist/esm/clients/scapi-jobs.generated.js +6 -0
  113. package/dist/esm/clients/scapi-jobs.generated.js.map +1 -0
  114. package/dist/esm/clients/scapi-jobs.js +24 -0
  115. package/dist/esm/clients/scapi-jobs.js.map +1 -0
  116. package/dist/esm/clients/scapi-merchant-roles.d.ts +19 -0
  117. package/dist/esm/clients/scapi-merchant-roles.generated.d.ts +726 -0
  118. package/dist/esm/clients/scapi-merchant-roles.generated.js +6 -0
  119. package/dist/esm/clients/scapi-merchant-roles.generated.js.map +1 -0
  120. package/dist/esm/clients/scapi-merchant-roles.js +12 -0
  121. package/dist/esm/clients/scapi-merchant-roles.js.map +1 -0
  122. package/dist/esm/clients/scapi-merchant-users.d.ts +19 -0
  123. package/dist/esm/clients/scapi-merchant-users.generated.d.ts +300 -0
  124. package/dist/esm/clients/scapi-merchant-users.generated.js +6 -0
  125. package/dist/esm/clients/scapi-merchant-users.generated.js.map +1 -0
  126. package/dist/esm/clients/scapi-merchant-users.js +12 -0
  127. package/dist/esm/clients/scapi-merchant-users.js.map +1 -0
  128. package/dist/esm/clients/scapi-schemas.js +2 -5
  129. package/dist/esm/clients/scapi-schemas.js.map +1 -1
  130. package/dist/esm/clients/scapi-scope-tier.d.ts +78 -0
  131. package/dist/esm/clients/scapi-scope-tier.js +113 -0
  132. package/dist/esm/clients/scapi-scope-tier.js.map +1 -0
  133. package/dist/esm/clients/scapi-scripts.d.ts +17 -0
  134. package/dist/esm/clients/scapi-scripts.generated.d.ts +392 -0
  135. package/dist/esm/clients/scapi-scripts.generated.js +6 -0
  136. package/dist/esm/clients/scapi-scripts.generated.js.map +1 -0
  137. package/dist/esm/clients/scapi-scripts.js +12 -0
  138. package/dist/esm/clients/scapi-scripts.js.map +1 -0
  139. package/dist/esm/clients/scapi-sites.d.ts +26 -0
  140. package/dist/esm/clients/scapi-sites.generated.d.ts +500 -0
  141. package/dist/esm/clients/scapi-sites.generated.js +6 -0
  142. package/dist/esm/clients/scapi-sites.generated.js.map +1 -0
  143. package/dist/esm/clients/scapi-sites.js +25 -0
  144. package/dist/esm/clients/scapi-sites.js.map +1 -0
  145. package/dist/esm/clients/slas-shopper.d.ts +19 -0
  146. package/dist/esm/clients/slas-shopper.generated.d.ts +165 -0
  147. package/dist/esm/clients/slas-shopper.generated.js +6 -0
  148. package/dist/esm/clients/slas-shopper.generated.js.map +1 -0
  149. package/dist/esm/clients/slas-shopper.js +35 -0
  150. package/dist/esm/clients/slas-shopper.js.map +1 -0
  151. package/dist/esm/clients/storefront-deployments.d.ts +56 -0
  152. package/dist/esm/clients/storefront-deployments.generated.d.ts +558 -0
  153. package/dist/esm/clients/storefront-deployments.generated.js +6 -0
  154. package/dist/esm/clients/storefront-deployments.generated.js.map +1 -0
  155. package/dist/esm/clients/storefront-deployments.js +24 -0
  156. package/dist/esm/clients/storefront-deployments.js.map +1 -0
  157. package/dist/esm/clients/webdav.js +4 -1
  158. package/dist/esm/clients/webdav.js.map +1 -1
  159. package/dist/esm/compat/dispatcher.d.ts +49 -0
  160. package/dist/esm/compat/dispatcher.js +124 -0
  161. package/dist/esm/compat/dispatcher.js.map +1 -0
  162. package/dist/esm/compat/index.d.ts +10 -0
  163. package/dist/esm/compat/index.js +15 -0
  164. package/dist/esm/compat/index.js.map +1 -0
  165. package/dist/esm/compat/jobs-backend.d.ts +31 -0
  166. package/dist/esm/compat/jobs-backend.js +76 -0
  167. package/dist/esm/compat/jobs-backend.js.map +1 -0
  168. package/dist/esm/config/dw-json.d.ts +4 -0
  169. package/dist/esm/config/dw-json.js.map +1 -1
  170. package/dist/esm/config/index.d.ts +1 -1
  171. package/dist/esm/config/index.js.map +1 -1
  172. package/dist/esm/config/mapping.d.ts +2 -5
  173. package/dist/esm/config/mapping.js +25 -1
  174. package/dist/esm/config/mapping.js.map +1 -1
  175. package/dist/esm/config/resolved-config.d.ts +2 -2
  176. package/dist/esm/config/resolved-config.js.map +1 -1
  177. package/dist/esm/config/sources/env-source.js +17 -0
  178. package/dist/esm/config/sources/env-source.js.map +1 -1
  179. package/dist/esm/config/types.d.ts +21 -2
  180. package/dist/esm/docs/search.js +2 -25
  181. package/dist/esm/docs/search.js.map +1 -1
  182. package/dist/esm/guidance/catalog.d.ts +37 -0
  183. package/dist/esm/guidance/catalog.js +282 -0
  184. package/dist/esm/guidance/catalog.js.map +1 -0
  185. package/dist/esm/guidance/index.d.ts +8 -0
  186. package/dist/esm/guidance/index.js +14 -0
  187. package/dist/esm/guidance/index.js.map +1 -0
  188. package/dist/esm/guidance/markdown.d.ts +10 -0
  189. package/dist/esm/guidance/markdown.js +52 -0
  190. package/dist/esm/guidance/markdown.js.map +1 -0
  191. package/dist/esm/guidance/types.d.ts +92 -0
  192. package/dist/esm/guidance/types.js +17 -0
  193. package/dist/esm/guidance/types.js.map +1 -0
  194. package/dist/esm/index.d.ts +14 -5
  195. package/dist/esm/index.js +14 -2
  196. package/dist/esm/index.js.map +1 -1
  197. package/dist/esm/instance/index.d.ts +96 -2
  198. package/dist/esm/instance/index.js +98 -5
  199. package/dist/esm/instance/index.js.map +1 -1
  200. package/dist/esm/operations/bm-roles/backend.d.ts +4 -0
  201. package/dist/esm/operations/bm-roles/backend.js +11 -0
  202. package/dist/esm/operations/bm-roles/backend.js.map +1 -0
  203. package/dist/esm/operations/bm-roles/index.d.ts +6 -0
  204. package/dist/esm/operations/bm-roles/index.js +4 -0
  205. package/dist/esm/operations/bm-roles/index.js.map +1 -1
  206. package/dist/esm/operations/bm-roles/ocapi-backend.d.ts +17 -0
  207. package/dist/esm/operations/bm-roles/ocapi-backend.js +151 -0
  208. package/dist/esm/operations/bm-roles/ocapi-backend.js.map +1 -0
  209. package/dist/esm/operations/bm-roles/roles.js +13 -17
  210. package/dist/esm/operations/bm-roles/roles.js.map +1 -1
  211. package/dist/esm/operations/bm-roles/scapi-backend.d.ts +27 -0
  212. package/dist/esm/operations/bm-roles/scapi-backend.js +138 -0
  213. package/dist/esm/operations/bm-roles/scapi-backend.js.map +1 -0
  214. package/dist/esm/operations/bm-roles/types.d.ts +49 -0
  215. package/dist/esm/operations/bm-roles/types.js +2 -0
  216. package/dist/esm/operations/bm-roles/types.js.map +1 -0
  217. package/dist/esm/operations/bm-users/backend.d.ts +4 -0
  218. package/dist/esm/operations/bm-users/backend.js +11 -0
  219. package/dist/esm/operations/bm-users/backend.js.map +1 -0
  220. package/dist/esm/operations/bm-users/index.d.ts +11 -3
  221. package/dist/esm/operations/bm-users/index.js +9 -3
  222. package/dist/esm/operations/bm-users/index.js.map +1 -1
  223. package/dist/esm/operations/bm-users/ocapi-backend.d.ts +13 -0
  224. package/dist/esm/operations/bm-users/ocapi-backend.js +92 -0
  225. package/dist/esm/operations/bm-users/ocapi-backend.js.map +1 -0
  226. package/dist/esm/operations/bm-users/scapi-backend.d.ts +23 -0
  227. package/dist/esm/operations/bm-users/scapi-backend.js +199 -0
  228. package/dist/esm/operations/bm-users/scapi-backend.js.map +1 -0
  229. package/dist/esm/operations/bm-users/types.d.ts +99 -0
  230. package/dist/esm/operations/bm-users/types.js +2 -0
  231. package/dist/esm/operations/bm-users/types.js.map +1 -0
  232. package/dist/esm/operations/bm-users/users.d.ts +4 -3
  233. package/dist/esm/operations/bm-users/users.js +23 -19
  234. package/dist/esm/operations/bm-users/users.js.map +1 -1
  235. package/dist/esm/operations/cap/install.js +23 -45
  236. package/dist/esm/operations/cap/install.js.map +1 -1
  237. package/dist/esm/operations/cap/list.js +4 -8
  238. package/dist/esm/operations/cap/list.js.map +1 -1
  239. package/dist/esm/operations/cap/uninstall.js +17 -37
  240. package/dist/esm/operations/cap/uninstall.js.map +1 -1
  241. package/dist/esm/operations/catalogs/catalogs-backend.d.ts +4 -0
  242. package/dist/esm/operations/catalogs/catalogs-backend.js +16 -0
  243. package/dist/esm/operations/catalogs/catalogs-backend.js.map +1 -0
  244. package/dist/esm/operations/catalogs/catalogs-types.d.ts +14 -0
  245. package/dist/esm/operations/catalogs/catalogs-types.js +2 -0
  246. package/dist/esm/operations/catalogs/catalogs-types.js.map +1 -0
  247. package/dist/esm/operations/catalogs/index.d.ts +7 -0
  248. package/dist/esm/operations/catalogs/index.js +10 -0
  249. package/dist/esm/operations/catalogs/index.js.map +1 -0
  250. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.d.ts +8 -0
  251. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.js +36 -0
  252. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.js.map +1 -0
  253. package/dist/esm/operations/catalogs/scapi-catalogs-backend.d.ts +15 -0
  254. package/dist/esm/operations/catalogs/scapi-catalogs-backend.js +42 -0
  255. package/dist/esm/operations/catalogs/scapi-catalogs-backend.js.map +1 -0
  256. package/dist/esm/operations/cip/index.js +10 -2
  257. package/dist/esm/operations/cip/index.js.map +1 -1
  258. package/dist/esm/operations/cip/reports.js +19 -3
  259. package/dist/esm/operations/cip/reports.js.map +1 -1
  260. package/dist/esm/operations/cip/types.d.ts +8 -4
  261. package/dist/esm/operations/code/deploy.d.ts +3 -0
  262. package/dist/esm/operations/code/deploy.js +5 -3
  263. package/dist/esm/operations/code/deploy.js.map +1 -1
  264. package/dist/esm/operations/code/download.d.ts +3 -0
  265. package/dist/esm/operations/code/download.js +5 -5
  266. package/dist/esm/operations/code/download.js.map +1 -1
  267. package/dist/esm/operations/code/index.d.ts +7 -1
  268. package/dist/esm/operations/code/index.js +5 -1
  269. package/dist/esm/operations/code/index.js.map +1 -1
  270. package/dist/esm/operations/code/ocapi-scripts-backend.d.ts +12 -0
  271. package/dist/esm/operations/code/ocapi-scripts-backend.js +40 -0
  272. package/dist/esm/operations/code/ocapi-scripts-backend.js.map +1 -0
  273. package/dist/esm/operations/code/scapi-scripts-backend.d.ts +22 -0
  274. package/dist/esm/operations/code/scapi-scripts-backend.js +94 -0
  275. package/dist/esm/operations/code/scapi-scripts-backend.js.map +1 -0
  276. package/dist/esm/operations/code/scripts-backend.d.ts +17 -0
  277. package/dist/esm/operations/code/scripts-backend.js +40 -0
  278. package/dist/esm/operations/code/scripts-backend.js.map +1 -0
  279. package/dist/esm/operations/code/scripts-types.d.ts +43 -0
  280. package/dist/esm/operations/code/scripts-types.js +2 -0
  281. package/dist/esm/operations/code/scripts-types.js.map +1 -0
  282. package/dist/esm/operations/code/upload-files.d.ts +6 -0
  283. package/dist/esm/operations/code/upload-files.js +58 -7
  284. package/dist/esm/operations/code/upload-files.js.map +1 -1
  285. package/dist/esm/operations/code/versions.d.ts +0 -20
  286. package/dist/esm/operations/code/versions.js +16 -51
  287. package/dist/esm/operations/code/versions.js.map +1 -1
  288. package/dist/esm/operations/code/watch.d.ts +3 -0
  289. package/dist/esm/operations/code/watch.js +3 -2
  290. package/dist/esm/operations/code/watch.js.map +1 -1
  291. package/dist/esm/operations/jobs/discover.d.ts +1 -1
  292. package/dist/esm/operations/jobs/discover.js +51 -21
  293. package/dist/esm/operations/jobs/discover.js.map +1 -1
  294. package/dist/esm/operations/jobs/index.d.ts +14 -57
  295. package/dist/esm/operations/jobs/index.js +15 -59
  296. package/dist/esm/operations/jobs/index.js.map +1 -1
  297. package/dist/esm/operations/jobs/ocapi-mapping.d.ts +34 -0
  298. package/dist/esm/operations/jobs/ocapi-mapping.js +100 -0
  299. package/dist/esm/operations/jobs/ocapi-mapping.js.map +1 -0
  300. package/dist/esm/operations/jobs/run-system-job.d.ts +81 -0
  301. package/dist/esm/operations/jobs/run-system-job.js +137 -0
  302. package/dist/esm/operations/jobs/run-system-job.js.map +1 -0
  303. package/dist/esm/operations/jobs/run.js +16 -4
  304. package/dist/esm/operations/jobs/run.js.map +1 -1
  305. package/dist/esm/operations/jobs/scapi-ops.d.ts +61 -0
  306. package/dist/esm/operations/jobs/scapi-ops.js +214 -0
  307. package/dist/esm/operations/jobs/scapi-ops.js.map +1 -0
  308. package/dist/esm/operations/jobs/site-archive.js +28 -66
  309. package/dist/esm/operations/jobs/site-archive.js.map +1 -1
  310. package/dist/esm/operations/jobs/types.d.ts +46 -0
  311. package/dist/esm/operations/jobs/types.js +2 -0
  312. package/dist/esm/operations/jobs/types.js.map +1 -0
  313. package/dist/esm/operations/jobs/wait-canonical.d.ts +28 -0
  314. package/dist/esm/operations/jobs/wait-canonical.js +48 -0
  315. package/dist/esm/operations/jobs/wait-canonical.js.map +1 -0
  316. package/dist/esm/operations/mrt/bundle.d.ts +164 -2
  317. package/dist/esm/operations/mrt/bundle.js +315 -9
  318. package/dist/esm/operations/mrt/bundle.js.map +1 -1
  319. package/dist/esm/operations/mrt/deployment.d.ts +221 -0
  320. package/dist/esm/operations/mrt/deployment.js +239 -0
  321. package/dist/esm/operations/mrt/deployment.js.map +1 -1
  322. package/dist/esm/operations/mrt/index.d.ts +8 -6
  323. package/dist/esm/operations/mrt/index.js +5 -3
  324. package/dist/esm/operations/mrt/index.js.map +1 -1
  325. package/dist/esm/operations/mrt/mrt-backend.d.ts +117 -0
  326. package/dist/esm/operations/mrt/mrt-backend.js +84 -0
  327. package/dist/esm/operations/mrt/mrt-backend.js.map +1 -0
  328. package/dist/esm/operations/mrt/push.d.ts +83 -1
  329. package/dist/esm/operations/mrt/push.js +102 -1
  330. package/dist/esm/operations/mrt/push.js.map +1 -1
  331. package/dist/esm/operations/sites/cartridges.d.ts +10 -8
  332. package/dist/esm/operations/sites/cartridges.js +35 -67
  333. package/dist/esm/operations/sites/cartridges.js.map +1 -1
  334. package/dist/esm/operations/sites/index.d.ts +10 -6
  335. package/dist/esm/operations/sites/index.js +9 -6
  336. package/dist/esm/operations/sites/index.js.map +1 -1
  337. package/dist/esm/operations/sites/ocapi-sites-backend.d.ts +20 -0
  338. package/dist/esm/operations/sites/ocapi-sites-backend.js +98 -0
  339. package/dist/esm/operations/sites/ocapi-sites-backend.js.map +1 -0
  340. package/dist/esm/operations/sites/scapi-sites-backend.d.ts +33 -0
  341. package/dist/esm/operations/sites/scapi-sites-backend.js +166 -0
  342. package/dist/esm/operations/sites/scapi-sites-backend.js.map +1 -0
  343. package/dist/esm/operations/sites/sites-backend.d.ts +9 -0
  344. package/dist/esm/operations/sites/sites-backend.js +16 -0
  345. package/dist/esm/operations/sites/sites-backend.js.map +1 -0
  346. package/dist/esm/operations/sites/sites-scopes.d.ts +2 -0
  347. package/dist/esm/operations/sites/sites-scopes.js +16 -0
  348. package/dist/esm/operations/sites/sites-scopes.js.map +1 -0
  349. package/dist/esm/operations/sites/sites-types.d.ts +50 -0
  350. package/dist/esm/operations/sites/sites-types.js +2 -0
  351. package/dist/esm/operations/sites/sites-types.js.map +1 -0
  352. package/dist/esm/safety/safety-middleware.d.ts +7 -3
  353. package/dist/esm/safety/safety-middleware.js +13 -9
  354. package/dist/esm/safety/safety-middleware.js.map +1 -1
  355. package/dist/esm/scaffold/sources.js +6 -9
  356. package/dist/esm/scaffold/sources.js.map +1 -1
  357. package/dist/esm/scapi/auth-primitives.d.ts +3 -0
  358. package/dist/esm/scapi/auth-primitives.js +104 -0
  359. package/dist/esm/scapi/auth-primitives.js.map +1 -0
  360. package/dist/esm/scapi/authentication.d.ts +30 -0
  361. package/dist/esm/scapi/authentication.js +136 -0
  362. package/dist/esm/scapi/authentication.js.map +1 -0
  363. package/dist/esm/scapi/catalog.d.ts +29 -0
  364. package/dist/esm/scapi/catalog.js +81 -0
  365. package/dist/esm/scapi/catalog.js.map +1 -0
  366. package/dist/esm/scapi/index.d.ts +12 -0
  367. package/dist/esm/scapi/index.js +13 -0
  368. package/dist/esm/scapi/index.js.map +1 -0
  369. package/dist/esm/scapi/request.d.ts +15 -0
  370. package/dist/esm/scapi/request.js +239 -0
  371. package/dist/esm/scapi/request.js.map +1 -0
  372. package/dist/esm/scapi/runtime.d.ts +20 -0
  373. package/dist/esm/scapi/runtime.js +131 -0
  374. package/dist/esm/scapi/runtime.js.map +1 -0
  375. package/dist/esm/scapi/snippets.d.ts +22 -0
  376. package/dist/esm/scapi/snippets.js +140 -0
  377. package/dist/esm/scapi/snippets.js.map +1 -0
  378. package/dist/esm/scapi/worker-source.d.ts +2 -0
  379. package/dist/esm/scapi/worker-source.js +101 -0
  380. package/dist/esm/scapi/worker-source.js.map +1 -0
  381. package/dist/esm/search/ranking.d.ts +12 -0
  382. package/dist/esm/search/ranking.js +28 -0
  383. package/dist/esm/search/ranking.js.map +1 -0
  384. package/dist/esm/skills/sources.d.ts +2 -2
  385. package/dist/esm/skills/sources.js +10 -2
  386. package/dist/esm/skills/sources.js.map +1 -1
  387. package/dist/esm/skills/types.d.ts +1 -1
  388. package/dist/esm/slas/token.js +33 -94
  389. package/dist/esm/slas/token.js.map +1 -1
  390. package/dist/esm/slas/types.d.ts +5 -0
  391. package/node_modules/@salesforce/b2c-api-schemas/README.md +23 -0
  392. package/node_modules/@salesforce/b2c-api-schemas/manifest.json +576 -0
  393. package/node_modules/@salesforce/b2c-api-schemas/package.json +15 -0
  394. package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +11490 -0
  395. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +3589 -0
  396. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +6544 -0
  397. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +7148 -0
  398. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +4411 -0
  399. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +643 -0
  400. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +295 -0
  401. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +2036 -0
  402. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +327 -0
  403. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +234 -0
  404. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +1542 -0
  405. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +405 -0
  406. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +2531 -0
  407. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +7944 -0
  408. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +292 -0
  409. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +2537 -0
  410. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +517 -0
  411. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +589 -0
  412. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +3600 -0
  413. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +2319 -0
  414. package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +658 -0
  415. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +2649 -0
  416. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +6615 -0
  417. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +2103 -0
  418. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1760 -0
  419. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +640 -0
  420. package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1263 -0
  421. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1259 -0
  422. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +760 -0
  423. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +1047 -0
  424. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1929 -0
  425. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +1542 -0
  426. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +1093 -0
  427. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +1324 -0
  428. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +325 -0
  429. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +631 -0
  430. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +1036 -0
  431. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +5175 -0
  432. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +866 -0
  433. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +747 -0
  434. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +5076 -0
  435. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +509 -0
  436. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +517 -0
  437. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +2961 -0
  438. package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1889 -0
  439. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +7014 -0
  440. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1898 -0
  441. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +622 -0
  442. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +192 -0
  443. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +913 -0
  444. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +630 -0
  445. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +223 -0
  446. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +423 -0
  447. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +1088 -0
  448. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +798 -0
  449. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +607 -0
  450. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1418 -0
  451. package/package.json +24 -3
  452. package/specs/dx-scripts-v1.yaml +409 -0
  453. package/specs/merchant-roles-v1.yaml +1085 -0
  454. package/specs/merchant-users-v1.yaml +398 -0
  455. package/specs/mrt-api-v1.json +105 -0
  456. package/specs/operations-jobs-v1.yaml +793 -0
  457. package/specs/product-catalogs-v1.yaml +111 -0
  458. package/specs/site-sites-v1.yaml +667 -0
  459. package/specs/slas-shopper-v1.yaml +83 -0
  460. package/specs/storefront-deployments-v1.yaml +630 -0
@@ -15,6 +15,8 @@ import { createWriteStream } from 'node:fs';
15
15
  import { readFile, stat, mkdtemp, rm } from 'node:fs/promises';
16
16
  import path from 'node:path';
17
17
  import os from 'node:os';
18
+ import { pathToFileURL } from 'node:url';
19
+ import zlib from 'node:zlib';
18
20
  import tar from 'tar-fs';
19
21
  import { Minimatch } from 'minimatch';
20
22
  import { getLogger } from '../../logging/logger.js';
@@ -29,7 +31,7 @@ export const DEFAULT_SSR_PARAMETERS = {
29
31
  * Node.js version for the SSR function runtime.
30
32
  * @see https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/upgrading-node-version.html
31
33
  */
32
- SSRFunctionNodeVersion: '22.x',
34
+ SSRFunctionNodeVersion: '24.x',
33
35
  };
34
36
  /**
35
37
  * Creates a glob filter function from patterns.
@@ -86,6 +88,65 @@ export function getDefaultMessage() {
86
88
  * });
87
89
  * ```
88
90
  */
91
+ /**
92
+ * Extracts the exported {@link MrtServerConfig} from an imported config module,
93
+ * accepting either a named `config` export or a default export.
94
+ */
95
+ function pickServerConfig(mod) {
96
+ const record = mod;
97
+ const config = record.config ?? record.default?.config ?? record.default;
98
+ return config ?? null;
99
+ }
100
+ /**
101
+ * Candidate `config.server` filenames in the project directory, in the order
102
+ * they are tried. `.ts` is preferred (the authored source); compiled `.js`/`.mjs`
103
+ * variants are accepted for compatibility.
104
+ */
105
+ const PROJECT_SERVER_CONFIG_FILENAMES = ['config.server.ts', 'config.server.js', 'config.server.mjs'];
106
+ /**
107
+ * Reads `config.server.{ts,js,mjs}` from the project directory and returns the
108
+ * exported {@link MrtServerConfig}, or `null` if no such file exists.
109
+ *
110
+ * The config is read straight from source at bundle time (no build step): the
111
+ * reference apps keep `config.server.ts` in the project root defining
112
+ * ssrOnly/ssrShared/ssrParameters. TypeScript is loaded via jiti, so any
113
+ * type-only imports in the file are erased and need not be resolved.
114
+ *
115
+ * Throws if a config file exists but cannot be imported, so a broken config
116
+ * fails loudly rather than silently falling back to defaults.
117
+ */
118
+ async function loadProjectServerConfig(projectDirectory) {
119
+ for (const filename of PROJECT_SERVER_CONFIG_FILENAMES) {
120
+ const filePath = path.join(projectDirectory, filename);
121
+ try {
122
+ await stat(filePath);
123
+ }
124
+ catch {
125
+ continue;
126
+ }
127
+ try {
128
+ // jiti transpiles and evaluates the (possibly TypeScript) config in-memory
129
+ // so it can be read from source without a build step. Imported lazily so
130
+ // consumers that never build a bundle don't pay for it.
131
+ const { createJiti } = await import('jiti');
132
+ const jiti = createJiti(import.meta.url, { fsCache: false, interopDefault: true });
133
+ const mod = await jiti.import(filePath);
134
+ return pickServerConfig(mod);
135
+ }
136
+ catch (error) {
137
+ const detail = error instanceof Error ? error.message : String(error);
138
+ throw new Error(`Failed to load server config at "${filePath}": ${detail}`);
139
+ }
140
+ }
141
+ return null;
142
+ }
143
+ /**
144
+ * Reads the legacy compiled `build/config.server.js` from the build directory,
145
+ * returning the exported {@link MrtServerConfig} or `null` if it is absent or
146
+ * fails to import. Kept as a fallback for builds that still emit it; new builds
147
+ * should keep `config.server.ts` in the project directory instead
148
+ * (see {@link loadProjectServerConfig}).
149
+ */
89
150
  async function loadServerConfig(buildPath) {
90
151
  const configPath = path.join(buildPath, 'config.server.js');
91
152
  try {
@@ -95,34 +156,77 @@ async function loadServerConfig(buildPath) {
95
156
  return null;
96
157
  }
97
158
  try {
98
- const mod = await import(configPath);
99
- const config = mod.config ?? mod.default?.config ?? mod.default;
100
- return config ?? null;
159
+ // Convert the absolute path to a file:// URL before dynamic import. On
160
+ // Windows a bare absolute path (e.g. `D:\build\config.server.js`) is parsed
161
+ // as a URL whose scheme is the drive letter and fails to import; a file://
162
+ // URL imports correctly on all platforms.
163
+ const mod = await import(pathToFileURL(configPath).href);
164
+ return pickServerConfig(mod);
101
165
  }
102
166
  catch {
103
167
  return null;
104
168
  }
105
169
  }
170
+ /**
171
+ * Reads the project's `package.json` and returns its declared dependencies
172
+ * (merged `dependencies` + `devDependencies`) for inclusion in bundle metadata,
173
+ * mirroring how pwa-kit and storefront-next populate `bundle_metadata.dependencies`.
174
+ *
175
+ * Best-effort: returns `undefined` when there is no readable/parseable
176
+ * `package.json`, so metadata collection never blocks a bundle. The resolved
177
+ * dependency-tree versions those tools overlay via `npm ls` are intentionally
178
+ * not collected here — that overlay targets specific runtime packages and does
179
+ * not generalize; the declared `package.json` versions are the portable metadata.
180
+ */
181
+ async function loadProjectDependencies(projectDirectory) {
182
+ const logger = getLogger();
183
+ const packagePath = path.join(projectDirectory, 'package.json');
184
+ let raw;
185
+ try {
186
+ raw = await readFile(packagePath, 'utf8');
187
+ }
188
+ catch {
189
+ logger.debug({ packagePath }, '[MRT] No package.json found; omitting bundle dependency metadata');
190
+ return undefined;
191
+ }
192
+ try {
193
+ const pkg = JSON.parse(raw);
194
+ const dependencies = { ...pkg.dependencies, ...pkg.devDependencies };
195
+ return Object.keys(dependencies).length > 0 ? dependencies : undefined;
196
+ }
197
+ catch (error) {
198
+ const detail = error instanceof Error ? error.message : String(error);
199
+ logger.warn({ packagePath, detail }, '[MRT] Could not parse package.json; omitting bundle dependency metadata');
200
+ return undefined;
201
+ }
202
+ }
106
203
  export async function createBundle(options) {
107
204
  const logger = getLogger();
108
205
  const { projectSlug } = options;
109
206
  const buildDirectory = options.buildDirectory || 'build';
110
207
  const message = options.message || getDefaultMessage();
208
+ const projectDirectory = options.projectDirectory ?? process.cwd();
111
209
  const buildPath = path.isAbsolute(buildDirectory) ? buildDirectory : path.join(process.cwd(), buildDirectory);
112
- const serverConfig = await loadServerConfig(buildPath);
210
+ // Prefer config.server.{ts,js} read from the project directory; fall back to a
211
+ // legacy compiled build/config.server.js for builds that still emit one.
212
+ const serverConfig = (await loadProjectServerConfig(projectDirectory)) ?? (await loadServerConfig(buildPath));
213
+ // Collect declared package.json dependencies for bundle metadata (best-effort).
214
+ const dependencies = await loadProjectDependencies(projectDirectory);
113
215
  const ssrOnly = options.ssrOnly ?? serverConfig?.ssrOnly ?? DEFAULT_SSR_ONLY;
114
216
  const ssrShared = options.ssrShared ?? serverConfig?.ssrShared ?? DEFAULT_SSR_SHARED;
115
217
  const ssrParamsFromConfig = serverConfig?.ssrParameters ?? {};
116
- // Merge: defaults < config.server.js < explicit options (explicit values win)
218
+ // Merge: defaults < config.server < explicit options (explicit values win)
117
219
  const ssrParameters = {
118
220
  ...DEFAULT_SSR_PARAMETERS,
119
221
  ...ssrParamsFromConfig,
120
222
  ...options.ssrParameters,
121
223
  };
122
224
  logger.debug({ projectSlug, buildDirectory, ssrParameters }, '[MRT] Creating bundle');
123
- // Validate SSR patterns
124
- if (ssrOnly.length === 0 || ssrShared.length === 0) {
125
- throw new Error('ssrOnly and ssrShared patterns are required and cannot be empty');
225
+ // Validate SSR patterns. An SSR entry point is mandatory, but ssrShared may
226
+ // legitimately be empty for a pure-SSR app with no shared/static assets, so
227
+ // only require ssrOnly to be non-empty.
228
+ if (ssrOnly.length === 0) {
229
+ throw new Error('ssrOnly patterns are required and cannot be empty');
126
230
  }
127
231
  try {
128
232
  await stat(buildPath);
@@ -179,6 +283,7 @@ export async function createBundle(options) {
179
283
  ssr_parameters: ssrParameters,
180
284
  ssr_only: ssrOnlyFiles,
181
285
  ssr_shared: ssrSharedFiles,
286
+ ...(dependencies ? { bundle_metadata: { dependencies } } : {}),
182
287
  };
183
288
  }
184
289
  finally {
@@ -186,4 +291,205 @@ export async function createBundle(options) {
186
291
  await rm(tmpDir, { recursive: true }).catch(() => { });
187
292
  }
188
293
  }
294
+ /** Default archive path prefix under which built files and the config file live. */
295
+ export const DEFAULT_V2_ROOT_DIR = 'bld';
296
+ /** Default path to the in-archive config file, relative to the root directory. */
297
+ export const DEFAULT_V2_CONFIG_PATH = '.mrt/config.json';
298
+ /** Default match mode for ssrOnly/ssrShared pattern matching. */
299
+ export const DEFAULT_V2_MATCH_MODE = 'strict';
300
+ /**
301
+ * Joins path segments using forward slashes, as required for tar entry names.
302
+ */
303
+ function tarJoin(...segments) {
304
+ return path.posix.join(...segments.map((s) => s.split(path.sep).join('/')));
305
+ }
306
+ /**
307
+ * Reads the v2 in-archive config file from disk, if the build emits one.
308
+ *
309
+ * v2 builds write their SSR configuration to `{buildPath}/{configPath}` (by
310
+ * default `bld/.mrt/config.json` relative to the archive, i.e.
311
+ * `{buildDirectory}/.mrt/config.json` on disk). Returns the parsed object — a
312
+ * partial {@link BundleV2Config} plus any extra top-level keys the build wrote —
313
+ * or `null` if no such file exists. Throws if the file exists but is not valid
314
+ * JSON or is not a JSON object, so a malformed build config fails loudly rather
315
+ * than being silently discarded.
316
+ */
317
+ async function loadV2Config(buildPath, configPath) {
318
+ const filePath = path.join(buildPath, configPath);
319
+ let contents;
320
+ try {
321
+ contents = await readFile(filePath, 'utf8');
322
+ }
323
+ catch (error) {
324
+ // Only treat a genuinely-absent file as "no config"; surface any other read
325
+ // failure (permissions, path-is-a-directory, etc.) so a present-but-broken
326
+ // config fails loudly rather than silently falling back to defaults.
327
+ if (error instanceof Error && error.code === 'ENOENT') {
328
+ return null;
329
+ }
330
+ const detail = error instanceof Error ? error.message : String(error);
331
+ throw new Error(`Failed to read v2 bundle config at "${filePath}": ${detail}`);
332
+ }
333
+ let parsed;
334
+ try {
335
+ parsed = JSON.parse(contents);
336
+ }
337
+ catch (error) {
338
+ const detail = error instanceof Error ? error.message : String(error);
339
+ throw new Error(`Failed to parse v2 bundle config at "${filePath}": ${detail}`);
340
+ }
341
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
342
+ throw new Error(`Invalid v2 bundle config at "${filePath}": expected a JSON object`);
343
+ }
344
+ return parsed;
345
+ }
346
+ /**
347
+ * Creates a v2-format bundle archive from a build directory.
348
+ *
349
+ * Produces a gzip-compressed tar archive whose entries sit directly under
350
+ * `{rootDir}/` (no project-slug prefix, unlike v1), with the SSR configuration
351
+ * written into the archive at `{rootDir}/{configPath}` (default
352
+ * `bld/.mrt/config.json`). The returned object carries the archive bytes plus
353
+ * the `rootDir`/`configPath`/`matchMode` values to send as multipart request
354
+ * fields, so the builder and the request stay consistent.
355
+ *
356
+ * The SSR configuration is resolved as follows: if the build emitted an on-disk
357
+ * v2 config file at `{buildDirectory}/{configPath}`, it is used; otherwise the
358
+ * project's `config.server.{ts,js}` is read and used to build the config that
359
+ * goes into the bundle; explicit options override either, merged per key. When
360
+ * the build already emitted the v2 config file, it is excluded from the archive
361
+ * walk and replaced by the resolved config so there is exactly one copy.
362
+ *
363
+ * @param options - v2 bundle creation options
364
+ * @returns v2 bundle object ready for multipart upload
365
+ * @throws Error if the build directory doesn't exist or ssr patterns are empty
366
+ *
367
+ * @example
368
+ * ```typescript
369
+ * const bundle = await createBundleV2({
370
+ * ssrOnly: ['ssr.js'],
371
+ * ssrShared: ['static/**\/*'],
372
+ * buildDirectory: './build',
373
+ * message: 'Release v1.0.0'
374
+ * });
375
+ * ```
376
+ */
377
+ export async function createBundleV2(options) {
378
+ const logger = getLogger();
379
+ const buildDirectory = options.buildDirectory || 'build';
380
+ const message = options.message || getDefaultMessage();
381
+ const rootDir = options.rootDir || DEFAULT_V2_ROOT_DIR;
382
+ const configPath = options.configPath || DEFAULT_V2_CONFIG_PATH;
383
+ const matchMode = options.matchMode || DEFAULT_V2_MATCH_MODE;
384
+ const projectDirectory = options.projectDirectory ?? process.cwd();
385
+ const buildPath = path.isAbsolute(buildDirectory) ? buildDirectory : path.join(process.cwd(), buildDirectory);
386
+ // Resolve the base SSR config. Prefer the v2 config file the build emits at
387
+ // {buildPath}/{configPath}; if absent, read the project's config.server.{ts,js}
388
+ // (falling back to a legacy compiled build/config.server.js); if neither
389
+ // exists, use defaults. Explicit options always win over the resolved base,
390
+ // per key.
391
+ const v2Config = await loadV2Config(buildPath, configPath);
392
+ const serverConfig = v2Config
393
+ ? null
394
+ : ((await loadProjectServerConfig(projectDirectory)) ?? (await loadServerConfig(buildPath)));
395
+ const baseSsrOnly = v2Config?.ssrOnly ?? serverConfig?.ssrOnly;
396
+ const baseSsrShared = v2Config?.ssrShared ?? serverConfig?.ssrShared;
397
+ const baseSsrParameters = v2Config?.ssrParameters ?? serverConfig?.ssrParameters ?? {};
398
+ const ssrOnly = options.ssrOnly ?? baseSsrOnly ?? DEFAULT_SSR_ONLY;
399
+ const ssrShared = options.ssrShared ?? baseSsrShared ?? DEFAULT_SSR_SHARED;
400
+ // Merge: defaults < base config file < explicit options (explicit values win)
401
+ const ssrParameters = {
402
+ ...DEFAULT_SSR_PARAMETERS,
403
+ ...baseSsrParameters,
404
+ ...options.ssrParameters,
405
+ };
406
+ logger.debug({
407
+ buildDirectory,
408
+ rootDir,
409
+ configPath,
410
+ matchMode,
411
+ ssrParameters,
412
+ configSource: v2Config ? 'v2-config-file' : serverConfig ? 'config.server' : 'defaults',
413
+ }, '[MRT] Creating v2 bundle');
414
+ // Validate SSR patterns. An SSR entry point is mandatory, but ssrShared may
415
+ // legitimately be empty for a pure-SSR app with no shared/static assets, so
416
+ // only require ssrOnly to be non-empty.
417
+ if (ssrOnly.length === 0) {
418
+ throw new Error('ssrOnly patterns are required and cannot be empty');
419
+ }
420
+ try {
421
+ await stat(buildPath);
422
+ }
423
+ catch {
424
+ throw new Error(`Build directory at path "${buildPath}" not found.\n` + 'Ensure your project has been built first.');
425
+ }
426
+ // Assemble the in-archive config file contents. Preserve any extra top-level
427
+ // keys the build wrote into its v2 config file, then apply the resolved SSR
428
+ // values on top.
429
+ const config = { ...v2Config, ssrOnly, ssrShared, ssrParameters };
430
+ // Merge bundle metadata per-key: explicit options override the file's values.
431
+ // Only the server-allowlisted sub-keys (dependencies, ccOverrides) are kept.
432
+ const fileMetadata = v2Config?.bundleMetadata ?? {};
433
+ // Explicit option > v2 config file > declared package.json dependencies.
434
+ const dependencies = options.bundleMetadata?.dependencies ??
435
+ fileMetadata.dependencies ??
436
+ (await loadProjectDependencies(projectDirectory));
437
+ const ccOverrides = options.bundleMetadata?.ccOverrides ?? fileMetadata.ccOverrides;
438
+ const metadata = {};
439
+ if (dependencies)
440
+ metadata.dependencies = dependencies;
441
+ if (ccOverrides)
442
+ metadata.ccOverrides = ccOverrides;
443
+ if (Object.keys(metadata).length > 0) {
444
+ config.bundleMetadata = metadata;
445
+ }
446
+ else {
447
+ delete config.bundleMetadata;
448
+ }
449
+ const configBytes = Buffer.from(JSON.stringify(config), 'utf8');
450
+ const configEntryName = tarJoin(rootDir, configPath);
451
+ // Build a gzip-compressed tar with all built files prefixed by rootDir and the
452
+ // config file injected at {rootDir}/{configPath}. Collect the output in memory.
453
+ const filesInArchive = [];
454
+ const gzip = zlib.createGzip();
455
+ const chunks = [];
456
+ // If the build already emitted the config file on disk, exclude it from the
457
+ // walk so the injected (resolved) config is the only copy in the archive.
458
+ // tar-fs invokes `ignore` with the absolute path of each candidate entry.
459
+ const onDiskConfigPath = path.resolve(buildPath, configPath);
460
+ const pack = tar.pack(buildPath, {
461
+ // Do not auto-finalize; we inject the config entry in finish() first.
462
+ finalize: false,
463
+ ignore(name) {
464
+ return path.resolve(name) === onDiskConfigPath;
465
+ },
466
+ map(header) {
467
+ if (header.type === 'file') {
468
+ filesInArchive.push(header.name);
469
+ }
470
+ header.name = tarJoin(rootDir, header.name);
471
+ return header;
472
+ },
473
+ finish(packStream) {
474
+ packStream.entry({ name: configEntryName }, configBytes, (err) => {
475
+ if (err) {
476
+ packStream.destroy(err);
477
+ return;
478
+ }
479
+ packStream.finalize();
480
+ });
481
+ },
482
+ });
483
+ await new Promise((resolve, reject) => {
484
+ pack.on('error', reject);
485
+ gzip.on('error', reject);
486
+ gzip.on('data', (chunk) => chunks.push(chunk));
487
+ gzip.on('end', resolve);
488
+ pack.pipe(gzip);
489
+ });
490
+ const archive = Buffer.concat(chunks);
491
+ logger.debug({ fileCount: filesInArchive.length, configEntryName, archiveBytes: archive.length }, '[MRT] v2 bundle archive created');
492
+ logger.trace({ files: filesInArchive.slice(0, 20) }, '[MRT] First 20 files in v2 archive');
493
+ return { message, archive, rootDir, configPath, matchMode, config };
494
+ }
189
495
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../src/operations/mrt/bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../src/operations/mrt/bundle.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@
7
7
  */
8
8
  import type { AuthStrategy } from '../../auth/types.js';
9
9
  import type { components } from '../../clients/mrt.js';
10
+ import { type Deployment as DeploymentScapi } from '../../clients/storefront-deployments.js';
11
+ import { type MrtBackend, type MrtBackendPreference, type ScapiMrtConnection } from './mrt-backend.js';
10
12
  /**
11
13
  * Deployment list item from API.
12
14
  */
@@ -160,3 +162,222 @@ export interface CreateDeploymentResult {
160
162
  * ```
161
163
  */
162
164
  export declare function createDeployment(options: CreateDeploymentOptions, auth: AuthStrategy): Promise<CreateDeploymentResult>;
165
+ /**
166
+ * A single deployment history row, normalized across the legacy and SCAPI
167
+ * backends so the CLI table renders one shape regardless of backend.
168
+ *
169
+ * Status and type strings are kept **raw** per backend (legacy `"Finished"` /
170
+ * `"Publish"`, SCAPI `"finished"` / `"publish"`) so display doesn't silently
171
+ * change for existing legacy users; terminal-state logic for `--wait` lives in
172
+ * {@link waitForDeploymentScapi} and operates on the SCAPI enum directly.
173
+ */
174
+ export interface MrtDeploymentView {
175
+ /** SCAPI deployment UUID. Undefined for legacy (its list has no per-deploy id). */
176
+ deploymentId?: string;
177
+ /** Numeric bundle identifier. */
178
+ bundleId?: number;
179
+ /** Human-readable bundle message/description. */
180
+ bundleMessage?: string;
181
+ /** Raw backend status string. */
182
+ status?: string;
183
+ /** Raw backend deployment type. */
184
+ deploymentType?: string;
185
+ /** Creation timestamp (ISO 8601). */
186
+ creationDate?: string;
187
+ /** Email of the user who triggered the deployment. */
188
+ createdBy?: string;
189
+ /** Backend that produced this row. */
190
+ backend: MrtBackend;
191
+ }
192
+ /** Normalizes a legacy MRT deployment list item into an {@link MrtDeploymentView}. */
193
+ export declare function normalizeLegacyDeployment(deploy: MrtDeployment): MrtDeploymentView;
194
+ /** Normalizes a SCAPI MRT {@link DeploymentScapi} into an {@link MrtDeploymentView}. */
195
+ export declare function normalizeDeploymentScapi(deployment: DeploymentScapi): MrtDeploymentView;
196
+ /**
197
+ * Lists deployments for an environment via the SCAPI MRT Deployments API.
198
+ *
199
+ * Forwards the standard SCAPI `limit`/`offset` pagination query parameters when
200
+ * provided (max 200 per page, default 25 server-side; the response echoes the
201
+ * full `total`), mirroring the legacy list and the other SCAPI collection
202
+ * clients (`scapi-sites`, `scapi-catalogs`).
203
+ *
204
+ * @throws {ScapiRequestError} carrying the HTTP status on a non-2xx response.
205
+ */
206
+ export declare function listDeploymentsScapi(conn: ScapiMrtConnection, params: {
207
+ storefrontId: string;
208
+ environmentId: string;
209
+ limit?: number;
210
+ offset?: number;
211
+ }): Promise<{
212
+ deployments: MrtDeploymentView[];
213
+ count: number;
214
+ raw: unknown;
215
+ }>;
216
+ /** Result of a SCAPI deployment create. */
217
+ export interface CreateDeploymentScapiResult {
218
+ /** Deployment UUID assigned by SCAPI (used by `--wait`). */
219
+ deploymentId?: string;
220
+ /** Initial deployment status (typically `queued`). */
221
+ status?: string;
222
+ /** Bundle that was deployed. */
223
+ bundleId: number;
224
+ /** Raw, native SCAPI create response, surfaced verbatim under `--json`. */
225
+ raw: unknown;
226
+ }
227
+ /**
228
+ * Creates (queues) a deployment via the SCAPI MRT Deployments API.
229
+ *
230
+ * @throws {ScapiRequestError} carrying the HTTP status on a non-2xx response
231
+ * (including 409 Conflict — the caller decides whether that is fatal).
232
+ */
233
+ export declare function createDeploymentScapi(conn: ScapiMrtConnection, params: {
234
+ storefrontId: string;
235
+ environmentId: string;
236
+ bundleId: number;
237
+ }): Promise<CreateDeploymentScapiResult>;
238
+ /**
239
+ * Fetches a single deployment by ID via the SCAPI MRT Deployments API.
240
+ *
241
+ * @throws {ScapiRequestError} carrying the HTTP status on a non-2xx response.
242
+ */
243
+ export declare function getDeploymentScapi(conn: ScapiMrtConnection, params: {
244
+ storefrontId: string;
245
+ environmentId: string;
246
+ deploymentId: string;
247
+ }): Promise<DeploymentScapi>;
248
+ /** Progress info reported on each poll of {@link waitForDeploymentScapi}. */
249
+ export interface DeploymentScapiPollInfo {
250
+ /** Seconds elapsed since waiting started. */
251
+ elapsedSeconds: number;
252
+ /** Current raw deployment status. */
253
+ status: string;
254
+ /** Human-readable stage description, when present. */
255
+ description?: string;
256
+ /** Percentage complete, when present. */
257
+ percentage?: number | null;
258
+ }
259
+ /** Options for {@link waitForDeploymentScapi}. */
260
+ export interface WaitForDeploymentScapiOptions {
261
+ storefrontId: string;
262
+ environmentId: string;
263
+ /** Deployment UUID returned by {@link createDeploymentScapi}. */
264
+ deploymentId: string;
265
+ /**
266
+ * Polling interval in seconds.
267
+ * @default 30
268
+ */
269
+ pollIntervalSeconds?: number;
270
+ /**
271
+ * Maximum time to wait in seconds (0 for no timeout).
272
+ * @default 600
273
+ */
274
+ timeoutSeconds?: number;
275
+ /** Optional callback invoked on each poll with current status. */
276
+ onPoll?: (info: DeploymentScapiPollInfo) => void;
277
+ /** Custom sleep function for testing. */
278
+ sleep?: (ms: number) => Promise<void>;
279
+ /** Custom clock for testing. Defaults to Date.now. */
280
+ now?: () => number;
281
+ }
282
+ /**
283
+ * Polls a SCAPI deployment by ID until it reaches a terminal status
284
+ * (`finished` or `failed`) or the timeout elapses.
285
+ *
286
+ * Uses `getDeploymentById`, which shares the `sfcc.storefront.deployments` read
287
+ * scope with the list — a direct by-ID poll costs no extra scope over
288
+ * list-polling and avoids page-scanning ambiguity.
289
+ *
290
+ * @throws Error if the timeout is reached or the deployment fails.
291
+ */
292
+ export declare function waitForDeploymentScapi(conn: ScapiMrtConnection, options: WaitForDeploymentScapiOptions): Promise<DeploymentScapi>;
293
+ /** Options for {@link listMrtDeployments}. */
294
+ export interface ListMrtDeploymentsBackendOptions {
295
+ /** Resolved `--mrt-backend` preference. */
296
+ preference: MrtBackendPreference;
297
+ /** SCAPI connection; when absent, `auto` uses legacy and `scapi` throws. */
298
+ scapiConnection?: ScapiMrtConnection;
299
+ /** Legacy API-key auth strategy. Optional; required only when the legacy backend actually runs. */
300
+ legacyAuth?: AuthStrategy;
301
+ /** Project slug (= SCAPI storefront ID). */
302
+ projectSlug: string;
303
+ /** Target/environment slug (= SCAPI environment ID). */
304
+ targetSlug: string;
305
+ /** Maximum results per page (forwarded to both backends; SCAPI caps at 200). */
306
+ limit?: number;
307
+ /** Pagination offset (forwarded to both backends). */
308
+ offset?: number;
309
+ /** Legacy MRT API origin. */
310
+ origin?: string;
311
+ /** Invoked when `auto` falls back from SCAPI to legacy. */
312
+ onFallback?: (reason: string) => void;
313
+ /** Invoked with the backend that serves the call (for `-D` debug). */
314
+ onResolve?: (backend: MrtBackend) => void;
315
+ }
316
+ /** Backend-neutral deployment list result. */
317
+ export interface MrtDeploymentsView {
318
+ /** Backend that served the list. */
319
+ backend: MrtBackend;
320
+ /** Total count reported by the backend. */
321
+ count: number;
322
+ /** Normalized deployment rows, consumed by the CLI table. */
323
+ deployments: MrtDeploymentView[];
324
+ /**
325
+ * The raw, backend-native list response, surfaced verbatim under `--json` so
326
+ * each backend keeps its original machine contract (legacy: the MRT Cloud API
327
+ * list shape — `count`/`next`/`previous`/`deployments`; SCAPI: the Storefront
328
+ * Deployments response — `data`/`total`). The normalized {@link deployments}
329
+ * feed the human table only.
330
+ */
331
+ raw: unknown;
332
+ }
333
+ /**
334
+ * Lists deployment history, routing to the SCAPI or legacy backend per the
335
+ * given preference (with safe `auto` fallback). Returns normalized rows.
336
+ */
337
+ export declare function listMrtDeployments(options: ListMrtDeploymentsBackendOptions): Promise<MrtDeploymentsView>;
338
+ /** Options for {@link deployMrtBundle}. */
339
+ export interface DeployMrtBundleBackendOptions {
340
+ /** Resolved `--mrt-backend` preference. */
341
+ preference: MrtBackendPreference;
342
+ /** SCAPI connection; when absent, `auto` uses legacy and `scapi` throws. */
343
+ scapiConnection?: ScapiMrtConnection;
344
+ /** Legacy API-key auth strategy. Optional; required only when the legacy backend actually runs. */
345
+ legacyAuth?: AuthStrategy;
346
+ /** Project slug (= SCAPI storefront ID). */
347
+ projectSlug: string;
348
+ /** Target/environment slug (= SCAPI environment ID). */
349
+ targetSlug: string;
350
+ /** Bundle ID to deploy. */
351
+ bundleId: number;
352
+ /** Legacy MRT API origin. */
353
+ origin?: string;
354
+ /** Invoked when `auto` falls back from SCAPI to legacy. */
355
+ onFallback?: (reason: string) => void;
356
+ /** Invoked with the backend that serves the call (for `-D` debug). */
357
+ onResolve?: (backend: MrtBackend) => void;
358
+ }
359
+ /** Backend-neutral deploy result. */
360
+ export interface MrtDeployResultView {
361
+ /** Backend that served the deploy (pins the `--wait` strategy). */
362
+ backend: MrtBackend;
363
+ /** Bundle that was deployed. */
364
+ bundleId: number;
365
+ /** SCAPI deployment UUID for `--wait` polling; undefined for legacy. */
366
+ deploymentId?: string;
367
+ /** Initial deployment status. */
368
+ status: string;
369
+ /** Non-blocking warnings returned by the backend. */
370
+ warnings?: string[];
371
+ /**
372
+ * The raw, backend-native create response, surfaced verbatim under `--json`
373
+ * (legacy: the MRT Cloud API deploy result; SCAPI: the Storefront Deployments
374
+ * create response). The typed fields above drive `--wait` and human output.
375
+ */
376
+ raw: unknown;
377
+ }
378
+ /**
379
+ * Deploys an existing bundle, routing to the SCAPI or legacy backend per the
380
+ * given preference (with safe `auto` fallback). The returned `backend` pins
381
+ * which `--wait` strategy the caller should use.
382
+ */
383
+ export declare function deployMrtBundle(options: DeployMrtBundleBackendOptions): Promise<MrtDeployResultView>;