@salesforce/b2c-cli 0.3.0 → 0.4.1

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 (260) 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 +158 -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 +72 -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 +72 -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 +67 -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 +18 -0
  47. package/dist/commands/am/users/get.js +96 -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/auth/token.js +1 -1
  59. package/dist/commands/auth/token.js.map +1 -1
  60. package/dist/commands/code/activate.d.ts +2 -1
  61. package/dist/commands/code/delete.d.ts +2 -1
  62. package/dist/commands/code/deploy.d.ts +2 -1
  63. package/dist/commands/code/watch.d.ts +2 -1
  64. package/dist/commands/content/export.d.ts +57 -0
  65. package/dist/commands/content/export.js +217 -0
  66. package/dist/commands/content/export.js.map +1 -0
  67. package/dist/commands/content/list.d.ts +56 -0
  68. package/dist/commands/content/list.js +133 -0
  69. package/dist/commands/content/list.js.map +1 -0
  70. package/dist/commands/docs/download.d.ts +2 -1
  71. package/dist/commands/ecdn/cache/purge.d.ts +2 -1
  72. package/dist/commands/ecdn/certificates/add.d.ts +2 -1
  73. package/dist/commands/ecdn/certificates/delete.d.ts +2 -1
  74. package/dist/commands/ecdn/certificates/list.d.ts +2 -1
  75. package/dist/commands/ecdn/certificates/update.d.ts +2 -1
  76. package/dist/commands/ecdn/certificates/validate.d.ts +2 -1
  77. package/dist/commands/ecdn/cipher-suites/get.d.ts +2 -1
  78. package/dist/commands/ecdn/cipher-suites/update.d.ts +2 -1
  79. package/dist/commands/ecdn/logpush/jobs/create.d.ts +2 -1
  80. package/dist/commands/ecdn/logpush/jobs/delete.d.ts +2 -1
  81. package/dist/commands/ecdn/logpush/jobs/get.d.ts +2 -1
  82. package/dist/commands/ecdn/logpush/jobs/list.d.ts +2 -1
  83. package/dist/commands/ecdn/logpush/jobs/update.d.ts +2 -1
  84. package/dist/commands/ecdn/logpush/ownership.d.ts +2 -1
  85. package/dist/commands/ecdn/mrt-rules/create.d.ts +2 -1
  86. package/dist/commands/ecdn/mrt-rules/delete.d.ts +2 -1
  87. package/dist/commands/ecdn/mrt-rules/get.d.ts +2 -1
  88. package/dist/commands/ecdn/mrt-rules/rules/delete.d.ts +2 -1
  89. package/dist/commands/ecdn/mrt-rules/rules/update.d.ts +2 -1
  90. package/dist/commands/ecdn/mrt-rules/update.d.ts +2 -1
  91. package/dist/commands/ecdn/mtls/create.d.ts +2 -1
  92. package/dist/commands/ecdn/mtls/delete.d.ts +2 -1
  93. package/dist/commands/ecdn/mtls/get.d.ts +2 -1
  94. package/dist/commands/ecdn/mtls/list.d.ts +2 -1
  95. package/dist/commands/ecdn/origin-headers/delete.d.ts +2 -1
  96. package/dist/commands/ecdn/origin-headers/get.d.ts +2 -1
  97. package/dist/commands/ecdn/origin-headers/set.d.ts +2 -1
  98. package/dist/commands/ecdn/page-shield/notifications/create.d.ts +2 -1
  99. package/dist/commands/ecdn/page-shield/notifications/delete.d.ts +2 -1
  100. package/dist/commands/ecdn/page-shield/notifications/list.d.ts +2 -1
  101. package/dist/commands/ecdn/page-shield/policies/create.d.ts +2 -1
  102. package/dist/commands/ecdn/page-shield/policies/delete.d.ts +2 -1
  103. package/dist/commands/ecdn/page-shield/policies/get.d.ts +2 -1
  104. package/dist/commands/ecdn/page-shield/policies/list.d.ts +2 -1
  105. package/dist/commands/ecdn/page-shield/policies/update.d.ts +2 -1
  106. package/dist/commands/ecdn/page-shield/scripts/get.d.ts +2 -1
  107. package/dist/commands/ecdn/page-shield/scripts/list.d.ts +2 -1
  108. package/dist/commands/ecdn/security/get.d.ts +2 -1
  109. package/dist/commands/ecdn/security/update.d.ts +2 -1
  110. package/dist/commands/ecdn/speed/get.d.ts +2 -1
  111. package/dist/commands/ecdn/speed/update.d.ts +2 -1
  112. package/dist/commands/ecdn/waf/groups/list.d.ts +2 -1
  113. package/dist/commands/ecdn/waf/groups/update.d.ts +2 -1
  114. package/dist/commands/ecdn/waf/managed-rules/list.d.ts +2 -1
  115. package/dist/commands/ecdn/waf/managed-rules/update.d.ts +2 -1
  116. package/dist/commands/ecdn/waf/migrate.d.ts +2 -1
  117. package/dist/commands/ecdn/waf/owasp/get.d.ts +2 -1
  118. package/dist/commands/ecdn/waf/owasp/update.d.ts +2 -1
  119. package/dist/commands/ecdn/waf/rules/get.d.ts +2 -1
  120. package/dist/commands/ecdn/waf/rules/list.d.ts +2 -1
  121. package/dist/commands/ecdn/waf/rules/update.d.ts +2 -1
  122. package/dist/commands/ecdn/waf/rulesets/list.d.ts +2 -1
  123. package/dist/commands/ecdn/waf/rulesets/update.d.ts +2 -1
  124. package/dist/commands/ecdn/zones/create.d.ts +2 -1
  125. package/dist/commands/ecdn/zones/list.d.ts +2 -1
  126. package/dist/commands/job/export.d.ts +2 -1
  127. package/dist/commands/job/import.d.ts +2 -1
  128. package/dist/commands/job/run.d.ts +2 -1
  129. package/dist/commands/job/search.d.ts +2 -1
  130. package/dist/commands/job/wait.d.ts +2 -1
  131. package/dist/commands/logs/get.d.ts +2 -1
  132. package/dist/commands/logs/list.d.ts +2 -1
  133. package/dist/commands/logs/tail.d.ts +2 -1
  134. package/dist/commands/mrt/bundle/deploy.js +24 -4
  135. package/dist/commands/mrt/bundle/deploy.js.map +1 -1
  136. package/dist/commands/mrt/tail-logs.d.ts +27 -0
  137. package/dist/commands/mrt/tail-logs.js +137 -0
  138. package/dist/commands/mrt/tail-logs.js.map +1 -0
  139. package/dist/commands/{ods → sandbox}/create.d.ts +8 -14
  140. package/dist/commands/{ods → sandbox}/create.js +112 -102
  141. package/dist/commands/sandbox/create.js.map +1 -0
  142. package/dist/commands/sandbox/delete.d.ts +19 -0
  143. package/dist/commands/sandbox/delete.js +141 -0
  144. package/dist/commands/sandbox/delete.js.map +1 -0
  145. package/dist/commands/{ods → sandbox}/get.d.ts +2 -1
  146. package/dist/commands/{ods → sandbox}/get.js +5 -4
  147. package/dist/commands/sandbox/get.js.map +1 -0
  148. package/dist/commands/{ods → sandbox}/info.d.ts +2 -1
  149. package/dist/commands/{ods → sandbox}/info.js +6 -5
  150. package/dist/commands/sandbox/info.js.map +1 -0
  151. package/dist/commands/{ods → sandbox}/list.d.ts +2 -1
  152. package/dist/commands/{ods → sandbox}/list.js +6 -5
  153. package/dist/commands/sandbox/list.js.map +1 -0
  154. package/dist/commands/{ods → sandbox}/restart.d.ts +7 -1
  155. package/dist/commands/sandbox/restart.js +107 -0
  156. package/dist/commands/sandbox/restart.js.map +1 -0
  157. package/dist/commands/{ods → sandbox}/start.d.ts +7 -1
  158. package/dist/commands/sandbox/start.js +108 -0
  159. package/dist/commands/sandbox/start.js.map +1 -0
  160. package/dist/commands/{ods → sandbox}/stop.d.ts +7 -1
  161. package/dist/commands/sandbox/stop.js +107 -0
  162. package/dist/commands/sandbox/stop.js.map +1 -0
  163. package/dist/commands/scaffold/generate.d.ts +22 -0
  164. package/dist/commands/scaffold/generate.js +74 -0
  165. package/dist/commands/scaffold/generate.js.map +1 -0
  166. package/dist/commands/scaffold/index.d.ts +24 -0
  167. package/dist/commands/scaffold/index.js +80 -0
  168. package/dist/commands/scaffold/index.js.map +1 -0
  169. package/dist/commands/scaffold/info.d.ts +24 -0
  170. package/dist/commands/scaffold/info.js +89 -0
  171. package/dist/commands/scaffold/info.js.map +1 -0
  172. package/dist/commands/scaffold/init.d.ts +29 -0
  173. package/dist/commands/scaffold/init.js +221 -0
  174. package/dist/commands/scaffold/init.js.map +1 -0
  175. package/dist/commands/scaffold/list.d.ts +38 -0
  176. package/dist/commands/scaffold/list.js +131 -0
  177. package/dist/commands/scaffold/list.js.map +1 -0
  178. package/dist/commands/scaffold/search.d.ts +32 -0
  179. package/dist/commands/scaffold/search.js +97 -0
  180. package/dist/commands/scaffold/search.js.map +1 -0
  181. package/dist/commands/scaffold/validate.d.ts +24 -0
  182. package/dist/commands/scaffold/validate.js +74 -0
  183. package/dist/commands/scaffold/validate.js.map +1 -0
  184. package/dist/commands/scapi/custom/status.d.ts +2 -1
  185. package/dist/commands/scapi/schemas/get.d.ts +2 -1
  186. package/dist/commands/scapi/schemas/list.d.ts +2 -1
  187. package/dist/commands/setup/index.d.ts +12 -0
  188. package/dist/commands/setup/index.js +34 -0
  189. package/dist/commands/setup/index.js.map +1 -0
  190. package/dist/commands/setup/{config.d.ts → inspect.d.ts} +5 -4
  191. package/dist/commands/setup/{config.js → inspect.js} +5 -3
  192. package/dist/commands/setup/inspect.js.map +1 -0
  193. package/dist/commands/setup/instance/create.d.ts +43 -0
  194. package/dist/commands/setup/instance/create.js +269 -0
  195. package/dist/commands/setup/instance/create.js.map +1 -0
  196. package/dist/commands/setup/instance/index.d.ts +9 -0
  197. package/dist/commands/setup/instance/index.js +22 -0
  198. package/dist/commands/setup/instance/index.js.map +1 -0
  199. package/dist/commands/setup/instance/list.d.ts +31 -0
  200. package/dist/commands/setup/instance/list.js +68 -0
  201. package/dist/commands/setup/instance/list.js.map +1 -0
  202. package/dist/commands/setup/instance/remove.d.ts +34 -0
  203. package/dist/commands/setup/instance/remove.js +75 -0
  204. package/dist/commands/setup/instance/remove.js.map +1 -0
  205. package/dist/commands/setup/instance/set-active.d.ts +33 -0
  206. package/dist/commands/setup/instance/set-active.js +78 -0
  207. package/dist/commands/setup/instance/set-active.js.map +1 -0
  208. package/dist/commands/slas/client/create.d.ts +2 -1
  209. package/dist/commands/slas/client/create.js +1 -0
  210. package/dist/commands/slas/client/create.js.map +1 -1
  211. package/dist/commands/slas/client/delete.d.ts +2 -1
  212. package/dist/commands/slas/client/get.d.ts +2 -1
  213. package/dist/commands/slas/client/list.d.ts +2 -1
  214. package/dist/commands/slas/client/list.js +8 -3
  215. package/dist/commands/slas/client/list.js.map +1 -1
  216. package/dist/commands/slas/client/update.d.ts +2 -1
  217. package/dist/commands/webdav/get.d.ts +2 -1
  218. package/dist/commands/webdav/rm.d.ts +2 -1
  219. package/dist/i18n/locales/en.d.ts +42 -0
  220. package/dist/i18n/locales/en.js +42 -0
  221. package/dist/i18n/locales/en.js.map +1 -1
  222. package/dist/i18n/locales/index.d.ts +42 -0
  223. package/dist/lib/scaffold/generate-helper.d.ts +47 -0
  224. package/dist/lib/scaffold/generate-helper.js +271 -0
  225. package/dist/lib/scaffold/generate-helper.js.map +1 -0
  226. package/dist/lib/scaffold/source-resolver.d.ts +25 -0
  227. package/dist/lib/scaffold/source-resolver.js +37 -0
  228. package/dist/lib/scaffold/source-resolver.js.map +1 -0
  229. package/dist/utils/am/resolve-org.d.ts +11 -0
  230. package/dist/utils/am/resolve-org.js +15 -0
  231. package/dist/utils/am/resolve-org.js.map +1 -0
  232. package/dist/utils/am/user-display.d.ts +5 -0
  233. package/dist/utils/am/user-display.js +100 -0
  234. package/dist/utils/am/user-display.js.map +1 -0
  235. package/dist/utils/ecdn/zone-command.d.ts +2 -1
  236. package/dist/utils/mrt-logs/format.d.ts +28 -0
  237. package/dist/utils/mrt-logs/format.js +90 -0
  238. package/dist/utils/mrt-logs/format.js.map +1 -0
  239. package/dist/utils/mrt-logs/index.d.ts +1 -0
  240. package/dist/utils/mrt-logs/index.js +7 -0
  241. package/dist/utils/mrt-logs/index.js.map +1 -0
  242. package/dist/utils/slas/client.d.ts +7 -0
  243. package/dist/utils/slas/client.js +26 -13
  244. package/dist/utils/slas/client.js.map +1 -1
  245. package/oclif.manifest.json +14039 -5107
  246. package/package.json +61 -19
  247. package/dist/commands/ods/create.js.map +0 -1
  248. package/dist/commands/ods/delete.d.ts +0 -15
  249. package/dist/commands/ods/delete.js +0 -86
  250. package/dist/commands/ods/delete.js.map +0 -1
  251. package/dist/commands/ods/get.js.map +0 -1
  252. package/dist/commands/ods/info.js.map +0 -1
  253. package/dist/commands/ods/list.js.map +0 -1
  254. package/dist/commands/ods/restart.js +0 -51
  255. package/dist/commands/ods/restart.js.map +0 -1
  256. package/dist/commands/ods/start.js +0 -51
  257. package/dist/commands/ods/start.js.map +0 -1
  258. package/dist/commands/ods/stop.js +0 -51
  259. package/dist/commands/ods/stop.js.map +0 -1
  260. package/dist/commands/setup/config.js.map +0 -1
