@salesforce/b2c-cli 0.3.0 → 0.4.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 (252) hide show
  1. package/README.md +70 -1
  2. package/bin/dev.cmd +3 -0
  3. package/bin/dev.js +14 -1
  4. package/dist/commands/am/clients/create.d.ts +28 -0
  5. package/dist/commands/am/clients/create.js +156 -0
  6. package/dist/commands/am/clients/create.js.map +1 -0
  7. package/dist/commands/am/clients/delete.d.ts +13 -0
  8. package/dist/commands/am/clients/delete.js +29 -0
  9. package/dist/commands/am/clients/delete.js.map +1 -0
  10. package/dist/commands/am/clients/get.d.ts +26 -0
  11. package/dist/commands/am/clients/get.js +186 -0
  12. package/dist/commands/am/clients/get.js.map +1 -0
  13. package/dist/commands/am/clients/list.d.ts +18 -0
  14. package/dist/commands/am/clients/list.js +139 -0
  15. package/dist/commands/am/clients/list.js.map +1 -0
  16. package/dist/commands/am/clients/password.d.ts +16 -0
  17. package/dist/commands/am/clients/password.js +51 -0
  18. package/dist/commands/am/clients/password.js.map +1 -0
  19. package/dist/commands/am/clients/update.d.ts +34 -0
  20. package/dist/commands/am/clients/update.js +146 -0
  21. package/dist/commands/am/clients/update.js.map +1 -0
  22. package/dist/commands/am/orgs/get.d.ts +23 -0
  23. package/dist/commands/am/orgs/get.js +175 -0
  24. package/dist/commands/am/orgs/get.js.map +1 -0
  25. package/dist/commands/am/orgs/list.d.ts +18 -0
  26. package/dist/commands/am/orgs/list.js +149 -0
  27. package/dist/commands/am/orgs/list.js.map +1 -0
  28. package/dist/commands/am/roles/get.d.ts +15 -0
  29. package/dist/commands/am/roles/get.js +63 -0
  30. package/dist/commands/am/roles/get.js.map +1 -0
  31. package/dist/commands/am/roles/grant.d.ts +18 -0
  32. package/dist/commands/am/roles/grant.js +66 -0
  33. package/dist/commands/am/roles/grant.js.map +1 -0
  34. package/dist/commands/am/roles/list.d.ts +22 -0
  35. package/dist/commands/am/roles/list.js +142 -0
  36. package/dist/commands/am/roles/list.js.map +1 -0
  37. package/dist/commands/am/roles/revoke.d.ts +18 -0
  38. package/dist/commands/am/roles/revoke.js +66 -0
  39. package/dist/commands/am/roles/revoke.js.map +1 -0
  40. package/dist/commands/am/users/create.d.ts +17 -0
  41. package/dist/commands/am/users/create.js +56 -0
  42. package/dist/commands/am/users/create.js.map +1 -0
  43. package/dist/commands/am/users/delete.d.ts +16 -0
  44. package/dist/commands/am/users/delete.js +63 -0
  45. package/dist/commands/am/users/delete.js.map +1 -0
  46. package/dist/commands/am/users/get.d.ts +23 -0
  47. package/dist/commands/am/users/get.js +161 -0
  48. package/dist/commands/am/users/get.js.map +1 -0
  49. package/dist/commands/am/users/list.d.ts +21 -0
  50. package/dist/commands/am/users/list.js +162 -0
  51. package/dist/commands/am/users/list.js.map +1 -0
  52. package/dist/commands/am/users/reset.d.ts +13 -0
  53. package/dist/commands/am/users/reset.js +43 -0
  54. package/dist/commands/am/users/reset.js.map +1 -0
  55. package/dist/commands/am/users/update.d.ts +18 -0
  56. package/dist/commands/am/users/update.js +63 -0
  57. package/dist/commands/am/users/update.js.map +1 -0
  58. package/dist/commands/code/activate.d.ts +1 -0
  59. package/dist/commands/code/delete.d.ts +1 -0
  60. package/dist/commands/code/deploy.d.ts +1 -0
  61. package/dist/commands/code/watch.d.ts +1 -0
  62. package/dist/commands/content/export.d.ts +57 -0
  63. package/dist/commands/content/export.js +217 -0
  64. package/dist/commands/content/export.js.map +1 -0
  65. package/dist/commands/content/list.d.ts +56 -0
  66. package/dist/commands/content/list.js +133 -0
  67. package/dist/commands/content/list.js.map +1 -0
  68. package/dist/commands/docs/download.d.ts +1 -0
  69. package/dist/commands/ecdn/cache/purge.d.ts +1 -0
  70. package/dist/commands/ecdn/certificates/add.d.ts +1 -0
  71. package/dist/commands/ecdn/certificates/delete.d.ts +1 -0
  72. package/dist/commands/ecdn/certificates/list.d.ts +1 -0
  73. package/dist/commands/ecdn/certificates/update.d.ts +1 -0
  74. package/dist/commands/ecdn/certificates/validate.d.ts +1 -0
  75. package/dist/commands/ecdn/cipher-suites/get.d.ts +1 -0
  76. package/dist/commands/ecdn/cipher-suites/update.d.ts +1 -0
  77. package/dist/commands/ecdn/logpush/jobs/create.d.ts +1 -0
  78. package/dist/commands/ecdn/logpush/jobs/delete.d.ts +1 -0
  79. package/dist/commands/ecdn/logpush/jobs/get.d.ts +1 -0
  80. package/dist/commands/ecdn/logpush/jobs/list.d.ts +1 -0
  81. package/dist/commands/ecdn/logpush/jobs/update.d.ts +1 -0
  82. package/dist/commands/ecdn/logpush/ownership.d.ts +1 -0
  83. package/dist/commands/ecdn/mrt-rules/create.d.ts +1 -0
  84. package/dist/commands/ecdn/mrt-rules/delete.d.ts +1 -0
  85. package/dist/commands/ecdn/mrt-rules/get.d.ts +1 -0
  86. package/dist/commands/ecdn/mrt-rules/rules/delete.d.ts +1 -0
  87. package/dist/commands/ecdn/mrt-rules/rules/update.d.ts +1 -0
  88. package/dist/commands/ecdn/mrt-rules/update.d.ts +1 -0
  89. package/dist/commands/ecdn/mtls/create.d.ts +1 -0
  90. package/dist/commands/ecdn/mtls/delete.d.ts +1 -0
  91. package/dist/commands/ecdn/mtls/get.d.ts +1 -0
  92. package/dist/commands/ecdn/mtls/list.d.ts +1 -0
  93. package/dist/commands/ecdn/origin-headers/delete.d.ts +1 -0
  94. package/dist/commands/ecdn/origin-headers/get.d.ts +1 -0
  95. package/dist/commands/ecdn/origin-headers/set.d.ts +1 -0
  96. package/dist/commands/ecdn/page-shield/notifications/create.d.ts +1 -0
  97. package/dist/commands/ecdn/page-shield/notifications/delete.d.ts +1 -0
  98. package/dist/commands/ecdn/page-shield/notifications/list.d.ts +1 -0
  99. package/dist/commands/ecdn/page-shield/policies/create.d.ts +1 -0
  100. package/dist/commands/ecdn/page-shield/policies/delete.d.ts +1 -0
  101. package/dist/commands/ecdn/page-shield/policies/get.d.ts +1 -0
  102. package/dist/commands/ecdn/page-shield/policies/list.d.ts +1 -0
  103. package/dist/commands/ecdn/page-shield/policies/update.d.ts +1 -0
  104. package/dist/commands/ecdn/page-shield/scripts/get.d.ts +1 -0
  105. package/dist/commands/ecdn/page-shield/scripts/list.d.ts +1 -0
  106. package/dist/commands/ecdn/security/get.d.ts +1 -0
  107. package/dist/commands/ecdn/security/update.d.ts +1 -0
  108. package/dist/commands/ecdn/speed/get.d.ts +1 -0
  109. package/dist/commands/ecdn/speed/update.d.ts +1 -0
  110. package/dist/commands/ecdn/waf/groups/list.d.ts +1 -0
  111. package/dist/commands/ecdn/waf/groups/update.d.ts +1 -0
  112. package/dist/commands/ecdn/waf/managed-rules/list.d.ts +1 -0
  113. package/dist/commands/ecdn/waf/managed-rules/update.d.ts +1 -0
  114. package/dist/commands/ecdn/waf/migrate.d.ts +1 -0
  115. package/dist/commands/ecdn/waf/owasp/get.d.ts +1 -0
  116. package/dist/commands/ecdn/waf/owasp/update.d.ts +1 -0
  117. package/dist/commands/ecdn/waf/rules/get.d.ts +1 -0
  118. package/dist/commands/ecdn/waf/rules/list.d.ts +1 -0
  119. package/dist/commands/ecdn/waf/rules/update.d.ts +1 -0
  120. package/dist/commands/ecdn/waf/rulesets/list.d.ts +1 -0
  121. package/dist/commands/ecdn/waf/rulesets/update.d.ts +1 -0
  122. package/dist/commands/ecdn/zones/create.d.ts +1 -0
  123. package/dist/commands/ecdn/zones/list.d.ts +1 -0
  124. package/dist/commands/job/export.d.ts +1 -0
  125. package/dist/commands/job/import.d.ts +1 -0
  126. package/dist/commands/job/run.d.ts +1 -0
  127. package/dist/commands/job/search.d.ts +1 -0
  128. package/dist/commands/job/wait.d.ts +1 -0
  129. package/dist/commands/logs/get.d.ts +1 -0
  130. package/dist/commands/logs/list.d.ts +1 -0
  131. package/dist/commands/logs/tail.d.ts +1 -0
  132. package/dist/commands/mrt/bundle/deploy.js +24 -4
  133. package/dist/commands/mrt/bundle/deploy.js.map +1 -1
  134. package/dist/commands/mrt/tail-logs.d.ts +27 -0
  135. package/dist/commands/mrt/tail-logs.js +137 -0
  136. package/dist/commands/mrt/tail-logs.js.map +1 -0
  137. package/dist/commands/{ods → sandbox}/create.d.ts +8 -14
  138. package/dist/commands/{ods → sandbox}/create.js +112 -102
  139. package/dist/commands/sandbox/create.js.map +1 -0
  140. package/dist/commands/sandbox/delete.d.ts +19 -0
  141. package/dist/commands/sandbox/delete.js +141 -0
  142. package/dist/commands/sandbox/delete.js.map +1 -0
  143. package/dist/commands/{ods → sandbox}/get.d.ts +2 -1
  144. package/dist/commands/{ods → sandbox}/get.js +5 -4
  145. package/dist/commands/sandbox/get.js.map +1 -0
  146. package/dist/commands/{ods → sandbox}/info.d.ts +2 -1
  147. package/dist/commands/{ods → sandbox}/info.js +6 -5
  148. package/dist/commands/sandbox/info.js.map +1 -0
  149. package/dist/commands/{ods → sandbox}/list.d.ts +2 -1
  150. package/dist/commands/{ods → sandbox}/list.js +6 -5
  151. package/dist/commands/sandbox/list.js.map +1 -0
  152. package/dist/commands/{ods → sandbox}/restart.d.ts +7 -1
  153. package/dist/commands/sandbox/restart.js +107 -0
  154. package/dist/commands/sandbox/restart.js.map +1 -0
  155. package/dist/commands/{ods → sandbox}/start.d.ts +7 -1
  156. package/dist/commands/sandbox/start.js +108 -0
  157. package/dist/commands/sandbox/start.js.map +1 -0
  158. package/dist/commands/{ods → sandbox}/stop.d.ts +7 -1
  159. package/dist/commands/sandbox/stop.js +107 -0
  160. package/dist/commands/sandbox/stop.js.map +1 -0
  161. package/dist/commands/scaffold/generate.d.ts +22 -0
  162. package/dist/commands/scaffold/generate.js +74 -0
  163. package/dist/commands/scaffold/generate.js.map +1 -0
  164. package/dist/commands/scaffold/index.d.ts +24 -0
  165. package/dist/commands/scaffold/index.js +80 -0
  166. package/dist/commands/scaffold/index.js.map +1 -0
  167. package/dist/commands/scaffold/info.d.ts +24 -0
  168. package/dist/commands/scaffold/info.js +89 -0
  169. package/dist/commands/scaffold/info.js.map +1 -0
  170. package/dist/commands/scaffold/init.d.ts +29 -0
  171. package/dist/commands/scaffold/init.js +221 -0
  172. package/dist/commands/scaffold/init.js.map +1 -0
  173. package/dist/commands/scaffold/list.d.ts +38 -0
  174. package/dist/commands/scaffold/list.js +131 -0
  175. package/dist/commands/scaffold/list.js.map +1 -0
  176. package/dist/commands/scaffold/search.d.ts +32 -0
  177. package/dist/commands/scaffold/search.js +97 -0
  178. package/dist/commands/scaffold/search.js.map +1 -0
  179. package/dist/commands/scaffold/validate.d.ts +24 -0
  180. package/dist/commands/scaffold/validate.js +74 -0
  181. package/dist/commands/scaffold/validate.js.map +1 -0
  182. package/dist/commands/scapi/custom/status.d.ts +1 -0
  183. package/dist/commands/scapi/schemas/get.d.ts +1 -0
  184. package/dist/commands/scapi/schemas/list.d.ts +1 -0
  185. package/dist/commands/setup/index.d.ts +12 -0
  186. package/dist/commands/setup/index.js +34 -0
  187. package/dist/commands/setup/index.js.map +1 -0
  188. package/dist/commands/setup/{config.d.ts → inspect.d.ts} +5 -4
  189. package/dist/commands/setup/{config.js → inspect.js} +5 -3
  190. package/dist/commands/setup/inspect.js.map +1 -0
  191. package/dist/commands/setup/instance/create.d.ts +43 -0
  192. package/dist/commands/setup/instance/create.js +269 -0
  193. package/dist/commands/setup/instance/create.js.map +1 -0
  194. package/dist/commands/setup/instance/index.d.ts +9 -0
  195. package/dist/commands/setup/instance/index.js +22 -0
  196. package/dist/commands/setup/instance/index.js.map +1 -0
  197. package/dist/commands/setup/instance/list.d.ts +31 -0
  198. package/dist/commands/setup/instance/list.js +68 -0
  199. package/dist/commands/setup/instance/list.js.map +1 -0
  200. package/dist/commands/setup/instance/remove.d.ts +34 -0
  201. package/dist/commands/setup/instance/remove.js +75 -0
  202. package/dist/commands/setup/instance/remove.js.map +1 -0
  203. package/dist/commands/setup/instance/set-active.d.ts +33 -0
  204. package/dist/commands/setup/instance/set-active.js +78 -0
  205. package/dist/commands/setup/instance/set-active.js.map +1 -0
  206. package/dist/commands/slas/client/create.d.ts +1 -0
  207. package/dist/commands/slas/client/create.js +1 -0
  208. package/dist/commands/slas/client/create.js.map +1 -1
  209. package/dist/commands/slas/client/delete.d.ts +1 -0
  210. package/dist/commands/slas/client/get.d.ts +1 -0
  211. package/dist/commands/slas/client/list.d.ts +1 -0
  212. package/dist/commands/slas/client/list.js +8 -3
  213. package/dist/commands/slas/client/list.js.map +1 -1
  214. package/dist/commands/slas/client/update.d.ts +1 -0
  215. package/dist/commands/webdav/get.d.ts +1 -0
  216. package/dist/commands/webdav/rm.d.ts +1 -0
  217. package/dist/i18n/locales/en.d.ts +42 -0
  218. package/dist/i18n/locales/en.js +42 -0
  219. package/dist/i18n/locales/en.js.map +1 -1
  220. package/dist/i18n/locales/index.d.ts +42 -0
  221. package/dist/lib/scaffold/generate-helper.d.ts +47 -0
  222. package/dist/lib/scaffold/generate-helper.js +271 -0
  223. package/dist/lib/scaffold/generate-helper.js.map +1 -0
  224. package/dist/lib/scaffold/source-resolver.d.ts +25 -0
  225. package/dist/lib/scaffold/source-resolver.js +37 -0
  226. package/dist/lib/scaffold/source-resolver.js.map +1 -0
  227. package/dist/utils/ecdn/zone-command.d.ts +1 -0
  228. package/dist/utils/mrt-logs/format.d.ts +28 -0
  229. package/dist/utils/mrt-logs/format.js +90 -0
  230. package/dist/utils/mrt-logs/format.js.map +1 -0
  231. package/dist/utils/mrt-logs/index.d.ts +1 -0
  232. package/dist/utils/mrt-logs/index.js +7 -0
  233. package/dist/utils/mrt-logs/index.js.map +1 -0
  234. package/dist/utils/slas/client.d.ts +7 -0
  235. package/dist/utils/slas/client.js +26 -13
  236. package/dist/utils/slas/client.js.map +1 -1
  237. package/oclif.manifest.json +13503 -4591
  238. package/package.json +61 -19
  239. package/dist/commands/ods/create.js.map +0 -1
  240. package/dist/commands/ods/delete.d.ts +0 -15
  241. package/dist/commands/ods/delete.js +0 -86
  242. package/dist/commands/ods/delete.js.map +0 -1
  243. package/dist/commands/ods/get.js.map +0 -1
  244. package/dist/commands/ods/info.js.map +0 -1
  245. package/dist/commands/ods/list.js.map +0 -1
  246. package/dist/commands/ods/restart.js +0 -51
  247. package/dist/commands/ods/restart.js.map +0 -1
  248. package/dist/commands/ods/start.js +0 -51
  249. package/dist/commands/ods/start.js.map +0 -1
  250. package/dist/commands/ods/stop.js +0 -51
  251. package/dist/commands/ods/stop.js.map +0 -1
  252. package/dist/commands/setup/config.js.map +0 -1
