@salesforce/b2c-tooling-sdk 1.9.0 → 1.11.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 (649) hide show
  1. package/data/content-schemas/componenttype.json +37 -0
  2. package/dist/esm/config/dw-json.d.ts +9 -2
  3. package/dist/esm/config/dw-json.js.map +1 -1
  4. package/dist/esm/config/index.d.ts +2 -2
  5. package/dist/esm/config/index.js +1 -1
  6. package/dist/esm/config/index.js.map +1 -1
  7. package/dist/esm/config/mapping.d.ts +7 -1
  8. package/dist/esm/config/mapping.js +10 -0
  9. package/dist/esm/config/mapping.js.map +1 -1
  10. package/dist/esm/config/sources/package-json-source.js +1 -0
  11. package/dist/esm/config/sources/package-json-source.js.map +1 -1
  12. package/dist/esm/config/types.d.ts +23 -2
  13. package/dist/esm/operations/content/validate.js +46 -4
  14. package/dist/esm/operations/content/validate.js.map +1 -1
  15. package/dist/esm/operations/jobs/site-archive.d.ts +12 -0
  16. package/dist/esm/operations/jobs/site-archive.js +107 -3
  17. package/dist/esm/operations/jobs/site-archive.js.map +1 -1
  18. package/package.json +73 -285
  19. package/dist/cjs/auth/api-key.d.ts +0 -28
  20. package/dist/cjs/auth/api-key.js +0 -45
  21. package/dist/cjs/auth/api-key.js.map +0 -1
  22. package/dist/cjs/auth/basic.d.ts +0 -7
  23. package/dist/cjs/auth/basic.js +0 -20
  24. package/dist/cjs/auth/basic.js.map +0 -1
  25. package/dist/cjs/auth/index.d.ts +0 -74
  26. package/dist/cjs/auth/index.js +0 -76
  27. package/dist/cjs/auth/index.js.map +0 -1
  28. package/dist/cjs/auth/jwt-utils.d.ts +0 -25
  29. package/dist/cjs/auth/jwt-utils.js +0 -66
  30. package/dist/cjs/auth/jwt-utils.js.map +0 -1
  31. package/dist/cjs/auth/middleware.d.ts +0 -196
  32. package/dist/cjs/auth/middleware.js +0 -190
  33. package/dist/cjs/auth/middleware.js.map +0 -1
  34. package/dist/cjs/auth/oauth-implicit.d.ts +0 -89
  35. package/dist/cjs/auth/oauth-implicit.js +0 -350
  36. package/dist/cjs/auth/oauth-implicit.js.map +0 -1
  37. package/dist/cjs/auth/oauth-jwt.d.ts +0 -99
  38. package/dist/cjs/auth/oauth-jwt.js +0 -343
  39. package/dist/cjs/auth/oauth-jwt.js.map +0 -1
  40. package/dist/cjs/auth/oauth.d.ts +0 -88
  41. package/dist/cjs/auth/oauth.js +0 -252
  42. package/dist/cjs/auth/oauth.js.map +0 -1
  43. package/dist/cjs/auth/resolve.d.ts +0 -100
  44. package/dist/cjs/auth/resolve.js +0 -175
  45. package/dist/cjs/auth/resolve.js.map +0 -1
  46. package/dist/cjs/auth/stateful-oauth-strategy.d.ts +0 -39
  47. package/dist/cjs/auth/stateful-oauth-strategy.js +0 -130
  48. package/dist/cjs/auth/stateful-oauth-strategy.js.map +0 -1
  49. package/dist/cjs/auth/stateful-store.d.ts +0 -49
  50. package/dist/cjs/auth/stateful-store.js +0 -166
  51. package/dist/cjs/auth/stateful-store.js.map +0 -1
  52. package/dist/cjs/auth/types.d.ts +0 -124
  53. package/dist/cjs/auth/types.js +0 -8
  54. package/dist/cjs/auth/types.js.map +0 -1
  55. package/dist/cjs/cli/am-command.d.ts +0 -74
  56. package/dist/cjs/cli/am-command.js +0 -199
  57. package/dist/cjs/cli/am-command.js.map +0 -1
  58. package/dist/cjs/cli/base-command.d.ts +0 -232
  59. package/dist/cjs/cli/base-command.js +0 -695
  60. package/dist/cjs/cli/base-command.js.map +0 -1
  61. package/dist/cjs/cli/cartridge-command.d.ts +0 -67
  62. package/dist/cjs/cli/cartridge-command.js +0 -146
  63. package/dist/cjs/cli/cartridge-command.js.map +0 -1
  64. package/dist/cjs/cli/cartridge-providers.d.ts +0 -149
  65. package/dist/cjs/cli/cartridge-providers.js +0 -103
  66. package/dist/cjs/cli/cartridge-providers.js.map +0 -1
  67. package/dist/cjs/cli/columns.d.ts +0 -128
  68. package/dist/cjs/cli/columns.js +0 -128
  69. package/dist/cjs/cli/columns.js.map +0 -1
  70. package/dist/cjs/cli/config.d.ts +0 -159
  71. package/dist/cjs/cli/config.js +0 -185
  72. package/dist/cjs/cli/config.js.map +0 -1
  73. package/dist/cjs/cli/details.d.ts +0 -69
  74. package/dist/cjs/cli/details.js +0 -72
  75. package/dist/cjs/cli/details.js.map +0 -1
  76. package/dist/cjs/cli/hooks.d.ts +0 -324
  77. package/dist/cjs/cli/hooks.js +0 -3
  78. package/dist/cjs/cli/hooks.js.map +0 -1
  79. package/dist/cjs/cli/index.d.ts +0 -108
  80. package/dist/cjs/cli/index.js +0 -111
  81. package/dist/cjs/cli/index.js.map +0 -1
  82. package/dist/cjs/cli/instance-command.d.ts +0 -131
  83. package/dist/cjs/cli/instance-command.js +0 -214
  84. package/dist/cjs/cli/instance-command.js.map +0 -1
  85. package/dist/cjs/cli/job-command.d.ts +0 -32
  86. package/dist/cjs/cli/job-command.js +0 -60
  87. package/dist/cjs/cli/job-command.js.map +0 -1
  88. package/dist/cjs/cli/lifecycle.d.ts +0 -189
  89. package/dist/cjs/cli/lifecycle.js +0 -130
  90. package/dist/cjs/cli/lifecycle.js.map +0 -1
  91. package/dist/cjs/cli/mrt-command.d.ts +0 -57
  92. package/dist/cjs/cli/mrt-command.js +0 -95
  93. package/dist/cjs/cli/mrt-command.js.map +0 -1
  94. package/dist/cjs/cli/oauth-command.d.ts +0 -122
  95. package/dist/cjs/cli/oauth-command.js +0 -311
  96. package/dist/cjs/cli/oauth-command.js.map +0 -1
  97. package/dist/cjs/cli/ods-command.d.ts +0 -97
  98. package/dist/cjs/cli/ods-command.js +0 -136
  99. package/dist/cjs/cli/ods-command.js.map +0 -1
  100. package/dist/cjs/cli/table.d.ts +0 -113
  101. package/dist/cjs/cli/table.js +0 -175
  102. package/dist/cjs/cli/table.js.map +0 -1
  103. package/dist/cjs/cli/webdav-command.d.ts +0 -110
  104. package/dist/cjs/cli/webdav-command.js +0 -106
  105. package/dist/cjs/cli/webdav-command.js.map +0 -1
  106. package/dist/cjs/clients/am-api.d.ts +0 -521
  107. package/dist/cjs/clients/am-api.js +0 -992
  108. package/dist/cjs/clients/am-api.js.map +0 -1
  109. package/dist/cjs/clients/am-apiclients-api.generated.d.ts +0 -803
  110. package/dist/cjs/clients/am-apiclients-api.generated.js +0 -6
  111. package/dist/cjs/clients/am-apiclients-api.generated.js.map +0 -1
  112. package/dist/cjs/clients/am-roles-api.generated.d.ts +0 -298
  113. package/dist/cjs/clients/am-roles-api.generated.js +0 -6
  114. package/dist/cjs/clients/am-roles-api.generated.js.map +0 -1
  115. package/dist/cjs/clients/am-users-api.generated.d.ts +0 -954
  116. package/dist/cjs/clients/am-users-api.generated.js +0 -6
  117. package/dist/cjs/clients/am-users-api.generated.js.map +0 -1
  118. package/dist/cjs/clients/cdn-zones.d.ts +0 -186
  119. package/dist/cjs/clients/cdn-zones.generated.d.ts +0 -8330
  120. package/dist/cjs/clients/cdn-zones.generated.js +0 -6
  121. package/dist/cjs/clients/cdn-zones.generated.js.map +0 -1
  122. package/dist/cjs/clients/cdn-zones.js +0 -103
  123. package/dist/cjs/clients/cdn-zones.js.map +0 -1
  124. package/dist/cjs/clients/cip.d.ts +0 -162
  125. package/dist/cjs/clients/cip.js +0 -572
  126. package/dist/cjs/clients/cip.js.map +0 -1
  127. package/dist/cjs/clients/custom-apis.d.ts +0 -174
  128. package/dist/cjs/clients/custom-apis.generated.d.ts +0 -202
  129. package/dist/cjs/clients/custom-apis.generated.js +0 -6
  130. package/dist/cjs/clients/custom-apis.generated.js.map +0 -1
  131. package/dist/cjs/clients/custom-apis.js +0 -140
  132. package/dist/cjs/clients/custom-apis.js.map +0 -1
  133. package/dist/cjs/clients/error-utils.d.ts +0 -35
  134. package/dist/cjs/clients/error-utils.js +0 -69
  135. package/dist/cjs/clients/error-utils.js.map +0 -1
  136. package/dist/cjs/clients/granular-replications.d.ts +0 -70
  137. package/dist/cjs/clients/granular-replications.generated.d.ts +0 -416
  138. package/dist/cjs/clients/granular-replications.generated.js +0 -6
  139. package/dist/cjs/clients/granular-replications.generated.js.map +0 -1
  140. package/dist/cjs/clients/granular-replications.js +0 -73
  141. package/dist/cjs/clients/granular-replications.js.map +0 -1
  142. package/dist/cjs/clients/index.d.ts +0 -145
  143. package/dist/cjs/clients/index.js +0 -137
  144. package/dist/cjs/clients/index.js.map +0 -1
  145. package/dist/cjs/clients/middleware-registry.d.ts +0 -184
  146. package/dist/cjs/clients/middleware-registry.js +0 -104
  147. package/dist/cjs/clients/middleware-registry.js.map +0 -1
  148. package/dist/cjs/clients/middleware.d.ts +0 -183
  149. package/dist/cjs/clients/middleware.js +0 -465
  150. package/dist/cjs/clients/middleware.js.map +0 -1
  151. package/dist/cjs/clients/mrt-b2c.d.ts +0 -138
  152. package/dist/cjs/clients/mrt-b2c.generated.d.ts +0 -176
  153. package/dist/cjs/clients/mrt-b2c.generated.js +0 -6
  154. package/dist/cjs/clients/mrt-b2c.generated.js.map +0 -1
  155. package/dist/cjs/clients/mrt-b2c.js +0 -86
  156. package/dist/cjs/clients/mrt-b2c.js.map +0 -1
  157. package/dist/cjs/clients/mrt.d.ts +0 -143
  158. package/dist/cjs/clients/mrt.generated.d.ts +0 -3806
  159. package/dist/cjs/clients/mrt.generated.js +0 -6
  160. package/dist/cjs/clients/mrt.generated.js.map +0 -1
  161. package/dist/cjs/clients/mrt.js +0 -93
  162. package/dist/cjs/clients/mrt.js.map +0 -1
  163. package/dist/cjs/clients/ocapi.d.ts +0 -128
  164. package/dist/cjs/clients/ocapi.generated.d.ts +0 -26052
  165. package/dist/cjs/clients/ocapi.generated.js +0 -6
  166. package/dist/cjs/clients/ocapi.generated.js.map +0 -1
  167. package/dist/cjs/clients/ocapi.js +0 -78
  168. package/dist/cjs/clients/ocapi.js.map +0 -1
  169. package/dist/cjs/clients/ods.d.ts +0 -160
  170. package/dist/cjs/clients/ods.generated.d.ts +0 -2860
  171. package/dist/cjs/clients/ods.generated.js +0 -6
  172. package/dist/cjs/clients/ods.generated.js.map +0 -1
  173. package/dist/cjs/clients/ods.js +0 -103
  174. package/dist/cjs/clients/ods.js.map +0 -1
  175. package/dist/cjs/clients/scapi-schemas.d.ts +0 -161
  176. package/dist/cjs/clients/scapi-schemas.generated.d.ts +0 -328
  177. package/dist/cjs/clients/scapi-schemas.generated.js +0 -6
  178. package/dist/cjs/clients/scapi-schemas.generated.js.map +0 -1
  179. package/dist/cjs/clients/scapi-schemas.js +0 -98
  180. package/dist/cjs/clients/scapi-schemas.js.map +0 -1
  181. package/dist/cjs/clients/slas-admin.d.ts +0 -132
  182. package/dist/cjs/clients/slas-admin.generated.d.ts +0 -1434
  183. package/dist/cjs/clients/slas-admin.generated.js +0 -6
  184. package/dist/cjs/clients/slas-admin.generated.js.map +0 -1
  185. package/dist/cjs/clients/slas-admin.js +0 -79
  186. package/dist/cjs/clients/slas-admin.js.map +0 -1
  187. package/dist/cjs/clients/tls-dispatcher.d.ts +0 -42
  188. package/dist/cjs/clients/tls-dispatcher.js +0 -107
  189. package/dist/cjs/clients/tls-dispatcher.js.map +0 -1
  190. package/dist/cjs/clients/user-agent.d.ts +0 -43
  191. package/dist/cjs/clients/user-agent.js +0 -87
  192. package/dist/cjs/clients/user-agent.js.map +0 -1
  193. package/dist/cjs/clients/webdav.d.ts +0 -186
  194. package/dist/cjs/clients/webdav.js +0 -395
  195. package/dist/cjs/clients/webdav.js.map +0 -1
  196. package/dist/cjs/config/config-source-registry.d.ts +0 -115
  197. package/dist/cjs/config/config-source-registry.js +0 -103
  198. package/dist/cjs/config/config-source-registry.js.map +0 -1
  199. package/dist/cjs/config/dw-json.d.ts +0 -267
  200. package/dist/cjs/config/dw-json.js +0 -333
  201. package/dist/cjs/config/dw-json.js.map +0 -1
  202. package/dist/cjs/config/index.d.ts +0 -100
  203. package/dist/cjs/config/index.js +0 -110
  204. package/dist/cjs/config/index.js.map +0 -1
  205. package/dist/cjs/config/instance-manager.d.ts +0 -97
  206. package/dist/cjs/config/instance-manager.js +0 -166
  207. package/dist/cjs/config/instance-manager.js.map +0 -1
  208. package/dist/cjs/config/mapping.d.ts +0 -193
  209. package/dist/cjs/config/mapping.js +0 -530
  210. package/dist/cjs/config/mapping.js.map +0 -1
  211. package/dist/cjs/config/resolved-config.d.ts +0 -29
  212. package/dist/cjs/config/resolved-config.js +0 -81
  213. package/dist/cjs/config/resolved-config.js.map +0 -1
  214. package/dist/cjs/config/resolver.d.ts +0 -191
  215. package/dist/cjs/config/resolver.js +0 -406
  216. package/dist/cjs/config/resolver.js.map +0 -1
  217. package/dist/cjs/config/sources/dw-json-source.d.ts +0 -27
  218. package/dist/cjs/config/sources/dw-json-source.js +0 -106
  219. package/dist/cjs/config/sources/dw-json-source.js.map +0 -1
  220. package/dist/cjs/config/sources/env-source.d.ts +0 -32
  221. package/dist/cjs/config/sources/env-source.js +0 -116
  222. package/dist/cjs/config/sources/env-source.js.map +0 -1
  223. package/dist/cjs/config/sources/index.d.ts +0 -9
  224. package/dist/cjs/config/sources/index.js +0 -15
  225. package/dist/cjs/config/sources/index.js.map +0 -1
  226. package/dist/cjs/config/sources/mobify-source.d.ts +0 -25
  227. package/dist/cjs/config/sources/mobify-source.js +0 -84
  228. package/dist/cjs/config/sources/mobify-source.js.map +0 -1
  229. package/dist/cjs/config/sources/package-json-source.d.ts +0 -14
  230. package/dist/cjs/config/sources/package-json-source.js +0 -96
  231. package/dist/cjs/config/sources/package-json-source.js.map +0 -1
  232. package/dist/cjs/config/types.d.ts +0 -407
  233. package/dist/cjs/config/types.js +0 -2
  234. package/dist/cjs/config/types.js.map +0 -1
  235. package/dist/cjs/defaults.d.ts +0 -36
  236. package/dist/cjs/defaults.js +0 -54
  237. package/dist/cjs/defaults.js.map +0 -1
  238. package/dist/cjs/discovery/detector.d.ts +0 -75
  239. package/dist/cjs/discovery/detector.js +0 -108
  240. package/dist/cjs/discovery/detector.js.map +0 -1
  241. package/dist/cjs/discovery/index.d.ts +0 -63
  242. package/dist/cjs/discovery/index.js +0 -70
  243. package/dist/cjs/discovery/index.js.map +0 -1
  244. package/dist/cjs/discovery/patterns/cartridges.d.ts +0 -16
  245. package/dist/cjs/discovery/patterns/cartridges.js +0 -16
  246. package/dist/cjs/discovery/patterns/cartridges.js.map +0 -1
  247. package/dist/cjs/discovery/patterns/index.d.ts +0 -21
  248. package/dist/cjs/discovery/patterns/index.js +0 -16
  249. package/dist/cjs/discovery/patterns/index.js.map +0 -1
  250. package/dist/cjs/discovery/patterns/pwa-kit.d.ts +0 -15
  251. package/dist/cjs/discovery/patterns/pwa-kit.js +0 -26
  252. package/dist/cjs/discovery/patterns/pwa-kit.js.map +0 -1
  253. package/dist/cjs/discovery/patterns/sfra.d.ts +0 -34
  254. package/dist/cjs/discovery/patterns/sfra.js +0 -50
  255. package/dist/cjs/discovery/patterns/sfra.js.map +0 -1
  256. package/dist/cjs/discovery/patterns/storefront-next.d.ts +0 -10
  257. package/dist/cjs/discovery/patterns/storefront-next.js +0 -65
  258. package/dist/cjs/discovery/patterns/storefront-next.js.map +0 -1
  259. package/dist/cjs/discovery/types.d.ts +0 -47
  260. package/dist/cjs/discovery/types.js +0 -12
  261. package/dist/cjs/discovery/types.js.map +0 -1
  262. package/dist/cjs/discovery/utils.d.ts +0 -44
  263. package/dist/cjs/discovery/utils.js +0 -82
  264. package/dist/cjs/discovery/utils.js.map +0 -1
  265. package/dist/cjs/docs/download.d.ts +0 -45
  266. package/dist/cjs/docs/download.js +0 -96
  267. package/dist/cjs/docs/download.js.map +0 -1
  268. package/dist/cjs/docs/index.d.ts +0 -44
  269. package/dist/cjs/docs/index.js +0 -12
  270. package/dist/cjs/docs/index.js.map +0 -1
  271. package/dist/cjs/docs/schema.d.ts +0 -26
  272. package/dist/cjs/docs/schema.js +0 -92
  273. package/dist/cjs/docs/schema.js.map +0 -1
  274. package/dist/cjs/docs/search.d.ts +0 -67
  275. package/dist/cjs/docs/search.js +0 -128
  276. package/dist/cjs/docs/search.js.map +0 -1
  277. package/dist/cjs/docs/types.d.ts +0 -64
  278. package/dist/cjs/docs/types.js +0 -15
  279. package/dist/cjs/docs/types.js.map +0 -1
  280. package/dist/cjs/errors/http-error.d.ts +0 -34
  281. package/dist/cjs/errors/http-error.js +0 -45
  282. package/dist/cjs/errors/http-error.js.map +0 -1
  283. package/dist/cjs/errors/index.d.ts +0 -12
  284. package/dist/cjs/errors/index.js +0 -18
  285. package/dist/cjs/errors/index.js.map +0 -1
  286. package/dist/cjs/i18n/index.d.ts +0 -144
  287. package/dist/cjs/i18n/index.js +0 -245
  288. package/dist/cjs/i18n/index.js.map +0 -1
  289. package/dist/cjs/i18n/locales/de.d.ts +0 -13
  290. package/dist/cjs/i18n/locales/de.js +0 -19
  291. package/dist/cjs/i18n/locales/de.js.map +0 -1
  292. package/dist/cjs/i18n/locales/index.d.ts +0 -28
  293. package/dist/cjs/i18n/locales/index.js +0 -25
  294. package/dist/cjs/i18n/locales/index.js.map +0 -1
  295. package/dist/cjs/index.d.ts +0 -33
  296. package/dist/cjs/index.js +0 -41
  297. package/dist/cjs/index.js.map +0 -1
  298. package/dist/cjs/instance/index.d.ts +0 -136
  299. package/dist/cjs/instance/index.js +0 -131
  300. package/dist/cjs/instance/index.js.map +0 -1
  301. package/dist/cjs/logging/index.d.ts +0 -116
  302. package/dist/cjs/logging/index.js +0 -121
  303. package/dist/cjs/logging/index.js.map +0 -1
  304. package/dist/cjs/logging/logger.d.ts +0 -9
  305. package/dist/cjs/logging/logger.js +0 -138
  306. package/dist/cjs/logging/logger.js.map +0 -1
  307. package/dist/cjs/logging/types.d.ts +0 -45
  308. package/dist/cjs/logging/types.js +0 -10
  309. package/dist/cjs/logging/types.js.map +0 -1
  310. package/dist/cjs/operations/bm-roles/index.d.ts +0 -52
  311. package/dist/cjs/operations/bm-roles/index.js +0 -57
  312. package/dist/cjs/operations/bm-roles/index.js.map +0 -1
  313. package/dist/cjs/operations/bm-roles/roles.d.ts +0 -155
  314. package/dist/cjs/operations/bm-roles/roles.js +0 -194
  315. package/dist/cjs/operations/bm-roles/roles.js.map +0 -1
  316. package/dist/cjs/operations/bm-users/index.d.ts +0 -50
  317. package/dist/cjs/operations/bm-users/index.js +0 -55
  318. package/dist/cjs/operations/bm-users/index.js.map +0 -1
  319. package/dist/cjs/operations/bm-users/users.d.ts +0 -189
  320. package/dist/cjs/operations/bm-users/users.js +0 -229
  321. package/dist/cjs/operations/bm-users/users.js.map +0 -1
  322. package/dist/cjs/operations/cap/index.d.ts +0 -56
  323. package/dist/cjs/operations/cap/index.js +0 -57
  324. package/dist/cjs/operations/cap/index.js.map +0 -1
  325. package/dist/cjs/operations/cap/install.d.ts +0 -53
  326. package/dist/cjs/operations/cap/install.js +0 -181
  327. package/dist/cjs/operations/cap/install.js.map +0 -1
  328. package/dist/cjs/operations/cap/list.d.ts +0 -92
  329. package/dist/cjs/operations/cap/list.js +0 -230
  330. package/dist/cjs/operations/cap/list.js.map +0 -1
  331. package/dist/cjs/operations/cap/package.d.ts +0 -39
  332. package/dist/cjs/operations/cap/package.js +0 -77
  333. package/dist/cjs/operations/cap/package.js.map +0 -1
  334. package/dist/cjs/operations/cap/pull.d.ts +0 -21
  335. package/dist/cjs/operations/cap/pull.js +0 -77
  336. package/dist/cjs/operations/cap/pull.js.map +0 -1
  337. package/dist/cjs/operations/cap/uninstall.d.ts +0 -46
  338. package/dist/cjs/operations/cap/uninstall.js +0 -87
  339. package/dist/cjs/operations/cap/uninstall.js.map +0 -1
  340. package/dist/cjs/operations/cap/validate.d.ts +0 -47
  341. package/dist/cjs/operations/cap/validate.js +0 -235
  342. package/dist/cjs/operations/cap/validate.js.map +0 -1
  343. package/dist/cjs/operations/cip/index.d.ts +0 -35
  344. package/dist/cjs/operations/cip/index.js +0 -128
  345. package/dist/cjs/operations/cip/index.js.map +0 -1
  346. package/dist/cjs/operations/cip/reports.d.ts +0 -2
  347. package/dist/cjs/operations/cip/reports.js +0 -210
  348. package/dist/cjs/operations/cip/reports.js.map +0 -1
  349. package/dist/cjs/operations/cip/types.d.ts +0 -97
  350. package/dist/cjs/operations/cip/types.js +0 -7
  351. package/dist/cjs/operations/cip/types.js.map +0 -1
  352. package/dist/cjs/operations/code/cartridges.d.ts +0 -46
  353. package/dist/cjs/operations/code/cartridges.js +0 -69
  354. package/dist/cjs/operations/code/cartridges.js.map +0 -1
  355. package/dist/cjs/operations/code/deploy.d.ts +0 -121
  356. package/dist/cjs/operations/code/deploy.js +0 -255
  357. package/dist/cjs/operations/code/deploy.js.map +0 -1
  358. package/dist/cjs/operations/code/download.d.ts +0 -77
  359. package/dist/cjs/operations/code/download.js +0 -300
  360. package/dist/cjs/operations/code/download.js.map +0 -1
  361. package/dist/cjs/operations/code/index.d.ts +0 -74
  362. package/dist/cjs/operations/code/index.js +0 -80
  363. package/dist/cjs/operations/code/index.js.map +0 -1
  364. package/dist/cjs/operations/code/upload-files.d.ts +0 -47
  365. package/dist/cjs/operations/code/upload-files.js +0 -116
  366. package/dist/cjs/operations/code/upload-files.js.map +0 -1
  367. package/dist/cjs/operations/code/versions.d.ts +0 -99
  368. package/dist/cjs/operations/code/versions.js +0 -156
  369. package/dist/cjs/operations/code/versions.js.map +0 -1
  370. package/dist/cjs/operations/code/watch.d.ts +0 -58
  371. package/dist/cjs/operations/code/watch.js +0 -175
  372. package/dist/cjs/operations/code/watch.js.map +0 -1
  373. package/dist/cjs/operations/content/asset-query.d.ts +0 -22
  374. package/dist/cjs/operations/content/asset-query.js +0 -77
  375. package/dist/cjs/operations/content/asset-query.js.map +0 -1
  376. package/dist/cjs/operations/content/export.d.ts +0 -57
  377. package/dist/cjs/operations/content/export.js +0 -221
  378. package/dist/cjs/operations/content/export.js.map +0 -1
  379. package/dist/cjs/operations/content/index.d.ts +0 -56
  380. package/dist/cjs/operations/content/index.js +0 -60
  381. package/dist/cjs/operations/content/index.js.map +0 -1
  382. package/dist/cjs/operations/content/library.d.ts +0 -137
  383. package/dist/cjs/operations/content/library.js +0 -396
  384. package/dist/cjs/operations/content/library.js.map +0 -1
  385. package/dist/cjs/operations/content/types.d.ts +0 -144
  386. package/dist/cjs/operations/content/types.js +0 -7
  387. package/dist/cjs/operations/content/types.js.map +0 -1
  388. package/dist/cjs/operations/content/validate.d.ts +0 -64
  389. package/dist/cjs/operations/content/validate.js +0 -170
  390. package/dist/cjs/operations/content/validate.js.map +0 -1
  391. package/dist/cjs/operations/debug/dap-adapter.d.ts +0 -72
  392. package/dist/cjs/operations/debug/dap-adapter.js +0 -505
  393. package/dist/cjs/operations/debug/dap-adapter.js.map +0 -1
  394. package/dist/cjs/operations/debug/debug-session.d.ts +0 -51
  395. package/dist/cjs/operations/debug/debug-session.js +0 -234
  396. package/dist/cjs/operations/debug/debug-session.js.map +0 -1
  397. package/dist/cjs/operations/debug/index.d.ts +0 -20
  398. package/dist/cjs/operations/debug/index.js +0 -21
  399. package/dist/cjs/operations/debug/index.js.map +0 -1
  400. package/dist/cjs/operations/debug/projections.d.ts +0 -72
  401. package/dist/cjs/operations/debug/projections.js +0 -84
  402. package/dist/cjs/operations/debug/projections.js.map +0 -1
  403. package/dist/cjs/operations/debug/resolve-path.d.ts +0 -15
  404. package/dist/cjs/operations/debug/resolve-path.js +0 -52
  405. package/dist/cjs/operations/debug/resolve-path.js.map +0 -1
  406. package/dist/cjs/operations/debug/sdapi-client.d.ts +0 -44
  407. package/dist/cjs/operations/debug/sdapi-client.js +0 -169
  408. package/dist/cjs/operations/debug/sdapi-client.js.map +0 -1
  409. package/dist/cjs/operations/debug/source-mapping.d.ts +0 -13
  410. package/dist/cjs/operations/debug/source-mapping.js +0 -57
  411. package/dist/cjs/operations/debug/source-mapping.js.map +0 -1
  412. package/dist/cjs/operations/debug/types.d.ts +0 -95
  413. package/dist/cjs/operations/debug/types.js +0 -2
  414. package/dist/cjs/operations/debug/types.js.map +0 -1
  415. package/dist/cjs/operations/debug/variable-store.d.ts +0 -35
  416. package/dist/cjs/operations/debug/variable-store.js +0 -52
  417. package/dist/cjs/operations/debug/variable-store.js.map +0 -1
  418. package/dist/cjs/operations/jobs/index.d.ts +0 -66
  419. package/dist/cjs/operations/jobs/index.js +0 -72
  420. package/dist/cjs/operations/jobs/index.js.map +0 -1
  421. package/dist/cjs/operations/jobs/run.d.ts +0 -239
  422. package/dist/cjs/operations/jobs/run.js +0 -324
  423. package/dist/cjs/operations/jobs/run.js.map +0 -1
  424. package/dist/cjs/operations/jobs/site-archive.d.ts +0 -267
  425. package/dist/cjs/operations/jobs/site-archive.js +0 -423
  426. package/dist/cjs/operations/jobs/site-archive.js.map +0 -1
  427. package/dist/cjs/operations/logs/index.d.ts +0 -65
  428. package/dist/cjs/operations/logs/index.js +0 -73
  429. package/dist/cjs/operations/logs/index.js.map +0 -1
  430. package/dist/cjs/operations/logs/list.d.ts +0 -35
  431. package/dist/cjs/operations/logs/list.js +0 -144
  432. package/dist/cjs/operations/logs/list.js.map +0 -1
  433. package/dist/cjs/operations/logs/path-normalizer.d.ts +0 -82
  434. package/dist/cjs/operations/logs/path-normalizer.js +0 -190
  435. package/dist/cjs/operations/logs/path-normalizer.js.map +0 -1
  436. package/dist/cjs/operations/logs/tail.d.ts +0 -92
  437. package/dist/cjs/operations/logs/tail.js +0 -525
  438. package/dist/cjs/operations/logs/tail.js.map +0 -1
  439. package/dist/cjs/operations/logs/types.d.ts +0 -132
  440. package/dist/cjs/operations/logs/types.js +0 -7
  441. package/dist/cjs/operations/logs/types.js.map +0 -1
  442. package/dist/cjs/operations/mrt/access-control.d.ts +0 -192
  443. package/dist/cjs/operations/mrt/access-control.js +0 -152
  444. package/dist/cjs/operations/mrt/access-control.js.map +0 -1
  445. package/dist/cjs/operations/mrt/b2c-config.d.ts +0 -201
  446. package/dist/cjs/operations/mrt/b2c-config.js +0 -210
  447. package/dist/cjs/operations/mrt/b2c-config.js.map +0 -1
  448. package/dist/cjs/operations/mrt/bundle.d.ts +0 -114
  449. package/dist/cjs/operations/mrt/bundle.js +0 -166
  450. package/dist/cjs/operations/mrt/bundle.js.map +0 -1
  451. package/dist/cjs/operations/mrt/cache.d.ts +0 -80
  452. package/dist/cjs/operations/mrt/cache.js +0 -65
  453. package/dist/cjs/operations/mrt/cache.js.map +0 -1
  454. package/dist/cjs/operations/mrt/certificate.d.ts +0 -60
  455. package/dist/cjs/operations/mrt/certificate.js +0 -76
  456. package/dist/cjs/operations/mrt/certificate.js.map +0 -1
  457. package/dist/cjs/operations/mrt/deployment.d.ts +0 -157
  458. package/dist/cjs/operations/mrt/deployment.js +0 -109
  459. package/dist/cjs/operations/mrt/deployment.js.map +0 -1
  460. package/dist/cjs/operations/mrt/env-var.d.ts +0 -176
  461. package/dist/cjs/operations/mrt/env-var.js +0 -231
  462. package/dist/cjs/operations/mrt/env-var.js.map +0 -1
  463. package/dist/cjs/operations/mrt/env.d.ts +0 -491
  464. package/dist/cjs/operations/mrt/env.js +0 -425
  465. package/dist/cjs/operations/mrt/env.js.map +0 -1
  466. package/dist/cjs/operations/mrt/index.d.ts +0 -75
  467. package/dist/cjs/operations/mrt/index.js +0 -81
  468. package/dist/cjs/operations/mrt/index.js.map +0 -1
  469. package/dist/cjs/operations/mrt/member.d.ts +0 -281
  470. package/dist/cjs/operations/mrt/member.js +0 -244
  471. package/dist/cjs/operations/mrt/member.js.map +0 -1
  472. package/dist/cjs/operations/mrt/notification.d.ts +0 -252
  473. package/dist/cjs/operations/mrt/notification.js +0 -206
  474. package/dist/cjs/operations/mrt/notification.js.map +0 -1
  475. package/dist/cjs/operations/mrt/organization-member.d.ts +0 -68
  476. package/dist/cjs/operations/mrt/organization-member.js +0 -88
  477. package/dist/cjs/operations/mrt/organization-member.js.map +0 -1
  478. package/dist/cjs/operations/mrt/organization.d.ts +0 -80
  479. package/dist/cjs/operations/mrt/organization.js +0 -53
  480. package/dist/cjs/operations/mrt/organization.js.map +0 -1
  481. package/dist/cjs/operations/mrt/project.d.ts +0 -261
  482. package/dist/cjs/operations/mrt/project.js +0 -232
  483. package/dist/cjs/operations/mrt/project.js.map +0 -1
  484. package/dist/cjs/operations/mrt/push.d.ts +0 -290
  485. package/dist/cjs/operations/mrt/push.js +0 -288
  486. package/dist/cjs/operations/mrt/push.js.map +0 -1
  487. package/dist/cjs/operations/mrt/redirect.d.ts +0 -337
  488. package/dist/cjs/operations/mrt/redirect.js +0 -256
  489. package/dist/cjs/operations/mrt/redirect.js.map +0 -1
  490. package/dist/cjs/operations/mrt/tail-logs.d.ts +0 -130
  491. package/dist/cjs/operations/mrt/tail-logs.js +0 -224
  492. package/dist/cjs/operations/mrt/tail-logs.js.map +0 -1
  493. package/dist/cjs/operations/mrt/user.d.ts +0 -135
  494. package/dist/cjs/operations/mrt/user.js +0 -153
  495. package/dist/cjs/operations/mrt/user.js.map +0 -1
  496. package/dist/cjs/operations/ods/index.d.ts +0 -10
  497. package/dist/cjs/operations/ods/index.js +0 -14
  498. package/dist/cjs/operations/ods/index.js.map +0 -1
  499. package/dist/cjs/operations/ods/sandbox-lookup.d.ts +0 -63
  500. package/dist/cjs/operations/ods/sandbox-lookup.js +0 -130
  501. package/dist/cjs/operations/ods/sandbox-lookup.js.map +0 -1
  502. package/dist/cjs/operations/ods/wait-for-clone.d.ts +0 -46
  503. package/dist/cjs/operations/ods/wait-for-clone.js +0 -100
  504. package/dist/cjs/operations/ods/wait-for-clone.js.map +0 -1
  505. package/dist/cjs/operations/ods/wait-for-sandbox.d.ts +0 -64
  506. package/dist/cjs/operations/ods/wait-for-sandbox.js +0 -114
  507. package/dist/cjs/operations/ods/wait-for-sandbox.js.map +0 -1
  508. package/dist/cjs/operations/orgs/index.d.ts +0 -74
  509. package/dist/cjs/operations/orgs/index.js +0 -33
  510. package/dist/cjs/operations/orgs/index.js.map +0 -1
  511. package/dist/cjs/operations/roles/index.d.ts +0 -43
  512. package/dist/cjs/operations/roles/index.js +0 -48
  513. package/dist/cjs/operations/roles/index.js.map +0 -1
  514. package/dist/cjs/operations/sites/cartridges.d.ts +0 -114
  515. package/dist/cjs/operations/sites/cartridges.js +0 -378
  516. package/dist/cjs/operations/sites/cartridges.js.map +0 -1
  517. package/dist/cjs/operations/sites/index.d.ts +0 -46
  518. package/dist/cjs/operations/sites/index.js +0 -51
  519. package/dist/cjs/operations/sites/index.js.map +0 -1
  520. package/dist/cjs/operations/users/index.d.ts +0 -153
  521. package/dist/cjs/operations/users/index.js +0 -139
  522. package/dist/cjs/operations/users/index.js.map +0 -1
  523. package/dist/cjs/operations/util/zip.d.ts +0 -5
  524. package/dist/cjs/operations/util/zip.js +0 -25
  525. package/dist/cjs/operations/util/zip.js.map +0 -1
  526. package/dist/cjs/package.json +0 -1
  527. package/dist/cjs/plugins/discovery.d.ts +0 -46
  528. package/dist/cjs/plugins/discovery.js +0 -122
  529. package/dist/cjs/plugins/discovery.js.map +0 -1
  530. package/dist/cjs/plugins/index.d.ts +0 -26
  531. package/dist/cjs/plugins/index.js +0 -32
  532. package/dist/cjs/plugins/index.js.map +0 -1
  533. package/dist/cjs/plugins/loader.d.ts +0 -34
  534. package/dist/cjs/plugins/loader.js +0 -59
  535. package/dist/cjs/plugins/loader.js.map +0 -1
  536. package/dist/cjs/plugins/manager.d.ts +0 -70
  537. package/dist/cjs/plugins/manager.js +0 -173
  538. package/dist/cjs/plugins/manager.js.map +0 -1
  539. package/dist/cjs/safety/index.d.ts +0 -12
  540. package/dist/cjs/safety/index.js +0 -11
  541. package/dist/cjs/safety/index.js.map +0 -1
  542. package/dist/cjs/safety/safety-guard.d.ts +0 -92
  543. package/dist/cjs/safety/safety-guard.js +0 -270
  544. package/dist/cjs/safety/safety-guard.js.map +0 -1
  545. package/dist/cjs/safety/safety-middleware.d.ts +0 -130
  546. package/dist/cjs/safety/safety-middleware.js +0 -248
  547. package/dist/cjs/safety/safety-middleware.js.map +0 -1
  548. package/dist/cjs/safety/types.d.ts +0 -81
  549. package/dist/cjs/safety/types.js +0 -16
  550. package/dist/cjs/safety/types.js.map +0 -1
  551. package/dist/cjs/safety/with-confirmation.d.ts +0 -58
  552. package/dist/cjs/safety/with-confirmation.js +0 -67
  553. package/dist/cjs/safety/with-confirmation.js.map +0 -1
  554. package/dist/cjs/scaffold/engine.d.ts +0 -68
  555. package/dist/cjs/scaffold/engine.js +0 -149
  556. package/dist/cjs/scaffold/engine.js.map +0 -1
  557. package/dist/cjs/scaffold/executor.d.ts +0 -36
  558. package/dist/cjs/scaffold/executor.js +0 -293
  559. package/dist/cjs/scaffold/executor.js.map +0 -1
  560. package/dist/cjs/scaffold/index.d.ts +0 -76
  561. package/dist/cjs/scaffold/index.js +0 -23
  562. package/dist/cjs/scaffold/index.js.map +0 -1
  563. package/dist/cjs/scaffold/merge.d.ts +0 -63
  564. package/dist/cjs/scaffold/merge.js +0 -192
  565. package/dist/cjs/scaffold/merge.js.map +0 -1
  566. package/dist/cjs/scaffold/parameter-resolver.d.ts +0 -86
  567. package/dist/cjs/scaffold/parameter-resolver.js +0 -191
  568. package/dist/cjs/scaffold/parameter-resolver.js.map +0 -1
  569. package/dist/cjs/scaffold/registry.d.ts +0 -60
  570. package/dist/cjs/scaffold/registry.js +0 -225
  571. package/dist/cjs/scaffold/registry.js.map +0 -1
  572. package/dist/cjs/scaffold/sources.d.ts +0 -83
  573. package/dist/cjs/scaffold/sources.js +0 -236
  574. package/dist/cjs/scaffold/sources.js.map +0 -1
  575. package/dist/cjs/scaffold/types.d.ts +0 -282
  576. package/dist/cjs/scaffold/types.js +0 -14
  577. package/dist/cjs/scaffold/types.js.map +0 -1
  578. package/dist/cjs/scaffold/validation.d.ts +0 -81
  579. package/dist/cjs/scaffold/validation.js +0 -250
  580. package/dist/cjs/scaffold/validation.js.map +0 -1
  581. package/dist/cjs/scaffold/validators.d.ts +0 -33
  582. package/dist/cjs/scaffold/validators.js +0 -340
  583. package/dist/cjs/scaffold/validators.js.map +0 -1
  584. package/dist/cjs/schemas/collapse.d.ts +0 -150
  585. package/dist/cjs/schemas/collapse.js +0 -180
  586. package/dist/cjs/schemas/collapse.js.map +0 -1
  587. package/dist/cjs/schemas/index.d.ts +0 -58
  588. package/dist/cjs/schemas/index.js +0 -65
  589. package/dist/cjs/schemas/index.js.map +0 -1
  590. package/dist/cjs/schemas/security-schemes.d.ts +0 -26
  591. package/dist/cjs/schemas/security-schemes.js +0 -44
  592. package/dist/cjs/schemas/security-schemes.js.map +0 -1
  593. package/dist/cjs/skills/agents.d.ts +0 -42
  594. package/dist/cjs/skills/agents.js +0 -200
  595. package/dist/cjs/skills/agents.js.map +0 -1
  596. package/dist/cjs/skills/github.d.ts +0 -31
  597. package/dist/cjs/skills/github.js +0 -450
  598. package/dist/cjs/skills/github.js.map +0 -1
  599. package/dist/cjs/skills/index.d.ts +0 -43
  600. package/dist/cjs/skills/index.js +0 -16
  601. package/dist/cjs/skills/index.js.map +0 -1
  602. package/dist/cjs/skills/installer.d.ts +0 -35
  603. package/dist/cjs/skills/installer.js +0 -182
  604. package/dist/cjs/skills/installer.js.map +0 -1
  605. package/dist/cjs/skills/parser.d.ts +0 -39
  606. package/dist/cjs/skills/parser.js +0 -126
  607. package/dist/cjs/skills/parser.js.map +0 -1
  608. package/dist/cjs/skills/sources.d.ts +0 -4
  609. package/dist/cjs/skills/sources.js +0 -52
  610. package/dist/cjs/skills/sources.js.map +0 -1
  611. package/dist/cjs/skills/types.d.ts +0 -153
  612. package/dist/cjs/skills/types.js +0 -7
  613. package/dist/cjs/skills/types.js.map +0 -1
  614. package/dist/cjs/slas/index.d.ts +0 -12
  615. package/dist/cjs/slas/index.js +0 -8
  616. package/dist/cjs/slas/index.js.map +0 -1
  617. package/dist/cjs/slas/pkce.d.ts +0 -13
  618. package/dist/cjs/slas/pkce.js +0 -35
  619. package/dist/cjs/slas/pkce.js.map +0 -1
  620. package/dist/cjs/slas/token.d.ts +0 -24
  621. package/dist/cjs/slas/token.js +0 -261
  622. package/dist/cjs/slas/token.js.map +0 -1
  623. package/dist/cjs/slas/types.d.ts +0 -43
  624. package/dist/cjs/slas/types.js +0 -7
  625. package/dist/cjs/slas/types.js.map +0 -1
  626. package/dist/cjs/telemetry/index.d.ts +0 -34
  627. package/dist/cjs/telemetry/index.js +0 -32
  628. package/dist/cjs/telemetry/index.js.map +0 -1
  629. package/dist/cjs/telemetry/telemetry.d.ts +0 -88
  630. package/dist/cjs/telemetry/telemetry.js +0 -298
  631. package/dist/cjs/telemetry/telemetry.js.map +0 -1
  632. package/dist/cjs/telemetry/types.d.ts +0 -62
  633. package/dist/cjs/telemetry/types.js +0 -7
  634. package/dist/cjs/telemetry/types.js.map +0 -1
  635. package/dist/cjs/test-utils/config-isolation.d.ts +0 -2
  636. package/dist/cjs/test-utils/config-isolation.js +0 -48
  637. package/dist/cjs/test-utils/config-isolation.js.map +0 -1
  638. package/dist/cjs/test-utils/index.d.ts +0 -1
  639. package/dist/cjs/test-utils/index.js +0 -7
  640. package/dist/cjs/test-utils/index.js.map +0 -1
  641. package/dist/cjs/ux/confirm.d.ts +0 -14
  642. package/dist/cjs/ux/confirm.js +0 -36
  643. package/dist/cjs/ux/confirm.js.map +0 -1
  644. package/dist/cjs/ux/index.d.ts +0 -1
  645. package/dist/cjs/ux/index.js +0 -7
  646. package/dist/cjs/ux/index.js.map +0 -1
  647. package/dist/cjs/version.d.ts +0 -14
  648. package/dist/cjs/version.js +0 -29
  649. package/dist/cjs/version.js.map +0 -1