@@ -0,0 +1,271 @@
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 { input, confirm, select, checkbox, search } from '@inquirer/prompts';
7
+ import { createScaffoldRegistry, generateFromScaffold, evaluateCondition, resolveScaffoldParameters, parseParameterOptions, resolveOutputDirectory, } from '@salesforce/b2c-tooling-sdk/scaffold';
8
+ import { resolveLocalSource, resolveRemoteSource, isRemoteSource } from './source-resolver.js';
9
+ /**
10
+ * Execute scaffold generation with the given options.
11
+ */
12
+ export async function executeScaffoldGenerate(options, ctx) {
13
+ const { scaffoldId, dryRun = false, force = false, projectRoot = process.cwd() } = options;
14
+ const registry = createScaffoldRegistry();
15
+ // Find the scaffold
16
+ const scaffold = await registry.getScaffold(scaffoldId, {
17
+ projectRoot,
18
+ });
19
+ if (!scaffold) {
20
+ ctx.error(`Scaffold not found: ${scaffoldId}`);
21
+ }
22
+ // Parse option flags into variables
23
+ const providedVariables = parseParameterOptions(options.options || [], scaffold);
24
+ // Handle --name shorthand for the first string parameter
25
+ if (options.name) {
26
+ const firstStringParam = scaffold.manifest.parameters.find((p) => p.type === 'string');
27
+ if (firstStringParam) {
28
+ providedVariables[firstStringParam.name] = options.name;
29
+ }
30
+ }
31
+ // Resolve parameters using SDK, then prompt for any missing
32
+ const isTTY = process.stdin.isTTY && process.stdout.isTTY;
33
+ const interactive = !force && isTTY;
34
+ const resolved = await resolveScaffoldParameters(scaffold, {
35
+ providedVariables,
36
+ projectRoot,
37
+ useDefaults: !interactive,
38
+ });
39
+ // Report any validation errors
40
+ for (const error of resolved.errors) {
41
+ ctx.error(error.message);
42
+ }
43
+ // Check for missing required parameters in non-interactive mode
44
+ if (!interactive) {
45
+ const missingRequired = resolved.missingParameters.filter((p) => p.required);
46
+ if (missingRequired.length > 0) {
47
+ ctx.error(`Missing required parameter: ${missingRequired[0].name}`);
48
+ }
49
+ }
50
+ // Prompt for any missing parameters in interactive mode
51
+ const resolvedVariables = { ...resolved.variables };
52
+ if (interactive && resolved.missingParameters.length > 0) {
53
+ for (const param of resolved.missingParameters) {
54
+ // Re-check condition since earlier params may have been filled in
55
+ if (param.when && !evaluateCondition(param.when, resolvedVariables)) {
56
+ continue;
57
+ }
58
+ // eslint-disable-next-line no-await-in-loop
59
+ const value = await promptForParameter(param, projectRoot, ctx);
60
+ if (value !== undefined) {
61
+ resolvedVariables[param.name] = value;
62
+ // Set companion path variable for cartridges source
63
+ if (param.source === 'cartridges' && typeof value === 'string') {
64
+ const result = resolveLocalSource('cartridges', projectRoot);
65
+ const cartridgePath = result.pathMap?.get(value);
66
+ if (cartridgePath) {
67
+ resolvedVariables[`${param.name}Path`] = cartridgePath;
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ // Resolve output directory using SDK function
74
+ ctx.logger.trace({ flagOutput: options.output, defaultOutputDir: scaffold.manifest.defaultOutputDir }, 'Resolving output directory');
75
+ const outputDir = resolveOutputDirectory({
76
+ outputDir: options.output,
77
+ scaffold,
78
+ projectRoot,
79
+ });
80
+ ctx.logger.debug({ outputDir }, 'Resolved output directory');
81
+ if (dryRun) {
82
+ ctx.log('Dry run - no files will be written');
83
+ }
84
+ ctx.log(`Generating ${scaffold.manifest.displayName} scaffold...`);
85
+ // Generate the scaffold
86
+ let result;
87
+ try {
88
+ result = await generateFromScaffold(scaffold, {
89
+ outputDir,
90
+ variables: resolvedVariables,
91
+ dryRun,
92
+ force,
93
+ });
94
+ }
95
+ catch (error) {
96
+ ctx.error(`Failed to generate scaffold: ${error.message}`);
97
+ }
98
+ const response = {
99
+ scaffold: scaffoldId,
100
+ outputDir,
101
+ dryRun,
102
+ files: result.files.map((f) => ({
103
+ path: f.path,
104
+ action: f.action,
105
+ skipReason: f.skipReason,
106
+ })),
107
+ postInstructions: result.postInstructions,
108
+ };
109
+ // Display results
110
+ const created = result.files.filter((f) => f.action === 'created' || f.action === 'overwritten');
111
+ const skipped = result.files.filter((f) => f.action === 'skipped');
112
+ if (created.length > 0) {
113
+ ctx.log('');
114
+ ctx.log(`Successfully generated ${created.length} file(s):`);
115
+ for (const file of created) {
116
+ // file.path is already relative to cwd from the executor
117
+ ctx.log(` ${file.action === 'overwritten' ? '(overwritten)' : '+'} ${file.path}`);
118
+ }
119
+ }
120
+ if (skipped.length > 0) {
121
+ ctx.log('');
122
+ ctx.log(`Skipped ${skipped.length} file(s):`);
123
+ for (const file of skipped) {
124
+ ctx.log(` - ${file.path}${file.skipReason ? ` (${file.skipReason})` : ''}`);
125
+ }
126
+ }
127
+ // Show post-instructions
128
+ if (result.postInstructions) {
129
+ ctx.log('');
130
+ ctx.log(result.postInstructions);
131
+ }
132
+ return response;
133
+ }
134
+ /**
135
+ * Prompt for a single parameter value.
136
+ */
137
+ async function promptForParameter(param, projectRoot, ctx) {
138
+ switch (param.type) {
139
+ case 'boolean': {
140
+ return confirm({
141
+ message: param.prompt,
142
+ default: param.default,
143
+ });
144
+ }
145
+ case 'choice': {
146
+ const { choices, warning } = await resolveSourceChoices(param, projectRoot);
147
+ if (warning)
148
+ ctx.warn(warning);
149
+ if (choices.length === 0) {
150
+ if (param.source)
151
+ ctx.warn(`No ${param.source} found. Please enter a value manually.`);
152
+ return promptTextInput(param);
153
+ }
154
+ if (choices.length > 10) {
155
+ return search({
156
+ message: param.prompt,
157
+ source: createSearchSource(choices),
158
+ });
159
+ }
160
+ return select({
161
+ message: param.prompt,
162
+ choices: choices.map((c) => ({ name: c.label, value: c.value })),
163
+ default: param.default,
164
+ });
165
+ }
166
+ case 'multi-choice': {
167
+ const { choices, warning } = await resolveSourceChoices(param, projectRoot);
168
+ if (warning)
169
+ ctx.warn(warning);
170
+ if (choices.length === 0)
171
+ return [];
172
+ // Pre-select default values if specified
173
+ const defaults = Array.isArray(param.default) ? param.default : [];
174
+ return checkbox({
175
+ message: param.prompt,
176
+ choices: choices.map((c) => ({
177
+ name: c.label,
178
+ value: c.value,
179
+ checked: defaults.includes(c.value),
180
+ })),
181
+ });
182
+ }
183
+ case 'string': {
184
+ if (param.source) {
185
+ const { choices, warning } = await resolveSourceChoices(param, projectRoot);
186
+ if (warning)
187
+ ctx.warn(warning);
188
+ if (choices.length > 0) {
189
+ if (choices.length > 10) {
190
+ return search({
191
+ message: param.prompt,
192
+ source: createSearchSource(choices),
193
+ });
194
+ }
195
+ return select({
196
+ message: param.prompt,
197
+ choices: choices.map((c) => ({ name: c.label, value: c.value })),
198
+ default: param.default,
199
+ });
200
+ }
201
+ ctx.warn(`No ${param.source} found. Please enter a value manually.`);
202
+ }
203
+ return promptTextInput(param);
204
+ }
205
+ default: {
206
+ return undefined;
207
+ }
208
+ }
209
+ }
210
+ /**
211
+ * Prompt for text input with validation.
212
+ */
213
+ async function promptTextInput(param) {
214
+ const value = await input({
215
+ message: param.prompt,
216
+ default: param.default,
217
+ required: param.required,
218
+ validate(val) {
219
+ if (param.required && !val)
220
+ return 'This field is required';
221
+ if (param.pattern && val) {
222
+ const regex = new RegExp(param.pattern);
223
+ if (!regex.test(val)) {
224
+ return param.validationMessage || `Value does not match pattern: ${param.pattern}`;
225
+ }
226
+ }
227
+ return true;
228
+ },
229
+ });
230
+ return value || undefined;
231
+ }
232
+ /**
233
+ * Create a search source function for inquirer search prompt.
234
+ */
235
+ function createSearchSource(choices) {
236
+ return async (term) => {
237
+ if (!term) {
238
+ return choices.map((c) => ({ name: c.label, value: c.value }));
239
+ }
240
+ const lowerTerm = term.toLowerCase();
241
+ return choices
242
+ .filter((c) => c.label.toLowerCase().includes(lowerTerm) || c.value.toLowerCase().includes(lowerTerm))
243
+ .map((c) => ({ name: c.label, value: c.value }));
244
+ };
245
+ }
246
+ /**
247
+ * Resolve choices for a parameter with dynamic source.
248
+ */
249
+ async function resolveSourceChoices(param, projectRoot) {
250
+ if (!param.source) {
251
+ return { choices: param.choices || [] };
252
+ }
253
+ if (isRemoteSource(param.source)) {
254
+ try {
255
+ const choices = await resolveRemoteSource(param.source);
256
+ return { choices };
257
+ }
258
+ catch (error) {
259
+ return {
260
+ choices: [],
261
+ warning: `Could not fetch ${param.source}: ${error.message}`,
262
+ };
263
+ }
264
+ }
265
+ const result = resolveLocalSource(param.source, projectRoot);
266
+ return {
267
+ choices: result.choices,
268
+ pathMap: result.pathMap,
269
+ };
270
+ }
271
+ //# sourceMappingURL=generate-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-helper.js","sourceRoot":"","sources":["../../../src/lib/scaffold/generate-helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type DynamicParameterSource, type ScaffoldChoice, type SourceResult } from '@salesforce/b2c-tooling-sdk/scaffold';
2
+ export { isRemoteSource, validateAgainstSource, type SourceResult } from '@salesforce/b2c-tooling-sdk/scaffold';
3
+ /**
4
+ * @deprecated Use SourceResult from '@salesforce/b2c-tooling-sdk/scaffold' instead.
5
+ * This type alias is kept for backwards compatibility.
6
+ */
7
+ export type LocalSourceResult = SourceResult;
8
+ /**
9
+ * Resolves a local (non-remote) parameter source.
10
+ * Delegates to SDK function.
11
+ *
12
+ * @param source - The source type to resolve
13
+ * @param projectRoot - Project root directory for cartridge discovery
14
+ * @returns Resolved choices and optional path mapping
15
+ */
16
+ export declare function resolveLocalSource(source: DynamicParameterSource, projectRoot: string): SourceResult;
17
+ /**
18
+ * CLI wrapper for remote source resolution.
19
+ * Handles auth orchestration using CLI config loading.
20
+ *
21
+ * @param source - The source type to resolve
22
+ * @returns Promise resolving to choices array
23
+ * @throws Error if authentication fails or API call fails
24
+ */
25
+ export declare function resolveRemoteSource(source: DynamicParameterSource): Promise<ScaffoldChoice[]>;
@@ -0,0 +1,37 @@
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 { resolveLocalSource as sdkResolveLocalSource, resolveRemoteSource as sdkResolveRemoteSource, } from '@salesforce/b2c-tooling-sdk/scaffold';
7
+ import { loadConfig } from '@salesforce/b2c-tooling-sdk/cli';
8
+ // Re-export SDK functions and types
9
+ export { isRemoteSource, validateAgainstSource } from '@salesforce/b2c-tooling-sdk/scaffold';
10
+ /**
11
+ * Resolves a local (non-remote) parameter source.
12
+ * Delegates to SDK function.
13
+ *
14
+ * @param source - The source type to resolve
15
+ * @param projectRoot - Project root directory for cartridge discovery
16
+ * @returns Resolved choices and optional path mapping
17
+ */
18
+ export function resolveLocalSource(source, projectRoot) {
19
+ return sdkResolveLocalSource(source, projectRoot);
20
+ }
21
+ /**
22
+ * CLI wrapper for remote source resolution.
23
+ * Handles auth orchestration using CLI config loading.
24
+ *
25
+ * @param source - The source type to resolve
26
+ * @returns Promise resolving to choices array
27
+ * @throws Error if authentication fails or API call fails
28
+ */
29
+ export async function resolveRemoteSource(source) {
30
+ const config = loadConfig({}, { configPath: undefined });
31
+ if (!config.hasB2CInstanceConfig() || !config.hasOAuthConfig()) {
32
+ throw new Error('B2C instance configuration with OAuth required for sites source');
33
+ }
34
+ const instance = config.createB2CInstance();
35
+ return sdkResolveRemoteSource(source, instance);
36
+ }
37
+ //# sourceMappingURL=source-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../../src/lib/scaffold/source-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,kBAAkB,IAAI,qBAAqB,EAC3C,mBAAmB,IAAI,sBAAsB,GAI9C,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAC,UAAU,EAAC,MAAM,iCAAiC,CAAC;AAE3D,oCAAoC;AACpC,OAAO,EAAC,cAAc,EAAE,qBAAqB,EAAoB,MAAM,sCAAsC,CAAC;AAQ9G;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA8B,EAAE,WAAmB;IACpF,OAAO,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAA8B;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,EAAC,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;IAEvD,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC5C,OAAO,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { AccountManagerOrganization } from '@salesforce/b2c-tooling-sdk';
2
+ interface OrgResolver {
3
+ getOrg(orgId: string): Promise<AccountManagerOrganization>;
4
+ getOrgByName(name: string): Promise<AccountManagerOrganization>;
5
+ }
6
+ /**
7
+ * Resolves an organization identifier (ID or friendly name) to an org ID.
8
+ * Tries by ID first, then falls back to name lookup.
9
+ */
10
+ export declare function resolveOrgId(client: OrgResolver, orgIdOrName: string): Promise<string>;
11
+ export {};
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Resolves an organization identifier (ID or friendly name) to an org ID.
3
+ * Tries by ID first, then falls back to name lookup.
4
+ */
5
+ export async function resolveOrgId(client, orgIdOrName) {
6
+ try {
7
+ const org = await client.getOrg(orgIdOrName);
8
+ return org.id;
9
+ }
10
+ catch {
11
+ const org = await client.getOrgByName(orgIdOrName);
12
+ return org.id;
13
+ }
14
+ }
15
+ //# sourceMappingURL=resolve-org.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-org.js","sourceRoot":"","sources":["../../../src/utils/am/resolve-org.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAmB,EAAE,WAAmB;IACzE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC,EAAG,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC,EAAG,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AccountManagerUser, RoleMapping, OrgMapping } from '@salesforce/b2c-tooling-sdk';
2
+ /**
3
+ * Prints user details to stdout using cliui formatting.
4
+ */
5
+ export declare function printUserDetails(user: AccountManagerUser, roleMapping: RoleMapping, orgMapping: OrgMapping): void;
@@ -0,0 +1,100 @@
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 { ux } from '@oclif/core';
7
+ import cliui from 'cliui';
8
+ import { resolveToInternalRole } from '@salesforce/b2c-tooling-sdk';
9
+ /**
10
+ * Formats a role for display as "Description (ENUM_NAME)" or just "ENUM_NAME".
11
+ */
12
+ function formatRoleDisplay(roleName, roleMapping) {
13
+ const enumName = resolveToInternalRole(roleName, roleMapping);
14
+ const description = roleMapping.descriptions.get(enumName);
15
+ return description ? `${description} (${enumName})` : enumName;
16
+ }
17
+ function formatOrgDisplay(orgId, orgMapping) {
18
+ const name = orgMapping.byId.get(orgId);
19
+ return name ? `${name} (${orgId})` : orgId;
20
+ }
21
+ function printBasicFields(ui, user, orgMapping) {
22
+ const isPasswordExpired = user.passwordExpirationTimestamp
23
+ ? user.passwordExpirationTimestamp < Date.now()
24
+ : undefined;
25
+ const twoFAEnabled = user.verifiers && user.verifiers.length > 0 ? 'Yes' : 'No';
26
+ const primaryOrg = user.primaryOrganization ? formatOrgDisplay(user.primaryOrganization, orgMapping) : undefined;
27
+ const fields = [
28
+ ['ID', user.id],
29
+ ['Email', user.mail],
30
+ ['First Name', user.firstName],
31
+ ['Last Name', user.lastName],
32
+ ['Display Name', user.displayName],
33
+ ['State', user.userState],
34
+ ['Primary Organization', primaryOrg],
35
+ ['Preferred Locale', user.preferredLocale || undefined],
36
+ ['Business Phone', user.businessPhone || undefined],
37
+ ['Home Phone', user.homePhone || undefined],
38
+ ['Mobile Phone', user.mobilePhone || undefined],
39
+ ['Linked to SF Identity', user.linkedToSfIdentity?.toString()],
40
+ ['2FA Enabled', twoFAEnabled],
41
+ ['Password Expired', isPasswordExpired === undefined ? undefined : isPasswordExpired ? 'Yes' : 'No'],
42
+ ['Last Login', user.lastLoginDate || undefined],
43
+ ['Created At', user.createdAt ? new Date(user.createdAt).toLocaleString() : undefined],
44
+ ['Last Modified', user.lastModified ? new Date(user.lastModified).toLocaleString() : undefined],
45
+ ];
46
+ for (const [label, value] of fields) {
47
+ if (value !== undefined) {
48
+ ui.div({ text: `${label}:`, width: 25, padding: [0, 2, 0, 0] }, { text: value, padding: [0, 0, 0, 0] });
49
+ }
50
+ }
51
+ }
52
+ function printOrganizations(ui, user, orgMapping) {
53
+ if (!user.organizations || user.organizations.length === 0) {
54
+ return;
55
+ }
56
+ ui.div({ text: 'Organizations', padding: [2, 0, 0, 0] });
57
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
58
+ for (const o of user.organizations) {
59
+ const orgId = typeof o === 'string' ? o : o.id || 'Unknown';
60
+ const name = formatOrgDisplay(orgId, orgMapping);
61
+ ui.div({ text: `- ${name}`, padding: [0, 0, 0, 2] });
62
+ }
63
+ }
64
+ function printRoles(ui, user, roleMapping) {
65
+ if (!user.roles || user.roles.length === 0) {
66
+ return;
67
+ }
68
+ ui.div({ text: 'Roles', padding: [2, 0, 0, 0] });
69
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
70
+ for (const r of user.roles) {
71
+ const name = typeof r === 'string' ? r : r.roleEnumName || r.id || 'Unknown';
72
+ const display = formatRoleDisplay(name, roleMapping);
73
+ ui.div({ text: `- ${display}`, padding: [0, 0, 0, 2] });
74
+ }
75
+ }
76
+ function printRoleScopes(ui, user) {
77
+ if (!user.roleTenantFilterMap || Object.keys(user.roleTenantFilterMap).length === 0) {
78
+ return;
79
+ }
80
+ ui.div({ text: 'Role Scopes', padding: [2, 0, 0, 0] });
81
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
82
+ for (const [roleEnumName, filter] of Object.entries(user.roleTenantFilterMap)) {
83
+ const filterValue = typeof filter === 'string' ? filter : Array.isArray(filter) ? filter.join(', ') : String(filter);
84
+ ui.div({ text: `${roleEnumName}:`, width: 30, padding: [0, 2, 0, 0] }, { text: filterValue, padding: [0, 0, 0, 0] });
85
+ }
86
+ }
87
+ /**
88
+ * Prints user details to stdout using cliui formatting.
89
+ */
90
+ export function printUserDetails(user, roleMapping, orgMapping) {
91
+ const ui = cliui({ width: process.stdout.columns || 80 });
92
+ ui.div({ text: 'User Details', padding: [1, 0, 0, 0] });
93
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
94
+ printBasicFields(ui, user, orgMapping);
95
+ printOrganizations(ui, user, orgMapping);
96
+ printRoles(ui, user, roleMapping);
97
+ printRoleScopes(ui, user);
98
+ ux.stdout(ui.toString());
99
+ }
100
+ //# sourceMappingURL=user-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-display.js","sourceRoot":"","sources":["../../../src/utils/am/user-display.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,11 @@ export declare abstract class EcdnZoneCommand<T extends typeof Command> extends
10
10
  zone: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
11
  'client-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  'client-secret': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- scope: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ 'auth-scope': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
14
  'short-code': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
15
  'tenant-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  'auth-methods': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'user-auth': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
18
  'account-manager-host': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
19
  'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
20
  debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
@@ -0,0 +1,28 @@
1
+ import type { MrtLogEntry } from '@salesforce/b2c-tooling-sdk/operations/mrt';
2
+ /**
3
+ * Options for formatting an MRT log entry.
4
+ */
5
+ export interface FormatMrtEntryOptions {
6
+ /** Whether to use ANSI color codes. */
7
+ useColor: boolean;
8
+ /** Regex to highlight matches in the message. */
9
+ searchHighlight?: RegExp;
10
+ }
11
+ /**
12
+ * Colorizes a log level name using its level color + bold.
13
+ */
14
+ export declare function colorLevel(level: string): string;
15
+ /**
16
+ * Colorizes text with the search highlight style (bold yellow).
17
+ */
18
+ export declare function colorHighlight(text: string): string;
19
+ /**
20
+ * Formats an MRT log entry for terminal display.
21
+ *
22
+ * Output format:
23
+ * ```
24
+ * LEVEL [timestamp] [shortRequestId]
25
+ * message
26
+ * ```
27
+ */
28
+ export declare function formatMrtEntry(entry: MrtLogEntry, options: FormatMrtEntryOptions): string;
@@ -0,0 +1,90 @@
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
+ /**
7
+ * ANSI color codes for log levels.
8
+ * Matches the color scheme from logs/format.ts for consistency.
9
+ */
10
+ const LEVEL_COLORS = {
11
+ ERROR: '\u001B[31m', // Red
12
+ FATAL: '\u001B[35m', // Magenta
13
+ WARN: '\u001B[33m', // Yellow
14
+ WARNING: '\u001B[33m', // Yellow
15
+ INFO: '\u001B[36m', // Cyan
16
+ DEBUG: '\u001B[90m', // Gray
17
+ TRACE: '\u001B[90m', // Gray
18
+ };
19
+ const RESET = '\u001B[0m';
20
+ const DIM = '\u001B[2m';
21
+ const BOLD = '\u001B[1m';
22
+ const HIGHLIGHT = '\u001B[1;33m'; // Bold yellow for search matches
23
+ /**
24
+ * Highlights regex matches in text with ANSI color codes.
25
+ */
26
+ function highlightMatches(text, pattern) {
27
+ return text.replace(pattern, (match) => `${HIGHLIGHT}${match}${RESET}`);
28
+ }
29
+ /**
30
+ * Colorizes a log level name using its level color + bold.
31
+ */
32
+ export function colorLevel(level) {
33
+ const color = LEVEL_COLORS[level] || '';
34
+ return `${color}${BOLD}${level}${RESET}`;
35
+ }
36
+ /**
37
+ * Colorizes text with the search highlight style (bold yellow).
38
+ */
39
+ export function colorHighlight(text) {
40
+ return `${HIGHLIGHT}${text}${RESET}`;
41
+ }
42
+ /**
43
+ * Formats an MRT log entry for terminal display.
44
+ *
45
+ * Output format:
46
+ * ```
47
+ * LEVEL [timestamp] [shortRequestId]
48
+ * message
49
+ * ```
50
+ */
51
+ export function formatMrtEntry(entry, options) {
52
+ const { useColor, searchHighlight } = options;
53
+ const headerParts = [];
54
+ // Level first (most important for scanning)
55
+ if (entry.level) {
56
+ if (useColor) {
57
+ const color = LEVEL_COLORS[entry.level] || '';
58
+ headerParts.push(`${color}${BOLD}${entry.level}${RESET}`);
59
+ }
60
+ else {
61
+ headerParts.push(entry.level);
62
+ }
63
+ }
64
+ // Timestamp
65
+ if (entry.timestamp) {
66
+ if (useColor) {
67
+ headerParts.push(`${DIM}[${entry.timestamp}]${RESET}`);
68
+ }
69
+ else {
70
+ headerParts.push(`[${entry.timestamp}]`);
71
+ }
72
+ }
73
+ // Short request ID
74
+ if (entry.shortRequestId) {
75
+ if (useColor) {
76
+ headerParts.push(`${DIM}[${entry.shortRequestId}]${RESET}`);
77
+ }
78
+ else {
79
+ headerParts.push(`[${entry.shortRequestId}]`);
80
+ }
81
+ }
82
+ const header = headerParts.join(' ');
83
+ let message = entry.message.trimEnd();
84
+ // Highlight search matches in message
85
+ if (useColor && searchHighlight) {
86
+ message = highlightMatches(message, searchHighlight);
87
+ }
88
+ return `${header}\n${message}\n`;
89
+ }
90
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/utils/mrt-logs/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './format.js';