@salesforce/b2c-tooling-sdk 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 (350) hide show
  1. package/README.md +180 -13
  2. package/data/scaffolds/cartridge/files/.project.ejs +17 -0
  3. package/data/scaffolds/cartridge/files/cartridge/cartridge.properties.ejs +4 -0
  4. package/data/scaffolds/cartridge/files/cartridge/controllers/Example.js.ejs +19 -0
  5. package/data/scaffolds/cartridge/files/cartridge/models/example.js.ejs +14 -0
  6. package/data/scaffolds/cartridge/files/cartridge/scripts/helpers/exampleHelpers.js.ejs +18 -0
  7. package/data/scaffolds/cartridge/files/cartridge/static/default/css/example.css +6 -0
  8. package/data/scaffolds/cartridge/files/cartridge/templates/default/example/show.isml.ejs +11 -0
  9. package/data/scaffolds/cartridge/scaffold.json +88 -0
  10. package/data/scaffolds/controller/files/controller.js.ejs +134 -0
  11. package/data/scaffolds/controller/files/template.isml.ejs +22 -0
  12. package/data/scaffolds/controller/scaffold.json +64 -0
  13. package/data/scaffolds/custom-api/files/api.json.ejs +11 -0
  14. package/data/scaffolds/custom-api/files/schema.yaml.ejs +188 -0
  15. package/data/scaffolds/custom-api/files/script.js.ejs +95 -0
  16. package/data/scaffolds/custom-api/scaffold.json +65 -0
  17. package/data/scaffolds/hook/files/hook.js.ejs +99 -0
  18. package/data/scaffolds/hook/files/hooks-entry.json.ejs +6 -0
  19. package/data/scaffolds/hook/scaffold.json +60 -0
  20. package/data/scaffolds/job-step/files/step-chunk.js.ejs +136 -0
  21. package/data/scaffolds/job-step/files/step-task.js.ejs +47 -0
  22. package/data/scaffolds/job-step/files/steptypes-entry.json.ejs +41 -0
  23. package/data/scaffolds/job-step/scaffold.json +64 -0
  24. package/data/scaffolds/page-designer-component/files/component.isml.ejs +23 -0
  25. package/data/scaffolds/page-designer-component/files/component.js.ejs +35 -0
  26. package/data/scaffolds/page-designer-component/files/component.json.ejs +50 -0
  27. package/data/scaffolds/page-designer-component/scaffold.json +66 -0
  28. package/data/scaffolds/service/files/service-http.js.ejs +245 -0
  29. package/data/scaffolds/service/files/service-sftp.js.ejs +371 -0
  30. package/data/scaffolds/service/files/service-soap.js.ejs +230 -0
  31. package/data/scaffolds/service/scaffold.json +83 -0
  32. package/data/script-api/dw.extensions.payments.SalesforcePaymentsMgr.md +48 -0
  33. package/data/script-api/dw.system.Request.md +5 -0
  34. package/data/script-api/dw.web.Cookie.md +108 -31
  35. package/data/script-api/index.json +2 -2
  36. package/data/script-api/index.md +1 -1
  37. package/dist/cjs/auth/oauth-implicit.d.ts +1 -0
  38. package/dist/cjs/auth/oauth-implicit.js +8 -3
  39. package/dist/cjs/auth/oauth-implicit.js.map +1 -1
  40. package/dist/cjs/auth/oauth.d.ts +1 -0
  41. package/dist/cjs/auth/oauth.js +8 -3
  42. package/dist/cjs/auth/oauth.js.map +1 -1
  43. package/dist/cjs/auth/types.d.ts +5 -0
  44. package/dist/cjs/auth/types.js.map +1 -1
  45. package/dist/cjs/cli/am-command.d.ts +74 -0
  46. package/dist/cjs/cli/am-command.js +189 -0
  47. package/dist/cjs/cli/am-command.js.map +1 -0
  48. package/dist/cjs/cli/base-command.d.ts +38 -0
  49. package/dist/cjs/cli/base-command.js +142 -0
  50. package/dist/cjs/cli/base-command.js.map +1 -1
  51. package/dist/cjs/cli/config.d.ts +9 -0
  52. package/dist/cjs/cli/config.js +19 -2
  53. package/dist/cjs/cli/config.js.map +1 -1
  54. package/dist/cjs/cli/index.d.ts +1 -0
  55. package/dist/cjs/cli/index.js +1 -0
  56. package/dist/cjs/cli/index.js.map +1 -1
  57. package/dist/cjs/cli/instance-command.d.ts +1 -0
  58. package/dist/cjs/cli/oauth-command.d.ts +21 -1
  59. package/dist/cjs/cli/oauth-command.js +52 -7
  60. package/dist/cjs/cli/oauth-command.js.map +1 -1
  61. package/dist/cjs/cli/ods-command.d.ts +5 -1
  62. package/dist/cjs/cli/ods-command.js +10 -4
  63. package/dist/cjs/cli/ods-command.js.map +1 -1
  64. package/dist/cjs/cli/webdav-command.d.ts +1 -0
  65. package/dist/cjs/clients/am-api.d.ts +491 -0
  66. package/dist/cjs/clients/am-api.js +944 -0
  67. package/dist/cjs/clients/am-api.js.map +1 -0
  68. package/dist/cjs/clients/am-apiclients-api.generated.d.ts +803 -0
  69. package/dist/cjs/clients/am-apiclients-api.generated.js +6 -0
  70. package/dist/cjs/clients/am-apiclients-api.generated.js.map +1 -0
  71. package/dist/cjs/clients/am-roles-api.generated.d.ts +298 -0
  72. package/dist/cjs/clients/am-roles-api.generated.js +6 -0
  73. package/dist/cjs/clients/am-roles-api.generated.js.map +1 -0
  74. package/dist/cjs/clients/am-users-api.generated.d.ts +891 -0
  75. package/dist/cjs/clients/am-users-api.generated.js +6 -0
  76. package/dist/cjs/clients/am-users-api.generated.js.map +1 -0
  77. package/dist/cjs/clients/index.d.ts +4 -2
  78. package/dist/cjs/clients/index.js +2 -1
  79. package/dist/cjs/clients/index.js.map +1 -1
  80. package/dist/cjs/clients/middleware-registry.d.ts +1 -1
  81. package/dist/cjs/clients/middleware-registry.js.map +1 -1
  82. package/dist/cjs/clients/middleware.d.ts +49 -2
  83. package/dist/cjs/clients/middleware.js +214 -2
  84. package/dist/cjs/clients/middleware.js.map +1 -1
  85. package/dist/cjs/clients/mrt.js +5 -1
  86. package/dist/cjs/clients/mrt.js.map +1 -1
  87. package/dist/cjs/config/dw-json.d.ts +104 -33
  88. package/dist/cjs/config/dw-json.js +167 -2
  89. package/dist/cjs/config/dw-json.js.map +1 -1
  90. package/dist/cjs/config/index.d.ts +6 -4
  91. package/dist/cjs/config/index.js +6 -2
  92. package/dist/cjs/config/index.js.map +1 -1
  93. package/dist/cjs/config/instance-manager.d.ts +97 -0
  94. package/dist/cjs/config/instance-manager.js +166 -0
  95. package/dist/cjs/config/instance-manager.js.map +1 -0
  96. package/dist/cjs/config/mapping.d.ts +63 -5
  97. package/dist/cjs/config/mapping.js +165 -20
  98. package/dist/cjs/config/mapping.js.map +1 -1
  99. package/dist/cjs/config/sources/dw-json-source.d.ts +17 -1
  100. package/dist/cjs/config/sources/dw-json-source.js +70 -3
  101. package/dist/cjs/config/sources/dw-json-source.js.map +1 -1
  102. package/dist/cjs/config/sources/package-json-source.js +6 -3
  103. package/dist/cjs/config/sources/package-json-source.js.map +1 -1
  104. package/dist/cjs/config/types.d.ts +72 -0
  105. package/dist/cjs/defaults.d.ts +6 -0
  106. package/dist/cjs/defaults.js +6 -0
  107. package/dist/cjs/defaults.js.map +1 -1
  108. package/dist/cjs/i18n/index.js +3 -0
  109. package/dist/cjs/i18n/index.js.map +1 -1
  110. package/dist/cjs/index.d.ts +8 -4
  111. package/dist/cjs/index.js +9 -3
  112. package/dist/cjs/index.js.map +1 -1
  113. package/dist/cjs/logging/logger.js +13 -1
  114. package/dist/cjs/logging/logger.js.map +1 -1
  115. package/dist/cjs/operations/content/asset-query.d.ts +22 -0
  116. package/dist/cjs/operations/content/asset-query.js +77 -0
  117. package/dist/cjs/operations/content/asset-query.js.map +1 -0
  118. package/dist/cjs/operations/content/export.d.ts +57 -0
  119. package/dist/cjs/operations/content/export.js +224 -0
  120. package/dist/cjs/operations/content/export.js.map +1 -0
  121. package/dist/cjs/operations/content/index.d.ts +43 -0
  122. package/dist/cjs/operations/content/index.js +48 -0
  123. package/dist/cjs/operations/content/index.js.map +1 -0
  124. package/dist/cjs/operations/content/library.d.ts +137 -0
  125. package/dist/cjs/operations/content/library.js +392 -0
  126. package/dist/cjs/operations/content/library.js.map +1 -0
  127. package/dist/cjs/operations/content/types.d.ts +144 -0
  128. package/dist/cjs/operations/content/types.js +7 -0
  129. package/dist/cjs/operations/content/types.js.map +1 -0
  130. package/dist/cjs/operations/mrt/b2c-config.js +19 -4
  131. package/dist/cjs/operations/mrt/b2c-config.js.map +1 -1
  132. package/dist/cjs/operations/mrt/index.d.ts +2 -0
  133. package/dist/cjs/operations/mrt/index.js +2 -0
  134. package/dist/cjs/operations/mrt/index.js.map +1 -1
  135. package/dist/cjs/operations/mrt/tail-logs.d.ts +130 -0
  136. package/dist/cjs/operations/mrt/tail-logs.js +223 -0
  137. package/dist/cjs/operations/mrt/tail-logs.js.map +1 -0
  138. package/dist/cjs/operations/ods/index.d.ts +2 -0
  139. package/dist/cjs/operations/ods/index.js +1 -0
  140. package/dist/cjs/operations/ods/index.js.map +1 -1
  141. package/dist/cjs/operations/ods/wait-for-sandbox.d.ts +64 -0
  142. package/dist/cjs/operations/ods/wait-for-sandbox.js +114 -0
  143. package/dist/cjs/operations/ods/wait-for-sandbox.js.map +1 -0
  144. package/dist/cjs/operations/orgs/index.d.ts +74 -0
  145. package/dist/cjs/operations/orgs/index.js +33 -0
  146. package/dist/cjs/operations/orgs/index.js.map +1 -0
  147. package/dist/cjs/operations/roles/index.d.ts +43 -0
  148. package/dist/cjs/operations/roles/index.js +48 -0
  149. package/dist/cjs/operations/roles/index.js.map +1 -0
  150. package/dist/cjs/operations/users/index.d.ts +143 -0
  151. package/dist/cjs/operations/users/index.js +141 -0
  152. package/dist/cjs/operations/users/index.js.map +1 -0
  153. package/dist/cjs/scaffold/engine.d.ts +68 -0
  154. package/dist/cjs/scaffold/engine.js +149 -0
  155. package/dist/cjs/scaffold/engine.js.map +1 -0
  156. package/dist/cjs/scaffold/executor.d.ts +36 -0
  157. package/dist/cjs/scaffold/executor.js +285 -0
  158. package/dist/cjs/scaffold/executor.js.map +1 -0
  159. package/dist/cjs/scaffold/index.d.ts +74 -0
  160. package/dist/cjs/scaffold/index.js +23 -0
  161. package/dist/cjs/scaffold/index.js.map +1 -0
  162. package/dist/cjs/scaffold/merge.d.ts +56 -0
  163. package/dist/cjs/scaffold/merge.js +183 -0
  164. package/dist/cjs/scaffold/merge.js.map +1 -0
  165. package/dist/cjs/scaffold/parameter-resolver.d.ts +86 -0
  166. package/dist/cjs/scaffold/parameter-resolver.js +179 -0
  167. package/dist/cjs/scaffold/parameter-resolver.js.map +1 -0
  168. package/dist/cjs/scaffold/registry.d.ts +45 -0
  169. package/dist/cjs/scaffold/registry.js +219 -0
  170. package/dist/cjs/scaffold/registry.js.map +1 -0
  171. package/dist/cjs/scaffold/sources.d.ts +45 -0
  172. package/dist/cjs/scaffold/sources.js +113 -0
  173. package/dist/cjs/scaffold/sources.js.map +1 -0
  174. package/dist/cjs/scaffold/types.d.ts +280 -0
  175. package/dist/cjs/scaffold/types.js +14 -0
  176. package/dist/cjs/scaffold/types.js.map +1 -0
  177. package/dist/cjs/scaffold/validation.d.ts +81 -0
  178. package/dist/cjs/scaffold/validation.js +250 -0
  179. package/dist/cjs/scaffold/validation.js.map +1 -0
  180. package/dist/cjs/scaffold/validators.d.ts +33 -0
  181. package/dist/cjs/scaffold/validators.js +334 -0
  182. package/dist/cjs/scaffold/validators.js.map +1 -0
  183. package/dist/cjs/telemetry/index.d.ts +26 -0
  184. package/dist/cjs/telemetry/index.js +32 -0
  185. package/dist/cjs/telemetry/index.js.map +1 -0
  186. package/dist/cjs/telemetry/telemetry.d.ts +90 -0
  187. package/dist/cjs/telemetry/telemetry.js +283 -0
  188. package/dist/cjs/telemetry/telemetry.js.map +1 -0
  189. package/dist/cjs/telemetry/types.d.ts +62 -0
  190. package/dist/cjs/telemetry/types.js +7 -0
  191. package/dist/cjs/telemetry/types.js.map +1 -0
  192. package/dist/esm/auth/oauth-implicit.d.ts +1 -0
  193. package/dist/esm/auth/oauth-implicit.js +8 -3
  194. package/dist/esm/auth/oauth-implicit.js.map +1 -1
  195. package/dist/esm/auth/oauth.d.ts +1 -0
  196. package/dist/esm/auth/oauth.js +8 -3
  197. package/dist/esm/auth/oauth.js.map +1 -1
  198. package/dist/esm/auth/types.d.ts +5 -0
  199. package/dist/esm/auth/types.js.map +1 -1
  200. package/dist/esm/cli/am-command.d.ts +74 -0
  201. package/dist/esm/cli/am-command.js +196 -0
  202. package/dist/esm/cli/am-command.js.map +1 -0
  203. package/dist/esm/cli/base-command.d.ts +38 -0
  204. package/dist/esm/cli/base-command.js +142 -0
  205. package/dist/esm/cli/base-command.js.map +1 -1
  206. package/dist/esm/cli/config.d.ts +9 -0
  207. package/dist/esm/cli/config.js +19 -2
  208. package/dist/esm/cli/config.js.map +1 -1
  209. package/dist/esm/cli/index.d.ts +1 -0
  210. package/dist/esm/cli/index.js +1 -0
  211. package/dist/esm/cli/index.js.map +1 -1
  212. package/dist/esm/cli/instance-command.d.ts +1 -0
  213. package/dist/esm/cli/oauth-command.d.ts +21 -1
  214. package/dist/esm/cli/oauth-command.js +52 -7
  215. package/dist/esm/cli/oauth-command.js.map +1 -1
  216. package/dist/esm/cli/ods-command.d.ts +5 -1
  217. package/dist/esm/cli/ods-command.js +10 -4
  218. package/dist/esm/cli/ods-command.js.map +1 -1
  219. package/dist/esm/cli/webdav-command.d.ts +1 -0
  220. package/dist/esm/clients/am-api.d.ts +491 -0
  221. package/dist/esm/clients/am-api.js +944 -0
  222. package/dist/esm/clients/am-api.js.map +1 -0
  223. package/dist/esm/clients/am-apiclients-api.generated.d.ts +803 -0
  224. package/dist/esm/clients/am-apiclients-api.generated.js +6 -0
  225. package/dist/esm/clients/am-apiclients-api.generated.js.map +1 -0
  226. package/dist/esm/clients/am-roles-api.generated.d.ts +298 -0
  227. package/dist/esm/clients/am-roles-api.generated.js +6 -0
  228. package/dist/esm/clients/am-roles-api.generated.js.map +1 -0
  229. package/dist/esm/clients/am-users-api.generated.d.ts +891 -0
  230. package/dist/esm/clients/am-users-api.generated.js +6 -0
  231. package/dist/esm/clients/am-users-api.generated.js.map +1 -0
  232. package/dist/esm/clients/index.d.ts +4 -2
  233. package/dist/esm/clients/index.js +2 -1
  234. package/dist/esm/clients/index.js.map +1 -1
  235. package/dist/esm/clients/middleware-registry.d.ts +1 -1
  236. package/dist/esm/clients/middleware-registry.js.map +1 -1
  237. package/dist/esm/clients/middleware.d.ts +49 -2
  238. package/dist/esm/clients/middleware.js +214 -2
  239. package/dist/esm/clients/middleware.js.map +1 -1
  240. package/dist/esm/clients/mrt.js +5 -1
  241. package/dist/esm/clients/mrt.js.map +1 -1
  242. package/dist/esm/config/dw-json.d.ts +104 -33
  243. package/dist/esm/config/dw-json.js +167 -2
  244. package/dist/esm/config/dw-json.js.map +1 -1
  245. package/dist/esm/config/index.d.ts +6 -4
  246. package/dist/esm/config/index.js +6 -2
  247. package/dist/esm/config/index.js.map +1 -1
  248. package/dist/esm/config/instance-manager.d.ts +97 -0
  249. package/dist/esm/config/instance-manager.js +166 -0
  250. package/dist/esm/config/instance-manager.js.map +1 -0
  251. package/dist/esm/config/mapping.d.ts +63 -5
  252. package/dist/esm/config/mapping.js +165 -20
  253. package/dist/esm/config/mapping.js.map +1 -1
  254. package/dist/esm/config/sources/dw-json-source.d.ts +17 -1
  255. package/dist/esm/config/sources/dw-json-source.js +70 -3
  256. package/dist/esm/config/sources/dw-json-source.js.map +1 -1
  257. package/dist/esm/config/sources/package-json-source.js +6 -3
  258. package/dist/esm/config/sources/package-json-source.js.map +1 -1
  259. package/dist/esm/config/types.d.ts +72 -0
  260. package/dist/esm/defaults.d.ts +6 -0
  261. package/dist/esm/defaults.js +6 -0
  262. package/dist/esm/defaults.js.map +1 -1
  263. package/dist/esm/i18n/index.js +3 -0
  264. package/dist/esm/i18n/index.js.map +1 -1
  265. package/dist/esm/index.d.ts +8 -4
  266. package/dist/esm/index.js +9 -3
  267. package/dist/esm/index.js.map +1 -1
  268. package/dist/esm/logging/logger.js +13 -1
  269. package/dist/esm/logging/logger.js.map +1 -1
  270. package/dist/esm/operations/content/asset-query.d.ts +22 -0
  271. package/dist/esm/operations/content/asset-query.js +77 -0
  272. package/dist/esm/operations/content/asset-query.js.map +1 -0
  273. package/dist/esm/operations/content/export.d.ts +57 -0
  274. package/dist/esm/operations/content/export.js +224 -0
  275. package/dist/esm/operations/content/export.js.map +1 -0
  276. package/dist/esm/operations/content/index.d.ts +43 -0
  277. package/dist/esm/operations/content/index.js +48 -0
  278. package/dist/esm/operations/content/index.js.map +1 -0
  279. package/dist/esm/operations/content/library.d.ts +137 -0
  280. package/dist/esm/operations/content/library.js +392 -0
  281. package/dist/esm/operations/content/library.js.map +1 -0
  282. package/dist/esm/operations/content/types.d.ts +144 -0
  283. package/dist/esm/operations/content/types.js +7 -0
  284. package/dist/esm/operations/content/types.js.map +1 -0
  285. package/dist/esm/operations/mrt/b2c-config.js +19 -4
  286. package/dist/esm/operations/mrt/b2c-config.js.map +1 -1
  287. package/dist/esm/operations/mrt/index.d.ts +2 -0
  288. package/dist/esm/operations/mrt/index.js +2 -0
  289. package/dist/esm/operations/mrt/index.js.map +1 -1
  290. package/dist/esm/operations/mrt/tail-logs.d.ts +130 -0
  291. package/dist/esm/operations/mrt/tail-logs.js +223 -0
  292. package/dist/esm/operations/mrt/tail-logs.js.map +1 -0
  293. package/dist/esm/operations/ods/index.d.ts +2 -0
  294. package/dist/esm/operations/ods/index.js +1 -0
  295. package/dist/esm/operations/ods/index.js.map +1 -1
  296. package/dist/esm/operations/ods/wait-for-sandbox.d.ts +64 -0
  297. package/dist/esm/operations/ods/wait-for-sandbox.js +114 -0
  298. package/dist/esm/operations/ods/wait-for-sandbox.js.map +1 -0
  299. package/dist/esm/operations/orgs/index.d.ts +74 -0
  300. package/dist/esm/operations/orgs/index.js +33 -0
  301. package/dist/esm/operations/orgs/index.js.map +1 -0
  302. package/dist/esm/operations/roles/index.d.ts +43 -0
  303. package/dist/esm/operations/roles/index.js +48 -0
  304. package/dist/esm/operations/roles/index.js.map +1 -0
  305. package/dist/esm/operations/users/index.d.ts +143 -0
  306. package/dist/esm/operations/users/index.js +141 -0
  307. package/dist/esm/operations/users/index.js.map +1 -0
  308. package/dist/esm/scaffold/engine.d.ts +68 -0
  309. package/dist/esm/scaffold/engine.js +149 -0
  310. package/dist/esm/scaffold/engine.js.map +1 -0
  311. package/dist/esm/scaffold/executor.d.ts +36 -0
  312. package/dist/esm/scaffold/executor.js +285 -0
  313. package/dist/esm/scaffold/executor.js.map +1 -0
  314. package/dist/esm/scaffold/index.d.ts +74 -0
  315. package/dist/esm/scaffold/index.js +23 -0
  316. package/dist/esm/scaffold/index.js.map +1 -0
  317. package/dist/esm/scaffold/merge.d.ts +56 -0
  318. package/dist/esm/scaffold/merge.js +183 -0
  319. package/dist/esm/scaffold/merge.js.map +1 -0
  320. package/dist/esm/scaffold/parameter-resolver.d.ts +86 -0
  321. package/dist/esm/scaffold/parameter-resolver.js +179 -0
  322. package/dist/esm/scaffold/parameter-resolver.js.map +1 -0
  323. package/dist/esm/scaffold/registry.d.ts +45 -0
  324. package/dist/esm/scaffold/registry.js +219 -0
  325. package/dist/esm/scaffold/registry.js.map +1 -0
  326. package/dist/esm/scaffold/sources.d.ts +45 -0
  327. package/dist/esm/scaffold/sources.js +113 -0
  328. package/dist/esm/scaffold/sources.js.map +1 -0
  329. package/dist/esm/scaffold/types.d.ts +280 -0
  330. package/dist/esm/scaffold/types.js +14 -0
  331. package/dist/esm/scaffold/types.js.map +1 -0
  332. package/dist/esm/scaffold/validation.d.ts +81 -0
  333. package/dist/esm/scaffold/validation.js +250 -0
  334. package/dist/esm/scaffold/validation.js.map +1 -0
  335. package/dist/esm/scaffold/validators.d.ts +33 -0
  336. package/dist/esm/scaffold/validators.js +334 -0
  337. package/dist/esm/scaffold/validators.js.map +1 -0
  338. package/dist/esm/telemetry/index.d.ts +26 -0
  339. package/dist/esm/telemetry/index.js +32 -0
  340. package/dist/esm/telemetry/index.js.map +1 -0
  341. package/dist/esm/telemetry/telemetry.d.ts +90 -0
  342. package/dist/esm/telemetry/telemetry.js +283 -0
  343. package/dist/esm/telemetry/telemetry.js.map +1 -0
  344. package/dist/esm/telemetry/types.d.ts +62 -0
  345. package/dist/esm/telemetry/types.js +7 -0
  346. package/dist/esm/telemetry/types.js.map +1 -0
  347. package/package.json +86 -17
  348. package/specs/am-apiclients-api-v1.yaml +965 -0
  349. package/specs/am-roles-api-v1.yaml +316 -0
  350. package/specs/am-users-api-v1.yaml +1102 -0