@@ -58,8 +58,9 @@ const tableRenderer = new TableRenderer(COLUMNS);
58
58
  /**
59
59
  * Command to list all on-demand sandboxes.
60
60
  */
61
- export default class OdsList extends OdsCommand {
62
- static description = withDocs(t('commands.ods.list.description', 'List all on-demand sandboxes'), '/cli/ods.html#b2c-ods-list');
61
+ export default class SandboxList extends OdsCommand {
62
+ static aliases = ['ods:list'];
63
+ static description = withDocs(t('commands.sandbox.list.description', 'List all on-demand sandboxes'), '/cli/sandbox.html#b2c-sandbox-list');
63
64
  static enableJsonFlag = true;
64
65
  static examples = [
65
66
  '<%= config.bin %> <%= command.id %>',
@@ -109,7 +110,7 @@ export default class OdsList extends OdsCommand {
109
110
  }
110
111
  filterParams = parts.join('&');
111
112
  }
112
- this.log(t('commands.ods.list.fetching', 'Fetching sandboxes from {{host}}...', { host }));
113
+ this.log(t('commands.sandbox.list.fetching', 'Fetching sandboxes from {{host}}...', { host }));
113
114
  const result = await this.odsClient.GET('/sandboxes', {
114
115
  params: {
115
116
  query: {
@@ -119,7 +120,7 @@ export default class OdsList extends OdsCommand {
119
120
  },
120
121
  });
121
122
  if (result.error) {
122
- this.error(t('commands.ods.list.error', 'Failed to fetch sandboxes: {{message}}', {
123
+ this.error(t('commands.sandbox.list.error', 'Failed to fetch sandboxes: {{message}}', {
123
124
  message: getApiErrorMessage(result.error, result.response),
124
125
  }));
125
126
  }
@@ -132,7 +133,7 @@ export default class OdsList extends OdsCommand {
132
133
  return response;
133
134
  }
134
135
  if (sandboxes.length === 0) {
135
- this.log(t('commands.ods.list.noSandboxes', 'No sandboxes found.'));
136
+ this.log(t('commands.sandbox.list.noSandboxes', 'No sandboxes found.'));
136
137
  return response;
137
138
  }
138
139
  tableRenderer.render(sandboxes, this.getSelectedColumns());
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/sandbox/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,EAAC,UAAU,EAAE,aAAa,EAAiB,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAC,kBAAkB,EAAqB,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAC,CAAC,EAAE,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAYhD,MAAM,OAAO,GAA4C;IACvD,KAAK,EAAE;QACL,MAAM,EAAE,OAAO;QACf,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG;KAC3B;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG;KAC9B;IACD,KAAK,EAAE;QACL,MAAM,EAAE,OAAO;QACf,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG;KAC3B;IACD,OAAO,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,GAAG;KACrC;IACD,OAAO,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KACnF;IACD,GAAG,EAAE;QACH,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KACvE;IACD,EAAE,EAAE;QACF,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG;KACxB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,UAAU;QAClB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG;QAC7B,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,MAAM,EAAE,YAAY;QACpB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG;QAC9B,QAAQ,EAAE,IAAI;KACf;IACD,aAAa,EAAE;QACb,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAEF,+CAA+C;AAC/C,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAE1F,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,UAA8B;IACrE,MAAM,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC;IAE9B,MAAM,CAAC,WAAW,GAAG,QAAQ,CAC3B,CAAC,CAAC,mCAAmC,EAAE,8BAA8B,CAAC,EACtE,oCAAoC,CACrC,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;QACrC,kDAAkD;QAClD,gFAAgF;QAChF,oDAAoD;QACpD,gDAAgD;QAChD,6EAA6E;QAC7E,4CAA4C;KAC7C,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;SACnD,CAAC;QACF,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;YAC5B,WAAW,EAAE,iFAAiF;SAC/F,CAAC;QACF,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;YAC5B,WAAW,EAAE,uCAAuC;YACpD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,oDAAoD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACnG,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4CAA4C;YACzD,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAEpD,6BAA6B;QAC7B,IAAI,YAAgC,CAAC;QACrC,IAAI,KAAK,IAAI,eAAe,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,eAAe,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,CAAC;YACD,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,qCAAqC,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QAE7F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE;YACpD,MAAM,EAAE;gBACN,KAAK,EAAE;oBACL,eAAe,EAAE,cAAc;oBAE/B,aAAa,EAAE,YAAY;iBAC5B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CACR,CAAC,CAAC,6BAA6B,EAAE,wCAAwC,EAAE;gBACzE,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC;aAC3D,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAoB;YAChC,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,IAAI,EAAE,SAAS;SAChB,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,EAAE,qBAAqB,CAAC,CAAC,CAAC;YACxE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAE3D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAErC,IAAI,WAAW,EAAE,CAAC;YAChB,kCAAkC;YAClC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,0CAA0C,aAAa,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChG,OAAO,eAAe,CAAC;YACzB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB;YACnB,OAAO,aAAa,CAAC,aAAa,EAAE,CAAC;QACvC,CAAC;QAED,iCAAiC;QACjC,OAAO,eAAe,CAAC;IACzB,CAAC"}
@@ -4,13 +4,19 @@ type SandboxOperationModel = OdsComponents['schemas']['SandboxOperationModel'];
4
4
  /**
5
5
  * Command to restart an on-demand sandbox.
6
6
  */
7
- export default class OdsRestart extends OdsCommand<typeof OdsRestart> {
7
+ export default class SandboxRestart extends OdsCommand<typeof SandboxRestart> {
8
+ static aliases: string[];
8
9
  static args: {
9
10
  sandboxId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
11
  };
11
12
  static description: string;
12
13
  static enableJsonFlag: boolean;
13
14
  static examples: string[];
15
+ static flags: {
16
+ wait: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ 'poll-interval': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
18
+ timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
19
+ };
14
20
  run(): Promise<SandboxOperationModel>;
15
21
  }
16
22
  export {};
@@ -0,0 +1,107 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { Args, Flags } from '@oclif/core';
7
+ import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { getApiErrorMessage, SandboxPollingError, SandboxPollingTimeoutError, SandboxTerminalStateError, waitForSandbox, } from '@salesforce/b2c-tooling-sdk';
9
+ import { t, withDocs } from '../../i18n/index.js';
10
+ /**
11
+ * Command to restart an on-demand sandbox.
12
+ */
13
+ export default class SandboxRestart extends OdsCommand {
14
+ static aliases = ['ods:restart'];
15
+ static args = {
16
+ sandboxId: Args.string({
17
+ description: 'Sandbox ID (UUID or realm-instance, e.g., abcd-123)',
18
+ required: true,
19
+ }),
20
+ };
21
+ static description = withDocs(t('commands.sandbox.restart.description', 'Restart an on-demand sandbox'), '/cli/sandbox.html#b2c-sandbox-restart');
22
+ static enableJsonFlag = true;
23
+ static examples = [
24
+ '<%= config.bin %> <%= command.id %> abc12345-1234-1234-1234-abc123456789',
25
+ '<%= config.bin %> <%= command.id %> zzzv-123',
26
+ '<%= config.bin %> <%= command.id %> zzzv-123 --wait',
27
+ '<%= config.bin %> <%= command.id %> zzzv-123 --wait --poll-interval 15',
28
+ '<%= config.bin %> <%= command.id %> zzzv_123 --json',
29
+ ];
30
+ static flags = {
31
+ wait: Flags.boolean({
32
+ char: 'w',
33
+ description: 'Wait for the sandbox to reach started or failed state before returning',
34
+ default: false,
35
+ }),
36
+ 'poll-interval': Flags.integer({
37
+ description: 'Polling interval in seconds when using --wait',
38
+ default: 10,
39
+ dependsOn: ['wait'],
40
+ }),
41
+ timeout: Flags.integer({
42
+ description: 'Maximum time to wait in seconds when using --wait (0 for no timeout)',
43
+ default: 600,
44
+ dependsOn: ['wait'],
45
+ }),
46
+ };
47
+ async run() {
48
+ const sandboxId = await this.resolveSandboxId(this.args.sandboxId);
49
+ const wait = this.flags.wait;
50
+ const pollInterval = this.flags['poll-interval'];
51
+ const timeout = this.flags.timeout;
52
+ this.log(t('commands.sandbox.restart.restarting', 'Restarting sandbox {{sandboxId}}...', { sandboxId }));
53
+ const result = await this.odsClient.POST('/sandboxes/{sandboxId}/operations', {
54
+ params: {
55
+ path: { sandboxId },
56
+ },
57
+ body: {
58
+ operation: 'restart',
59
+ },
60
+ });
61
+ if (!result.data?.data) {
62
+ this.error(t('commands.sandbox.restart.error', 'Failed to restart sandbox: {{message}}', {
63
+ message: getApiErrorMessage(result.error, result.response),
64
+ }));
65
+ }
66
+ const operation = result.data.data;
67
+ this.log(t('commands.sandbox.restart.success', 'Restart operation {{operationState}}. Sandbox state: {{sandboxState}}', {
68
+ operationState: operation.operationState,
69
+ sandboxState: operation.sandboxState || 'unknown',
70
+ }));
71
+ if (wait) {
72
+ try {
73
+ await waitForSandbox(this.odsClient, {
74
+ sandboxId,
75
+ targetState: 'started',
76
+ pollIntervalSeconds: pollInterval,
77
+ timeoutSeconds: timeout,
78
+ onPoll: ({ elapsedSeconds, state }) => {
79
+ this.logger.info({ sandboxId, elapsed: elapsedSeconds, state }, `[${elapsedSeconds}s] State: ${state}`);
80
+ },
81
+ });
82
+ }
83
+ catch (error) {
84
+ if (error instanceof SandboxPollingTimeoutError) {
85
+ this.error(t('commands.sandbox.restart.timeout', 'Timeout waiting for sandbox after {{seconds}} seconds', {
86
+ seconds: String(error.timeoutSeconds),
87
+ }));
88
+ }
89
+ if (error instanceof SandboxTerminalStateError) {
90
+ this.error(t('commands.sandbox.restart.failed', 'Sandbox did not reach the expected state. Current state: {{state}}', {
91
+ state: error.state || 'unknown',
92
+ }));
93
+ }
94
+ if (error instanceof SandboxPollingError) {
95
+ this.error(t('commands.sandbox.restart.pollError', 'Failed to fetch sandbox status: {{message}}', {
96
+ message: error.message,
97
+ }));
98
+ }
99
+ throw error;
100
+ }
101
+ this.log('');
102
+ this.logger.info({ sandboxId }, t('commands.sandbox.restart.ready', 'Sandbox is now ready'));
103
+ }
104
+ return operation;
105
+ }
106
+ }
107
+ //# sourceMappingURL=restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../src/commands/sandbox/restart.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,19 @@ type SandboxOperationModel = OdsComponents['schemas']['SandboxOperationModel'];
4
4
  /**
5
5
  * Command to start an on-demand sandbox.
6
6
  */
7
- export default class OdsStart extends OdsCommand<typeof OdsStart> {
7
+ export default class SandboxStart extends OdsCommand<typeof SandboxStart> {
8
+ static aliases: string[];
8
9
  static args: {
9
10
  sandboxId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
11
  };
11
12
  static description: string;
12
13
  static enableJsonFlag: boolean;
13
14
  static examples: string[];
15
+ static flags: {
16
+ wait: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ 'poll-interval': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
18
+ timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
19
+ };
14
20
  run(): Promise<SandboxOperationModel>;
15
21
  }
16
22
  export {};
@@ -0,0 +1,108 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { Args, Flags } from '@oclif/core';
7
+ import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { getApiErrorMessage, SandboxPollingError, SandboxPollingTimeoutError, SandboxTerminalStateError, waitForSandbox, } from '@salesforce/b2c-tooling-sdk';
9
+ import { t, withDocs } from '../../i18n/index.js';
10
+ /**
11
+ * Command to start an on-demand sandbox.
12
+ */
13
+ export default class SandboxStart extends OdsCommand {
14
+ static aliases = ['ods:start'];
15
+ static args = {
16
+ sandboxId: Args.string({
17
+ description: 'Sandbox ID (UUID or realm-instance, e.g., abcd-123)',
18
+ required: true,
19
+ }),
20
+ };
21
+ static description = withDocs(t('commands.sandbox.start.description', 'Start an on-demand sandbox'), '/cli/sandbox.html#b2c-sandbox-start');
22
+ static enableJsonFlag = true;
23
+ static examples = [
24
+ '<%= config.bin %> <%= command.id %> abc12345-1234-1234-1234-abc123456789',
25
+ '<%= config.bin %> <%= command.id %> zzzv-123',
26
+ '<%= config.bin %> <%= command.id %> zzzv-123 --wait',
27
+ '<%= config.bin %> <%= command.id %> zzzv-123 --wait --poll-interval 15',
28
+ '<%= config.bin %> <%= command.id %> zzzv_123 --json',
29
+ ];
30
+ static flags = {
31
+ wait: Flags.boolean({
32
+ char: 'w',
33
+ description: 'Wait for the sandbox to reach started or failed state before returning',
34
+ default: false,
35
+ }),
36
+ 'poll-interval': Flags.integer({
37
+ description: 'Polling interval in seconds when using --wait',
38
+ default: 10,
39
+ dependsOn: ['wait'],
40
+ }),
41
+ timeout: Flags.integer({
42
+ description: 'Maximum time to wait in seconds when using --wait (0 for no timeout)',
43
+ default: 600,
44
+ dependsOn: ['wait'],
45
+ }),
46
+ };
47
+ async run() {
48
+ const sandboxId = await this.resolveSandboxId(this.args.sandboxId);
49
+ const wait = this.flags.wait;
50
+ const pollInterval = this.flags['poll-interval'];
51
+ const timeout = this.flags.timeout;
52
+ this.log(t('commands.sandbox.start.starting', 'Starting sandbox {{sandboxId}}...', { sandboxId }));
53
+ const result = await this.odsClient.POST('/sandboxes/{sandboxId}/operations', {
54
+ params: {
55
+ path: { sandboxId },
56
+ },
57
+ body: {
58
+ operation: 'start',
59
+ },
60
+ });
61
+ if (!result.data?.data) {
62
+ this.error(t('commands.sandbox.start.error', 'Failed to start sandbox: {{message}}', {
63
+ message: getApiErrorMessage(result.error, result.response),
64
+ }));
65
+ }
66
+ const operation = result.data.data;
67
+ this.log(t('commands.sandbox.start.success', 'Start operation {{operationState}}. Sandbox state: {{sandboxState}}', {
68
+ operationState: operation.operationState,
69
+ sandboxState: operation.sandboxState || 'unknown',
70
+ }));
71
+ if (wait) {
72
+ this.log(t('commands.sandbox.start.waiting', 'Waiting for sandbox to reach state {{state}}...', { state: 'started' }));
73
+ try {
74
+ await waitForSandbox(this.odsClient, {
75
+ sandboxId,
76
+ targetState: 'started',
77
+ pollIntervalSeconds: pollInterval,
78
+ timeoutSeconds: timeout,
79
+ onPoll: ({ elapsedSeconds, state }) => {
80
+ this.logger.info({ sandboxId, elapsed: elapsedSeconds, state }, `[${elapsedSeconds}s] State: ${state}`);
81
+ },
82
+ });
83
+ }
84
+ catch (error) {
85
+ if (error instanceof SandboxPollingTimeoutError) {
86
+ this.error(t('commands.sandbox.start.timeout', 'Timeout waiting for sandbox after {{seconds}} seconds', {
87
+ seconds: String(error.timeoutSeconds),
88
+ }));
89
+ }
90
+ if (error instanceof SandboxTerminalStateError) {
91
+ this.error(t('commands.sandbox.start.failed', 'Sandbox did not reach the expected state. Current state: {{state}}', {
92
+ state: error.state || 'unknown',
93
+ }));
94
+ }
95
+ if (error instanceof SandboxPollingError) {
96
+ this.error(t('commands.sandbox.start.pollError', 'Failed to fetch sandbox status: {{message}}', {
97
+ message: error.message,
98
+ }));
99
+ }
100
+ throw error;
101
+ }
102
+ this.log('');
103
+ this.logger.info({ sandboxId }, t('commands.sandbox.start.ready', 'Sandbox is now ready'));
104
+ }
105
+ return operation;
106
+ }
107
+ }
108
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/sandbox/start.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,19 @@ type SandboxOperationModel = OdsComponents['schemas']['SandboxOperationModel'];
4
4
  /**
5
5
  * Command to stop an on-demand sandbox.
6
6
  */
7
- export default class OdsStop extends OdsCommand<typeof OdsStop> {
7
+ export default class SandboxStop extends OdsCommand<typeof SandboxStop> {
8
+ static aliases: string[];
8
9
  static args: {
9
10
  sandboxId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
11
  };
11
12
  static description: string;
12
13
  static enableJsonFlag: boolean;
13
14
  static examples: string[];
15
+ static flags: {
16
+ wait: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ 'poll-interval': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
18
+ timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
19
+ };
14
20
  run(): Promise<SandboxOperationModel>;
15
21
  }
16
22
  export {};
@@ -0,0 +1,107 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { Args, Flags } from '@oclif/core';
7
+ import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { getApiErrorMessage, SandboxPollingError, SandboxPollingTimeoutError, SandboxTerminalStateError, waitForSandbox, } from '@salesforce/b2c-tooling-sdk';
9
+ import { t, withDocs } from '../../i18n/index.js';
10
+ /**
11
+ * Command to stop an on-demand sandbox.
12
+ */
13
+ export default class SandboxStop extends OdsCommand {
14
+ static aliases = ['ods:stop'];
15
+ static args = {
16
+ sandboxId: Args.string({
17
+ description: 'Sandbox ID (UUID or realm-instance, e.g., abcd-123)',
18
+ required: true,
19
+ }),
20
+ };
21
+ static description = withDocs(t('commands.sandbox.stop.description', 'Stop an on-demand sandbox'), '/cli/sandbox.html#b2c-sandbox-stop');
22
+ static enableJsonFlag = true;
23
+ static examples = [
24
+ '<%= config.bin %> <%= command.id %> abc12345-1234-1234-1234-abc123456789',
25
+ '<%= config.bin %> <%= command.id %> zzzv-123',
26
+ '<%= config.bin %> <%= command.id %> zzzv-123 --wait',
27
+ '<%= config.bin %> <%= command.id %> zzzv-123 --wait --poll-interval 15',
28
+ '<%= config.bin %> <%= command.id %> zzzv_123 --json',
29
+ ];
30
+ static flags = {
31
+ wait: Flags.boolean({
32
+ char: 'w',
33
+ description: 'Wait for the sandbox to reach stopped or failed state before returning',
34
+ default: false,
35
+ }),
36
+ 'poll-interval': Flags.integer({
37
+ description: 'Polling interval in seconds when using --wait',
38
+ default: 10,
39
+ dependsOn: ['wait'],
40
+ }),
41
+ timeout: Flags.integer({
42
+ description: 'Maximum time to wait in seconds when using --wait (0 for no timeout)',
43
+ default: 600,
44
+ dependsOn: ['wait'],
45
+ }),
46
+ };
47
+ async run() {
48
+ const sandboxId = await this.resolveSandboxId(this.args.sandboxId);
49
+ const wait = this.flags.wait;
50
+ const pollInterval = this.flags['poll-interval'];
51
+ const timeout = this.flags.timeout;
52
+ this.log(t('commands.sandbox.stop.stopping', 'Stopping sandbox {{sandboxId}}...', { sandboxId }));
53
+ const result = await this.odsClient.POST('/sandboxes/{sandboxId}/operations', {
54
+ params: {
55
+ path: { sandboxId },
56
+ },
57
+ body: {
58
+ operation: 'stop',
59
+ },
60
+ });
61
+ if (!result.data?.data) {
62
+ this.error(t('commands.sandbox.stop.error', 'Failed to stop sandbox: {{message}}', {
63
+ message: getApiErrorMessage(result.error, result.response),
64
+ }));
65
+ }
66
+ const operation = result.data.data;
67
+ this.log(t('commands.sandbox.stop.success', 'Stop operation {{operationState}}. Sandbox state: {{sandboxState}}', {
68
+ operationState: operation.operationState,
69
+ sandboxState: operation.sandboxState || 'unknown',
70
+ }));
71
+ if (wait) {
72
+ try {
73
+ await waitForSandbox(this.odsClient, {
74
+ sandboxId,
75
+ targetState: 'stopped',
76
+ pollIntervalSeconds: pollInterval,
77
+ timeoutSeconds: timeout,
78
+ onPoll: ({ elapsedSeconds, state }) => {
79
+ this.logger.info({ sandboxId, elapsed: elapsedSeconds, state }, `[${elapsedSeconds}s] State: ${state}`);
80
+ },
81
+ });
82
+ }
83
+ catch (error) {
84
+ if (error instanceof SandboxPollingTimeoutError) {
85
+ this.error(t('commands.sandbox.stop.timeout', 'Timeout waiting for sandbox after {{seconds}} seconds', {
86
+ seconds: String(error.timeoutSeconds),
87
+ }));
88
+ }
89
+ if (error instanceof SandboxTerminalStateError) {
90
+ this.error(t('commands.sandbox.stop.failed', 'Sandbox did not reach the expected state. Current state: {{state}}', {
91
+ state: error.state || 'unknown',
92
+ }));
93
+ }
94
+ if (error instanceof SandboxPollingError) {
95
+ this.error(t('commands.sandbox.stop.pollError', 'Failed to fetch sandbox status: {{message}}', {
96
+ message: error.message,
97
+ }));
98
+ }
99
+ throw error;
100
+ }
101
+ this.log('');
102
+ this.logger.info({ sandboxId }, t('commands.sandbox.stop.ready', 'Sandbox is now stopped'));
103
+ }
104
+ return operation;
105
+ }
106
+ }
107
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/sandbox/stop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type GenerateResponse } from '../../lib/scaffold/generate-helper.js';
3
+ export type { GenerateResponse } from '../../lib/scaffold/generate-helper.js';
4
+ /**
5
+ * Command to generate a project from a scaffold.
6
+ */
7
+ export default class ScaffoldGenerate extends BaseCommand<typeof ScaffoldGenerate> {
8
+ static args: {
9
+ scaffoldId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
+ };
11
+ static description: string;
12
+ static enableJsonFlag: boolean;
13
+ static examples: string[];
14
+ static flags: {
15
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ option: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ };
21
+ run(): Promise<GenerateResponse | void>;
22
+ }
@@ -0,0 +1,74 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { Args, Flags } from '@oclif/core';
7
+ import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { executeScaffoldGenerate } from '../../lib/scaffold/generate-helper.js';
9
+ import { t, withDocs } from '../../i18n/index.js';
10
+ /**
11
+ * Command to generate a project from a scaffold.
12
+ */
13
+ export default class ScaffoldGenerate extends BaseCommand {
14
+ static args = {
15
+ scaffoldId: Args.string({
16
+ description: 'Scaffold ID to generate',
17
+ required: true,
18
+ }),
19
+ };
20
+ static description = withDocs(t('commands.scaffold.generate.description', 'Generate files from a scaffold template'), '/cli/scaffold.html#b2c-scaffold-generate');
21
+ static enableJsonFlag = true;
22
+ static examples = [
23
+ '<%= config.bin %> <%= command.id %> cartridge',
24
+ '<%= config.bin %> <%= command.id %> cartridge --name app_custom',
25
+ '<%= config.bin %> <%= command.id %> custom-api --option apiName=my-api --option cartridgeName=app_custom',
26
+ '<%= config.bin %> <%= command.id %> cartridge --dry-run',
27
+ '<%= config.bin %> <%= command.id %> cartridge --force',
28
+ '<%= config.bin %> <%= command.id %> cartridge --output ./src',
29
+ ];
30
+ static flags = {
31
+ name: Flags.string({
32
+ char: 'n',
33
+ description: 'Primary name parameter (shorthand for --option name=VALUE)',
34
+ }),
35
+ output: Flags.string({
36
+ char: 'o',
37
+ description: 'Output directory (defaults to scaffold default or current directory)',
38
+ }),
39
+ option: Flags.string({
40
+ description: 'Parameter value in key=value format (can be repeated)',
41
+ multiple: true,
42
+ }),
43
+ 'dry-run': Flags.boolean({
44
+ description: 'Preview files without writing them',
45
+ default: false,
46
+ }),
47
+ force: Flags.boolean({
48
+ char: 'f',
49
+ description: 'Skip prompts, use defaults, and overwrite existing files',
50
+ default: false,
51
+ }),
52
+ };
53
+ async run() {
54
+ const projectRoot = this.flags['working-directory'] || process.cwd();
55
+ const response = await executeScaffoldGenerate({
56
+ scaffoldId: this.args.scaffoldId,
57
+ name: this.flags.name,
58
+ output: this.flags.output,
59
+ options: this.flags.option,
60
+ dryRun: this.flags['dry-run'],
61
+ force: this.flags.force,
62
+ projectRoot,
63
+ }, {
64
+ logger: this.logger,
65
+ log: (msg) => this.log(msg),
66
+ warn: (msg) => this.warn(msg),
67
+ error: (msg) => this.error(msg),
68
+ });
69
+ if (this.jsonEnabled()) {
70
+ return response;
71
+ }
72
+ }
73
+ }
74
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/scaffold/generate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAC,uBAAuB,EAAwB,MAAM,uCAAuC,CAAC;AACrG,OAAO,EAAC,CAAC,EAAE,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAIhD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAoC;IAChF,MAAM,CAAC,IAAI,GAAG;QACZ,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAC3B,CAAC,CAAC,wCAAwC,EAAE,yCAAyC,CAAC,EACtF,0CAA0C,CAC3C,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,+CAA+C;QAC/C,iEAAiE;QACjE,0GAA0G;QAC1G,yDAAyD;QACzD,uDAAuD;QACvD,8DAA8D;KAC/D,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4DAA4D;SAC1E,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,sEAAsE;SACpF,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,uDAAuD;YACpE,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YACvB,WAAW,EAAE,oCAAoC;YACjD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0DAA0D;YACvE,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAC5C;YACE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAChC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,WAAW;SACZ,EACD;YACE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAC3B,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7B,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;SAChC,CACF,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { BaseCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type GenerateResponse } from '../../lib/scaffold/generate-helper.js';
3
+ /**
4
+ * Default scaffold command - provides topic help and shorthand for `scaffold generate`.
5
+ *
6
+ * - `b2c scaffold` shows topic help with available subcommands
7
+ * - `b2c scaffold cartridge` is shorthand for `b2c scaffold generate cartridge`
8
+ */
9
+ export default class ScaffoldIndex extends BaseCommand<typeof ScaffoldIndex> {
10
+ static args: {
11
+ scaffoldId: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
12
+ };
13
+ static description: string;
14
+ static enableJsonFlag: boolean;
15
+ static examples: string[];
16
+ static flags: {
17
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ option: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
21
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
+ };
23
+ run(): Promise<GenerateResponse | void>;
24
+ }