@salesforce/b2c-tooling-sdk 1.24.2 → 2.1.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 (482) 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 +83 -119
  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 +10 -1
  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 +154 -9
  55. package/dist/esm/cli/mrt-command.js +299 -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 +2 -0
  61. package/dist/esm/cli/webdav-command.js +1 -0
  62. package/dist/esm/cli/webdav-command.js.map +1 -1
  63. package/dist/esm/clients/cdn-zones.js +2 -5
  64. package/dist/esm/clients/cdn-zones.js.map +1 -1
  65. package/dist/esm/clients/cip.d.ts +12 -3
  66. package/dist/esm/clients/cip.js +85 -30
  67. package/dist/esm/clients/cip.js.map +1 -1
  68. package/dist/esm/clients/custom-apis.js +2 -5
  69. package/dist/esm/clients/custom-apis.js.map +1 -1
  70. package/dist/esm/clients/dual-backend-factory.d.ts +70 -0
  71. package/dist/esm/clients/dual-backend-factory.js +48 -0
  72. package/dist/esm/clients/dual-backend-factory.js.map +1 -0
  73. package/dist/esm/clients/error-utils.d.ts +62 -0
  74. package/dist/esm/clients/error-utils.js +98 -0
  75. package/dist/esm/clients/error-utils.js.map +1 -1
  76. package/dist/esm/clients/granular-replications.js +2 -5
  77. package/dist/esm/clients/granular-replications.js.map +1 -1
  78. package/dist/esm/clients/index.d.ts +30 -3
  79. package/dist/esm/clients/index.js +25 -2
  80. package/dist/esm/clients/index.js.map +1 -1
  81. package/dist/esm/clients/metrics.js +2 -5
  82. package/dist/esm/clients/metrics.js.map +1 -1
  83. package/dist/esm/clients/middleware-registry.d.ts +4 -2
  84. package/dist/esm/clients/middleware-registry.js +3 -1
  85. package/dist/esm/clients/middleware-registry.js.map +1 -1
  86. package/dist/esm/clients/middleware.d.ts +39 -0
  87. package/dist/esm/clients/middleware.js +126 -25
  88. package/dist/esm/clients/middleware.js.map +1 -1
  89. package/dist/esm/clients/mrt-b2c.js +3 -0
  90. package/dist/esm/clients/mrt-b2c.js.map +1 -1
  91. package/dist/esm/clients/mrt.d.ts +27 -10
  92. package/dist/esm/clients/mrt.generated.d.ts +77 -0
  93. package/dist/esm/clients/mrt.js +68 -0
  94. package/dist/esm/clients/mrt.js.map +1 -1
  95. package/dist/esm/clients/preferences.js +2 -5
  96. package/dist/esm/clients/preferences.js.map +1 -1
  97. package/dist/esm/clients/scapi-backend-utils.d.ts +163 -0
  98. package/dist/esm/clients/scapi-backend-utils.js +180 -0
  99. package/dist/esm/clients/scapi-backend-utils.js.map +1 -0
  100. package/dist/esm/clients/scapi-catalogs.d.ts +12 -0
  101. package/dist/esm/clients/scapi-catalogs.generated.d.ts +104 -0
  102. package/dist/esm/clients/scapi-catalogs.generated.js +6 -0
  103. package/dist/esm/clients/scapi-catalogs.generated.js.map +1 -0
  104. package/dist/esm/clients/scapi-catalogs.js +14 -0
  105. package/dist/esm/clients/scapi-catalogs.js.map +1 -0
  106. package/dist/esm/clients/scapi-client-factory.d.ts +81 -0
  107. package/dist/esm/clients/scapi-client-factory.js +84 -0
  108. package/dist/esm/clients/scapi-client-factory.js.map +1 -0
  109. package/dist/esm/clients/scapi-fallback-backend.d.ts +34 -0
  110. package/dist/esm/clients/scapi-fallback-backend.js +132 -0
  111. package/dist/esm/clients/scapi-fallback-backend.js.map +1 -0
  112. package/dist/esm/clients/scapi-jobs.d.ts +32 -0
  113. package/dist/esm/clients/scapi-jobs.generated.d.ts +535 -0
  114. package/dist/esm/clients/scapi-jobs.generated.js +6 -0
  115. package/dist/esm/clients/scapi-jobs.generated.js.map +1 -0
  116. package/dist/esm/clients/scapi-jobs.js +24 -0
  117. package/dist/esm/clients/scapi-jobs.js.map +1 -0
  118. package/dist/esm/clients/scapi-merchant-roles.d.ts +19 -0
  119. package/dist/esm/clients/scapi-merchant-roles.generated.d.ts +726 -0
  120. package/dist/esm/clients/scapi-merchant-roles.generated.js +6 -0
  121. package/dist/esm/clients/scapi-merchant-roles.generated.js.map +1 -0
  122. package/dist/esm/clients/scapi-merchant-roles.js +12 -0
  123. package/dist/esm/clients/scapi-merchant-roles.js.map +1 -0
  124. package/dist/esm/clients/scapi-merchant-users.d.ts +19 -0
  125. package/dist/esm/clients/scapi-merchant-users.generated.d.ts +300 -0
  126. package/dist/esm/clients/scapi-merchant-users.generated.js +6 -0
  127. package/dist/esm/clients/scapi-merchant-users.generated.js.map +1 -0
  128. package/dist/esm/clients/scapi-merchant-users.js +12 -0
  129. package/dist/esm/clients/scapi-merchant-users.js.map +1 -0
  130. package/dist/esm/clients/scapi-schemas.js +2 -5
  131. package/dist/esm/clients/scapi-schemas.js.map +1 -1
  132. package/dist/esm/clients/scapi-scope-tier.d.ts +78 -0
  133. package/dist/esm/clients/scapi-scope-tier.js +113 -0
  134. package/dist/esm/clients/scapi-scope-tier.js.map +1 -0
  135. package/dist/esm/clients/scapi-scripts.d.ts +17 -0
  136. package/dist/esm/clients/scapi-scripts.generated.d.ts +392 -0
  137. package/dist/esm/clients/scapi-scripts.generated.js +6 -0
  138. package/dist/esm/clients/scapi-scripts.generated.js.map +1 -0
  139. package/dist/esm/clients/scapi-scripts.js +12 -0
  140. package/dist/esm/clients/scapi-scripts.js.map +1 -0
  141. package/dist/esm/clients/scapi-sites.d.ts +26 -0
  142. package/dist/esm/clients/scapi-sites.generated.d.ts +500 -0
  143. package/dist/esm/clients/scapi-sites.generated.js +6 -0
  144. package/dist/esm/clients/scapi-sites.generated.js.map +1 -0
  145. package/dist/esm/clients/scapi-sites.js +25 -0
  146. package/dist/esm/clients/scapi-sites.js.map +1 -0
  147. package/dist/esm/clients/slas-shopper.d.ts +19 -0
  148. package/dist/esm/clients/slas-shopper.generated.d.ts +165 -0
  149. package/dist/esm/clients/slas-shopper.generated.js +6 -0
  150. package/dist/esm/clients/slas-shopper.generated.js.map +1 -0
  151. package/dist/esm/clients/slas-shopper.js +35 -0
  152. package/dist/esm/clients/slas-shopper.js.map +1 -0
  153. package/dist/esm/clients/storefront-deployments.d.ts +57 -0
  154. package/dist/esm/clients/storefront-deployments.generated.d.ts +558 -0
  155. package/dist/esm/clients/storefront-deployments.generated.js +6 -0
  156. package/dist/esm/clients/storefront-deployments.generated.js.map +1 -0
  157. package/dist/esm/clients/storefront-deployments.js +24 -0
  158. package/dist/esm/clients/storefront-deployments.js.map +1 -0
  159. package/dist/esm/clients/storefront-environments.d.ts +56 -0
  160. package/dist/esm/clients/storefront-environments.generated.d.ts +208 -0
  161. package/dist/esm/clients/storefront-environments.generated.js +6 -0
  162. package/dist/esm/clients/storefront-environments.generated.js.map +1 -0
  163. package/dist/esm/clients/storefront-environments.js +24 -0
  164. package/dist/esm/clients/storefront-environments.js.map +1 -0
  165. package/dist/esm/clients/webdav.js +4 -1
  166. package/dist/esm/clients/webdav.js.map +1 -1
  167. package/dist/esm/compat/dispatcher.d.ts +49 -0
  168. package/dist/esm/compat/dispatcher.js +124 -0
  169. package/dist/esm/compat/dispatcher.js.map +1 -0
  170. package/dist/esm/compat/index.d.ts +10 -0
  171. package/dist/esm/compat/index.js +15 -0
  172. package/dist/esm/compat/index.js.map +1 -0
  173. package/dist/esm/compat/jobs-backend.d.ts +31 -0
  174. package/dist/esm/compat/jobs-backend.js +76 -0
  175. package/dist/esm/compat/jobs-backend.js.map +1 -0
  176. package/dist/esm/config/dw-json.d.ts +4 -0
  177. package/dist/esm/config/dw-json.js.map +1 -1
  178. package/dist/esm/config/index.d.ts +1 -1
  179. package/dist/esm/config/index.js.map +1 -1
  180. package/dist/esm/config/mapping.d.ts +2 -5
  181. package/dist/esm/config/mapping.js +25 -1
  182. package/dist/esm/config/mapping.js.map +1 -1
  183. package/dist/esm/config/resolved-config.d.ts +2 -2
  184. package/dist/esm/config/resolved-config.js.map +1 -1
  185. package/dist/esm/config/resolver.js +12 -0
  186. package/dist/esm/config/resolver.js.map +1 -1
  187. package/dist/esm/config/sources/env-source.d.ts +10 -1
  188. package/dist/esm/config/sources/env-source.js +46 -1
  189. package/dist/esm/config/sources/env-source.js.map +1 -1
  190. package/dist/esm/config/types.d.ts +22 -3
  191. package/dist/esm/docs/search.js +2 -25
  192. package/dist/esm/docs/search.js.map +1 -1
  193. package/dist/esm/guidance/catalog.d.ts +37 -0
  194. package/dist/esm/guidance/catalog.js +282 -0
  195. package/dist/esm/guidance/catalog.js.map +1 -0
  196. package/dist/esm/guidance/index.d.ts +8 -0
  197. package/dist/esm/guidance/index.js +14 -0
  198. package/dist/esm/guidance/index.js.map +1 -0
  199. package/dist/esm/guidance/markdown.d.ts +10 -0
  200. package/dist/esm/guidance/markdown.js +52 -0
  201. package/dist/esm/guidance/markdown.js.map +1 -0
  202. package/dist/esm/guidance/types.d.ts +96 -0
  203. package/dist/esm/guidance/types.js +17 -0
  204. package/dist/esm/guidance/types.js.map +1 -0
  205. package/dist/esm/index.d.ts +14 -5
  206. package/dist/esm/index.js +14 -2
  207. package/dist/esm/index.js.map +1 -1
  208. package/dist/esm/instance/index.d.ts +96 -2
  209. package/dist/esm/instance/index.js +98 -5
  210. package/dist/esm/instance/index.js.map +1 -1
  211. package/dist/esm/operations/bm-roles/backend.d.ts +4 -0
  212. package/dist/esm/operations/bm-roles/backend.js +11 -0
  213. package/dist/esm/operations/bm-roles/backend.js.map +1 -0
  214. package/dist/esm/operations/bm-roles/index.d.ts +6 -0
  215. package/dist/esm/operations/bm-roles/index.js +4 -0
  216. package/dist/esm/operations/bm-roles/index.js.map +1 -1
  217. package/dist/esm/operations/bm-roles/ocapi-backend.d.ts +17 -0
  218. package/dist/esm/operations/bm-roles/ocapi-backend.js +151 -0
  219. package/dist/esm/operations/bm-roles/ocapi-backend.js.map +1 -0
  220. package/dist/esm/operations/bm-roles/roles.js +13 -17
  221. package/dist/esm/operations/bm-roles/roles.js.map +1 -1
  222. package/dist/esm/operations/bm-roles/scapi-backend.d.ts +27 -0
  223. package/dist/esm/operations/bm-roles/scapi-backend.js +138 -0
  224. package/dist/esm/operations/bm-roles/scapi-backend.js.map +1 -0
  225. package/dist/esm/operations/bm-roles/types.d.ts +49 -0
  226. package/dist/esm/operations/bm-roles/types.js +2 -0
  227. package/dist/esm/operations/bm-roles/types.js.map +1 -0
  228. package/dist/esm/operations/bm-users/backend.d.ts +4 -0
  229. package/dist/esm/operations/bm-users/backend.js +11 -0
  230. package/dist/esm/operations/bm-users/backend.js.map +1 -0
  231. package/dist/esm/operations/bm-users/index.d.ts +11 -3
  232. package/dist/esm/operations/bm-users/index.js +9 -3
  233. package/dist/esm/operations/bm-users/index.js.map +1 -1
  234. package/dist/esm/operations/bm-users/ocapi-backend.d.ts +13 -0
  235. package/dist/esm/operations/bm-users/ocapi-backend.js +92 -0
  236. package/dist/esm/operations/bm-users/ocapi-backend.js.map +1 -0
  237. package/dist/esm/operations/bm-users/scapi-backend.d.ts +23 -0
  238. package/dist/esm/operations/bm-users/scapi-backend.js +199 -0
  239. package/dist/esm/operations/bm-users/scapi-backend.js.map +1 -0
  240. package/dist/esm/operations/bm-users/types.d.ts +99 -0
  241. package/dist/esm/operations/bm-users/types.js +2 -0
  242. package/dist/esm/operations/bm-users/types.js.map +1 -0
  243. package/dist/esm/operations/bm-users/users.d.ts +4 -3
  244. package/dist/esm/operations/bm-users/users.js +23 -19
  245. package/dist/esm/operations/bm-users/users.js.map +1 -1
  246. package/dist/esm/operations/cap/install.js +23 -45
  247. package/dist/esm/operations/cap/install.js.map +1 -1
  248. package/dist/esm/operations/cap/list.js +4 -8
  249. package/dist/esm/operations/cap/list.js.map +1 -1
  250. package/dist/esm/operations/cap/uninstall.js +17 -37
  251. package/dist/esm/operations/cap/uninstall.js.map +1 -1
  252. package/dist/esm/operations/catalogs/catalogs-backend.d.ts +4 -0
  253. package/dist/esm/operations/catalogs/catalogs-backend.js +16 -0
  254. package/dist/esm/operations/catalogs/catalogs-backend.js.map +1 -0
  255. package/dist/esm/operations/catalogs/catalogs-types.d.ts +14 -0
  256. package/dist/esm/operations/catalogs/catalogs-types.js +2 -0
  257. package/dist/esm/operations/catalogs/catalogs-types.js.map +1 -0
  258. package/dist/esm/operations/catalogs/index.d.ts +7 -0
  259. package/dist/esm/operations/catalogs/index.js +10 -0
  260. package/dist/esm/operations/catalogs/index.js.map +1 -0
  261. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.d.ts +8 -0
  262. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.js +36 -0
  263. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.js.map +1 -0
  264. package/dist/esm/operations/catalogs/scapi-catalogs-backend.d.ts +15 -0
  265. package/dist/esm/operations/catalogs/scapi-catalogs-backend.js +42 -0
  266. package/dist/esm/operations/catalogs/scapi-catalogs-backend.js.map +1 -0
  267. package/dist/esm/operations/cip/index.js +10 -2
  268. package/dist/esm/operations/cip/index.js.map +1 -1
  269. package/dist/esm/operations/cip/reports.js +19 -3
  270. package/dist/esm/operations/cip/reports.js.map +1 -1
  271. package/dist/esm/operations/cip/types.d.ts +8 -4
  272. package/dist/esm/operations/code/deploy.d.ts +3 -0
  273. package/dist/esm/operations/code/deploy.js +9 -3
  274. package/dist/esm/operations/code/deploy.js.map +1 -1
  275. package/dist/esm/operations/code/download.d.ts +3 -0
  276. package/dist/esm/operations/code/download.js +5 -5
  277. package/dist/esm/operations/code/download.js.map +1 -1
  278. package/dist/esm/operations/code/index.d.ts +7 -1
  279. package/dist/esm/operations/code/index.js +5 -1
  280. package/dist/esm/operations/code/index.js.map +1 -1
  281. package/dist/esm/operations/code/ocapi-scripts-backend.d.ts +12 -0
  282. package/dist/esm/operations/code/ocapi-scripts-backend.js +40 -0
  283. package/dist/esm/operations/code/ocapi-scripts-backend.js.map +1 -0
  284. package/dist/esm/operations/code/scapi-scripts-backend.d.ts +22 -0
  285. package/dist/esm/operations/code/scapi-scripts-backend.js +94 -0
  286. package/dist/esm/operations/code/scapi-scripts-backend.js.map +1 -0
  287. package/dist/esm/operations/code/scripts-backend.d.ts +17 -0
  288. package/dist/esm/operations/code/scripts-backend.js +40 -0
  289. package/dist/esm/operations/code/scripts-backend.js.map +1 -0
  290. package/dist/esm/operations/code/scripts-types.d.ts +43 -0
  291. package/dist/esm/operations/code/scripts-types.js +2 -0
  292. package/dist/esm/operations/code/scripts-types.js.map +1 -0
  293. package/dist/esm/operations/code/upload-files.d.ts +6 -0
  294. package/dist/esm/operations/code/upload-files.js +58 -7
  295. package/dist/esm/operations/code/upload-files.js.map +1 -1
  296. package/dist/esm/operations/code/versions.d.ts +0 -20
  297. package/dist/esm/operations/code/versions.js +16 -51
  298. package/dist/esm/operations/code/versions.js.map +1 -1
  299. package/dist/esm/operations/code/watch.d.ts +3 -0
  300. package/dist/esm/operations/code/watch.js +3 -2
  301. package/dist/esm/operations/code/watch.js.map +1 -1
  302. package/dist/esm/operations/jobs/discover.d.ts +1 -1
  303. package/dist/esm/operations/jobs/discover.js +51 -21
  304. package/dist/esm/operations/jobs/discover.js.map +1 -1
  305. package/dist/esm/operations/jobs/index.d.ts +14 -57
  306. package/dist/esm/operations/jobs/index.js +15 -59
  307. package/dist/esm/operations/jobs/index.js.map +1 -1
  308. package/dist/esm/operations/jobs/ocapi-mapping.d.ts +34 -0
  309. package/dist/esm/operations/jobs/ocapi-mapping.js +100 -0
  310. package/dist/esm/operations/jobs/ocapi-mapping.js.map +1 -0
  311. package/dist/esm/operations/jobs/run-system-job.d.ts +81 -0
  312. package/dist/esm/operations/jobs/run-system-job.js +137 -0
  313. package/dist/esm/operations/jobs/run-system-job.js.map +1 -0
  314. package/dist/esm/operations/jobs/run.js +16 -4
  315. package/dist/esm/operations/jobs/run.js.map +1 -1
  316. package/dist/esm/operations/jobs/scapi-ops.d.ts +61 -0
  317. package/dist/esm/operations/jobs/scapi-ops.js +214 -0
  318. package/dist/esm/operations/jobs/scapi-ops.js.map +1 -0
  319. package/dist/esm/operations/jobs/site-archive.d.ts +7 -0
  320. package/dist/esm/operations/jobs/site-archive.js +28 -66
  321. package/dist/esm/operations/jobs/site-archive.js.map +1 -1
  322. package/dist/esm/operations/jobs/types.d.ts +46 -0
  323. package/dist/esm/operations/jobs/types.js +2 -0
  324. package/dist/esm/operations/jobs/types.js.map +1 -0
  325. package/dist/esm/operations/jobs/wait-canonical.d.ts +28 -0
  326. package/dist/esm/operations/jobs/wait-canonical.js +48 -0
  327. package/dist/esm/operations/jobs/wait-canonical.js.map +1 -0
  328. package/dist/esm/operations/mrt/bundle.d.ts +164 -2
  329. package/dist/esm/operations/mrt/bundle.js +315 -9
  330. package/dist/esm/operations/mrt/bundle.js.map +1 -1
  331. package/dist/esm/operations/mrt/deployment.d.ts +248 -0
  332. package/dist/esm/operations/mrt/deployment.js +252 -0
  333. package/dist/esm/operations/mrt/deployment.js.map +1 -1
  334. package/dist/esm/operations/mrt/env-var.d.ts +135 -0
  335. package/dist/esm/operations/mrt/env-var.js +203 -0
  336. package/dist/esm/operations/mrt/env-var.js.map +1 -1
  337. package/dist/esm/operations/mrt/index.d.ts +10 -8
  338. package/dist/esm/operations/mrt/index.js +6 -4
  339. package/dist/esm/operations/mrt/index.js.map +1 -1
  340. package/dist/esm/operations/mrt/mrt-backend.d.ts +117 -0
  341. package/dist/esm/operations/mrt/mrt-backend.js +84 -0
  342. package/dist/esm/operations/mrt/mrt-backend.js.map +1 -0
  343. package/dist/esm/operations/mrt/push.d.ts +285 -1
  344. package/dist/esm/operations/mrt/push.js +382 -1
  345. package/dist/esm/operations/mrt/push.js.map +1 -1
  346. package/dist/esm/operations/sites/cartridges.d.ts +10 -8
  347. package/dist/esm/operations/sites/cartridges.js +35 -67
  348. package/dist/esm/operations/sites/cartridges.js.map +1 -1
  349. package/dist/esm/operations/sites/index.d.ts +10 -6
  350. package/dist/esm/operations/sites/index.js +9 -6
  351. package/dist/esm/operations/sites/index.js.map +1 -1
  352. package/dist/esm/operations/sites/ocapi-sites-backend.d.ts +20 -0
  353. package/dist/esm/operations/sites/ocapi-sites-backend.js +98 -0
  354. package/dist/esm/operations/sites/ocapi-sites-backend.js.map +1 -0
  355. package/dist/esm/operations/sites/scapi-sites-backend.d.ts +33 -0
  356. package/dist/esm/operations/sites/scapi-sites-backend.js +166 -0
  357. package/dist/esm/operations/sites/scapi-sites-backend.js.map +1 -0
  358. package/dist/esm/operations/sites/sites-backend.d.ts +9 -0
  359. package/dist/esm/operations/sites/sites-backend.js +16 -0
  360. package/dist/esm/operations/sites/sites-backend.js.map +1 -0
  361. package/dist/esm/operations/sites/sites-scopes.d.ts +2 -0
  362. package/dist/esm/operations/sites/sites-scopes.js +16 -0
  363. package/dist/esm/operations/sites/sites-scopes.js.map +1 -0
  364. package/dist/esm/operations/sites/sites-types.d.ts +50 -0
  365. package/dist/esm/operations/sites/sites-types.js +2 -0
  366. package/dist/esm/operations/sites/sites-types.js.map +1 -0
  367. package/dist/esm/safety/safety-guard.d.ts +1 -0
  368. package/dist/esm/safety/safety-guard.js +2 -1
  369. package/dist/esm/safety/safety-guard.js.map +1 -1
  370. package/dist/esm/safety/safety-middleware.d.ts +7 -3
  371. package/dist/esm/safety/safety-middleware.js +13 -9
  372. package/dist/esm/safety/safety-middleware.js.map +1 -1
  373. package/dist/esm/safety/types.d.ts +2 -2
  374. package/dist/esm/scaffold/sources.js +6 -9
  375. package/dist/esm/scaffold/sources.js.map +1 -1
  376. package/dist/esm/scapi/auth-primitives.d.ts +3 -0
  377. package/dist/esm/scapi/auth-primitives.js +104 -0
  378. package/dist/esm/scapi/auth-primitives.js.map +1 -0
  379. package/dist/esm/scapi/authentication.d.ts +30 -0
  380. package/dist/esm/scapi/authentication.js +136 -0
  381. package/dist/esm/scapi/authentication.js.map +1 -0
  382. package/dist/esm/scapi/catalog.d.ts +29 -0
  383. package/dist/esm/scapi/catalog.js +81 -0
  384. package/dist/esm/scapi/catalog.js.map +1 -0
  385. package/dist/esm/scapi/index.d.ts +12 -0
  386. package/dist/esm/scapi/index.js +13 -0
  387. package/dist/esm/scapi/index.js.map +1 -0
  388. package/dist/esm/scapi/request.d.ts +28 -0
  389. package/dist/esm/scapi/request.js +273 -0
  390. package/dist/esm/scapi/request.js.map +1 -0
  391. package/dist/esm/scapi/runtime.d.ts +27 -0
  392. package/dist/esm/scapi/runtime.js +161 -0
  393. package/dist/esm/scapi/runtime.js.map +1 -0
  394. package/dist/esm/scapi/snippets.d.ts +22 -0
  395. package/dist/esm/scapi/snippets.js +140 -0
  396. package/dist/esm/scapi/snippets.js.map +1 -0
  397. package/dist/esm/scapi/worker-source.d.ts +2 -0
  398. package/dist/esm/scapi/worker-source.js +101 -0
  399. package/dist/esm/scapi/worker-source.js.map +1 -0
  400. package/dist/esm/search/ranking.d.ts +12 -0
  401. package/dist/esm/search/ranking.js +28 -0
  402. package/dist/esm/search/ranking.js.map +1 -0
  403. package/dist/esm/skills/sources.d.ts +2 -2
  404. package/dist/esm/skills/sources.js +18 -2
  405. package/dist/esm/skills/sources.js.map +1 -1
  406. package/dist/esm/skills/types.d.ts +1 -1
  407. package/dist/esm/slas/token.js +33 -94
  408. package/dist/esm/slas/token.js.map +1 -1
  409. package/dist/esm/slas/types.d.ts +5 -0
  410. package/dist/esm/test-utils/config-isolation.js +2 -2
  411. package/dist/esm/test-utils/config-isolation.js.map +1 -1
  412. package/node_modules/@salesforce/b2c-api-schemas/README.md +23 -0
  413. package/node_modules/@salesforce/b2c-api-schemas/manifest.json +576 -0
  414. package/node_modules/@salesforce/b2c-api-schemas/package.json +15 -0
  415. package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +11490 -0
  416. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +3589 -0
  417. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +6544 -0
  418. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +7148 -0
  419. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +4411 -0
  420. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +643 -0
  421. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +295 -0
  422. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +2036 -0
  423. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +327 -0
  424. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +234 -0
  425. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +1542 -0
  426. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +405 -0
  427. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +2531 -0
  428. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +7944 -0
  429. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +292 -0
  430. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +2537 -0
  431. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +517 -0
  432. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +589 -0
  433. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +3600 -0
  434. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +2319 -0
  435. package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +658 -0
  436. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +2649 -0
  437. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +6615 -0
  438. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +2103 -0
  439. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1760 -0
  440. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +640 -0
  441. package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1263 -0
  442. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1259 -0
  443. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +760 -0
  444. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +1047 -0
  445. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1929 -0
  446. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +1542 -0
  447. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +1093 -0
  448. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +1324 -0
  449. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +325 -0
  450. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +631 -0
  451. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +1036 -0
  452. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +5175 -0
  453. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +866 -0
  454. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +747 -0
  455. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +5076 -0
  456. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +509 -0
  457. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +517 -0
  458. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +2961 -0
  459. package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1889 -0
  460. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +7014 -0
  461. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1898 -0
  462. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +622 -0
  463. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +192 -0
  464. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +913 -0
  465. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +630 -0
  466. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +223 -0
  467. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +423 -0
  468. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +1088 -0
  469. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +798 -0
  470. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +607 -0
  471. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1418 -0
  472. package/package.json +24 -3
  473. package/specs/dx-scripts-v1.yaml +409 -0
  474. package/specs/merchant-roles-v1.yaml +1085 -0
  475. package/specs/merchant-users-v1.yaml +398 -0
  476. package/specs/mrt-api-v1.json +105 -0
  477. package/specs/operations-jobs-v1.yaml +793 -0
  478. package/specs/product-catalogs-v1.yaml +111 -0
  479. package/specs/site-sites-v1.yaml +667 -0
  480. package/specs/slas-shopper-v1.yaml +83 -0
  481. package/specs/storefront-deployments-v1.yaml +630 -0
  482. package/specs/storefront-environments-v1.yaml +272 -0