@@ -0,0 +1,283 @@
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 { randomBytes } from 'node:crypto';
7
+ import fs from 'node:fs';
8
+ import path from 'node:path';
9
+ import { TelemetryReporter } from '@salesforce/telemetry';
10
+ import { getLogger } from '../logging/index.js';
11
+ const generateRandomId = () => randomBytes(20).toString('hex');
12
+ /**
13
+ * Sanitize attributes to only include string, number, boolean (App Insights–safe).
14
+ * Aligns with sf CLI telemetry record() validation.
15
+ */
16
+ function sanitizeAttributes(attributes) {
17
+ const out = {};
18
+ for (const [key, value] of Object.entries(attributes)) {
19
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
20
+ out[key] = value;
21
+ }
22
+ }
23
+ return out;
24
+ }
25
+ /**
26
+ * Get the path to the persistent CLI ID file.
27
+ * @param dataDir - oclif dataDir for persistent storage
28
+ */
29
+ const getCliIdPath = (dataDir) => {
30
+ if (!dataDir)
31
+ return null;
32
+ return path.join(dataDir, 'cliid');
33
+ };
34
+ /**
35
+ * Read or create a persistent CLI ID.
36
+ * @param dataDir - oclif dataDir for persistent storage
37
+ */
38
+ const readOrCreateCliId = (dataDir) => {
39
+ const filePath = getCliIdPath(dataDir);
40
+ if (!filePath)
41
+ return generateRandomId();
42
+ // Try to read existing ID
43
+ try {
44
+ if (fs.existsSync(filePath)) {
45
+ const value = fs.readFileSync(filePath, 'utf8');
46
+ const trimmed = value?.trim();
47
+ if (trimmed)
48
+ return trimmed;
49
+ }
50
+ }
51
+ catch {
52
+ // Fall through to create new
53
+ }
54
+ // Create new ID
55
+ const newId = generateRandomId();
56
+ try {
57
+ const dir = path.dirname(filePath);
58
+ if (!fs.existsSync(dir)) {
59
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
60
+ }
61
+ fs.writeFileSync(filePath, newId, { encoding: 'utf8', mode: 0o600 });
62
+ }
63
+ catch {
64
+ // If we can't persist, still return the generated id
65
+ }
66
+ return newId;
67
+ };
68
+ /**
69
+ * Custom TelemetryReporter that always enables telemetry.
70
+ * Gating is handled at the instantiation site.
71
+ */
72
+ class ConfigurableTelemetryReporter extends TelemetryReporter {
73
+ isSfdxTelemetryEnabled() {
74
+ return true;
75
+ }
76
+ }
77
+ /**
78
+ * Telemetry client for sending events to Application Insights.
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const telemetry = new Telemetry({
83
+ * project: 'my-app',
84
+ * appInsightsKey: 'InstrumentationKey=...',
85
+ * version: '1.0.0',
86
+ * dataDir: '/path/to/data',
87
+ * });
88
+ *
89
+ * await telemetry.start();
90
+ * telemetry.sendEvent('USER_ACTION', { action: 'click' });
91
+ * telemetry.stop();
92
+ * ```
93
+ */
94
+ export class Telemetry {
95
+ attributes;
96
+ cliId;
97
+ project;
98
+ reporter;
99
+ sessionId;
100
+ started;
101
+ version;
102
+ appInsightsKey;
103
+ traceLog;
104
+ /**
105
+ * Check if telemetry is disabled via environment variables.
106
+ * Supports both SF_DISABLE_TELEMETRY (sf CLI standard) and SFCC_DISABLE_TELEMETRY.
107
+ */
108
+ static isDisabled() {
109
+ return process.env.SF_DISABLE_TELEMETRY === 'true' || process.env.SFCC_DISABLE_TELEMETRY === 'true';
110
+ }
111
+ /**
112
+ * Get the connection string for telemetry, respecting disable flags and env overrides.
113
+ * @param projectDefault - Default connection string from project config (e.g., package.json)
114
+ * @returns Connection string to use, or undefined if telemetry should be disabled
115
+ */
116
+ static getConnectionString(projectDefault) {
117
+ if (Telemetry.isDisabled())
118
+ return undefined;
119
+ return process.env.SFCC_APP_INSIGHTS_KEY ?? projectDefault;
120
+ }
121
+ constructor(options) {
122
+ this.project = options.project;
123
+ this.appInsightsKey = options.appInsightsKey;
124
+ this.attributes = { ...(options.initialAttributes ?? {}) };
125
+ this.cliId = readOrCreateCliId(options.dataDir);
126
+ this.reporter = undefined;
127
+ this.sessionId = generateRandomId();
128
+ this.started = false;
129
+ this.version = options.version ?? '0.0.0';
130
+ if (process.env.SFCC_TELEMETRY_LOG === 'true') {
131
+ this.traceLog = getLogger().child({ component: 'telemetry' });
132
+ }
133
+ }
134
+ /**
135
+ * Add additional attributes to include with all future events.
136
+ */
137
+ addAttributes(attributes) {
138
+ this.traceLog?.debug({ attributes }, 'telemetry addAttributes');
139
+ this.attributes = { ...this.attributes, ...attributes };
140
+ }
141
+ /**
142
+ * Send a telemetry event. Events are buffered until you call {@link flush} or
143
+ * {@link stop}. Use this for batching; use {@link sendEventAndFlush} when you
144
+ * need one event sent before continuing.
145
+ *
146
+ * @param eventName - Name of the event (e.g., 'SERVER_STATUS', 'TOOL_CALLED')
147
+ * @param attributes - Event-specific attributes (only string/number/boolean are sent)
148
+ */
149
+ sendEvent(eventName, attributes = {}) {
150
+ try {
151
+ const name = eventName?.trim() || 'UNKNOWN';
152
+ this.traceLog?.debug({ event: name, attributes }, 'telemetry sendEvent');
153
+ const eventProperties = this.buildEventProperties(attributes);
154
+ this.reporter?.sendTelemetryEvent(name, eventProperties);
155
+ }
156
+ catch {
157
+ // ignore send errors
158
+ }
159
+ }
160
+ /**
161
+ * Send a telemetry event and flush immediately. Use this when you need the event
162
+ * delivered before continuing (e.g. after a tool call or server lifecycle event),
163
+ * so you don't have to remember to call {@link flush}. For batching multiple
164
+ * events and flushing once, use {@link sendEvent} and then {@link flush}.
165
+ *
166
+ * @param eventName - Name of the event (e.g., 'SERVER_STATUS', 'TOOL_CALLED')
167
+ * @param attributes - Event-specific attributes (only string/number/boolean are sent)
168
+ */
169
+ async sendEventAndFlush(eventName, attributes = {}) {
170
+ this.sendEvent(eventName, attributes);
171
+ await this.flush();
172
+ }
173
+ /**
174
+ * Send an exception to telemetry.
175
+ *
176
+ * @param error - The error to report
177
+ * @param attributes - Additional attributes to include with the exception
178
+ */
179
+ sendException(error, attributes = {}) {
180
+ try {
181
+ this.traceLog?.debug({ error: error.name, message: error.message }, 'telemetry sendException');
182
+ const properties = this.buildEventProperties(sanitizeAttributes(attributes));
183
+ this.reporter?.sendTelemetryException(error, properties);
184
+ }
185
+ catch {
186
+ // ignore send errors
187
+ }
188
+ }
189
+ /**
190
+ * Start the telemetry reporter.
191
+ * Must be called before sending events.
192
+ */
193
+ async start() {
194
+ if (this.started)
195
+ return;
196
+ this.started = true;
197
+ // If no key provided, telemetry is disabled
198
+ if (!this.appInsightsKey)
199
+ return;
200
+ this.traceLog?.debug({ project: this.project, sessionId: this.sessionId, cliId: this.cliId.slice(0, 8) + '...' }, 'telemetry start');
201
+ try {
202
+ await this.createReporter();
203
+ }
204
+ catch {
205
+ // Best-effort retry after ~1s: first runs can hit transient failures
206
+ // establishing the Application Insights connection (DNS/proxy/VPN warm-up,
207
+ // brief network blips, or backend cold start). One short delay usually fixes it.
208
+ // If the retry still fails, ignore it to avoid impacting the application.
209
+ try {
210
+ await this.createReporter();
211
+ }
212
+ catch {
213
+ // ignore
214
+ }
215
+ }
216
+ }
217
+ /**
218
+ * Flush pending telemetry events without stopping the reporter.
219
+ * Use this for long-running processes that need to ensure events are sent periodically.
220
+ * Uses the native reporter.flush() as documented in https://github.com/forcedotcom/telemetry,
221
+ * and also flushes the App Insights client when present (SDK flush() only flushes O11y).
222
+ */
223
+ async flush() {
224
+ if (!this.started || !this.reporter)
225
+ return;
226
+ await this.reporter.flush();
227
+ // SDK flush() only flushes O11y; we use App Insights. Flush the underlying client.
228
+ try {
229
+ const client = this.reporter.getTelemetryClient();
230
+ if (client?.flush) {
231
+ await new Promise((resolve) => {
232
+ client.flush({ callback: () => resolve() });
233
+ });
234
+ }
235
+ }
236
+ catch {
237
+ // getTelemetryClient() throws if App Insights not initialized
238
+ }
239
+ }
240
+ /**
241
+ * Stop the telemetry reporter and flush any pending events.
242
+ * Includes a delay to allow async HTTP requests to complete.
243
+ */
244
+ async stop() {
245
+ if (!this.started)
246
+ return;
247
+ this.traceLog?.debug('telemetry stop');
248
+ this.started = false;
249
+ this.reporter?.stop();
250
+ // Allow pending HTTP requests to flush before process exits.
251
+ // Application Insights SDK sends events asynchronously, so we need
252
+ // a delay to ensure events reach the server on fast exits.
253
+ // 300ms gives enough time for the HTTP request to complete even on
254
+ // cold starts when establishing the initial connection.
255
+ await new Promise((resolve) => setTimeout(resolve, 300));
256
+ }
257
+ buildEventProperties(attributes = {}) {
258
+ const sanitized = sanitizeAttributes({ ...this.attributes, ...attributes });
259
+ return {
260
+ ...sanitized,
261
+ sessionId: this.sessionId,
262
+ cliId: this.cliId,
263
+ version: this.version,
264
+ platform: process.platform,
265
+ arch: process.arch,
266
+ nodeVersion: process.version,
267
+ nodeEnv: process.env.NODE_ENV,
268
+ origin: this.project,
269
+ date: new Date().toUTCString(),
270
+ timestamp: String(Date.now()),
271
+ processUptime: process.uptime() * 1000,
272
+ };
273
+ }
274
+ async createReporter() {
275
+ this.reporter = await ConfigurableTelemetryReporter.create({
276
+ project: this.project,
277
+ key: this.appInsightsKey ?? '',
278
+ userId: this.cliId,
279
+ });
280
+ this.reporter.start();
281
+ }
282
+ }
283
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Telemetry event attributes - key-value pairs sent with each event.
3
+ */
4
+ export interface TelemetryAttributes {
5
+ [key: string]: boolean | number | string | undefined;
6
+ }
7
+ /**
8
+ * Core properties automatically included with every telemetry event.
9
+ */
10
+ export interface TelemetryEventProperties extends TelemetryAttributes {
11
+ /** Unique session identifier (generated per Telemetry instance) */
12
+ sessionId: string;
13
+ /** Persistent CLI identifier (stored in {dataDir}/cliid) */
14
+ cliId: string;
15
+ /** Package version */
16
+ version: string;
17
+ /** Operating system platform (e.g., 'darwin', 'linux', 'win32') */
18
+ platform: string;
19
+ /** CPU architecture (e.g., 'x64', 'arm64') */
20
+ arch: string;
21
+ /** Node.js version */
22
+ nodeVersion: string;
23
+ /** NODE_ENV environment variable value */
24
+ nodeEnv: string | undefined;
25
+ /** Project name / origin of the event */
26
+ origin: string;
27
+ /** Human-readable UTC date string */
28
+ date: string;
29
+ /** Unix timestamp in milliseconds */
30
+ timestamp: string;
31
+ /** Process uptime in milliseconds */
32
+ processUptime: number;
33
+ }
34
+ /**
35
+ * Options for creating a Telemetry instance.
36
+ */
37
+ export interface TelemetryOptions {
38
+ /**
39
+ * Project identifier used for telemetry reporting.
40
+ * This is used as the project name in Application Insights.
41
+ */
42
+ project: string;
43
+ /**
44
+ * Application Insights connection string or instrumentation key.
45
+ * If not provided, telemetry will be disabled.
46
+ */
47
+ appInsightsKey?: string;
48
+ /**
49
+ * Initial attributes to include with every telemetry event.
50
+ */
51
+ initialAttributes?: TelemetryAttributes;
52
+ /**
53
+ * Package version to include in telemetry events.
54
+ */
55
+ version?: string;
56
+ /**
57
+ * oclif dataDir for persistent CLI ID storage.
58
+ * If provided, CLI ID is stored in {dataDir}/cliid.
59
+ * If not provided or non-writable, falls back to random ID.
60
+ */
61
+ dataDir?: string;
62
+ }
@@ -0,0 +1,7 @@
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
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/telemetry/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/b2c-tooling-sdk",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Core tooling library for Salesforce Commerce Cloud B2C CLI",
5
5
  "author": "Charles Lavery",
