@salesforce/b2c-tooling-sdk 1.10.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 (638) hide show
  1. package/data/content-schemas/componenttype.json +37 -0
  2. package/dist/esm/operations/content/validate.js +46 -4
  3. package/dist/esm/operations/content/validate.js.map +1 -1
  4. package/dist/esm/operations/jobs/site-archive.d.ts +12 -0
  5. package/dist/esm/operations/jobs/site-archive.js +107 -3
  6. package/dist/esm/operations/jobs/site-archive.js.map +1 -1
  7. package/package.json +73 -285
  8. package/dist/cjs/auth/api-key.d.ts +0 -28
  9. package/dist/cjs/auth/api-key.js +0 -45
  10. package/dist/cjs/auth/api-key.js.map +0 -1
  11. package/dist/cjs/auth/basic.d.ts +0 -7
  12. package/dist/cjs/auth/basic.js +0 -20
  13. package/dist/cjs/auth/basic.js.map +0 -1
  14. package/dist/cjs/auth/index.d.ts +0 -74
  15. package/dist/cjs/auth/index.js +0 -76
  16. package/dist/cjs/auth/index.js.map +0 -1
  17. package/dist/cjs/auth/jwt-utils.d.ts +0 -25
  18. package/dist/cjs/auth/jwt-utils.js +0 -66
  19. package/dist/cjs/auth/jwt-utils.js.map +0 -1
  20. package/dist/cjs/auth/middleware.d.ts +0 -196
  21. package/dist/cjs/auth/middleware.js +0 -190
  22. package/dist/cjs/auth/middleware.js.map +0 -1
  23. package/dist/cjs/auth/oauth-implicit.d.ts +0 -89
  24. package/dist/cjs/auth/oauth-implicit.js +0 -350
  25. package/dist/cjs/auth/oauth-implicit.js.map +0 -1
  26. package/dist/cjs/auth/oauth-jwt.d.ts +0 -99
  27. package/dist/cjs/auth/oauth-jwt.js +0 -343
  28. package/dist/cjs/auth/oauth-jwt.js.map +0 -1
  29. package/dist/cjs/auth/oauth.d.ts +0 -88
  30. package/dist/cjs/auth/oauth.js +0 -252
  31. package/dist/cjs/auth/oauth.js.map +0 -1
  32. package/dist/cjs/auth/resolve.d.ts +0 -100
  33. package/dist/cjs/auth/resolve.js +0 -175
  34. package/dist/cjs/auth/resolve.js.map +0 -1
  35. package/dist/cjs/auth/stateful-oauth-strategy.d.ts +0 -39
  36. package/dist/cjs/auth/stateful-oauth-strategy.js +0 -130
  37. package/dist/cjs/auth/stateful-oauth-strategy.js.map +0 -1
  38. package/dist/cjs/auth/stateful-store.d.ts +0 -49
  39. package/dist/cjs/auth/stateful-store.js +0 -166
  40. package/dist/cjs/auth/stateful-store.js.map +0 -1
  41. package/dist/cjs/auth/types.d.ts +0 -124
  42. package/dist/cjs/auth/types.js +0 -8
  43. package/dist/cjs/auth/types.js.map +0 -1
  44. package/dist/cjs/cli/am-command.d.ts +0 -74
  45. package/dist/cjs/cli/am-command.js +0 -199
  46. package/dist/cjs/cli/am-command.js.map +0 -1
  47. package/dist/cjs/cli/base-command.d.ts +0 -232
  48. package/dist/cjs/cli/base-command.js +0 -695
  49. package/dist/cjs/cli/base-command.js.map +0 -1
  50. package/dist/cjs/cli/cartridge-command.d.ts +0 -67
  51. package/dist/cjs/cli/cartridge-command.js +0 -146
  52. package/dist/cjs/cli/cartridge-command.js.map +0 -1
  53. package/dist/cjs/cli/cartridge-providers.d.ts +0 -149
  54. package/dist/cjs/cli/cartridge-providers.js +0 -103
  55. package/dist/cjs/cli/cartridge-providers.js.map +0 -1
  56. package/dist/cjs/cli/columns.d.ts +0 -128
  57. package/dist/cjs/cli/columns.js +0 -128
  58. package/dist/cjs/cli/columns.js.map +0 -1
  59. package/dist/cjs/cli/config.d.ts +0 -159
  60. package/dist/cjs/cli/config.js +0 -185
  61. package/dist/cjs/cli/config.js.map +0 -1
  62. package/dist/cjs/cli/details.d.ts +0 -69
  63. package/dist/cjs/cli/details.js +0 -72
  64. package/dist/cjs/cli/details.js.map +0 -1
  65. package/dist/cjs/cli/hooks.d.ts +0 -324
  66. package/dist/cjs/cli/hooks.js +0 -3
  67. package/dist/cjs/cli/hooks.js.map +0 -1
  68. package/dist/cjs/cli/index.d.ts +0 -108
  69. package/dist/cjs/cli/index.js +0 -111
  70. package/dist/cjs/cli/index.js.map +0 -1
  71. package/dist/cjs/cli/instance-command.d.ts +0 -131
  72. package/dist/cjs/cli/instance-command.js +0 -214
  73. package/dist/cjs/cli/instance-command.js.map +0 -1
  74. package/dist/cjs/cli/job-command.d.ts +0 -32
  75. package/dist/cjs/cli/job-command.js +0 -60
  76. package/dist/cjs/cli/job-command.js.map +0 -1
  77. package/dist/cjs/cli/lifecycle.d.ts +0 -189
  78. package/dist/cjs/cli/lifecycle.js +0 -130
  79. package/dist/cjs/cli/lifecycle.js.map +0 -1
  80. package/dist/cjs/cli/mrt-command.d.ts +0 -57
  81. package/dist/cjs/cli/mrt-command.js +0 -95
  82. package/dist/cjs/cli/mrt-command.js.map +0 -1
  83. package/dist/cjs/cli/oauth-command.d.ts +0 -122
  84. package/dist/cjs/cli/oauth-command.js +0 -311
  85. package/dist/cjs/cli/oauth-command.js.map +0 -1
  86. package/dist/cjs/cli/ods-command.d.ts +0 -97
  87. package/dist/cjs/cli/ods-command.js +0 -136
  88. package/dist/cjs/cli/ods-command.js.map +0 -1
  89. package/dist/cjs/cli/table.d.ts +0 -113
  90. package/dist/cjs/cli/table.js +0 -175
  91. package/dist/cjs/cli/table.js.map +0 -1
  92. package/dist/cjs/cli/webdav-command.d.ts +0 -110
  93. package/dist/cjs/cli/webdav-command.js +0 -106
  94. package/dist/cjs/cli/webdav-command.js.map +0 -1
  95. package/dist/cjs/clients/am-api.d.ts +0 -521
  96. package/dist/cjs/clients/am-api.js +0 -992
  97. package/dist/cjs/clients/am-api.js.map +0 -1
  98. package/dist/cjs/clients/am-apiclients-api.generated.d.ts +0 -803
  99. package/dist/cjs/clients/am-apiclients-api.generated.js +0 -6
  100. package/dist/cjs/clients/am-apiclients-api.generated.js.map +0 -1
  101. package/dist/cjs/clients/am-roles-api.generated.d.ts +0 -298
  102. package/dist/cjs/clients/am-roles-api.generated.js +0 -6
  103. package/dist/cjs/clients/am-roles-api.generated.js.map +0 -1
  104. package/dist/cjs/clients/am-users-api.generated.d.ts +0 -954
  105. package/dist/cjs/clients/am-users-api.generated.js +0 -6
  106. package/dist/cjs/clients/am-users-api.generated.js.map +0 -1
  107. package/dist/cjs/clients/cdn-zones.d.ts +0 -186
  108. package/dist/cjs/clients/cdn-zones.generated.d.ts +0 -8330
  109. package/dist/cjs/clients/cdn-zones.generated.js +0 -6
  110. package/dist/cjs/clients/cdn-zones.generated.js.map +0 -1
  111. package/dist/cjs/clients/cdn-zones.js +0 -103
  112. package/dist/cjs/clients/cdn-zones.js.map +0 -1
  113. package/dist/cjs/clients/cip.d.ts +0 -162
  114. package/dist/cjs/clients/cip.js +0 -572
  115. package/dist/cjs/clients/cip.js.map +0 -1
  116. package/dist/cjs/clients/custom-apis.d.ts +0 -174
  117. package/dist/cjs/clients/custom-apis.generated.d.ts +0 -202
  118. package/dist/cjs/clients/custom-apis.generated.js +0 -6
  119. package/dist/cjs/clients/custom-apis.generated.js.map +0 -1
  120. package/dist/cjs/clients/custom-apis.js +0 -140
  121. package/dist/cjs/clients/custom-apis.js.map +0 -1
  122. package/dist/cjs/clients/error-utils.d.ts +0 -35
  123. package/dist/cjs/clients/error-utils.js +0 -69
  124. package/dist/cjs/clients/error-utils.js.map +0 -1
  125. package/dist/cjs/clients/granular-replications.d.ts +0 -70
  126. package/dist/cjs/clients/granular-replications.generated.d.ts +0 -416
  127. package/dist/cjs/clients/granular-replications.generated.js +0 -6
  128. package/dist/cjs/clients/granular-replications.generated.js.map +0 -1
  129. package/dist/cjs/clients/granular-replications.js +0 -73
  130. package/dist/cjs/clients/granular-replications.js.map +0 -1
  131. package/dist/cjs/clients/index.d.ts +0 -145
  132. package/dist/cjs/clients/index.js +0 -137
  133. package/dist/cjs/clients/index.js.map +0 -1
  134. package/dist/cjs/clients/middleware-registry.d.ts +0 -184
  135. package/dist/cjs/clients/middleware-registry.js +0 -104
  136. package/dist/cjs/clients/middleware-registry.js.map +0 -1
  137. package/dist/cjs/clients/middleware.d.ts +0 -183
  138. package/dist/cjs/clients/middleware.js +0 -465
  139. package/dist/cjs/clients/middleware.js.map +0 -1
  140. package/dist/cjs/clients/mrt-b2c.d.ts +0 -138
  141. package/dist/cjs/clients/mrt-b2c.generated.d.ts +0 -176
  142. package/dist/cjs/clients/mrt-b2c.generated.js +0 -6
  143. package/dist/cjs/clients/mrt-b2c.generated.js.map +0 -1
  144. package/dist/cjs/clients/mrt-b2c.js +0 -86
  145. package/dist/cjs/clients/mrt-b2c.js.map +0 -1
  146. package/dist/cjs/clients/mrt.d.ts +0 -143
  147. package/dist/cjs/clients/mrt.generated.d.ts +0 -3806
  148. package/dist/cjs/clients/mrt.generated.js +0 -6
  149. package/dist/cjs/clients/mrt.generated.js.map +0 -1
  150. package/dist/cjs/clients/mrt.js +0 -93
  151. package/dist/cjs/clients/mrt.js.map +0 -1
  152. package/dist/cjs/clients/ocapi.d.ts +0 -128
  153. package/dist/cjs/clients/ocapi.generated.d.ts +0 -26052
  154. package/dist/cjs/clients/ocapi.generated.js +0 -6
  155. package/dist/cjs/clients/ocapi.generated.js.map +0 -1
  156. package/dist/cjs/clients/ocapi.js +0 -78
  157. package/dist/cjs/clients/ocapi.js.map +0 -1
  158. package/dist/cjs/clients/ods.d.ts +0 -160
  159. package/dist/cjs/clients/ods.generated.d.ts +0 -2860
  160. package/dist/cjs/clients/ods.generated.js +0 -6
  161. package/dist/cjs/clients/ods.generated.js.map +0 -1
  162. package/dist/cjs/clients/ods.js +0 -103
  163. package/dist/cjs/clients/ods.js.map +0 -1
  164. package/dist/cjs/clients/scapi-schemas.d.ts +0 -161
  165. package/dist/cjs/clients/scapi-schemas.generated.d.ts +0 -328
  166. package/dist/cjs/clients/scapi-schemas.generated.js +0 -6
  167. package/dist/cjs/clients/scapi-schemas.generated.js.map +0 -1
  168. package/dist/cjs/clients/scapi-schemas.js +0 -98
  169. package/dist/cjs/clients/scapi-schemas.js.map +0 -1
  170. package/dist/cjs/clients/slas-admin.d.ts +0 -132
  171. package/dist/cjs/clients/slas-admin.generated.d.ts +0 -1434
  172. package/dist/cjs/clients/slas-admin.generated.js +0 -6
  173. package/dist/cjs/clients/slas-admin.generated.js.map +0 -1
  174. package/dist/cjs/clients/slas-admin.js +0 -79
  175. package/dist/cjs/clients/slas-admin.js.map +0 -1
  176. package/dist/cjs/clients/tls-dispatcher.d.ts +0 -42
  177. package/dist/cjs/clients/tls-dispatcher.js +0 -107
  178. package/dist/cjs/clients/tls-dispatcher.js.map +0 -1
  179. package/dist/cjs/clients/user-agent.d.ts +0 -43
  180. package/dist/cjs/clients/user-agent.js +0 -87
  181. package/dist/cjs/clients/user-agent.js.map +0 -1
  182. package/dist/cjs/clients/webdav.d.ts +0 -186
  183. package/dist/cjs/clients/webdav.js +0 -395
  184. package/dist/cjs/clients/webdav.js.map +0 -1
  185. package/dist/cjs/config/config-source-registry.d.ts +0 -115
  186. package/dist/cjs/config/config-source-registry.js +0 -103
  187. package/dist/cjs/config/config-source-registry.js.map +0 -1
  188. package/dist/cjs/config/dw-json.d.ts +0 -274
  189. package/dist/cjs/config/dw-json.js +0 -333
  190. package/dist/cjs/config/dw-json.js.map +0 -1
  191. package/dist/cjs/config/index.d.ts +0 -100
  192. package/dist/cjs/config/index.js +0 -110
  193. package/dist/cjs/config/index.js.map +0 -1
  194. package/dist/cjs/config/instance-manager.d.ts +0 -97
  195. package/dist/cjs/config/instance-manager.js +0 -166
  196. package/dist/cjs/config/instance-manager.js.map +0 -1
  197. package/dist/cjs/config/mapping.d.ts +0 -199
  198. package/dist/cjs/config/mapping.js +0 -540
  199. package/dist/cjs/config/mapping.js.map +0 -1
  200. package/dist/cjs/config/resolved-config.d.ts +0 -29
  201. package/dist/cjs/config/resolved-config.js +0 -81
  202. package/dist/cjs/config/resolved-config.js.map +0 -1
  203. package/dist/cjs/config/resolver.d.ts +0 -191
  204. package/dist/cjs/config/resolver.js +0 -406
  205. package/dist/cjs/config/resolver.js.map +0 -1
  206. package/dist/cjs/config/sources/dw-json-source.d.ts +0 -27
  207. package/dist/cjs/config/sources/dw-json-source.js +0 -106
  208. package/dist/cjs/config/sources/dw-json-source.js.map +0 -1
  209. package/dist/cjs/config/sources/env-source.d.ts +0 -32
  210. package/dist/cjs/config/sources/env-source.js +0 -116
  211. package/dist/cjs/config/sources/env-source.js.map +0 -1
  212. package/dist/cjs/config/sources/index.d.ts +0 -9
  213. package/dist/cjs/config/sources/index.js +0 -15
  214. package/dist/cjs/config/sources/index.js.map +0 -1
  215. package/dist/cjs/config/sources/mobify-source.d.ts +0 -25
  216. package/dist/cjs/config/sources/mobify-source.js +0 -84
  217. package/dist/cjs/config/sources/mobify-source.js.map +0 -1
  218. package/dist/cjs/config/sources/package-json-source.d.ts +0 -14
  219. package/dist/cjs/config/sources/package-json-source.js +0 -97
  220. package/dist/cjs/config/sources/package-json-source.js.map +0 -1
  221. package/dist/cjs/config/types.d.ts +0 -428
  222. package/dist/cjs/config/types.js +0 -2
  223. package/dist/cjs/config/types.js.map +0 -1
  224. package/dist/cjs/defaults.d.ts +0 -36
  225. package/dist/cjs/defaults.js +0 -54
  226. package/dist/cjs/defaults.js.map +0 -1
  227. package/dist/cjs/discovery/detector.d.ts +0 -75
  228. package/dist/cjs/discovery/detector.js +0 -108
  229. package/dist/cjs/discovery/detector.js.map +0 -1
  230. package/dist/cjs/discovery/index.d.ts +0 -63
  231. package/dist/cjs/discovery/index.js +0 -70
  232. package/dist/cjs/discovery/index.js.map +0 -1
  233. package/dist/cjs/discovery/patterns/cartridges.d.ts +0 -16
  234. package/dist/cjs/discovery/patterns/cartridges.js +0 -16
  235. package/dist/cjs/discovery/patterns/cartridges.js.map +0 -1
  236. package/dist/cjs/discovery/patterns/index.d.ts +0 -21
  237. package/dist/cjs/discovery/patterns/index.js +0 -16
  238. package/dist/cjs/discovery/patterns/index.js.map +0 -1
  239. package/dist/cjs/discovery/patterns/pwa-kit.d.ts +0 -15
  240. package/dist/cjs/discovery/patterns/pwa-kit.js +0 -26
  241. package/dist/cjs/discovery/patterns/pwa-kit.js.map +0 -1
  242. package/dist/cjs/discovery/patterns/sfra.d.ts +0 -34
  243. package/dist/cjs/discovery/patterns/sfra.js +0 -50
  244. package/dist/cjs/discovery/patterns/sfra.js.map +0 -1
  245. package/dist/cjs/discovery/patterns/storefront-next.d.ts +0 -10
  246. package/dist/cjs/discovery/patterns/storefront-next.js +0 -65
  247. package/dist/cjs/discovery/patterns/storefront-next.js.map +0 -1
  248. package/dist/cjs/discovery/types.d.ts +0 -47
  249. package/dist/cjs/discovery/types.js +0 -12
  250. package/dist/cjs/discovery/types.js.map +0 -1
  251. package/dist/cjs/discovery/utils.d.ts +0 -44
  252. package/dist/cjs/discovery/utils.js +0 -82
  253. package/dist/cjs/discovery/utils.js.map +0 -1
  254. package/dist/cjs/docs/download.d.ts +0 -45
  255. package/dist/cjs/docs/download.js +0 -96
  256. package/dist/cjs/docs/download.js.map +0 -1
  257. package/dist/cjs/docs/index.d.ts +0 -44
  258. package/dist/cjs/docs/index.js +0 -12
  259. package/dist/cjs/docs/index.js.map +0 -1
  260. package/dist/cjs/docs/schema.d.ts +0 -26
  261. package/dist/cjs/docs/schema.js +0 -92
  262. package/dist/cjs/docs/schema.js.map +0 -1
  263. package/dist/cjs/docs/search.d.ts +0 -67
  264. package/dist/cjs/docs/search.js +0 -128
  265. package/dist/cjs/docs/search.js.map +0 -1
  266. package/dist/cjs/docs/types.d.ts +0 -64
  267. package/dist/cjs/docs/types.js +0 -15
  268. package/dist/cjs/docs/types.js.map +0 -1
  269. package/dist/cjs/errors/http-error.d.ts +0 -34
  270. package/dist/cjs/errors/http-error.js +0 -45
  271. package/dist/cjs/errors/http-error.js.map +0 -1
  272. package/dist/cjs/errors/index.d.ts +0 -12
  273. package/dist/cjs/errors/index.js +0 -18
  274. package/dist/cjs/errors/index.js.map +0 -1
  275. package/dist/cjs/i18n/index.d.ts +0 -144
  276. package/dist/cjs/i18n/index.js +0 -245
  277. package/dist/cjs/i18n/index.js.map +0 -1
  278. package/dist/cjs/i18n/locales/de.d.ts +0 -13
  279. package/dist/cjs/i18n/locales/de.js +0 -19
  280. package/dist/cjs/i18n/locales/de.js.map +0 -1
  281. package/dist/cjs/i18n/locales/index.d.ts +0 -28
  282. package/dist/cjs/i18n/locales/index.js +0 -25
  283. package/dist/cjs/i18n/locales/index.js.map +0 -1
  284. package/dist/cjs/index.d.ts +0 -33
  285. package/dist/cjs/index.js +0 -41
  286. package/dist/cjs/index.js.map +0 -1
  287. package/dist/cjs/instance/index.d.ts +0 -136
  288. package/dist/cjs/instance/index.js +0 -131
  289. package/dist/cjs/instance/index.js.map +0 -1
  290. package/dist/cjs/logging/index.d.ts +0 -116
  291. package/dist/cjs/logging/index.js +0 -121
  292. package/dist/cjs/logging/index.js.map +0 -1
  293. package/dist/cjs/logging/logger.d.ts +0 -9
  294. package/dist/cjs/logging/logger.js +0 -138
  295. package/dist/cjs/logging/logger.js.map +0 -1
  296. package/dist/cjs/logging/types.d.ts +0 -45
  297. package/dist/cjs/logging/types.js +0 -10
  298. package/dist/cjs/logging/types.js.map +0 -1
  299. package/dist/cjs/operations/bm-roles/index.d.ts +0 -52
  300. package/dist/cjs/operations/bm-roles/index.js +0 -57
  301. package/dist/cjs/operations/bm-roles/index.js.map +0 -1
  302. package/dist/cjs/operations/bm-roles/roles.d.ts +0 -155
  303. package/dist/cjs/operations/bm-roles/roles.js +0 -194
  304. package/dist/cjs/operations/bm-roles/roles.js.map +0 -1
  305. package/dist/cjs/operations/bm-users/index.d.ts +0 -50
  306. package/dist/cjs/operations/bm-users/index.js +0 -55
  307. package/dist/cjs/operations/bm-users/index.js.map +0 -1
  308. package/dist/cjs/operations/bm-users/users.d.ts +0 -189
  309. package/dist/cjs/operations/bm-users/users.js +0 -229
  310. package/dist/cjs/operations/bm-users/users.js.map +0 -1
  311. package/dist/cjs/operations/cap/index.d.ts +0 -56
  312. package/dist/cjs/operations/cap/index.js +0 -57
  313. package/dist/cjs/operations/cap/index.js.map +0 -1
  314. package/dist/cjs/operations/cap/install.d.ts +0 -53
  315. package/dist/cjs/operations/cap/install.js +0 -181
  316. package/dist/cjs/operations/cap/install.js.map +0 -1
  317. package/dist/cjs/operations/cap/list.d.ts +0 -92
  318. package/dist/cjs/operations/cap/list.js +0 -230
  319. package/dist/cjs/operations/cap/list.js.map +0 -1
  320. package/dist/cjs/operations/cap/package.d.ts +0 -39
  321. package/dist/cjs/operations/cap/package.js +0 -77
  322. package/dist/cjs/operations/cap/package.js.map +0 -1
  323. package/dist/cjs/operations/cap/pull.d.ts +0 -21
  324. package/dist/cjs/operations/cap/pull.js +0 -77
  325. package/dist/cjs/operations/cap/pull.js.map +0 -1
  326. package/dist/cjs/operations/cap/uninstall.d.ts +0 -46
  327. package/dist/cjs/operations/cap/uninstall.js +0 -87
  328. package/dist/cjs/operations/cap/uninstall.js.map +0 -1
  329. package/dist/cjs/operations/cap/validate.d.ts +0 -47
  330. package/dist/cjs/operations/cap/validate.js +0 -235
  331. package/dist/cjs/operations/cap/validate.js.map +0 -1
  332. package/dist/cjs/operations/cip/index.d.ts +0 -35
  333. package/dist/cjs/operations/cip/index.js +0 -128
  334. package/dist/cjs/operations/cip/index.js.map +0 -1
  335. package/dist/cjs/operations/cip/reports.d.ts +0 -2
  336. package/dist/cjs/operations/cip/reports.js +0 -210
  337. package/dist/cjs/operations/cip/reports.js.map +0 -1
  338. package/dist/cjs/operations/cip/types.d.ts +0 -97
  339. package/dist/cjs/operations/cip/types.js +0 -7
  340. package/dist/cjs/operations/cip/types.js.map +0 -1
  341. package/dist/cjs/operations/code/cartridges.d.ts +0 -46
  342. package/dist/cjs/operations/code/cartridges.js +0 -69
  343. package/dist/cjs/operations/code/cartridges.js.map +0 -1
  344. package/dist/cjs/operations/code/deploy.d.ts +0 -121
  345. package/dist/cjs/operations/code/deploy.js +0 -255
  346. package/dist/cjs/operations/code/deploy.js.map +0 -1
  347. package/dist/cjs/operations/code/download.d.ts +0 -77
  348. package/dist/cjs/operations/code/download.js +0 -300
  349. package/dist/cjs/operations/code/download.js.map +0 -1
  350. package/dist/cjs/operations/code/index.d.ts +0 -74
  351. package/dist/cjs/operations/code/index.js +0 -80
  352. package/dist/cjs/operations/code/index.js.map +0 -1
  353. package/dist/cjs/operations/code/upload-files.d.ts +0 -47
  354. package/dist/cjs/operations/code/upload-files.js +0 -116
  355. package/dist/cjs/operations/code/upload-files.js.map +0 -1
  356. package/dist/cjs/operations/code/versions.d.ts +0 -99
  357. package/dist/cjs/operations/code/versions.js +0 -156
  358. package/dist/cjs/operations/code/versions.js.map +0 -1
  359. package/dist/cjs/operations/code/watch.d.ts +0 -58
  360. package/dist/cjs/operations/code/watch.js +0 -175
  361. package/dist/cjs/operations/code/watch.js.map +0 -1
  362. package/dist/cjs/operations/content/asset-query.d.ts +0 -22
  363. package/dist/cjs/operations/content/asset-query.js +0 -77
  364. package/dist/cjs/operations/content/asset-query.js.map +0 -1
  365. package/dist/cjs/operations/content/export.d.ts +0 -57
  366. package/dist/cjs/operations/content/export.js +0 -221
  367. package/dist/cjs/operations/content/export.js.map +0 -1
  368. package/dist/cjs/operations/content/index.d.ts +0 -56
  369. package/dist/cjs/operations/content/index.js +0 -60
  370. package/dist/cjs/operations/content/index.js.map +0 -1
  371. package/dist/cjs/operations/content/library.d.ts +0 -137
  372. package/dist/cjs/operations/content/library.js +0 -396
  373. package/dist/cjs/operations/content/library.js.map +0 -1
  374. package/dist/cjs/operations/content/types.d.ts +0 -144
  375. package/dist/cjs/operations/content/types.js +0 -7
  376. package/dist/cjs/operations/content/types.js.map +0 -1
  377. package/dist/cjs/operations/content/validate.d.ts +0 -64
  378. package/dist/cjs/operations/content/validate.js +0 -170
  379. package/dist/cjs/operations/content/validate.js.map +0 -1
  380. package/dist/cjs/operations/debug/dap-adapter.d.ts +0 -72
  381. package/dist/cjs/operations/debug/dap-adapter.js +0 -505
  382. package/dist/cjs/operations/debug/dap-adapter.js.map +0 -1
  383. package/dist/cjs/operations/debug/debug-session.d.ts +0 -51
  384. package/dist/cjs/operations/debug/debug-session.js +0 -234
  385. package/dist/cjs/operations/debug/debug-session.js.map +0 -1
  386. package/dist/cjs/operations/debug/index.d.ts +0 -20
  387. package/dist/cjs/operations/debug/index.js +0 -21
  388. package/dist/cjs/operations/debug/index.js.map +0 -1
  389. package/dist/cjs/operations/debug/projections.d.ts +0 -72
  390. package/dist/cjs/operations/debug/projections.js +0 -84
  391. package/dist/cjs/operations/debug/projections.js.map +0 -1
  392. package/dist/cjs/operations/debug/resolve-path.d.ts +0 -15
  393. package/dist/cjs/operations/debug/resolve-path.js +0 -52
  394. package/dist/cjs/operations/debug/resolve-path.js.map +0 -1
  395. package/dist/cjs/operations/debug/sdapi-client.d.ts +0 -44
  396. package/dist/cjs/operations/debug/sdapi-client.js +0 -169
  397. package/dist/cjs/operations/debug/sdapi-client.js.map +0 -1
  398. package/dist/cjs/operations/debug/source-mapping.d.ts +0 -13
  399. package/dist/cjs/operations/debug/source-mapping.js +0 -57
  400. package/dist/cjs/operations/debug/source-mapping.js.map +0 -1
  401. package/dist/cjs/operations/debug/types.d.ts +0 -95
  402. package/dist/cjs/operations/debug/types.js +0 -2
  403. package/dist/cjs/operations/debug/types.js.map +0 -1
  404. package/dist/cjs/operations/debug/variable-store.d.ts +0 -35
  405. package/dist/cjs/operations/debug/variable-store.js +0 -52
  406. package/dist/cjs/operations/debug/variable-store.js.map +0 -1
  407. package/dist/cjs/operations/jobs/index.d.ts +0 -66
  408. package/dist/cjs/operations/jobs/index.js +0 -72
  409. package/dist/cjs/operations/jobs/index.js.map +0 -1
  410. package/dist/cjs/operations/jobs/run.d.ts +0 -239
  411. package/dist/cjs/operations/jobs/run.js +0 -324
  412. package/dist/cjs/operations/jobs/run.js.map +0 -1
  413. package/dist/cjs/operations/jobs/site-archive.d.ts +0 -267
  414. package/dist/cjs/operations/jobs/site-archive.js +0 -423
  415. package/dist/cjs/operations/jobs/site-archive.js.map +0 -1
  416. package/dist/cjs/operations/logs/index.d.ts +0 -65
  417. package/dist/cjs/operations/logs/index.js +0 -73
  418. package/dist/cjs/operations/logs/index.js.map +0 -1
  419. package/dist/cjs/operations/logs/list.d.ts +0 -35
  420. package/dist/cjs/operations/logs/list.js +0 -144
  421. package/dist/cjs/operations/logs/list.js.map +0 -1
  422. package/dist/cjs/operations/logs/path-normalizer.d.ts +0 -82
  423. package/dist/cjs/operations/logs/path-normalizer.js +0 -190
  424. package/dist/cjs/operations/logs/path-normalizer.js.map +0 -1
  425. package/dist/cjs/operations/logs/tail.d.ts +0 -92
  426. package/dist/cjs/operations/logs/tail.js +0 -525
  427. package/dist/cjs/operations/logs/tail.js.map +0 -1
  428. package/dist/cjs/operations/logs/types.d.ts +0 -132
  429. package/dist/cjs/operations/logs/types.js +0 -7
  430. package/dist/cjs/operations/logs/types.js.map +0 -1
  431. package/dist/cjs/operations/mrt/access-control.d.ts +0 -192
  432. package/dist/cjs/operations/mrt/access-control.js +0 -152
  433. package/dist/cjs/operations/mrt/access-control.js.map +0 -1
  434. package/dist/cjs/operations/mrt/b2c-config.d.ts +0 -201
  435. package/dist/cjs/operations/mrt/b2c-config.js +0 -210
  436. package/dist/cjs/operations/mrt/b2c-config.js.map +0 -1
  437. package/dist/cjs/operations/mrt/bundle.d.ts +0 -114
  438. package/dist/cjs/operations/mrt/bundle.js +0 -166
  439. package/dist/cjs/operations/mrt/bundle.js.map +0 -1
  440. package/dist/cjs/operations/mrt/cache.d.ts +0 -80
  441. package/dist/cjs/operations/mrt/cache.js +0 -65
  442. package/dist/cjs/operations/mrt/cache.js.map +0 -1
  443. package/dist/cjs/operations/mrt/certificate.d.ts +0 -60
  444. package/dist/cjs/operations/mrt/certificate.js +0 -76
  445. package/dist/cjs/operations/mrt/certificate.js.map +0 -1
  446. package/dist/cjs/operations/mrt/deployment.d.ts +0 -157
  447. package/dist/cjs/operations/mrt/deployment.js +0 -109
  448. package/dist/cjs/operations/mrt/deployment.js.map +0 -1
  449. package/dist/cjs/operations/mrt/env-var.d.ts +0 -176
  450. package/dist/cjs/operations/mrt/env-var.js +0 -231
  451. package/dist/cjs/operations/mrt/env-var.js.map +0 -1
  452. package/dist/cjs/operations/mrt/env.d.ts +0 -491
  453. package/dist/cjs/operations/mrt/env.js +0 -425
  454. package/dist/cjs/operations/mrt/env.js.map +0 -1
  455. package/dist/cjs/operations/mrt/index.d.ts +0 -75
  456. package/dist/cjs/operations/mrt/index.js +0 -81
  457. package/dist/cjs/operations/mrt/index.js.map +0 -1
  458. package/dist/cjs/operations/mrt/member.d.ts +0 -281
  459. package/dist/cjs/operations/mrt/member.js +0 -244
  460. package/dist/cjs/operations/mrt/member.js.map +0 -1
  461. package/dist/cjs/operations/mrt/notification.d.ts +0 -252
  462. package/dist/cjs/operations/mrt/notification.js +0 -206
  463. package/dist/cjs/operations/mrt/notification.js.map +0 -1
  464. package/dist/cjs/operations/mrt/organization-member.d.ts +0 -68
  465. package/dist/cjs/operations/mrt/organization-member.js +0 -88
  466. package/dist/cjs/operations/mrt/organization-member.js.map +0 -1
  467. package/dist/cjs/operations/mrt/organization.d.ts +0 -80
  468. package/dist/cjs/operations/mrt/organization.js +0 -53
  469. package/dist/cjs/operations/mrt/organization.js.map +0 -1
  470. package/dist/cjs/operations/mrt/project.d.ts +0 -261
  471. package/dist/cjs/operations/mrt/project.js +0 -232
  472. package/dist/cjs/operations/mrt/project.js.map +0 -1
  473. package/dist/cjs/operations/mrt/push.d.ts +0 -290
  474. package/dist/cjs/operations/mrt/push.js +0 -288
  475. package/dist/cjs/operations/mrt/push.js.map +0 -1
  476. package/dist/cjs/operations/mrt/redirect.d.ts +0 -337
  477. package/dist/cjs/operations/mrt/redirect.js +0 -256
  478. package/dist/cjs/operations/mrt/redirect.js.map +0 -1
  479. package/dist/cjs/operations/mrt/tail-logs.d.ts +0 -130
  480. package/dist/cjs/operations/mrt/tail-logs.js +0 -224
  481. package/dist/cjs/operations/mrt/tail-logs.js.map +0 -1
  482. package/dist/cjs/operations/mrt/user.d.ts +0 -135
  483. package/dist/cjs/operations/mrt/user.js +0 -153
  484. package/dist/cjs/operations/mrt/user.js.map +0 -1
  485. package/dist/cjs/operations/ods/index.d.ts +0 -10
  486. package/dist/cjs/operations/ods/index.js +0 -14
  487. package/dist/cjs/operations/ods/index.js.map +0 -1
  488. package/dist/cjs/operations/ods/sandbox-lookup.d.ts +0 -63
  489. package/dist/cjs/operations/ods/sandbox-lookup.js +0 -130
  490. package/dist/cjs/operations/ods/sandbox-lookup.js.map +0 -1
  491. package/dist/cjs/operations/ods/wait-for-clone.d.ts +0 -46
  492. package/dist/cjs/operations/ods/wait-for-clone.js +0 -100
  493. package/dist/cjs/operations/ods/wait-for-clone.js.map +0 -1
  494. package/dist/cjs/operations/ods/wait-for-sandbox.d.ts +0 -64
  495. package/dist/cjs/operations/ods/wait-for-sandbox.js +0 -114
  496. package/dist/cjs/operations/ods/wait-for-sandbox.js.map +0 -1
  497. package/dist/cjs/operations/orgs/index.d.ts +0 -74
  498. package/dist/cjs/operations/orgs/index.js +0 -33
  499. package/dist/cjs/operations/orgs/index.js.map +0 -1
  500. package/dist/cjs/operations/roles/index.d.ts +0 -43
  501. package/dist/cjs/operations/roles/index.js +0 -48
  502. package/dist/cjs/operations/roles/index.js.map +0 -1
  503. package/dist/cjs/operations/sites/cartridges.d.ts +0 -114
  504. package/dist/cjs/operations/sites/cartridges.js +0 -378
  505. package/dist/cjs/operations/sites/cartridges.js.map +0 -1
  506. package/dist/cjs/operations/sites/index.d.ts +0 -46
  507. package/dist/cjs/operations/sites/index.js +0 -51
  508. package/dist/cjs/operations/sites/index.js.map +0 -1
  509. package/dist/cjs/operations/users/index.d.ts +0 -153
  510. package/dist/cjs/operations/users/index.js +0 -139
  511. package/dist/cjs/operations/users/index.js.map +0 -1
  512. package/dist/cjs/operations/util/zip.d.ts +0 -5
  513. package/dist/cjs/operations/util/zip.js +0 -25
  514. package/dist/cjs/operations/util/zip.js.map +0 -1
  515. package/dist/cjs/package.json +0 -1
  516. package/dist/cjs/plugins/discovery.d.ts +0 -46
  517. package/dist/cjs/plugins/discovery.js +0 -122
  518. package/dist/cjs/plugins/discovery.js.map +0 -1
  519. package/dist/cjs/plugins/index.d.ts +0 -26
  520. package/dist/cjs/plugins/index.js +0 -32
  521. package/dist/cjs/plugins/index.js.map +0 -1
  522. package/dist/cjs/plugins/loader.d.ts +0 -34
  523. package/dist/cjs/plugins/loader.js +0 -59
  524. package/dist/cjs/plugins/loader.js.map +0 -1
  525. package/dist/cjs/plugins/manager.d.ts +0 -70
  526. package/dist/cjs/plugins/manager.js +0 -173
  527. package/dist/cjs/plugins/manager.js.map +0 -1
  528. package/dist/cjs/safety/index.d.ts +0 -12
  529. package/dist/cjs/safety/index.js +0 -11
  530. package/dist/cjs/safety/index.js.map +0 -1
  531. package/dist/cjs/safety/safety-guard.d.ts +0 -92
  532. package/dist/cjs/safety/safety-guard.js +0 -270
  533. package/dist/cjs/safety/safety-guard.js.map +0 -1
  534. package/dist/cjs/safety/safety-middleware.d.ts +0 -130
  535. package/dist/cjs/safety/safety-middleware.js +0 -248
  536. package/dist/cjs/safety/safety-middleware.js.map +0 -1
  537. package/dist/cjs/safety/types.d.ts +0 -81
  538. package/dist/cjs/safety/types.js +0 -16
  539. package/dist/cjs/safety/types.js.map +0 -1
  540. package/dist/cjs/safety/with-confirmation.d.ts +0 -58
  541. package/dist/cjs/safety/with-confirmation.js +0 -67
  542. package/dist/cjs/safety/with-confirmation.js.map +0 -1
  543. package/dist/cjs/scaffold/engine.d.ts +0 -68
  544. package/dist/cjs/scaffold/engine.js +0 -149
  545. package/dist/cjs/scaffold/engine.js.map +0 -1
  546. package/dist/cjs/scaffold/executor.d.ts +0 -36
  547. package/dist/cjs/scaffold/executor.js +0 -293
  548. package/dist/cjs/scaffold/executor.js.map +0 -1
  549. package/dist/cjs/scaffold/index.d.ts +0 -76
  550. package/dist/cjs/scaffold/index.js +0 -23
  551. package/dist/cjs/scaffold/index.js.map +0 -1
  552. package/dist/cjs/scaffold/merge.d.ts +0 -63
  553. package/dist/cjs/scaffold/merge.js +0 -192
  554. package/dist/cjs/scaffold/merge.js.map +0 -1
  555. package/dist/cjs/scaffold/parameter-resolver.d.ts +0 -86
  556. package/dist/cjs/scaffold/parameter-resolver.js +0 -191
  557. package/dist/cjs/scaffold/parameter-resolver.js.map +0 -1
  558. package/dist/cjs/scaffold/registry.d.ts +0 -60
  559. package/dist/cjs/scaffold/registry.js +0 -225
  560. package/dist/cjs/scaffold/registry.js.map +0 -1
  561. package/dist/cjs/scaffold/sources.d.ts +0 -83
  562. package/dist/cjs/scaffold/sources.js +0 -236
  563. package/dist/cjs/scaffold/sources.js.map +0 -1
  564. package/dist/cjs/scaffold/types.d.ts +0 -282
  565. package/dist/cjs/scaffold/types.js +0 -14
  566. package/dist/cjs/scaffold/types.js.map +0 -1
  567. package/dist/cjs/scaffold/validation.d.ts +0 -81
  568. package/dist/cjs/scaffold/validation.js +0 -250
  569. package/dist/cjs/scaffold/validation.js.map +0 -1
  570. package/dist/cjs/scaffold/validators.d.ts +0 -33
  571. package/dist/cjs/scaffold/validators.js +0 -340
  572. package/dist/cjs/scaffold/validators.js.map +0 -1
  573. package/dist/cjs/schemas/collapse.d.ts +0 -150
  574. package/dist/cjs/schemas/collapse.js +0 -180
  575. package/dist/cjs/schemas/collapse.js.map +0 -1
  576. package/dist/cjs/schemas/index.d.ts +0 -58
  577. package/dist/cjs/schemas/index.js +0 -65
  578. package/dist/cjs/schemas/index.js.map +0 -1
  579. package/dist/cjs/schemas/security-schemes.d.ts +0 -26
  580. package/dist/cjs/schemas/security-schemes.js +0 -44
  581. package/dist/cjs/schemas/security-schemes.js.map +0 -1
  582. package/dist/cjs/skills/agents.d.ts +0 -42
  583. package/dist/cjs/skills/agents.js +0 -200
  584. package/dist/cjs/skills/agents.js.map +0 -1
  585. package/dist/cjs/skills/github.d.ts +0 -31
  586. package/dist/cjs/skills/github.js +0 -450
  587. package/dist/cjs/skills/github.js.map +0 -1
  588. package/dist/cjs/skills/index.d.ts +0 -43
  589. package/dist/cjs/skills/index.js +0 -16
  590. package/dist/cjs/skills/index.js.map +0 -1
  591. package/dist/cjs/skills/installer.d.ts +0 -35
  592. package/dist/cjs/skills/installer.js +0 -182
  593. package/dist/cjs/skills/installer.js.map +0 -1
  594. package/dist/cjs/skills/parser.d.ts +0 -39
  595. package/dist/cjs/skills/parser.js +0 -126
  596. package/dist/cjs/skills/parser.js.map +0 -1
  597. package/dist/cjs/skills/sources.d.ts +0 -4
  598. package/dist/cjs/skills/sources.js +0 -52
  599. package/dist/cjs/skills/sources.js.map +0 -1
  600. package/dist/cjs/skills/types.d.ts +0 -153
  601. package/dist/cjs/skills/types.js +0 -7
  602. package/dist/cjs/skills/types.js.map +0 -1
  603. package/dist/cjs/slas/index.d.ts +0 -12
  604. package/dist/cjs/slas/index.js +0 -8
  605. package/dist/cjs/slas/index.js.map +0 -1
  606. package/dist/cjs/slas/pkce.d.ts +0 -13
  607. package/dist/cjs/slas/pkce.js +0 -35
  608. package/dist/cjs/slas/pkce.js.map +0 -1
  609. package/dist/cjs/slas/token.d.ts +0 -24
  610. package/dist/cjs/slas/token.js +0 -261
  611. package/dist/cjs/slas/token.js.map +0 -1
  612. package/dist/cjs/slas/types.d.ts +0 -43
  613. package/dist/cjs/slas/types.js +0 -7
  614. package/dist/cjs/slas/types.js.map +0 -1
  615. package/dist/cjs/telemetry/index.d.ts +0 -34
  616. package/dist/cjs/telemetry/index.js +0 -32
  617. package/dist/cjs/telemetry/index.js.map +0 -1
  618. package/dist/cjs/telemetry/telemetry.d.ts +0 -88
  619. package/dist/cjs/telemetry/telemetry.js +0 -298
  620. package/dist/cjs/telemetry/telemetry.js.map +0 -1
  621. package/dist/cjs/telemetry/types.d.ts +0 -62
  622. package/dist/cjs/telemetry/types.js +0 -7
  623. package/dist/cjs/telemetry/types.js.map +0 -1
  624. package/dist/cjs/test-utils/config-isolation.d.ts +0 -2
  625. package/dist/cjs/test-utils/config-isolation.js +0 -48
  626. package/dist/cjs/test-utils/config-isolation.js.map +0 -1
  627. package/dist/cjs/test-utils/index.d.ts +0 -1
  628. package/dist/cjs/test-utils/index.js +0 -7
  629. package/dist/cjs/test-utils/index.js.map +0 -1
  630. package/dist/cjs/ux/confirm.d.ts +0 -14
  631. package/dist/cjs/ux/confirm.js +0 -36
  632. package/dist/cjs/ux/confirm.js.map +0 -1
  633. package/dist/cjs/ux/index.d.ts +0 -1
  634. package/dist/cjs/ux/index.js +0 -7
  635. package/dist/cjs/ux/index.js.map +0 -1
  636. package/dist/cjs/version.d.ts +0 -14
  637. package/dist/cjs/version.js +0 -29
  638. 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