@@ -5,62 +5,112 @@
5
5
  */
6
6
  import { Command } from '@oclif/core';
7
7
  import { InstanceCommand } from './instance-command.js';
8
- import { getJobLog, getJobErrorMessage } from '../operations/jobs/index.js';
8
+ import { BackendDispatcher } from '../compat/dispatcher.js';
9
+ import { createScapiJobsClient } from '../clients/scapi-jobs.js';
10
+ import { mapOcapiExecution } from '../operations/jobs/index.js';
9
11
  import { t } from '../i18n/index.js';
10
12
  /**
11
13
  * Base command for job operations.
12
14
  *
13
- * Extends InstanceCommand with job-specific functionality like
14
- * displaying job logs on failure.
15
+ * Provides:
16
+ * - {@link createJobsDispatcher} for routing operations to SCAPI or OCAPI
17
+ * - {@link buildScapiJobsClient} for SCAPI-only commands (e.g. delete) that
18
+ * don't need the dispatcher's auto-fallback
19
+ * - {@link showJobLog} for retrieving and printing canonical job logs on failure
15
20
  *
16
21
  * @example
22
+ * ```ts
23
+ * import {scapiExecuteJob, mapOcapiExecution, executeJob as ocapiExecuteJob} from
24
+ * '@salesforce/b2c-tooling-sdk/operations/jobs';
25
+ *
17
26
  * export default class MyJobCommand extends JobCommand<typeof MyJobCommand> {
18
- * async run(): Promise<void> {
19
- * try {
20
- * await executeJob(this.instance, 'my-job');
21
- * } catch (error) {
22
- * if (error instanceof JobExecutionError) {
23
- * await this.showJobLog(error.execution);
24
- * }
25
- * throw error;
26
- * }
27
+ * async run() {
28
+ * const dispatcher = this.createJobsDispatcher();
29
+ * const exec = await dispatcher.run({
30
+ * scapi: (client) => scapiExecuteJob(client, 'my-job', {tenantId: this.resolvedConfig.values.tenantId!}),
31
+ * ocapi: async () => mapOcapiExecution(await ocapiExecuteJob(this.instance, 'my-job')),
32
+ * });
27
33
  * }
28
34
  * }
35
+ * ```
29
36
  */