6
6
  "license": "Apache-2.0",
@@ -123,6 +123,50 @@
123
123
  "default": "./dist/cjs/operations/logs/index.js"
124
124
  }
125
125
  },
126
+ "./operations/users": {
127
+ "development": "./src/operations/users/index.ts",
128
+ "import": {
129
+ "types": "./dist/esm/operations/users/index.d.ts",
130
+ "default": "./dist/esm/operations/users/index.js"
131
+ },
132
+ "require": {
133
+ "types": "./dist/cjs/operations/users/index.d.ts",
134
+ "default": "./dist/cjs/operations/users/index.js"
135
+ }
136
+ },
137
+ "./operations/roles": {
138
+ "development": "./src/operations/roles/index.ts",
139
+ "import": {
140
+ "types": "./dist/esm/operations/roles/index.d.ts",
141
+ "default": "./dist/esm/operations/roles/index.js"
142
+ },
143
+ "require": {
144
+ "types": "./dist/cjs/operations/roles/index.d.ts",
145
+ "default": "./dist/cjs/operations/roles/index.js"
146
+ }
147
+ },
148
+ "./operations/orgs": {
149
+ "development": "./src/operations/orgs/index.ts",
150
+ "import": {
151
+ "types": "./dist/esm/operations/orgs/index.d.ts",
152
+ "default": "./dist/esm/operations/orgs/index.js"
153
+ },
154
+ "require": {
155
+ "types": "./dist/cjs/operations/orgs/index.d.ts",
156
+ "default": "./dist/cjs/operations/orgs/index.js"
157
+ }
158
+ },
159
+ "./operations/content": {
160
+ "development": "./src/operations/content/index.ts",
161
+ "import": {
162
+ "types": "./dist/esm/operations/content/index.d.ts",
163
+ "default": "./dist/esm/operations/content/index.js"
164
+ },
165
+ "require": {
166
+ "types": "./dist/cjs/operations/content/index.d.ts",
167
+ "default": "./dist/cjs/operations/content/index.js"
168
+ }
169
+ },
126
170
  "./cli": {
127
171
  "development": "./src/cli/index.ts",
128
172
  "import": {
@@ -200,6 +244,17 @@
200
244
  "default": "./dist/cjs/skills/index.js"
201
245
  }
202
246
  },
