@salesforce/b2c-cli 0.4.1 → 0.5.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 (232) hide show
  1. package/dist/commands/cip/describe.d.ts +48 -0
  2. package/dist/commands/cip/describe.js +70 -0
  3. package/dist/commands/cip/describe.js.map +1 -0
  4. package/dist/commands/cip/query.d.ts +46 -0
  5. package/dist/commands/cip/query.js +81 -0
  6. package/dist/commands/cip/query.js.map +1 -0
  7. package/dist/commands/cip/report/customer-registration-trends.d.ts +37 -0
  8. package/dist/commands/cip/report/customer-registration-trends.js +22 -0
  9. package/dist/commands/cip/report/customer-registration-trends.js.map +1 -0
  10. package/dist/commands/cip/report/ocapi-requests.d.ts +37 -0
  11. package/dist/commands/cip/report/ocapi-requests.js +22 -0
  12. package/dist/commands/cip/report/ocapi-requests.js.map +1 -0
  13. package/dist/commands/cip/report/payment-method-performance.d.ts +37 -0
  14. package/dist/commands/cip/report/payment-method-performance.js +22 -0
  15. package/dist/commands/cip/report/payment-method-performance.js.map +1 -0
  16. package/dist/commands/cip/report/product-co-purchase-analysis.d.ts +37 -0
  17. package/dist/commands/cip/report/product-co-purchase-analysis.js +22 -0
  18. package/dist/commands/cip/report/product-co-purchase-analysis.js.map +1 -0
  19. package/dist/commands/cip/report/promotion-discount-analysis.d.ts +36 -0
  20. package/dist/commands/cip/report/promotion-discount-analysis.js +20 -0
  21. package/dist/commands/cip/report/promotion-discount-analysis.js.map +1 -0
  22. package/dist/commands/cip/report/sales-analytics.d.ts +37 -0
  23. package/dist/commands/cip/report/sales-analytics.js +22 -0
  24. package/dist/commands/cip/report/sales-analytics.js.map +1 -0
  25. package/dist/commands/cip/report/sales-summary.d.ts +37 -0
  26. package/dist/commands/cip/report/sales-summary.js +22 -0
  27. package/dist/commands/cip/report/sales-summary.js.map +1 -0
  28. package/dist/commands/cip/report/search-query-performance.d.ts +38 -0
  29. package/dist/commands/cip/report/search-query-performance.js +35 -0
  30. package/dist/commands/cip/report/search-query-performance.js.map +1 -0
  31. package/dist/commands/cip/report/top-referrers.d.ts +38 -0
  32. package/dist/commands/cip/report/top-referrers.js +23 -0
  33. package/dist/commands/cip/report/top-referrers.js.map +1 -0
  34. package/dist/commands/cip/report/top-selling-products.d.ts +37 -0
  35. package/dist/commands/cip/report/top-selling-products.js +22 -0
  36. package/dist/commands/cip/report/top-selling-products.js.map +1 -0
  37. package/dist/commands/cip/report.d.ts +9 -0
  38. package/dist/commands/cip/report.js +22 -0
  39. package/dist/commands/cip/report.js.map +1 -0
  40. package/dist/commands/cip/tables.d.ts +45 -0
  41. package/dist/commands/cip/tables.js +70 -0
  42. package/dist/commands/cip/tables.js.map +1 -0
  43. package/dist/commands/code/activate.d.ts +1 -0
  44. package/dist/commands/code/delete.d.ts +1 -0
  45. package/dist/commands/code/deploy.d.ts +1 -0
  46. package/dist/commands/code/watch.d.ts +1 -0
  47. package/dist/commands/content/export.d.ts +1 -0
  48. package/dist/commands/content/list.d.ts +1 -0
  49. package/dist/commands/docs/download.d.ts +1 -0
  50. package/dist/commands/docs/read.d.ts +1 -0
  51. package/dist/commands/docs/schema.d.ts +1 -0
  52. package/dist/commands/docs/search.d.ts +1 -0
  53. package/dist/commands/ecdn/cache/purge.d.ts +1 -0
  54. package/dist/commands/ecdn/certificates/add.d.ts +1 -0
  55. package/dist/commands/ecdn/certificates/delete.d.ts +1 -0
  56. package/dist/commands/ecdn/certificates/list.d.ts +1 -0
  57. package/dist/commands/ecdn/certificates/update.d.ts +1 -0
  58. package/dist/commands/ecdn/certificates/validate.d.ts +1 -0
  59. package/dist/commands/ecdn/cipher-suites/get.d.ts +1 -0
  60. package/dist/commands/ecdn/cipher-suites/update.d.ts +1 -0
  61. package/dist/commands/ecdn/logpush/jobs/create.d.ts +1 -0
  62. package/dist/commands/ecdn/logpush/jobs/delete.d.ts +1 -0
  63. package/dist/commands/ecdn/logpush/jobs/get.d.ts +1 -0
  64. package/dist/commands/ecdn/logpush/jobs/list.d.ts +1 -0
  65. package/dist/commands/ecdn/logpush/jobs/update.d.ts +1 -0
  66. package/dist/commands/ecdn/logpush/ownership.d.ts +1 -0
  67. package/dist/commands/ecdn/mrt-rules/create.d.ts +1 -0
  68. package/dist/commands/ecdn/mrt-rules/delete.d.ts +1 -0
  69. package/dist/commands/ecdn/mrt-rules/get.d.ts +1 -0
  70. package/dist/commands/ecdn/mrt-rules/rules/delete.d.ts +1 -0
  71. package/dist/commands/ecdn/mrt-rules/rules/update.d.ts +1 -0
  72. package/dist/commands/ecdn/mrt-rules/update.d.ts +1 -0
  73. package/dist/commands/ecdn/mtls/create.d.ts +1 -0
  74. package/dist/commands/ecdn/mtls/delete.d.ts +1 -0
  75. package/dist/commands/ecdn/mtls/get.d.ts +1 -0
  76. package/dist/commands/ecdn/mtls/list.d.ts +1 -0
  77. package/dist/commands/ecdn/origin-headers/delete.d.ts +1 -0
  78. package/dist/commands/ecdn/origin-headers/get.d.ts +1 -0
  79. package/dist/commands/ecdn/origin-headers/set.d.ts +1 -0
  80. package/dist/commands/ecdn/page-shield/notifications/create.d.ts +1 -0
  81. package/dist/commands/ecdn/page-shield/notifications/delete.d.ts +1 -0
  82. package/dist/commands/ecdn/page-shield/notifications/list.d.ts +1 -0
  83. package/dist/commands/ecdn/page-shield/policies/create.d.ts +1 -0
  84. package/dist/commands/ecdn/page-shield/policies/delete.d.ts +1 -0
  85. package/dist/commands/ecdn/page-shield/policies/get.d.ts +1 -0
  86. package/dist/commands/ecdn/page-shield/policies/list.d.ts +1 -0
  87. package/dist/commands/ecdn/page-shield/policies/update.d.ts +1 -0
  88. package/dist/commands/ecdn/page-shield/scripts/get.d.ts +1 -0
  89. package/dist/commands/ecdn/page-shield/scripts/list.d.ts +1 -0
  90. package/dist/commands/ecdn/security/get.d.ts +1 -0
  91. package/dist/commands/ecdn/security/update.d.ts +1 -0
  92. package/dist/commands/ecdn/speed/get.d.ts +1 -0
  93. package/dist/commands/ecdn/speed/update.d.ts +1 -0
  94. package/dist/commands/ecdn/waf/groups/list.d.ts +1 -0
  95. package/dist/commands/ecdn/waf/groups/update.d.ts +1 -0
  96. package/dist/commands/ecdn/waf/managed-rules/list.d.ts +1 -0
  97. package/dist/commands/ecdn/waf/managed-rules/update.d.ts +1 -0
  98. package/dist/commands/ecdn/waf/migrate.d.ts +1 -0
  99. package/dist/commands/ecdn/waf/owasp/get.d.ts +1 -0
  100. package/dist/commands/ecdn/waf/owasp/update.d.ts +1 -0
  101. package/dist/commands/ecdn/waf/rules/get.d.ts +1 -0
  102. package/dist/commands/ecdn/waf/rules/list.d.ts +1 -0
  103. package/dist/commands/ecdn/waf/rules/update.d.ts +1 -0
  104. package/dist/commands/ecdn/waf/rulesets/list.d.ts +1 -0
  105. package/dist/commands/ecdn/waf/rulesets/update.d.ts +1 -0
  106. package/dist/commands/ecdn/zones/create.d.ts +1 -0
  107. package/dist/commands/ecdn/zones/list.d.ts +1 -0
  108. package/dist/commands/job/export.d.ts +4 -1
  109. package/dist/commands/job/export.js +22 -19
  110. package/dist/commands/job/export.js.map +1 -1
  111. package/dist/commands/job/import.d.ts +1 -0
  112. package/dist/commands/job/run.d.ts +1 -0
  113. package/dist/commands/job/search.d.ts +1 -0
  114. package/dist/commands/job/wait.d.ts +1 -0
  115. package/dist/commands/logs/get.d.ts +1 -0
  116. package/dist/commands/logs/list.d.ts +1 -0
  117. package/dist/commands/logs/tail.d.ts +1 -0
  118. package/dist/commands/mrt/bundle/deploy.d.ts +1 -0
  119. package/dist/commands/mrt/bundle/download.d.ts +1 -0
  120. package/dist/commands/mrt/bundle/history.d.ts +1 -0
  121. package/dist/commands/mrt/bundle/list.d.ts +1 -0
  122. package/dist/commands/mrt/env/access-control/list.d.ts +1 -0
  123. package/dist/commands/mrt/env/b2c.d.ts +1 -0
  124. package/dist/commands/mrt/env/create.d.ts +1 -0
  125. package/dist/commands/mrt/env/delete.d.ts +1 -0
  126. package/dist/commands/mrt/env/get.d.ts +1 -0
  127. package/dist/commands/mrt/env/invalidate.d.ts +1 -0
  128. package/dist/commands/mrt/env/list.d.ts +1 -0
  129. package/dist/commands/mrt/env/redirect/clone.d.ts +1 -0
  130. package/dist/commands/mrt/env/redirect/create.d.ts +1 -0
  131. package/dist/commands/mrt/env/redirect/delete.d.ts +1 -0
  132. package/dist/commands/mrt/env/redirect/list.d.ts +1 -0
  133. package/dist/commands/mrt/env/update.d.ts +1 -0
  134. package/dist/commands/mrt/env/var/delete.d.ts +1 -0
  135. package/dist/commands/mrt/env/var/list.d.ts +1 -0
  136. package/dist/commands/mrt/env/var/set.d.ts +1 -0
  137. package/dist/commands/mrt/org/b2c.d.ts +1 -0
  138. package/dist/commands/mrt/org/list.d.ts +1 -0
  139. package/dist/commands/mrt/project/create.d.ts +1 -0
  140. package/dist/commands/mrt/project/delete.d.ts +1 -0
  141. package/dist/commands/mrt/project/get.d.ts +1 -0
  142. package/dist/commands/mrt/project/list.d.ts +1 -0
  143. package/dist/commands/mrt/project/member/add.d.ts +1 -0
  144. package/dist/commands/mrt/project/member/get.d.ts +1 -0
  145. package/dist/commands/mrt/project/member/list.d.ts +1 -0
  146. package/dist/commands/mrt/project/member/remove.d.ts +1 -0
  147. package/dist/commands/mrt/project/member/update.d.ts +1 -0
  148. package/dist/commands/mrt/project/notification/create.d.ts +1 -0
  149. package/dist/commands/mrt/project/notification/delete.d.ts +1 -0
  150. package/dist/commands/mrt/project/notification/get.d.ts +1 -0
  151. package/dist/commands/mrt/project/notification/list.d.ts +1 -0
  152. package/dist/commands/mrt/project/notification/update.d.ts +1 -0
  153. package/dist/commands/mrt/project/update.d.ts +1 -0
  154. package/dist/commands/mrt/tail-logs.d.ts +1 -0
  155. package/dist/commands/mrt/user/api-key.d.ts +1 -0
  156. package/dist/commands/mrt/user/email-prefs.d.ts +1 -0
  157. package/dist/commands/mrt/user/profile.d.ts +1 -0
  158. package/dist/commands/sandbox/alias/create.d.ts +23 -0
  159. package/dist/commands/sandbox/alias/create.js +98 -0
  160. package/dist/commands/sandbox/alias/create.js.map +1 -0
  161. package/dist/commands/sandbox/alias/delete.d.ts +21 -0
  162. package/dist/commands/sandbox/alias/delete.js +75 -0
  163. package/dist/commands/sandbox/alias/delete.js.map +1 -0
  164. package/dist/commands/sandbox/alias/list.d.ts +22 -0
  165. package/dist/commands/sandbox/alias/list.js +132 -0
  166. package/dist/commands/sandbox/alias/list.js.map +1 -0
  167. package/dist/commands/sandbox/ips.d.ts +19 -0
  168. package/dist/commands/sandbox/ips.js +74 -0
  169. package/dist/commands/sandbox/ips.js.map +1 -0
  170. package/dist/commands/sandbox/list.d.ts +2 -1
  171. package/dist/commands/sandbox/list.js +14 -2
  172. package/dist/commands/sandbox/list.js.map +1 -1
  173. package/dist/commands/sandbox/realm/get.d.ts +24 -0
  174. package/dist/commands/sandbox/realm/get.js +126 -0
  175. package/dist/commands/sandbox/realm/get.js.map +1 -0
  176. package/dist/commands/sandbox/realm/list.d.ts +24 -0
  177. package/dist/commands/sandbox/realm/list.js +85 -0
  178. package/dist/commands/sandbox/realm/list.js.map +1 -0
  179. package/dist/commands/sandbox/realm/update.d.ts +23 -0
  180. package/dist/commands/sandbox/realm/update.js +114 -0
  181. package/dist/commands/sandbox/realm/update.js.map +1 -0
  182. package/dist/commands/sandbox/realm/usage.d.ts +24 -0
  183. package/dist/commands/sandbox/realm/usage.js +122 -0
  184. package/dist/commands/sandbox/realm/usage.js.map +1 -0
  185. package/dist/commands/sandbox/reset.d.ts +23 -0
  186. package/dist/commands/sandbox/reset.js +106 -0
  187. package/dist/commands/sandbox/reset.js.map +1 -0
  188. package/dist/commands/sandbox/usage.d.ts +22 -0
  189. package/dist/commands/sandbox/usage.js +109 -0
  190. package/dist/commands/sandbox/usage.js.map +1 -0
  191. package/dist/commands/scapi/custom/status.d.ts +1 -0
  192. package/dist/commands/scapi/custom/status.js +1 -16
  193. package/dist/commands/scapi/custom/status.js.map +1 -1
  194. package/dist/commands/scapi/schemas/get.d.ts +1 -0
  195. package/dist/commands/scapi/schemas/list.d.ts +1 -0
  196. package/dist/commands/setup/ide/index.d.ts +9 -0
  197. package/dist/commands/setup/ide/index.js +18 -0
  198. package/dist/commands/setup/ide/index.js.map +1 -0
  199. package/dist/commands/setup/ide/prophet.d.ts +38 -0
  200. package/dist/commands/setup/ide/prophet.js +316 -0
  201. package/dist/commands/setup/ide/prophet.js.map +1 -0
  202. package/dist/commands/setup/index.js +6 -2
  203. package/dist/commands/setup/index.js.map +1 -1
  204. package/dist/commands/setup/inspect.d.ts +1 -0
  205. package/dist/commands/setup/instance/create.d.ts +1 -0
  206. package/dist/commands/setup/instance/list.d.ts +1 -0
  207. package/dist/commands/setup/instance/remove.d.ts +1 -0
  208. package/dist/commands/setup/instance/set-active.d.ts +1 -0
  209. package/dist/commands/setup/skills.d.ts +1 -0
  210. package/dist/commands/slas/client/create.d.ts +1 -0
  211. package/dist/commands/slas/client/delete.d.ts +1 -0
  212. package/dist/commands/slas/client/get.d.ts +1 -0
  213. package/dist/commands/slas/client/list.d.ts +1 -0
  214. package/dist/commands/slas/client/open.d.ts +1 -0
  215. package/dist/commands/slas/client/update.d.ts +1 -0
  216. package/dist/commands/webdav/get.d.ts +1 -0
  217. package/dist/commands/webdav/rm.d.ts +1 -0
  218. package/dist/utils/cip/command.d.ts +40 -0
  219. package/dist/utils/cip/command.js +110 -0
  220. package/dist/utils/cip/command.js.map +1 -0
  221. package/dist/utils/cip/format.d.ts +3 -0
  222. package/dist/utils/cip/format.js +54 -0
  223. package/dist/utils/cip/format.js.map +1 -0
  224. package/dist/utils/cip/report-command.d.ts +34 -0
  225. package/dist/utils/cip/report-command.js +131 -0
  226. package/dist/utils/cip/report-command.js.map +1 -0
  227. package/dist/utils/cip/report-flags.d.ts +10 -0
  228. package/dist/utils/cip/report-flags.js +23 -0
  229. package/dist/utils/cip/report-flags.js.map +1 -0
  230. package/dist/utils/ecdn/zone-command.d.ts +1 -0
  231. package/oclif.manifest.json +15118 -6011
  232. package/package.json +13 -5