30
37
  export class JobCommand extends InstanceCommand {
38
+ createJobsDispatcher() {
39
+ return this.createDispatcher('jobs', () => this.buildScapiJobsClient());
40
+ }
31
41
  /**
32
- * Display a job's log file content and error message if available.
33
- * Outputs to stderr since this is typically shown for failed jobs.
42
+ * Builds a SCAPI Jobs client, or `undefined` if SCAPI is not configured.
43
+ * Used both as the dispatcher's SCAPI factory and directly by SCAPI-only
44
+ * commands (e.g. `job execution delete`) that don't use the dispatcher.
34
45
  *
35
- * @param execution - Failed job execution object with log file information
46
+ * The shortCode/tenantId and the scope-flexible auth strategy come from the
47
+ * instance ({@link B2CInstance.scapiClientConfig}), which already encodes the
48
+ * "only stateless OAuth qualifies for auto-SCAPI" gating.
49
+ */
50
+ buildScapiJobsClient() {
51
+ const scapi = this.instance.scapiClientConfig;
52
+ if (!scapi)
53
+ return undefined;
54
+ return createScapiJobsClient({ shortCode: scapi.shortCode, tenantId: scapi.tenantId }, scapi.auth);
55
+ }
56
+ /**
57
+ * Display a job execution's log file content and error message if available.
58
+ *
59
+ * Accepts either canonical {@link JobExecutionInfo} (preferred) or raw
60
+ * OCAPI {@link JobExecution} (from the legacy {@link JobExecutionError}).
61
+ * Raw OCAPI is mapped to canonical at the entry point so the rest of the
62
+ * function works on a single shape.
36
63
  */
37
64
  async showJobLog(execution) {
38
- // Extract error message from failed step executions
39
- const errorMessage = getJobErrorMessage(execution);
40
- if (!execution.is_log_file_existing) {
41
- // No log file, but we may still have an error message
65
+ const canonical = isCanonical(execution) ? execution : mapOcapiExecution(execution);
66
+ const errorMessage = getCanonicalJobErrorMessage(canonical);
67
+ if (!canonical.isLogFileExisting) {
42
68
  if (errorMessage) {
43
69
  this.logger.error({ errorMessage }, errorMessage);
44
70
  }
45
71
  return;
46
72
  }
47
73
  try {
48
- const log = await getJobLog(this.instance, execution);
49
- const logFileName = execution.log_file_path?.split('/').pop() ?? 'job.log';
74
+ const log = await this.fetchCanonicalLog(canonical);
75
+ const logFileName = canonical.logFilePath?.split('/').pop() ?? 'job.log';
50
76
  const header = t('cli.job.logHeader', 'Job log ({{logFileName}}):', { logFileName });
51
77
  this.logger.error({ log, errorMessage }, `${header}\n${log}`);
52
- // Log the error message separately if available
53
78
  if (errorMessage) {
54
79
  this.logger.error(t('cli.job.errorMessage', 'Error: {{message}}', { message: errorMessage }));
55
80
  }
56
81
  }
57
82
  catch {
58
83
  this.warn(t('cli.job.logFetchFailed', 'Could not retrieve job log'));
59
- // Still try to show error message even if log fetch failed
60
84
  if (errorMessage) {
61
85
  this.logger.error({ errorMessage }, errorMessage);
62
86
  }
63
87
  }
64
88
  }
89
+ async fetchCanonicalLog(execution) {
90
+ const logPath = execution.logFilePath;
91
+ if (!logPath) {
92
+ throw new Error('No log file path available');
93
+ }
94
+ // Both SCAPI and OCAPI return logFilePath under /Sites/LOGS/...; WebDAV
95
+ // base is /webdav/Sites, so the leading /Sites/ is stripped.
96
+ const webdavPath = logPath.replace(/^\/Sites\//, '');
97
+ const content = await this.instance.webdav.get(webdavPath);
98
+ return new TextDecoder().decode(content);
99
+ }
100
+ }
101
+ function isCanonical(execution) {
102
+ return 'executionStatus' in execution;
103
+ }
104
+ function getCanonicalJobErrorMessage(execution) {
105
+ if (!execution.stepExecutions || execution.stepExecutions.length === 0) {
106
+ return undefined;
107
+ }
108
+ for (let i = execution.stepExecutions.length - 1; i >= 0; i--) {
109
+ const step = execution.stepExecutions[i];
110
+ if (step.exitStatus?.status === 'error' && step.exitStatus?.message) {
111
+ return step.exitStatus.message;
112
+ }
113
+ }
114
+ return undefined;
65
115
  }
66
116
  //# sourceMappingURL=job-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"job-command.js","sourceRoot":"","sources":["../../../src/cli/job-command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AACpC,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAC,SAAS,EAAE,kBAAkB,EAAoB,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAC,CAAC,EAAC,MAAM,kBAAkB,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAgB,UAAqC,SAAQ,eAAkB;IACnF;;;;;OAKG;IACO,KAAK,CAAC,UAAU,CAAC,SAAuB;QAChD,oDAAoD;QACpD,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACpC,sDAAsD;YACtD,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,YAAY,EAAC,EAAE,YAAY,CAAC,CAAC;YAClD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;YAE3E,MAAM,MAAM,GAAG,CAAC,CAAC,mBAAmB,EAAE,4BAA4B,EAAE,EAAC,WAAW,EAAC,CAAC,CAAC;YACnF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,YAAY,EAAC,EAAE,GAAG,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;YAE5D,gDAAgD;YAChD,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,EAAC,OAAO,EAAE,YAAY,EAAC,CAAC,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,EAAE,4BAA4B,CAAC,CAAC,CAAC;YACrE,2DAA2D;YAC3D,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,YAAY,EAAC,EAAE,YAAY,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"job-command.js","sourceRoot":"","sources":["../../../src/cli/job-command.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,35 @@
1
1
  import { Command } from '@oclif/core';
2
- import { BaseCommand } from './base-command.js';
2
+ import { OAuthCommand } from './oauth-command.js';
3
3
  import type { ResolvedB2CConfig } from '../config/index.js';
4
4
  import type { AuthStrategy } from '../auth/types.js';
5
+ import type { ScapiClientConfig } from '../instance/index.js';
6
+ import type { MrtBackendPreference, ScapiMrtConnection } from '../operations/mrt/mrt-backend.js';
5
7
  /**
6
8
  * Base command for Managed Runtime (MRT) operations.
7
- * Uses API key authentication.
8
9
  *
9
- * API key resolution order:
10
+ * MRT has two backends:
11
+ * - **legacy** — the MRT Cloud API (`cloud.mobify.com`), authenticated with a
12
+ * per-user API key (`--api-key` / `~/.mobify`).
13
+ * - **scapi** — the SCAPI MRT backend, authenticated with a stateless OAuth flow
14
+ * (client-credentials or JWT Bearer) via Account Manager, reusing the same
15
+ * shortCode + tenant setup as other SCAPI commands. Each supported command maps
16
+ * to its own SCAPI API (bundle history/deploy use Storefront Deployments today;
17
+ * more MRT surfaces will be added over time).
18
+ *
19
+ * Because SCAPI MRT reuses the SCAPI auth stack, this base extends
20
+ * {@link OAuthCommand} to inherit `--client-id`/`--client-secret`/`--short-code`/
21
+ * `--tenant-id`/JWT flags plus `getOAuthStrategy()`, `requireTenantId()`, and
22
+ * `getOrganizationId()`. The legacy API-key path is preserved via
23
+ * {@link getMrtAuth}.
24
+ *
25
+ * API key resolution order (legacy):
10
26
  * 1. --api-key flag
11
27
  * 2. MRT_API_KEY environment variable (SFCC_MRT_API_KEY also supported)
12
28
  * 3. ~/.mobify config file (api_key field), or ~/.mobify--[hostname] if --cloud-origin is set
13
29
  *
14
30
  * Project/environment resolution order:
15
- * 1. --project / --environment flags
16
- * 2. MRT_PROJECT / MRT_ENVIRONMENT environment variables (SFCC_-prefixed and MRT_TARGET also supported)
31
+ * 1. --project (alias: --storefront) / --environment flags
32
+ * 2. MRT_PROJECT / MRT_ENVIRONMENT environment variables (SFCC_-prefixed, MRT_STOREFRONT / SFCC_MRT_STOREFRONT, and MRT_TARGET also supported)
17
33
  * 3. dw.json (mrtProject / mrtEnvironment fields)
18
34
  *
19
35
  * Cloud origin resolution:
@@ -21,14 +37,29 @@ import type { AuthStrategy } from '../auth/types.js';
21
37
  * 2. MRT_CLOUD_ORIGIN environment variable (SFCC_MRT_CLOUD_ORIGIN also supported)
22
38
  * 3. dw.json (mrtOrigin field)
23
39
  * 4. Default: https://cloud.mobify.com
40
+ *
41
+ * Backend selection:
42
+ * - `--mrt-backend` flag > `MRT_BACKEND` env (`SFCC_MRT_BACKEND` also supported) > `mrtBackend` dw.json > `auto`.
24
43
  */
25
- export declare abstract class MrtCommand<T extends typeof Command> extends BaseCommand<T> {
44
+ export declare abstract class MrtCommand<T extends typeof Command> extends OAuthCommand<T> {
26
45
  static baseFlags: {
27
46
  'api-key': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
28
47
  project: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
29
48
  environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
30
49
  'cloud-origin': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
31
50
  'credentials-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
51
+ 'mrt-backend': import("@oclif/core/interfaces").OptionFlag<"scapi" | "auto" | "legacy", import("@oclif/core/interfaces").CustomOptions>;
52
+ 'client-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
53
+ 'client-secret': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
54
+ 'auth-scope': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
55
+ 'short-code': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
56
+ 'tenant-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
57
+ 'auth-methods': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
58
+ 'user-auth': import("@oclif/core/interfaces").BooleanFlag<boolean>;
59
+ 'account-manager-host': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
60
+ 'jwt-cert': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
61
+ 'jwt-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
62
+ 'jwt-passphrase': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
32
63
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
33
64
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
34
65
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
@@ -41,18 +72,132 @@ export declare abstract class MrtCommand<T extends typeof Command> extends BaseC
41
72
  'extra-body': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
42
73
  'extra-headers': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
43
74
  };
75
+ /** Ensures the read-only warning prints at most once per command run. */
76
+ private mrtReadOnlyWarned;
77
+ /** Warn once if any read is served while Managed Runtime is in read-only mode. */
78
+ _run<R>(): Promise<R>;
79
+ /**
80
+ * Suppress human-readable logging in `--json` mode.
81
+ *
82
+ * MRT commands emit progress/status lines via {@link BaseCommand.log}, which
83
+ * routes to the structured logger on stderr. When `--json` is set the caller
84
+ * wants machine-readable output only, so these lines are swallowed centrally
85
+ * here instead of guarding every call site with `if (!this.jsonEnabled())`.
86
+ *
87
+ * This only affects `this.log()` (stderr diagnostics). Structured stdout
88
+ * output — tables and detail views written via `ux.stdout` — is untouched and
89
+ * must still be guarded by `jsonEnabled()` at its call site so it never
90
+ * corrupts the JSON payload on stdout.
91
+ */
92
+ log(message?: string, ...args: unknown[]): void;
44
93
  protected loadConfiguration(): Promise<ResolvedB2CConfig>;
94
+ /** Resolved `--mrt-backend` preference (default `'auto'`). */
95
+ protected get mrtBackendPreference(): 'auto' | 'legacy' | 'scapi';
45
96
  /**
46
- * Gets an API key auth strategy for MRT.
97
+ * Gets an API key auth strategy for MRT (legacy MRT Cloud API).
47
98
  */
48
99
  protected getMrtAuth(): AuthStrategy;
49
100
  /**
50
- * Check if MRT credentials are available.
101
+ * Check if legacy MRT credentials (API key) are available.
51
102
  */
52
103
  protected hasMrtCredentials(): boolean;
53
104
  /**
54
- * Validates that MRT credentials are configured, errors if not.
105
+ * Validates that legacy MRT credentials are configured, errors if not.
55
106
  * @throws {Error} If MRT API key is not configured
56
107
  */
57
108
  protected requireMrtCredentials(): void;
109
+ /**
110
+ * Resolve the target MRT project slug for a command that accepts it either as
111
+ * a positional argument or via the `--project` / `--storefront` flag.
112
+ *
113
+ * An explicit positional wins; otherwise the resolved `--project` /
114
+ * `--storefront` flag value is used (which also covers `MRT_PROJECT`,
115
+ * `SFCC_MRT_PROJECT`, `MRT_STOREFRONT` / `SFCC_MRT_STOREFRONT`, and the
116
+ * `mrtProject` field in dw.json). Errors when neither yields a value.
117
+ */
118
+ protected resolveProjectSlug(positional?: string): string;
119
+ /**
120
+ * Resolve the target MRT environment slug for a command that accepts it either
121
+ * as a positional argument or via the `--environment` / `--target` (`-e`) flag.
122
+ *
123
+ * An explicit positional wins; otherwise the resolved `--environment` /
124
+ * `--target` flag value is used (which also covers `MRT_ENVIRONMENT`,
125
+ * `SFCC_MRT_ENVIRONMENT`, `MRT_TARGET`, and the `mrtEnvironment` field in
126
+ * dw.json). Errors when neither yields a value.
127
+ */
128
+ protected resolveEnvironmentSlug(positional?: string): string;
129
+ /**
130
+ * SCAPI MRT connection bundle (shortCode + tenantId + a SCAPI-capable OAuth
131
+ * strategy), or `undefined` when this command cannot reach the SCAPI
132
+ * Storefront APIs.
133
+ *
134
+ * Requires:
135
+ * 1. `shortCode` and `tenantId` are configured, and
136
+ * 2. an OAuth strategy that SCAPI Admin accepts.
137
+ *
138
+ * Auth is resolved via {@link OAuthCommand.getOAuthStrategy} — the same path
139
+ * sibling SCAPI-only commands (e.g. eCDN) use — so a stored client-credentials
140
+ * session (from `b2c auth client`) is reused just like live client-credentials
141
+ * or JWT Bearer config. Browser user auth (Authorization Code + PKCE or the
142
+ * deprecated implicit flow) is the only flow SCAPI Admin rejects, so
143
+ * {@link assertScapiAdminAuthSupported} — the SCAPI client factory's own guard —
144
+ * filters it out here too: under `auto` that lets MRT fall back to legacy, and
145
+ * under explicit `--mrt-backend scapi` it surfaces as
146
+ * {@link mrtScapiUnavailableMessage}.
147
+ *
148
+ * This runs eagerly during backend resolution, so it must never throw or start
149
+ * browser auth. `getOAuthStrategy()` throws when no credentials are configured
150
+ * and `assertScapiAdminAuthSupported()` throws for browser user auth; both mean
151
+ * "SCAPI not available" and yield `undefined`. Built directly rather than via
152
+ * `createB2CInstance`, which requires a hostname MRT commands never set.
153
+ */
154
+ protected getScapiMrtConfig(): ScapiClientConfig | undefined;
155
+ /**
156
+ * Whether this command implements the SCAPI MRT backend. Defaults to `false`;
157
+ * the supported commands (`mrt bundle history`, `mrt bundle list`,
158
+ * `mrt bundle deploy` — both the local-build push and `<bundleId>` deploy —
159
+ * and the `mrt env var` family: `list`, `set`, `delete`, `push`) override it
160
+ * to `true`. Used by {@link init} to reject an explicit `--mrt-backend scapi`
161
+ * on commands that would otherwise silently fall back to legacy — an explicit
162
+ * SCAPI request must never be quietly downgraded.
163
+ */
164
+ protected supportsScapiMrt(): boolean;
165
+ init(): Promise<void>;
166
+ /**
167
+ * Resolves the MRT backend context for a supported command: the resolved
168
+ * `--mrt-backend` preference, a SCAPI connection when the SCAPI prerequisites
169
+ * are met, and the legacy API-key auth when configured. Emits per-prerequisite
170
+ * `-D` debug and validates that at least one usable backend exists for the
171
+ * resolved preference, erroring early with an actionable message otherwise.
172
+ */
173
+ protected getMrtBackendContext(): {
174
+ preference: MrtBackendPreference;
175
+ scapiConnection?: ScapiMrtConnection;
176
+ legacyAuth?: AuthStrategy;
177
+ };
178
+ /**
179
+ * Guardrail for MRT operations the SCAPI backend does not implement yet (e.g.
180
+ * pushing a local build). Explicit `--mrt-backend scapi` errors; `auto` warns
181
+ * only when SCAPI is actually configured (a meaningful notice, not noise for
182
+ * legacy-only users). Callers proceed on the legacy path afterward.
183
+ */
184
+ protected guardUnsupportedByScapiMrt(operationDescription: string): void;
185
+ /** Logs each MRT backend prerequisite as satisfied/missing under `-D`/`--debug`. */
186
+ private debugMrtBackendPrereqs;
187
+ /**
188
+ * Legacy-only flags that configure the MRT Cloud API and have no effect on the
189
+ * SCAPI MRT backend. Detected from the raw argv (like
190
+ * {@link OAuthCommand.detectExplicitAuthFlags}) so only flags the user actually
191
+ * typed are reported — env vars and dw.json are intentionally not covered. Each
192
+ * entry pairs the canonical long flag with any short char alias to match.
193
+ *
194
+ * @returns the long-flag names that were supplied, for a single grouped warning.
195
+ */
196
+ private detectIgnoredLegacyFlags;
197
+ /** Warn once (to stderr) that reads are served from a read-only Managed Runtime. */
198
+ protected warnReadOnlyOnce(): void;
199
+ /** Replace a read-only write rejection with actionable guidance; other errors pass through. */
200
+ protected catch(err: Error & {
201
+ exitCode?: number;
202
+ }): Promise<never>;
58
203
  }