247
+ "./scaffold": {
248
+ "development": "./src/scaffold/index.ts",
249
+ "import": {
250
+ "types": "./dist/esm/scaffold/index.d.ts",
251
+ "default": "./dist/esm/scaffold/index.js"
252
+ },
253
+ "require": {
254
+ "types": "./dist/cjs/scaffold/index.d.ts",
255
+ "default": "./dist/cjs/scaffold/index.js"
256
+ }
257
+ },
203
258
  "./test-utils": {
204
259
  "development": "./src/test-utils/index.ts",
205
260
  "import": {
@@ -210,6 +265,17 @@
210
265
  "types": "./dist/cjs/test-utils/index.d.ts",
211
266
  "default": "./dist/cjs/test-utils/index.js"
212
267
  }
268
+ },
269
+ "./telemetry": {
270
+ "development": "./src/telemetry/index.ts",
271
+ "import": {
272
+ "types": "./dist/esm/telemetry/index.d.ts",
273
+ "default": "./dist/esm/telemetry/index.js"
274
+ },
275
+ "require": {
276
+ "types": "./dist/cjs/telemetry/index.d.ts",
277
+ "default": "./dist/cjs/telemetry/index.js"
278
+ }
213
279
  }
214
280
  },
215
281
  "main": "./dist/cjs/index.js",