@@ -19,6 +19,7 @@ export default class MrtNotificationGet extends MrtCommand<typeof MrtNotificatio
19
19
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
20
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
21
21
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
+ jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
23
  lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
24
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
25
  instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -19,6 +19,7 @@ export default class MrtNotificationList extends MrtCommand<typeof MrtNotificati
19
19
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
20
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
21
21
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
+ jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
23
  lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
24
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
25
  instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -24,6 +24,7 @@ export default class MrtNotificationUpdate extends MrtCommand<typeof MrtNotifica
24
24
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
25
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
26
26
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
27
+ jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
27
28
  lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
28
29
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
29
30
  instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -22,6 +22,7 @@ export default class MrtProjectUpdate extends MrtCommand<typeof MrtProjectUpdate
22
22
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
23
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
24
24
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
25
+ jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
25
26
  lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
26
27
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
27
28
  instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -15,6 +15,7 @@ export default class MrtTailLogs extends MrtCommand<typeof MrtTailLogs> {
15
15
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
17
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
19
  lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
20
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
21
  instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -17,6 +17,7 @@ export default class MrtUserApiKey extends MrtCommand<typeof MrtUserApiKey> {
17
17
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
18
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
19
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
21
  lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
22
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
23
  instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -17,6 +17,7 @@ export default class MrtUserEmailPrefs extends MrtCommand<typeof MrtUserEmailPre
17
17
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
18
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
19
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
21
  lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
22
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
23
  instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -16,6 +16,7 @@ export default class MrtUserProfile extends MrtCommand<typeof MrtUserProfile> {
16
16
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
17
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
18
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
20
  lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
21
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
22
  instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -0,0 +1,23 @@
1
+ import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type OdsComponents } from '@salesforce/b2c-tooling-sdk';
3
+ type SandboxAliasModel = OdsComponents['schemas']['SandboxAliasModel'];
4
+ /**
5
+ * Command to create a sandbox alias.
6
+ */
7
+ export default class SandboxAliasCreate extends OdsCommand<typeof SandboxAliasCreate> {
8
+ static aliases: string[];
9
+ static args: {
10
+ sandboxId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
11
+ hostname: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
12
+ };
13
+ static description: string;
14
+ static enableJsonFlag: boolean;
15
+ static examples: string[];
16
+ static flags: {
17
+ unique: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ letsencrypt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ 'no-open': import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ };
21
+ run(): Promise<SandboxAliasModel>;
22
+ }
23
+ export {};
@@ -0,0 +1,98 @@
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 } from '@salesforce/b2c-tooling-sdk';
9
+ import { t, withDocs } from '../../../i18n/index.js';
10
+ import open from 'open';
11
+ /**
12
+ * Command to create a sandbox alias.
13
+ */
14
+ export default class SandboxAliasCreate extends OdsCommand {
15
+ static aliases = ['ods:alias:create'];
16
+ static args = {
17
+ sandboxId: Args.string({
18
+ description: 'Sandbox ID (UUID or realm-instance, e.g., abcd-123)',
19
+ required: true,
20
+ }),
21
+ hostname: Args.string({
22
+ description: 'Hostname alias to register (e.g., my-store.example.com)',
23
+ required: true,
24
+ }),
25
+ };
26
+ static description = withDocs(t('commands.sandbox.alias.create.description', 'Create a hostname alias for a sandbox'), '/cli/sandbox.html#b2c-sandbox-alias-create');
27
+ static enableJsonFlag = true;
28
+ static examples = [
29
+ '<%= config.bin %> <%= command.id %> zzzv-123 my-store.example.com',
30
+ '<%= config.bin %> <%= command.id %> zzzv-123 secure-store.example.com --unique',
31
+ '<%= config.bin %> <%= command.id %> zzzv-123 secure-store.example.com --unique --letsencrypt',
32
+ '<%= config.bin %> <%= command.id %> zzzv-123 my-store.example.com --json',
33
+ ];
34
+ static flags = {
35
+ unique: Flags.boolean({
36
+ char: 'u',
37
+ description: "Make the alias unique (required for Let's Encrypt certificates)",
38
+ default: false,
39
+ }),
40
+ letsencrypt: Flags.boolean({
41
+ description: "Request a Let's Encrypt certificate for this alias (requires --unique)",
42
+ default: false,
43
+ dependsOn: ['unique'],
44
+ }),
45
+ 'no-open': Flags.boolean({
46
+ description: 'Do not open registration URL in browser (for non-unique aliases)',
47
+ default: false,
48
+ }),
49
+ };
50
+ async run() {
51
+ const { sandboxId, hostname } = this.args;
52
+ const { unique, letsencrypt, 'no-open': noOpen } = this.flags;
53
+ const resolvedSandboxId = await this.resolveSandboxId(sandboxId);
54
+ this.log(t('commands.sandbox.alias.create.creating', 'Creating alias {{hostname}} for sandbox {{sandboxId}}...', {
55
+ hostname,
56
+ sandboxId,
57
+ }));
58
+ const result = await this.odsClient.POST('/sandboxes/{sandboxId}/aliases', {
59
+ params: {
60
+ path: { sandboxId: resolvedSandboxId },
61
+ },
62
+ body: {
63
+ name: hostname,
64
+ unique,
65
+ requestLetsEncryptCertificate: letsencrypt,
66
+ },
67
+ });
68
+ if (!result.data?.data) {
69
+ const message = getApiErrorMessage(result.error, result.response);
70
+ this.error(t('commands.sandbox.alias.create.error', 'Failed to create alias: {{message}}', {
71
+ message,
72
+ }));
73
+ }
74
+ const alias = result.data.data;
75
+ if (!this.jsonEnabled()) {
76
+ this.log(t('commands.sandbox.alias.create.success', 'Alias created successfully'));
77
+ this.log('');
78
+ this.log(`ID: ${alias.id}`);
79
+ this.log(`Hostname: ${alias.name}`);
80
+ this.log(`Status: ${alias.status}`);
81
+ if (unique && alias.domainVerificationRecord) {
82
+ this.log('');
83
+ this.log(t('commands.sandbox.alias.create.verification', '⚠️ DNS Verification Required:'));
84
+ this.log(t('commands.sandbox.alias.create.verification_instructions', 'Add this TXT record to your DNS configuration:'));
85
+ this.log(` ${alias.domainVerificationRecord}`);
86
+ this.log('');
87
+ this.log(t('commands.sandbox.alias.create.verification_wait', 'The alias will activate after DNS propagation'));
88
+ }
89
+ if (!unique && alias.registration && !noOpen) {
90
+ this.log('');
91
+ this.log(t('commands.sandbox.alias.create.registration', 'Opening alias registration in browser...'));
92
+ await open(alias.registration);
93
+ }
94
+ }
95
+ return alias;
96
+ }
97
+ }
98
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/sandbox/alias/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ /**
3
+ * Command to delete a sandbox alias.
4
+ */
5
+ export default class SandboxAliasDelete extends OdsCommand<typeof SandboxAliasDelete> {
6
+ static aliases: string[];
7
+ static args: {
8
+ sandboxId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
9
+ aliasId: 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
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<{
18
+ success: boolean;
19
+ message: string;
20
+ }>;
21
+ }
@@ -0,0 +1,75 @@
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 } from '@salesforce/b2c-tooling-sdk';
9
+ import { t, withDocs } from '../../../i18n/index.js';
10
+ import { confirm } from '@inquirer/prompts';
11
+ /**
12
+ * Command to delete a sandbox alias.
13
+ */
14
+ export default class SandboxAliasDelete extends OdsCommand {
15
+ static aliases = ['ods:alias:delete'];
16
+ static args = {
17
+ sandboxId: Args.string({
18
+ description: 'Sandbox ID (UUID or realm-instance, e.g., abcd-123)',
19
+ required: true,
20
+ }),
21
+ aliasId: Args.string({
22
+ description: 'Alias ID to delete',
23
+ required: true,
24
+ }),
25
+ };
26
+ static description = withDocs(t('commands.sandbox.alias.delete.description', 'Delete a hostname alias from a sandbox'), '/cli/sandbox.html#b2c-sandbox-alias-delete');
27
+ static enableJsonFlag = true;
28
+ static examples = [
29
+ '<%= config.bin %> <%= command.id %> zzzv-123 alias-uuid-here',
30
+ '<%= config.bin %> <%= command.id %> zzzv-123 alias-uuid-here --force',
31
+ '<%= config.bin %> <%= command.id %> abc12345-1234-1234-1234-abc123456789 alias-uuid-here --json',
32
+ ];
33
+ static flags = {
34
+ force: Flags.boolean({
35
+ char: 'f',
36
+ description: 'Skip confirmation prompt',
37
+ default: false,
38
+ }),
39
+ };
40
+ async run() {
41
+ const { sandboxId, aliasId } = this.args;
42
+ const { force } = this.flags;
43
+ const resolvedSandboxId = await this.resolveSandboxId(sandboxId);
44
+ // Confirmation prompt (skip if --force or --json)
45
+ if (!force && !this.jsonEnabled()) {
46
+ const confirmed = await confirm({
47
+ message: t('commands.sandbox.alias.delete.confirm', 'Delete alias {{aliasId}}?', { aliasId }),
48
+ default: false,
49
+ });
50
+ if (!confirmed) {
51
+ this.log(t('commands.sandbox.alias.delete.cancelled', 'Delete cancelled'));
52
+ return { success: false, message: 'Cancelled by user' };
53
+ }
54
+ }
55
+ this.log(t('commands.sandbox.alias.delete.deleting', 'Deleting alias {{aliasId}} from sandbox {{sandboxId}}...', {
56
+ aliasId,
57
+ sandboxId,
58
+ }));
59
+ const result = await this.odsClient.DELETE('/sandboxes/{sandboxId}/aliases/{sandboxAliasId}', {
60
+ params: {
61
+ path: { sandboxId: resolvedSandboxId, sandboxAliasId: aliasId },
62
+ },
63
+ });
64
+ if (result.response?.status !== 404 && result.error) {
65
+ const message = getApiErrorMessage(result.error, result.response);
66
+ this.error(t('commands.sandbox.alias.delete.error', 'Failed to delete alias: {{message}}', {
67
+ message,
68
+ }));
69
+ }
70
+ const message = t('commands.sandbox.alias.delete.success', 'Alias deleted successfully');
71
+ this.log(message);
72
+ return { success: true, message };
73
+ }
74
+ }
75
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/commands/sandbox/alias/delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,UAAU,EAAC,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAC,CAAC,EAAE,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,UAAqC;IACnF,MAAM,CAAC,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEtC,MAAM,CAAC,IAAI,GAAG;QACZ,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAC3B,CAAC,CAAC,2CAA2C,EAAE,wCAAwC,CAAC,EACxF,4CAA4C,CAC7C,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,8DAA8D;QAC9D,sEAAsE;QACtE,iGAAiG;KAClG,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0BAA0B;YACvC,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,SAAS,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACvC,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3B,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEjE,kDAAkD;QAClD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,uCAAuC,EAAE,2BAA2B,EAAE,EAAC,OAAO,EAAC,CAAC;gBAC3F,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,yCAAyC,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBAC3E,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,wCAAwC,EAAE,0DAA0D,EAAE;YACtG,OAAO;YACP,SAAS;SACV,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iDAAiD,EAAE;YAC5F,MAAM,EAAE;gBACN,IAAI,EAAE,EAAC,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAC;aAC9D;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,KAAK,CACR,CAAC,CAAC,qCAAqC,EAAE,qCAAqC,EAAE;gBAC9E,OAAO;aACR,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,CAAC,uCAAuC,EAAE,4BAA4B,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElB,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;IAClC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type OdsComponents } from '@salesforce/b2c-tooling-sdk';
3
+ type SandboxAliasModel = OdsComponents['schemas']['SandboxAliasModel'];
4
+ /**
5
+ * Command to list sandbox aliases.
6
+ */
7
+ export default class SandboxAliasList extends OdsCommand<typeof SandboxAliasList> {
8
+ static aliases: string[];
9
+ static args: {
10
+ sandboxId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
11
+ };
12
+ static description: string;
13
+ static enableJsonFlag: boolean;
14
+ static examples: string[];
15
+ static flags: {
16
+ 'alias-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ };
18
+ run(): Promise<SandboxAliasModel | SandboxAliasModel[]>;
19
+ private listAllAliases;
20
+ private showAlias;
21
+ }
22
+ export {};
@@ -0,0 +1,132 @@
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, TableRenderer } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { getApiErrorMessage } from '@salesforce/b2c-tooling-sdk';
9
+ import { t, withDocs } from '../../../i18n/index.js';
10
+ /**
11
+ * Command to list sandbox aliases.
12
+ */
13
+ export default class SandboxAliasList extends OdsCommand {
14
+ static aliases = ['ods:alias:list'];
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.alias.list.description', 'List all hostname aliases for a sandbox'), '/cli/sandbox.html#b2c-sandbox-alias-list');
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 --alias-id some-alias-uuid',
27
+ '<%= config.bin %> <%= command.id %> zzzv-123 --json',
28
+ ];
29
+ static flags = {
30
+ 'alias-id': Flags.string({
31
+ description: 'Specific alias ID to retrieve (if omitted, lists all aliases)',
32
+ required: false,
33
+ }),
34
+ };
35
+ async run() {
36
+ const { sandboxId } = this.args;
37
+ const { 'alias-id': aliasId } = this.flags;
38
+ const resolvedSandboxId = await this.resolveSandboxId(sandboxId);
39
+ // If alias ID provided, get specific alias; otherwise list all
40
+ if (aliasId) {
41
+ return this.showAlias(resolvedSandboxId, aliasId);
42
+ }
43
+ return this.listAllAliases(resolvedSandboxId);
44
+ }
45
+ async listAllAliases(sandboxId) {
46
+ this.log(t('commands.sandbox.alias.list.fetching', 'Fetching aliases for sandbox {{sandboxId}}...', {
47
+ sandboxId: this.args.sandboxId,
48
+ }));
49
+ const result = await this.odsClient.GET('/sandboxes/{sandboxId}/aliases', {
50
+ params: {
51
+ path: { sandboxId },
52
+ },
53
+ });
54
+ if (!result.data?.data) {
55
+ const message = getApiErrorMessage(result.error, result.response);
56
+ this.error(t('commands.sandbox.alias.list.error', 'Failed to fetch aliases: {{message}}', {
57
+ message,
58
+ }));
59
+ }
60
+ const aliases = (result.data?.data ?? []);
61
+ if (!this.jsonEnabled()) {
62
+ if (aliases.length === 0) {
63
+ this.log(t('commands.sandbox.alias.list.no_aliases', 'No aliases found'));
64
+ }
65
+ else {
66
+ this.log(t('commands.sandbox.alias.list.count', 'Found {{count}} alias(es):', { count: aliases.length }));
67
+ const columns = {
68
+ id: {
69
+ header: 'Alias ID',
70
+ get: (row) => row.id || '-',
71
+ },
72
+ name: {
73
+ header: 'Hostname',
74
+ get: (row) => row.name,
75
+ },
76
+ status: {
77
+ header: 'Status',
78
+ get: (row) => row.status || '-',
79
+ },
80
+ unique: {
81
+ header: 'Unique',
82
+ get: (row) => (row.unique ? 'Yes' : 'No'),
83
+ },
84
+ domainVerificationRecord: {
85
+ header: 'Verification Record',
86
+ get: (row) => row.domainVerificationRecord || '-',
87
+ },
88
+ };
89
+ const table = new TableRenderer(columns);
90
+ table.render(aliases, ['id', 'name', 'status', 'unique', 'domainVerificationRecord']);
91
+ }
92
+ }
93
+ return aliases;
94
+ }
95
+ async showAlias(sandboxId, aliasId) {
96
+ this.log(t('commands.sandbox.alias.list.fetching_one', 'Fetching alias {{aliasId}} for sandbox {{sandboxId}}...', {
97
+ aliasId,
98
+ sandboxId,
99
+ }));
100
+ const result = await this.odsClient.GET('/sandboxes/{sandboxId}/aliases/{sandboxAliasId}', {
101
+ params: {
102
+ path: { sandboxId, sandboxAliasId: aliasId },
103
+ },
104
+ });
105
+ if (!result.data?.data) {
106
+ const message = getApiErrorMessage(result.error, result.response);
107
+ this.error(t('commands.sandbox.alias.list.error_one', 'Failed to fetch alias: {{message}}', {
108
+ message,
109
+ }));
110
+ }
111
+ const alias = result.data.data;
112
+ if (!this.jsonEnabled()) {
113
+ this.log('');
114
+ this.log(t('commands.sandbox.alias.list.alias_details', 'Alias Details:'));
115
+ this.log('─'.repeat(60));
116
+ this.log(`ID: ${alias.id}`);
117
+ this.log(`Name: ${alias.name}`);
118
+ this.log(`Status: ${alias.status}`);
119
+ if (alias.unique) {
120
+ this.log(`Unique: ${alias.unique}`);
121
+ }
122
+ if (alias.domainVerificationRecord) {
123
+ this.log(`Verification Record: ${alias.domainVerificationRecord}`);
124
+ }
125
+ if (alias.registration) {
126
+ this.log(`Registration URL: ${alias.registration}`);
127
+ }
128
+ }
129
+ return alias;
130
+ }
131
+ }
132
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/sandbox/alias/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type OdsComponents } from '@salesforce/b2c-tooling-sdk';
3
+ type SystemInfoSpec = OdsComponents['schemas']['SystemInfoSpec'];
4
+ type SystemInfoResponse = OdsComponents['schemas']['SystemInfoResponse'];
5
+ /**
6
+ * List inbound and outbound IP addresses for ODS sandboxes.
7
+ */
8
+ export default class SandboxIps extends OdsCommand<typeof SandboxIps> {
9
+ static aliases: string[];
10
+ static description: string;
11
+ static enableJsonFlag: boolean;
12
+ static examples: string[];
13
+ static flags: {
14
+ readonly realm: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<SystemInfoResponse | SystemInfoSpec | undefined>;
17
+ private printIps;
18
+ }
19
+ export {};
@@ -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 { Flags } from '@oclif/core';
7
+ import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { getApiErrorMessage } from '@salesforce/b2c-tooling-sdk';
9
+ import { t, withDocs } from '../../i18n/index.js';
10
+ /**
11
+ * List inbound and outbound IP addresses for ODS sandboxes.
12
+ */
13
+ export default class SandboxIps extends OdsCommand {
14
+ static aliases = ['ods:ips'];
15
+ static description = withDocs(t('commands.sandbox.ips.description', 'List inbound and outbound IP addresses for ODS sandboxes'), '/cli/sandbox.html#b2c-sandbox-ips');
16
+ static enableJsonFlag = true;
17
+ static examples = [
18
+ '<%= config.bin %> <%= command.id %>',
19
+ '<%= config.bin %> <%= command.id %> --json',
20
+ '<%= config.bin %> <%= command.id %> --realm zzzz',
21
+ '<%= config.bin %> <%= command.id %> -r zzzz --json',
22
+ ];
23
+ static flags = {
24
+ realm: Flags.string({
25
+ char: 'r',
26
+ description: 'Realm ID (four-letter ID) to get IP details for',
27
+ }),
28
+ };
29
+ async run() {
30
+ const { flags } = await this.parse(SandboxIps);
31
+ const host = this.odsHost;
32
+ this.log(t('commands.sandbox.ips.fetching', 'Fetching sandbox IP information from {{host}}...', { host }));
33
+ const result = await (flags.realm
34
+ ? this.odsClient.GET('/realms/{realm}/system', {
35
+ params: { path: { realm: flags.realm } },
36
+ })
37
+ : this.odsClient.GET('/system', {}));
38
+ if (result.error) {
39
+ this.error(t('commands.sandbox.ips.error', 'Failed to fetch sandbox IP information: {{message}}', {
40
+ message: getApiErrorMessage(result.error, result.response),
41
+ }));
42
+ }
43
+ const data = result.data?.data;
44
+ if (!data) {
45
+ this.log(t('commands.sandbox.ips.noData', 'No system information was returned.'));
46
+ return undefined;
47
+ }
48
+ if (this.jsonEnabled()) {
49
+ return result.data;
50
+ }
51
+ this.printIps(data, flags.realm);
52
+ return data;
53
+ }
54
+ printIps(system, realm) {
55
+ const context = realm ? t('commands.sandbox.ips.realmLabel', ' (for realm {{realm}})', { realm }) : '';
56
+ console.log(t('commands.sandbox.ips.inboundHeader', 'Inbound IP addresses{{context}}:', { context }));
57
+ for (const ip of system.inboundIps ?? []) {
58
+ console.log(` - ${ip}`);
59
+ }
60
+ console.log();
61
+ console.log(t('commands.sandbox.ips.outboundHeader', 'Outbound IP addresses{{context}}:', { context }));
62
+ for (const ip of system.outboundIps ?? []) {
63
+ console.log(` - ${ip}`);
64
+ }
65
+ if (system.sandboxIps && system.sandboxIps.length > 0) {
66
+ console.log();
67
+ console.log(t('commands.sandbox.ips.sandboxHeader', 'Sandbox IP addresses{{context}}:', { context }));
68
+ for (const ip of system.sandboxIps) {
69
+ console.log(` - ${ip}`);
70
+ }
71
+ }
72
+ }
73
+ }
74
+ //# sourceMappingURL=ips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ips.js","sourceRoot":"","sources":["../../../src/commands/sandbox/ips.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { OdsCommand } from '@salesforce/b2c-tooling-sdk/cli';
1
+ import { OdsCommand, type ColumnDef } from '@salesforce/b2c-tooling-sdk/cli';
2
2
  import { type OdsComponents } from '@salesforce/b2c-tooling-sdk';
3
3
  type SandboxModel = OdsComponents['schemas']['SandboxModel'];
4
4
  /**
@@ -8,6 +8,7 @@ interface OdsListResponse {
8
8
  count: number;
9
9
  data: SandboxModel[];
10
10
  }
11
+ export declare const COLUMNS: Record<string, ColumnDef<SandboxModel>>;
11
12
  /**
12
13
  * Command to list all on-demand sandboxes.
13
14
  */
@@ -7,7 +7,7 @@ import { Flags } from '@oclif/core';
7
7
  import { OdsCommand, TableRenderer } from '@salesforce/b2c-tooling-sdk/cli';
8
8
  import { getApiErrorMessage } from '@salesforce/b2c-tooling-sdk';
9
9
  import { t, withDocs } from '../../i18n/index.js';
10
- const COLUMNS = {
10
+ export const COLUMNS = {
11
11
  realm: {
12
12
  header: 'Realm',
13
13
  get: (s) => s.realm || '-',
@@ -30,7 +30,19 @@ const COLUMNS = {
30
30
  },
31
31
  eol: {
32
32
  header: 'EOL',
33
- get: (s) => (s.eol ? new Date(s.eol).toISOString().slice(0, 10) : '-'),
33
+ get(s) {
34
+ if (!s.eol)
35
+ return '-';
36
+ const d = new Date(s.eol);
37
+ const date = d.toISOString().slice(0, 10);
38
+ const msUntilEol = d.getTime() - Date.now();
39
+ if (msUntilEol <= 24 * 60 * 60 * 1000) {
40
+ const hh = String(d.getUTCHours()).padStart(2, '0');
41
+ const mm = String(d.getUTCMinutes()).padStart(2, '0');
42
+ return `${date} ${hh}:${mm}`;
43
+ }
44
+ return date;
45
+ },
34
46
  },
35
47
  id: {
36
48
  header: 'ID',