@@ -1,992 +0,0 @@
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
- * Account Manager API client for B2C Commerce.
8
- *
9
- * Provides clients for the Account Manager REST APIs including users, roles, and organizations.
10
- * Uses openapi-fetch with OAuth authentication middleware for users and roles,
11
- * and fetch with OAuth for organizations.
12
- *
13
- * @module clients/am-api
14
- */
15
- import createClient from 'openapi-fetch';
16
- import { createAuthMiddleware, createLoggingMiddleware } from './middleware.js';
17
- import { globalMiddlewareRegistry } from './middleware-registry.js';
18
- import { DEFAULT_ACCOUNT_MANAGER_HOST } from '../defaults.js';
19
- import { getLogger } from '../logging/logger.js';
20
- /**
21
- * Regex for Account Manager role tenant filter format:
22
- * ROLE_ENUM:realm_instance(,realm_instance)*(;ROLE_ENUM:...)*
23
- * e.g. SALESFORCE_COMMERCE_API:abcd_prd or bm-admin:tenant1,tenant2;ECOM_USER:wxyz_stg
24
- */
25
- export const ROLE_TENANT_FILTER_PATTERN = /^(\w+:\w{4,}_\w{3,}(,\w{4,}_\w{3,})*(;)?)*$/;
26
- /**
27
- * Returns true if the value matches the Account Manager role tenant filter format.
28
- */
29
- export function isValidRoleTenantFilter(value) {
30
- return value.length > 0 && ROLE_TENANT_FILTER_PATTERN.test(value);
31
- }
32
- /**
33
- * Fetches all roles from the Account Manager roles API and builds a mapping
34
- * between role `id` and `roleEnumName`.
35
- *
36
- * @param rolesClient - Account Manager Roles client
37
- * @returns Role mapping
38
- */
39
- export async function fetchRoleMapping(rolesClient) {
40
- const result = await listRoles(rolesClient, { size: 100 });
41
- const byId = new Map();
42
- const byEnumName = new Map();
43
- const descriptions = new Map();
44
- for (const role of result.content || []) {
45
- if (role.id && role.roleEnumName) {
46
- byId.set(role.id, role.roleEnumName);
47
- byEnumName.set(role.roleEnumName, role.id);
48
- if (role.description) {
49
- descriptions.set(role.roleEnumName, role.description);
50
- }
51
- }
52
- }
53
- return { byId, byEnumName, descriptions };
54
- }
55
- /**
56
- * Resolves a role to its internal `roleEnumName` using an API-fetched role mapping.
57
- * Accepts either the role `id` (e.g., `bm-admin`) or `roleEnumName` (e.g., `ECOM_ADMIN`).
58
- * Falls back to a generic transform (uppercase + replace hyphens with underscores) for unknown roles.
59
- */
60
- export function resolveToInternalRole(role, mapping) {
61
- // Already a known roleEnumName
62
- if (mapping.byEnumName.has(role)) {
63
- return role;
64
- }
65
- // Known role id → roleEnumName
66
- const enumName = mapping.byId.get(role);
67
- if (enumName) {
68
- return enumName;
69
- }
70
- // Fallback: generic transform
71
- return role.toUpperCase().replace(/-/g, '_');
72
- }
73
- /**
74
- * Resolves an internal `roleEnumName` to its external role `id` using an API-fetched role mapping.
75
- * Falls back to a generic transform (lowercase + replace underscores with hyphens) for unknown roles.
76
- */
77
- export function resolveFromInternalRole(roleEnumName, mapping) {
78
- const id = mapping.byEnumName.get(roleEnumName);
79
- if (id) {
80
- return id;
81
- }
82
- // Fallback: generic transform
83
- return roleEnumName.toLowerCase().replace(/_/g, '-');
84
- }
85
- /**
86
- * Creates a typed Account Manager Users API client.
87
- *
88
- * Returns the openapi-fetch client directly, with authentication
89
- * handled via middleware. This gives full access to all openapi-fetch
90
- * features with type-safe paths, parameters, and responses.
91
- *
92
- * @param config - Account Manager Users client configuration
93
- * @param auth - Authentication strategy (typically OAuth)
94
- * @returns Typed openapi-fetch client
95
- *
96
- * @example
97
- * // Create Account Manager Users client with OAuth auth
98
- * const oauthStrategy = new OAuthStrategy({
99
- * clientId: 'your-client-id',
100
- * clientSecret: 'your-client-secret',
101
- * });
102
- *
103
- * const client = createAccountManagerUsersClient({}, oauthStrategy);
104
- *
105
- * // List users
106
- * const { data, error } = await client.GET('/dw/rest/v1/users', {
107
- * params: { query: { pageable: { size: 25, page: 0 } } }
108
- * });
109
- */
110
- export function createAccountManagerUsersClient(config, auth) {
111
- const hostname = config.hostname ?? DEFAULT_ACCOUNT_MANAGER_HOST;
112
- const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
113
- const client = createClient({
114
- baseUrl: `https://${hostname}`,
115
- });
116
- // Core middleware: auth first
117
- client.use(createAuthMiddleware(auth));
118
- // Transform pageable query parameters from bracket notation to flattened format
119
- // This is needed because the API expects size=X&page=Y, not pageable[size]=X&pageable[page]=Y
120
- client.use(createPageableTransformMiddleware());
121
- // Plugin middleware from registry
122
- for (const middleware of registry.getMiddleware('am-users-api')) {
123
- client.use(middleware);
124
- }
125
- // Logging middleware last (sees complete request with all modifications)
126
- client.use(createLoggingMiddleware('AM-USERS'));
127
- return client;
128
- }
129
- /**
130
- * Retrieves details of a user by ID.
131
- *
132
- * @param client - Account Manager Users client
133
- * @param userId - User ID (UUID)
134
- * @param expand - Optional array of fields to expand (organizations, roles)
135
- * @returns User details
136
- * @throws Error if user is not found or request fails
137
- */
138
- export async function getUser(client, userId, expand) {
139
- const result = await client.GET('/dw/rest/v1/users/{userId}', {
140
- params: {
141
- path: { userId },
142
- query: expand && expand.length > 0 ? { expand } : undefined,
143
- },
144
- });
145
- if (result.error) {
146
- const error = result.error;
147
- if (result.response?.status === 404) {
148
- throw new Error(`User ${userId} not found`);
149
- }
150
- throw new Error(error.error?.message || `Failed to get user: ${JSON.stringify(result.error)}`);
151
- }
152
- if (!result.data) {
153
- throw new Error('No data returned from API');
154
- }
155
- return result.data;
156
- }
157
- /**
158
- * Lists users with pagination.
159
- *
160
- * @param client - Account Manager Users client
161
- * @param options - List options (size, page)
162
- * @returns Paginated user collection
163
- * @throws Error if request fails
164
- */
165
- export async function listUsers(client, options = {}) {
166
- const { size = 20, page = 0 } = options;
167
- const result = await client.GET('/dw/rest/v1/users', {
168
- params: {
169
- query: {
170
- pageable: {
171
- size,
172
- page,
173
- },
174
- },
175
- },
176
- });
177
- if (result.error) {
178
- const error = result.error;
179
- // Check for pagination out-of-bounds error
180
- const errorMessage = error.errors?.[0]?.message || error.error?.message;
181
- if (errorMessage?.includes('fromIndex') && errorMessage?.includes('toIndex')) {
182
- throw new Error(`Page ${page} is out of bounds. The requested page exceeds the available data. Try a lower page number.`);
183
- }
184
- throw new Error(errorMessage || `Failed to list users: ${JSON.stringify(result.error)}`);
185
- }
186
- return result.data || { content: [] };
187
- }
188
- /**
189
- * Creates a new user.
190
- *
191
- * @param client - Account Manager Users client
192
- * @param user - User details
193
- * @returns Created user
194
- * @throws Error if request fails
195
- */
196
- export async function createUser(client, user) {
197
- const result = await client.POST('/dw/rest/v1/users', {
198
- body: user,
199
- });
200
- if (result.error) {
201
- const error = result.error;
202
- throw new Error(error.error?.message || `Failed to create user: ${JSON.stringify(result.error)}`);
203
- }
204
- if (!result.data) {
205
- throw new Error('No data returned from API');
206
- }
207
- return result.data;
208
- }
209
- /**
210
- * Updates an existing user.
211
- *
212
- * @param client - Account Manager Users client
213
- * @param userId - User ID
214
- * @param changes - Changes to apply
215
- * @returns Updated user
216
- * @throws Error if request fails
217
- */
218
- export async function updateUser(client, userId, changes) {
219
- const result = await client.PUT('/dw/rest/v1/users/{userId}', {
220
- params: { path: { userId } },
221
- body: changes,
222
- });
223
- if (result.error) {
224
- const error = result.error;
225
- throw new Error(error.error?.message || `Failed to update user: ${JSON.stringify(result.error)}`);
226
- }
227
- if (!result.data) {
228
- throw new Error('No data returned from API');
229
- }
230
- return result.data;
231
- }
232
- /**
233
- * Disables a user (soft delete - sets userState to DELETED).
234
- * Users must be disabled before they can be purged.
235
- *
236
- * @param client - Account Manager Users client
237
- * @param userId - User ID
238
- * @throws Error if request fails
239
- */
240
- export async function deleteUser(client, userId) {
241
- const result = await client.POST('/dw/rest/v1/users/{userId}/disable', {
242
- params: { path: { userId } },
243
- body: {},
244
- });
245
- if (result.error) {
246
- const error = result.error;
247
- throw new Error(error.error?.message || `Failed to delete user: ${JSON.stringify(result.error)}`);
248
- }
249
- }
250
- /**
251
- * Purges a user (hard delete).
252
- * Users must be in DELETED state before they can be purged.
253
- *
254
- * @param client - Account Manager Users client
255
- * @param userId - User ID
256
- * @throws Error if request fails
257
- */
258
- export async function purgeUser(client, userId) {
259
- const result = await client.DELETE('/dw/rest/v1/users/{userId}', {
260
- params: { path: { userId } },
261
- });
262
- if (result.error) {
263
- const error = result.error;
264
- throw new Error(error.error?.message || `Failed to purge user: ${JSON.stringify(result.error)}`);
265
- }
266
- }
267
- /**
268
- * Resets a user to INITIAL state and sends activation instructions.
269
- *
270
- * @param client - Account Manager Users client
271
- * @param userId - User ID
272
- * @throws Error if request fails
273
- */
274
- export async function resetUser(client, userId) {
275
- const result = await client.POST('/dw/rest/v1/users/{userId}/reset', {
276
- params: { path: { userId } },
277
- body: {},
278
- });
279
- if (result.error) {
280
- const error = result.error;
281
- throw new Error(error.error?.message || `Failed to reset user: ${JSON.stringify(result.error)}`);
282
- }
283
- }
284
- /**
285
- * Finds a user by login (email) using the dedicated search endpoint.
286
- *
287
- * @param client - Account Manager Users client
288
- * @param login - User login (email)
289
- * @param expand - Optional array of fields to expand (organizations, roles)
290
- * @returns User if found, undefined if not found
291
- * @throws Error if request fails
292
- */
293
- export async function findUserByLogin(client, login, expand) {
294
- const result = await client.GET('/dw/rest/v1/users/search/findByLogin', {
295
- params: {
296
- query: { login },
297
- },
298
- });
299
- if (result.response?.status === 404) {
300
- return undefined;
301
- }
302
- if (result.error) {
303
- throw new Error(`Failed to search for user: ${JSON.stringify(result.error)}`);
304
- }
305
- const found = result.data;
306
- if (!found) {
307
- return undefined;
308
- }
309
- // If expand is requested, fetch the full user with expanded fields
310
- if (expand && expand.length > 0 && found.id) {
311
- return getUser(client, found.id, expand);
312
- }
313
- return found;
314
- }
315
- /**
316
- * Creates a typed Account Manager Roles API client.
317
- *
318
- * Returns the openapi-fetch client directly, with authentication
319
- * handled via middleware. This gives full access to all openapi-fetch
320
- * features with type-safe paths, parameters, and responses.
321
- *
322
- * @param config - Account Manager Roles client configuration
323
- * @param auth - Authentication strategy (typically OAuth)
324
- * @returns Typed openapi-fetch client
325
- *
326
- * @example
327
- * // Create Account Manager Roles client with OAuth auth
328
- * const oauthStrategy = new OAuthStrategy({
329
- * clientId: 'your-client-id',
330
- * clientSecret: 'your-client-secret',
331
- * });
332
- *
333
- * const client = createAccountManagerRolesClient({}, oauthStrategy);
334
- *
335
- * // List roles
336
- * const { data, error } = await client.GET('/dw/rest/v1/roles', {
337
- * params: { query: { pageable: { size: 25, page: 0 } } }
338
- * });
339
- */
340
- export function createAccountManagerRolesClient(config, auth) {
341
- const hostname = config.hostname ?? DEFAULT_ACCOUNT_MANAGER_HOST;
342
- const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
343
- const client = createClient({
344
- baseUrl: `https://${hostname}`,
345
- });
346
- // Core middleware: auth first
347
- client.use(createAuthMiddleware(auth));
348
- // Transform pageable query parameters from bracket notation to flattened format
349
- // This is needed because the API expects size=X&page=Y, not pageable[size]=X&pageable[page]=Y
350
- client.use(createPageableTransformMiddleware());
351
- // Plugin middleware from registry
352
- for (const middleware of registry.getMiddleware('am-roles-api')) {
353
- client.use(middleware);
354
- }
355
- // Logging middleware last (sees complete request with all modifications)
356
- client.use(createLoggingMiddleware('AM-ROLES'));
357
- return client;
358
- }
359
- /**
360
- * Retrieves details of a role by ID.
361
- *
362
- * @param client - Account Manager Roles client
363
- * @param roleId - Role ID
364
- * @returns Role details
365
- * @throws Error if role is not found or request fails
366
- */
367
- export async function getRole(client, roleId) {
368
- const result = await client.GET('/dw/rest/v1/roles/{roleId}', {
369
- params: { path: { roleId } },
370
- });
371
- if (result.error) {
372
- const error = result.error;
373
- if (result.response?.status === 404) {
374
- throw new Error(`Role ${roleId} not found`);
375
- }
376
- throw new Error(error.error?.message || `Failed to get role: ${JSON.stringify(result.error)}`);
377
- }
378
- if (!result.data) {
379
- throw new Error('No data returned from API');
380
- }
381
- return result.data;
382
- }
383
- /**
384
- * Lists roles with pagination.
385
- *
386
- * @param client - Account Manager Roles client
387
- * @param options - List options (size, page, roleTargetType)
388
- * @returns Paginated role collection
389
- * @throws Error if request fails
390
- */
391
- export async function listRoles(client, options = {}) {
392
- const { size = 20, page = 0, roleTargetType } = options;
393
- const result = await client.GET('/dw/rest/v1/roles', {
394
- params: {
395
- query: {
396
- pageable: {
397
- size,
398
- page,
399
- },
400
- ...(roleTargetType && { roleTargetType }),
401
- },
402
- },
403
- });
404
- if (result.error) {
405
- const error = result.error;
406
- // Check for pagination out-of-bounds error
407
- const errorMessage = error.errors?.[0]?.message || error.error?.message;
408
- if (errorMessage?.includes('fromIndex') && errorMessage?.includes('toIndex')) {
409
- throw new Error(`Page ${page} is out of bounds. The requested page exceeds the available data. Try a lower page number.`);
410
- }
411
- throw new Error(errorMessage || `Failed to list roles: ${JSON.stringify(result.error)}`);
412
- }
413
- return result.data || { content: [] };
414
- }
415
- /**
416
- * Creates a typed Account Manager API Clients API client.
417
- *
418
- * @param config - Account Manager client configuration
419
- * @param auth - Authentication strategy (typically OAuth)
420
- * @returns Typed openapi-fetch client for API Clients API
421
- */
422
- export function createAccountManagerApiClientsClient(config, auth) {
423
- const hostname = config.hostname ?? DEFAULT_ACCOUNT_MANAGER_HOST;
424
- const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
425
- const client = createClient({
426
- baseUrl: `https://${hostname}`,
427
- });
428
- client.use(createAuthMiddleware(auth));
429
- client.use(createPageableTransformMiddleware());
430
- for (const middleware of registry.getMiddleware('am-apiclients-api')) {
431
- client.use(middleware);
432
- }
433
- client.use(createLoggingMiddleware('AM-APICLIENTS'));
434
- return client;
435
- }
436
- /**
437
- * Lists API clients with pagination.
438
- */
439
- export async function listApiClients(client, options = {}) {
440
- const { size = 20, page = 0 } = options;
441
- const result = await client.GET('/dw/rest/v1/apiclients', {
442
- params: {
443
- query: {
444
- pageable: {
445
- size,
446
- page,
447
- },
448
- },
449
- },
450
- });
451
- if (result.error) {
452
- const error = result.error;
453
- const errorMessage = error.errors?.[0]?.message || error.error?.message;
454
- throw new Error(errorMessage || `Failed to list API clients: ${JSON.stringify(result.error)}`);
455
- }
456
- return result.data || { content: [] };
457
- }
458
- /**
459
- * Retrieves an API client by ID.
460
- */
461
- export async function getApiClient(client, apiClientId, expand) {
462
- const result = await client.GET('/dw/rest/v1/apiclients/{apiClientId}', {
463
- params: {
464
- path: { apiClientId },
465
- query: expand && expand.length > 0 ? { expand } : undefined,
466
- },
467
- });
468
- if (result.error) {
469
- const error = result.error;
470
- if (result.response?.status === 404) {
471
- throw new Error(`API client ${apiClientId} not found`);
472
- }
473
- throw new Error(error.error?.message || `Failed to get API client: ${JSON.stringify(result.error)}`);
474
- }
475
- if (!result.data) {
476
- throw new Error('No data returned from API');
477
- }
478
- return result.data;
479
- }
480
- /**
481
- * Creates a new API client.
482
- * Omits active when false so the API uses its default (inactive); some implementations
483
- * reject or mishandle explicit active: false and return "invalid argument APIClient".
484
- */
485
- export async function createApiClient(client, body) {
486
- const wireBody = body.active === false
487
- ? (() => {
488
- const { active: _a, ...rest } = body;
489
- return rest;
490
- })()
491
- : body;
492
- const result = await client.POST('/dw/rest/v1/apiclients', {
493
- body: wireBody,
494
- });
495
- if (result.error) {
496
- const err = result.error;
497
- const first = err.errors?.[0];
498
- const fieldHint = first?.fieldErrors
499
- ?.map((fe) => `${fe.field}: ${fe.defaultMessage ?? ''}`)
500
- .filter(Boolean)
501
- .join('; ') || first?.field;
502
- const errorMessage = fieldHint
503
- ? `${first?.message ?? err.error?.message ?? 'Bad Request'} (${fieldHint})`
504
- : (first?.message ?? err.error?.message);
505
- throw new Error(errorMessage || `Failed to create API client: ${JSON.stringify(result.error)}`);
506
- }
507
- if (!result.data) {
508
- throw new Error('No data returned from API');
509
- }
510
- return result.data;
511
- }
512
- /**
513
- * Updates an existing API client.
514
- */
515
- export async function updateApiClient(client, apiClientId, body) {
516
- const result = await client.PUT('/dw/rest/v1/apiclients/{apiClientId}', {
517
- params: { path: { apiClientId } },
518
- body,
519
- });
520
- if (result.error) {
521
- const err = result.error;
522
- const first = err.errors?.[0];
523
- const fieldHint = first?.fieldErrors
524
- ?.map((fe) => `${fe.field}: ${fe.defaultMessage ?? ''}`)
525
- .filter(Boolean)
526
- .join('; ') || first?.field;
527
- const errorMessage = fieldHint
528
- ? `${first?.message ?? err.error?.message ?? 'Invalid request'} (${fieldHint})`
529
- : (first?.message ?? err.error?.message);
530
- throw new Error(errorMessage || `Failed to update API client: ${JSON.stringify(result.error)}`);
531
- }
532
- if (!result.data) {
533
- throw new Error('No data returned from API');
534
- }
535
- return result.data;
536
- }
537
- /**
538
- * Deletes an API client. Only clients disabled for at least 7 days can be deleted.
539
- */
540
- export async function deleteApiClient(client, apiClientId) {
541
- const result = await client.DELETE('/dw/rest/v1/apiclients/{apiClientId}', {
542
- params: { path: { apiClientId } },
543
- });
544
- if (result.error) {
545
- const error = result.error;
546
- if (result.response?.status === 412) {
547
- throw new Error('API client must be disabled for at least 7 days before it can be deleted.');
548
- }
549
- throw new Error(error.error?.message || `Failed to delete API client: ${JSON.stringify(result.error)}`);
550
- }
551
- }
552
- /**
553
- * Changes the password for an API client.
554
- */
555
- export async function changeApiClientPassword(client, apiClientId, oldPassword, newPassword) {
556
- const result = await client.PUT('/dw/rest/v1/apiclients/{apiClientId}/password', {
557
- params: { path: { apiClientId } },
558
- body: { old: oldPassword, new: newPassword },
559
- });
560
- if (result.error) {
561
- const error = result.error;
562
- throw new Error(error.error?.message || `Failed to change API client password: ${JSON.stringify(result.error)}`);
563
- }
564
- }
565
- /**
566
- * Transforms the API organization representation to an external format.
567
- * Removes internal properties like 'links' that should not be exposed.
568
- *
569
- * @param org - The original organization object
570
- * @returns The transformed organization object
571
- */
572
- function toExternalOrg(org) {
573
- // Create a copy to avoid mutating the original
574
- const transformed = { ...org };
575
- // Always delete the links property
576
- delete transformed.links;
577
- return transformed;
578
- }
579
- /**
580
- * Creates an Account Manager Organizations API client.
581
- *
582
- * @param config - Account Manager Organizations client configuration
583
- * @param auth - Authentication strategy (typically OAuth)
584
- * @returns Organizations API client
585
- *
586
- * @example
587
- * const oauthStrategy = new OAuthStrategy({
588
- * clientId: 'your-client-id',
589
- * clientSecret: 'your-client-secret',
590
- * });
591
- *
592
- * const client = createAccountManagerOrgsClient({}, oauthStrategy);
593
- *
594
- * // List organizations
595
- * const orgs = await client.listOrgs({ size: 25, page: 0 });
596
- *
597
- * // Get organization by ID
598
- * const org = await client.getOrg('org-id');
599
- */
600
- export function createAccountManagerOrgsClient(config, auth) {
601
- const hostname = config.hostname ?? DEFAULT_ACCOUNT_MANAGER_HOST;
602
- const baseUrl = `https://${hostname}/dw/rest/v1`;
603
- const logger = getLogger();
604
- const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
605
- // Get middleware from registry for am-orgs-api
606
- const pluginMiddleware = registry.getMiddleware('am-orgs-api');
607
- /**
608
- * Applies middleware chain to a request.
609
- * Adapts openapi-fetch middleware to work with fetch requests.
610
- */
611
- async function applyMiddleware(request) {
612
- let processedRequest = request;
613
- // Apply auth middleware (core)
614
- if (auth.getAuthorizationHeader) {
615
- const authHeader = await auth.getAuthorizationHeader();
616
- processedRequest.headers.set('Authorization', authHeader);
617
- }
618
- // Apply plugin middleware from registry
619
- for (const middleware of pluginMiddleware) {
620
- if (middleware.onRequest) {
621
- // Create minimal openapi-fetch context
622
- const result = await middleware.onRequest({
623
- request: processedRequest,
624
- schemaPath: '',
625
- params: {},
626
- id: '',
627
- options: {
628
- baseUrl: baseUrl,
629
- parseAs: 'json',
630
- querySerializer: (params) => new URLSearchParams(params).toString(),
631
- bodySerializer: JSON.stringify,
632
- fetch: fetch,
633
- },
634
- });
635
- // Middleware can return Request or Response, but we only want Request here
636
- if (result && result instanceof Request) {
637
- processedRequest = result;
638
- }
639
- }
640
- }
641
- // Apply logging middleware (last, so it sees all modifications)
642
- logger.debug({ method: processedRequest.method, url: processedRequest.url }, '[AM-ORGS] Making request');
643
- logger.trace({
644
- method: processedRequest.method,
645
- url: processedRequest.url,
646
- headers: (() => {
647
- const o = {};
648
- processedRequest.headers.forEach((value, key) => {
649
- o[key] = value;
650
- });
651
- return o;
652
- })(),
653
- }, '[AM-ORGS] Request details');
654
- return processedRequest;
655
- }
656
- /**
657
- * Applies middleware chain to a response.
658
- */
659
- async function processResponse(request, response) {
660
- let processedResponse = response;
661
- // Apply plugin middleware from registry
662
- for (const middleware of pluginMiddleware) {
663
- if (middleware.onResponse) {
664
- const result = await middleware.onResponse({
665
- request,
666
- response: processedResponse,
667
- schemaPath: '',
668
- params: {},
669
- id: '',
670
- options: {
671
- baseUrl: baseUrl,
672
- parseAs: 'json',
673
- querySerializer: (params) => new URLSearchParams(params).toString(),
674
- bodySerializer: JSON.stringify,
675
- fetch: fetch,
676
- },
677
- });
678
- if (result) {
679
- processedResponse = result;
680
- }
681
- }
682
- }
683
- // Apply logging middleware (last)
684
- logger.debug({ method: request.method, url: request.url, status: processedResponse.status }, '[AM-ORGS] Received response');
685
- return processedResponse;
686
- }
687
- /**
688
- * Makes an authenticated request to the Account Manager API with middleware support.
689
- */
690
- async function makeRequest(path, options = {}) {
691
- const url = `${baseUrl}${path}`;
692
- let request = new Request(url, {
693
- ...options,
694
- headers: new Headers(options.headers),
695
- });
696
- // Apply middleware chain to request
697
- request = await applyMiddleware(request);
698
- const response = await fetch(request);
699
- // Apply middleware chain to response
700
- const processedResponse = await processResponse(request, response);
701
- // Handle errors
702
- if (processedResponse.status === 401) {
703
- throw new Error('Authentication invalid. Please (re-)authenticate.');
704
- }
705
- if (processedResponse.status === 403) {
706
- throw new Error('Operation forbidden. Please make sure you have the permission to perform this operation.');
707
- }
708
- if (processedResponse.status >= 400) {
709
- throw new Error(`Operation failed. Error code ${processedResponse.status}`);
710
- }
711
- if (!processedResponse.ok) {
712
- throw new Error(`Request failed: ${processedResponse.statusText}`);
713
- }
714
- return processedResponse.json();
715
- }
716
- return {
717
- async getOrg(orgId) {
718
- logger.debug({ orgId }, '[AM-ORGS] Getting organization by ID');
719
- try {
720
- const org = await makeRequest(`/organizations/${orgId}`);
721
- return toExternalOrg(org);
722
- }
723
- catch (error) {
724
- if (error instanceof Error && error.message.includes('Error code 404')) {
725
- throw new Error(`Organization ${orgId} not found`);
726
- }
727
- throw error;
728
- }
729
- },
730
- async getOrgByName(name) {
731
- logger.debug({ name }, '[AM-ORGS] Getting organization by name');
732
- const encodedName = encodeURIComponent(name);
733
- let result;
734
- try {
735
- result = await makeRequest(`/organizations/search/findByName?startsWith=${encodedName}&ignoreCase=false`);
736
- }
737
- catch (error) {
738
- if (error instanceof Error && error.message.includes('Error code 404')) {
739
- throw new Error(`Organization ${name} not found`);
740
- }
741
- throw error;
742
- }
743
- if (result.content.length === 0) {
744
- throw new Error(`Organization ${name} not found`);
745
- }
746
- if (result.content.length > 1) {
747
- // Attempt to find exact match
748
- const exactMatch = result.content.find((org) => org.name === name);
749
- if (exactMatch) {
750
- return toExternalOrg(exactMatch);
751
- }
752
- throw new Error(`Organization name "${name}" is ambiguous. Multiple organizations found.`);
753
- }
754
- return toExternalOrg(result.content[0]);
755
- },
756
- async listOrgs(options = {}) {
757
- const { size = 25, page = 0, all = false } = options;
758
- const pageSize = all ? 5000 : size;
759
- logger.debug({ size: pageSize, page }, '[AM-ORGS] Listing organizations');
760
- const result = await makeRequest(`/organizations?page=${page}&size=${pageSize}`);
761
- // Remove links from all organizations in the collection
762
- return {
763
- ...result,
764
- content: result.content.map((org) => toExternalOrg(org)),
765
- };
766
- },
767
- };
768
- }
769
- // ============================================================================
770
- // Shared Utilities
771
- // ============================================================================
772
- /**
773
- * Middleware to transform pageable query parameters from bracket notation
774
- * (pageable[size]=X&pageable[page]=Y) to flattened format (size=X&page=Y)
775
- * that the Account Manager API expects.
776
- */
777
- function createPageableTransformMiddleware() {
778
- const logger = getLogger();
779
- return {
780
- async onRequest({ request }) {
781
- const url = new URL(request.url);
782
- // Check if URL has pageable[size] or pageable[page] parameters
783
- const pageableSize = url.searchParams.get('pageable[size]');
784
- const pageablePage = url.searchParams.get('pageable[page]');
785
- if (pageableSize !== null || pageablePage !== null) {
786
- // Remove the bracket notation parameters
787
- url.searchParams.delete('pageable[size]');
788
- url.searchParams.delete('pageable[page]');
789
- // Add flattened parameters
790
- if (pageableSize !== null) {
791
- url.searchParams.set('size', pageableSize);
792
- }
793
- if (pageablePage !== null) {
794
- url.searchParams.set('page', pageablePage);
795
- }
796
- logger.trace({
797
- originalUrl: request.url,
798
- transformedUrl: url.toString(),
799
- size: pageableSize,
800
- page: pageablePage,
801
- }, '[AM] Transformed pageable query parameters from bracket to flattened notation');
802
- return new Request(url.toString(), {
803
- method: request.method,
804
- headers: request.headers,
805
- body: request.body,
806
- });
807
- }
808
- return request;
809
- },
810
- };
811
- }
812
- /**
813
- * Creates a unified Account Manager API client.
814
- *
815
- * This client provides direct access to all Account Manager API methods (users, roles, orgs)
816
- * through a single interface, while internally using separate typed clients for type safety.
817
- *
818
- * @param config - Account Manager client configuration
819
- * @param auth - Authentication strategy (typically OAuth)
820
- * @returns Unified Account Manager client
821
- *
822
- * @example
823
- * const oauthStrategy = new OAuthStrategy({
824
- * clientId: 'your-client-id',
825
- * clientSecret: 'your-client-secret',
826
- * });
827
- *
828
- * const client = createAccountManagerClient({}, oauthStrategy);
829
- *
830
- * // Users API
831
- * const users = await client.listUsers({ size: 25, page: 0 });
832
- * const user = await client.getUser('user-id');
833
- * await client.createUser({ mail: 'user@example.com', ... });
834
- *
835
- * // Roles API
836
- * const roles = await client.listRoles({ size: 20, page: 0 });
837
- * const role = await client.getRole('bm-admin');
838
- *
839
- * // Organizations API
840
- * const orgs = await client.listOrgs({ size: 25, page: 0 });
841
- * const org = await client.getOrg('org-id');
842
- */
843
- export function createAccountManagerClient(config, auth) {
844
- const logger = getLogger();
845
- // Create internal clients (all use the same config, however, specifications are different)
846
- const usersClient = createAccountManagerUsersClient(config, auth);
847
- const rolesClient = createAccountManagerRolesClient(config, auth);
848
- const apiClientsClient = createAccountManagerApiClientsClient(config, auth);
849
- const orgsClient = createAccountManagerOrgsClient(config, auth);
850
- // Lazily cached role mapping
851
- let cachedRoleMapping;
852
- async function getRoleMapping() {
853
- if (!cachedRoleMapping) {
854
- cachedRoleMapping = await fetchRoleMapping(rolesClient);
855
- }
856
- return cachedRoleMapping;
857
- }
858
- // Lazily cached org mapping
859
- let cachedOrgMapping;
860
- async function getOrgMapping() {
861
- if (!cachedOrgMapping) {
862
- const result = await orgsClient.listOrgs({ all: true });
863
- const byId = new Map();
864
- for (const org of result.content || []) {
865
- if (org.id && org.name) {
866
- byId.set(org.id, org.name);
867
- }
868
- }
869
- cachedOrgMapping = { byId };
870
- }
871
- return cachedOrgMapping;
872
- }
873
- // Return unified client with all methods
874
- return {
875
- // Users API methods
876
- getUser: (userId, expand) => getUser(usersClient, userId, expand),
877
- listUsers: (options) => listUsers(usersClient, options),
878
- createUser: (user) => createUser(usersClient, user),
879
- updateUser: (userId, changes) => updateUser(usersClient, userId, changes),
880
- deleteUser: (userId) => deleteUser(usersClient, userId),
881
- purgeUser: (userId) => purgeUser(usersClient, userId),
882
- resetUser: (userId) => resetUser(usersClient, userId),
883
- findUserByLogin: (login, expand) => findUserByLogin(usersClient, login, expand),
884
- grantRole: async (userId, role, scope) => {
885
- const roleMapping = await getRoleMapping();
886
- // Resolve to both formats: role ID for roles array, roleEnumName for roleTenantFilter
887
- const enumName = resolveToInternalRole(role, roleMapping);
888
- const roleId = resolveFromInternalRole(enumName, roleMapping);
889
- logger.debug({ role, roleId, enumName }, `[AM] Resolved role '${role}' → id='${roleId}', enum='${enumName}'`);
890
- const user = await getUser(usersClient, userId);
891
- // Build updated roles (uses role ID format, e.g. 'bm-admin')
892
- const currentRoles = Array.isArray(user.roles)
893
- ? user.roles.map((r) => (typeof r === 'string' ? r : r.id || ''))
894
- : [];
895
- const updatedRoles = currentRoles.includes(roleId) ? currentRoles : [...currentRoles, roleId];
896
- // Build updated roleTenantFilter (uses roleEnumName format, e.g. 'ECOM_ADMIN')
897
- let roleTenantFilter = user.roleTenantFilter || '';
898
- if (scope) {
899
- const scopes = scope.split(',');
900
- // Parse existing filter
901
- const filters = roleTenantFilter.split(';').filter(Boolean);
902
- const filterMap = new Map();
903
- for (const filter of filters) {
904
- const [r, tenants] = filter.split(':');
905
- if (tenants) {
906
- filterMap.set(r, tenants.split(','));
907
- }
908
- }
909
- // Add new scopes
910
- const existingScopes = filterMap.get(enumName) || [];
911
- const allScopes = [...new Set([...existingScopes, ...scopes])];
912
- filterMap.set(enumName, allScopes);
913
- // Rebuild filter string
914
- roleTenantFilter = Array.from(filterMap.entries())
915
- .map(([r, tenants]) => `${r}:${tenants.join(',')}`)
916
- .join(';');
917
- }
918
- return updateUser(usersClient, userId, {
919
- roles: updatedRoles,
920
- roleTenantFilter: roleTenantFilter || undefined,
921
- });
922
- },
923
- revokeRole: async (userId, role, scope) => {
924
- const roleMapping = await getRoleMapping();
925
- const enumName = resolveToInternalRole(role, roleMapping);
926
- const roleId = resolveFromInternalRole(enumName, roleMapping);
927
- logger.debug({ role, roleId, enumName }, `[AM] Resolved role '${role}' → id='${roleId}', enum='${enumName}'`);
928
- const user = await getUser(usersClient, userId);
929
- // Build updated roles (uses role ID format, e.g. 'bm-admin')
930
- const currentRoles = Array.isArray(user.roles)
931
- ? user.roles.map((r) => (typeof r === 'string' ? r : r.id || ''))
932
- : [];
933
- let updatedRoles = currentRoles;
934
- // Build updated roleTenantFilter (uses roleEnumName format, e.g. 'ECOM_ADMIN')
935
- let roleTenantFilter = user.roleTenantFilter || '';
936
- if (!scope) {
937
- // Remove entire role
938
- updatedRoles = currentRoles.filter((r) => r !== roleId);
939
- // Remove role from filter
940
- const filters = roleTenantFilter.split(';').filter(Boolean);
941
- roleTenantFilter = filters.filter((filter) => !filter.startsWith(`${enumName}:`)).join(';');
942
- }
943
- else {
944
- // Remove specific scope
945
- const scopes = scope.split(',');
946
- const filters = roleTenantFilter.split(';').filter(Boolean);
947
- const filterMap = new Map();
948
- for (const filter of filters) {
949
- const [r, tenants] = filter.split(':');
950
- if (tenants) {
951
- filterMap.set(r, tenants.split(','));
952
- }
953
- }
954
- const existingScopes = filterMap.get(enumName) || [];
955
- const remainingScopes = existingScopes.filter((s) => !scopes.includes(s));
956
- if (remainingScopes.length === 0) {
957
- // No scopes left, remove role entirely
958
- updatedRoles = currentRoles.filter((r) => r !== roleId);
959
- filterMap.delete(enumName);
960
- }
961
- else {
962
- filterMap.set(enumName, remainingScopes);
963
- }
964
- // Rebuild filter string
965
- roleTenantFilter = Array.from(filterMap.entries())
966
- .map(([r, tenants]) => `${r}:${tenants.join(',')}`)
967
- .join(';');
968
- }
969
- return updateUser(usersClient, userId, {
970
- roles: updatedRoles,
971
- roleTenantFilter: roleTenantFilter || undefined,
972
- });
973
- },
974
- // Roles API methods
975
- getRole: (roleId) => getRole(rolesClient, roleId),
976
- listRoles: (options) => listRoles(rolesClient, options),
977
- getRoleMapping: () => getRoleMapping(),
978
- getOrgMapping: () => getOrgMapping(),
979
- // API Clients API methods
980
- listApiClients: (options) => listApiClients(apiClientsClient, options),
981
- getApiClient: (apiClientId, expand) => getApiClient(apiClientsClient, apiClientId, expand),
982
- createApiClient: (body) => createApiClient(apiClientsClient, body),
983
- updateApiClient: (apiClientId, body) => updateApiClient(apiClientsClient, apiClientId, body),
984
- deleteApiClient: (apiClientId) => deleteApiClient(apiClientsClient, apiClientId),
985
- changeApiClientPassword: (apiClientId, oldPassword, newPassword) => changeApiClientPassword(apiClientsClient, apiClientId, oldPassword, newPassword),
986
- // Organizations API methods
987
- getOrg: (orgId) => orgsClient.getOrg(orgId),
988
- getOrgByName: (name) => orgsClient.getOrgByName(name),
989
- listOrgs: (options) => orgsClient.listOrgs(options),
990
- };
991
- }
992
- //# sourceMappingURL=am-api.js.map