@@ -229,8 +295,9 @@
229
295
  "@tony.ganchev/eslint-plugin-header": "^3.1.11",
230
296
  "@types/archiver": "^7.0.0",
231
297
  "@types/chai": "^4.3.20",
298
+ "@types/ejs": "^3.1.5",
232
299
  "@types/mocha": "^10.0.10",
233
- "@types/node": "^18.19.130",
300
+ "@types/node": "^22",
234
301
  "@types/sinon": "^21.0.0",
235
302
  "@types/xml2js": "^0.4.14",
236
303
  "c8": "^10.1.3",
@@ -260,23 +327,25 @@
260
327
  "node": ">=22.16.0"
261
328
  },
262
329
  "dependencies": {
263
- "archiver": "^7.0.1",
264
- "chokidar": "^5.0.0",
265
- "cliui": "^9.0.1",
266
- "fuse.js": "^7.0.0",
267
- "glob": "^13.0.0",
268
- "i18next": "^25.6.3",
269
- "jszip": "^3.10.1",
270
- "minimatch": "^10.1.1",
271
- "open": "^11.0.0",
272
- "openapi-fetch": "^0.15.0",
273
- "pino": "^10.1.0",
274
- "pino-pretty": "^13.1.2",
275
- "undici": "^7.0.0",
276
- "xml2js": "^0.6.2"
330
+ "@salesforce/telemetry": "6.4.6",
331
+ "archiver": "7.0.1",
332
+ "chokidar": "5.0.0",
333
+ "cliui": "9.0.1",
334
+ "ejs": "3.1.10",
335
+ "fuse.js": "7.1.0",
336
+ "glob": "13.0.0",
337
+ "i18next": "25.7.4",
338
+ "jszip": "3.10.1",
339
+ "minimatch": "10.1.1",
340
+ "open": "11.0.0",
341
+ "openapi-fetch": "0.15.0",
342
+ "pino": "10.1.0",
343
+ "pino-pretty": "13.1.2",
344
+ "undici": "7.19.2",
345
+ "xml2js": "0.6.2"
277
346
  },
278
347
  "scripts": {
279
- "generate:types": "openapi-typescript specs/data-api.json -o src/clients/ocapi.generated.ts && openapi-typescript specs/slas-admin-v1.yaml -o src/clients/slas-admin.generated.ts && openapi-typescript specs/ods-api-v1.json -o src/clients/ods.generated.ts && openapi-typescript specs/mrt-api-v1.json -o src/clients/mrt.generated.ts && openapi-typescript specs/mrt-b2c.json -o src/clients/mrt-b2c.generated.ts && openapi-typescript specs/custom-apis-v1.yaml -o src/clients/custom-apis.generated.ts && openapi-typescript specs/scapi-schemas-v1.yaml -o src/clients/scapi-schemas.generated.ts && openapi-typescript specs/cdn-zones-v1.yaml -o src/clients/cdn-zones.generated.ts",
348
+ "generate:types": "openapi-typescript specs/data-api.json -o src/clients/ocapi.generated.ts && openapi-typescript specs/slas-admin-v1.yaml -o src/clients/slas-admin.generated.ts && openapi-typescript specs/ods-api-v1.json -o src/clients/ods.generated.ts && openapi-typescript specs/mrt-api-v1.json -o src/clients/mrt.generated.ts && openapi-typescript specs/mrt-b2c.json -o src/clients/mrt-b2c.generated.ts && openapi-typescript specs/custom-apis-v1.yaml -o src/clients/custom-apis.generated.ts && openapi-typescript specs/scapi-schemas-v1.yaml -o src/clients/scapi-schemas.generated.ts && openapi-typescript specs/cdn-zones-v1.yaml -o src/clients/cdn-zones.generated.ts && openapi-typescript specs/am-users-api-v1.yaml -o src/clients/am-users-api.generated.ts && openapi-typescript specs/am-roles-api-v1.yaml -o src/clients/am-roles-api.generated.ts && openapi-typescript specs/am-apiclients-api-v1.yaml -o src/clients/am-apiclients-api.generated.ts",
280
349
  "build": "pnpm run generate:types && pnpm run build:esm && pnpm run build:cjs",
281
350
  "build:esm": "tsc -p tsconfig.esm.json",
282
351
  "build:cjs": "tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",