@salesforce/b2c-tooling-sdk 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +180 -13
  2. package/data/scaffolds/cartridge/files/.project.ejs +17 -0
  3. package/data/scaffolds/cartridge/files/cartridge/cartridge.properties.ejs +4 -0
  4. package/data/scaffolds/cartridge/files/cartridge/controllers/Example.js.ejs +19 -0
  5. package/data/scaffolds/cartridge/files/cartridge/models/example.js.ejs +14 -0
  6. package/data/scaffolds/cartridge/files/cartridge/scripts/helpers/exampleHelpers.js.ejs +18 -0
  7. package/data/scaffolds/cartridge/files/cartridge/static/default/css/example.css +6 -0
  8. package/data/scaffolds/cartridge/files/cartridge/templates/default/example/show.isml.ejs +11 -0
  9. package/data/scaffolds/cartridge/scaffold.json +88 -0
  10. package/data/scaffolds/controller/files/controller.js.ejs +134 -0
  11. package/data/scaffolds/controller/files/template.isml.ejs +22 -0
  12. package/data/scaffolds/controller/scaffold.json +64 -0
  13. package/data/scaffolds/custom-api/files/api.json.ejs +11 -0
  14. package/data/scaffolds/custom-api/files/schema.yaml.ejs +188 -0
  15. package/data/scaffolds/custom-api/files/script.js.ejs +95 -0
  16. package/data/scaffolds/custom-api/scaffold.json +65 -0
  17. package/data/scaffolds/hook/files/hook.js.ejs +99 -0
  18. package/data/scaffolds/hook/files/hooks-entry.json.ejs +6 -0
  19. package/data/scaffolds/hook/scaffold.json +60 -0
  20. package/data/scaffolds/job-step/files/step-chunk.js.ejs +136 -0
  21. package/data/scaffolds/job-step/files/step-task.js.ejs +47 -0
  22. package/data/scaffolds/job-step/files/steptypes-entry.json.ejs +41 -0
  23. package/data/scaffolds/job-step/scaffold.json +64 -0
  24. package/data/scaffolds/page-designer-component/files/component.isml.ejs +23 -0
  25. package/data/scaffolds/page-designer-component/files/component.js.ejs +35 -0
  26. package/data/scaffolds/page-designer-component/files/component.json.ejs +50 -0
  27. package/data/scaffolds/page-designer-component/scaffold.json +66 -0
  28. package/data/scaffolds/service/files/service-http.js.ejs +245 -0
  29. package/data/scaffolds/service/files/service-sftp.js.ejs +371 -0
  30. package/data/scaffolds/service/files/service-soap.js.ejs +230 -0
  31. package/data/scaffolds/service/scaffold.json +83 -0
  32. package/data/script-api/dw.extensions.payments.SalesforcePaymentsMgr.md +48 -0
  33. package/data/script-api/dw.system.Request.md +5 -0
  34. package/data/script-api/dw.web.Cookie.md +108 -31
  35. package/data/script-api/index.json +2 -2
  36. package/data/script-api/index.md +1 -1
  37. package/dist/cjs/auth/oauth-implicit.d.ts +1 -0
  38. package/dist/cjs/auth/oauth-implicit.js +8 -3
  39. package/dist/cjs/auth/oauth-implicit.js.map +1 -1
  40. package/dist/cjs/auth/oauth.d.ts +1 -0
  41. package/dist/cjs/auth/oauth.js +8 -3
  42. package/dist/cjs/auth/oauth.js.map +1 -1
  43. package/dist/cjs/auth/types.d.ts +5 -0
  44. package/dist/cjs/auth/types.js.map +1 -1
  45. package/dist/cjs/cli/am-command.d.ts +74 -0
  46. package/dist/cjs/cli/am-command.js +189 -0
  47. package/dist/cjs/cli/am-command.js.map +1 -0
  48. package/dist/cjs/cli/base-command.d.ts +38 -0
  49. package/dist/cjs/cli/base-command.js +142 -0
  50. package/dist/cjs/cli/base-command.js.map +1 -1
  51. package/dist/cjs/cli/config.d.ts +9 -0
  52. package/dist/cjs/cli/config.js +19 -2
  53. package/dist/cjs/cli/config.js.map +1 -1
  54. package/dist/cjs/cli/index.d.ts +1 -0
  55. package/dist/cjs/cli/index.js +1 -0
  56. package/dist/cjs/cli/index.js.map +1 -1
  57. package/dist/cjs/cli/instance-command.d.ts +1 -0
  58. package/dist/cjs/cli/oauth-command.d.ts +21 -1
  59. package/dist/cjs/cli/oauth-command.js +52 -7
  60. package/dist/cjs/cli/oauth-command.js.map +1 -1
  61. package/dist/cjs/cli/ods-command.d.ts +5 -1
  62. package/dist/cjs/cli/ods-command.js +10 -4
  63. package/dist/cjs/cli/ods-command.js.map +1 -1
  64. package/dist/cjs/cli/webdav-command.d.ts +1 -0
  65. package/dist/cjs/clients/am-api.d.ts +491 -0
  66. package/dist/cjs/clients/am-api.js +944 -0
  67. package/dist/cjs/clients/am-api.js.map +1 -0
  68. package/dist/cjs/clients/am-apiclients-api.generated.d.ts +803 -0
  69. package/dist/cjs/clients/am-apiclients-api.generated.js +6 -0
  70. package/dist/cjs/clients/am-apiclients-api.generated.js.map +1 -0
  71. package/dist/cjs/clients/am-roles-api.generated.d.ts +298 -0
  72. package/dist/cjs/clients/am-roles-api.generated.js +6 -0
  73. package/dist/cjs/clients/am-roles-api.generated.js.map +1 -0
  74. package/dist/cjs/clients/am-users-api.generated.d.ts +891 -0
  75. package/dist/cjs/clients/am-users-api.generated.js +6 -0
  76. package/dist/cjs/clients/am-users-api.generated.js.map +1 -0
  77. package/dist/cjs/clients/index.d.ts +4 -2
  78. package/dist/cjs/clients/index.js +2 -1
  79. package/dist/cjs/clients/index.js.map +1 -1
  80. package/dist/cjs/clients/middleware-registry.d.ts +1 -1
  81. package/dist/cjs/clients/middleware-registry.js.map +1 -1
  82. package/dist/cjs/clients/middleware.d.ts +49 -2
  83. package/dist/cjs/clients/middleware.js +214 -2
  84. package/dist/cjs/clients/middleware.js.map +1 -1
  85. package/dist/cjs/clients/mrt.js +5 -1
  86. package/dist/cjs/clients/mrt.js.map +1 -1
  87. package/dist/cjs/config/dw-json.d.ts +104 -33
  88. package/dist/cjs/config/dw-json.js +167 -2
  89. package/dist/cjs/config/dw-json.js.map +1 -1
  90. package/dist/cjs/config/index.d.ts +6 -4
  91. package/dist/cjs/config/index.js +6 -2
  92. package/dist/cjs/config/index.js.map +1 -1
  93. package/dist/cjs/config/instance-manager.d.ts +97 -0
  94. package/dist/cjs/config/instance-manager.js +166 -0
  95. package/dist/cjs/config/instance-manager.js.map +1 -0
  96. package/dist/cjs/config/mapping.d.ts +63 -5
  97. package/dist/cjs/config/mapping.js +165 -20
  98. package/dist/cjs/config/mapping.js.map +1 -1
  99. package/dist/cjs/config/sources/dw-json-source.d.ts +17 -1
  100. package/dist/cjs/config/sources/dw-json-source.js +70 -3
  101. package/dist/cjs/config/sources/dw-json-source.js.map +1 -1
  102. package/dist/cjs/config/sources/package-json-source.js +6 -3
  103. package/dist/cjs/config/sources/package-json-source.js.map +1 -1
  104. package/dist/cjs/config/types.d.ts +72 -0
  105. package/dist/cjs/defaults.d.ts +6 -0
  106. package/dist/cjs/defaults.js +6 -0
  107. package/dist/cjs/defaults.js.map +1 -1
  108. package/dist/cjs/i18n/index.js +3 -0
  109. package/dist/cjs/i18n/index.js.map +1 -1
  110. package/dist/cjs/index.d.ts +8 -4
  111. package/dist/cjs/index.js +9 -3
  112. package/dist/cjs/index.js.map +1 -1
  113. package/dist/cjs/logging/logger.js +13 -1
  114. package/dist/cjs/logging/logger.js.map +1 -1
  115. package/dist/cjs/operations/content/asset-query.d.ts +22 -0
  116. package/dist/cjs/operations/content/asset-query.js +77 -0
  117. package/dist/cjs/operations/content/asset-query.js.map +1 -0
  118. package/dist/cjs/operations/content/export.d.ts +57 -0
  119. package/dist/cjs/operations/content/export.js +224 -0
  120. package/dist/cjs/operations/content/export.js.map +1 -0
  121. package/dist/cjs/operations/content/index.d.ts +43 -0
  122. package/dist/cjs/operations/content/index.js +48 -0
  123. package/dist/cjs/operations/content/index.js.map +1 -0
  124. package/dist/cjs/operations/content/library.d.ts +137 -0
  125. package/dist/cjs/operations/content/library.js +392 -0
  126. package/dist/cjs/operations/content/library.js.map +1 -0
  127. package/dist/cjs/operations/content/types.d.ts +144 -0
  128. package/dist/cjs/operations/content/types.js +7 -0
  129. package/dist/cjs/operations/content/types.js.map +1 -0
  130. package/dist/cjs/operations/mrt/b2c-config.js +19 -4
  131. package/dist/cjs/operations/mrt/b2c-config.js.map +1 -1
  132. package/dist/cjs/operations/mrt/index.d.ts +2 -0
  133. package/dist/cjs/operations/mrt/index.js +2 -0
  134. package/dist/cjs/operations/mrt/index.js.map +1 -1
  135. package/dist/cjs/operations/mrt/tail-logs.d.ts +130 -0
  136. package/dist/cjs/operations/mrt/tail-logs.js +223 -0
  137. package/dist/cjs/operations/mrt/tail-logs.js.map +1 -0
  138. package/dist/cjs/operations/ods/index.d.ts +2 -0
  139. package/dist/cjs/operations/ods/index.js +1 -0
  140. package/dist/cjs/operations/ods/index.js.map +1 -1
  141. package/dist/cjs/operations/ods/wait-for-sandbox.d.ts +64 -0
  142. package/dist/cjs/operations/ods/wait-for-sandbox.js +114 -0
  143. package/dist/cjs/operations/ods/wait-for-sandbox.js.map +1 -0
  144. package/dist/cjs/operations/orgs/index.d.ts +74 -0
  145. package/dist/cjs/operations/orgs/index.js +33 -0
  146. package/dist/cjs/operations/orgs/index.js.map +1 -0
  147. package/dist/cjs/operations/roles/index.d.ts +43 -0
  148. package/dist/cjs/operations/roles/index.js +48 -0
  149. package/dist/cjs/operations/roles/index.js.map +1 -0
  150. package/dist/cjs/operations/users/index.d.ts +143 -0
  151. package/dist/cjs/operations/users/index.js +141 -0
  152. package/dist/cjs/operations/users/index.js.map +1 -0
  153. package/dist/cjs/scaffold/engine.d.ts +68 -0
  154. package/dist/cjs/scaffold/engine.js +149 -0
  155. package/dist/cjs/scaffold/engine.js.map +1 -0
  156. package/dist/cjs/scaffold/executor.d.ts +36 -0
  157. package/dist/cjs/scaffold/executor.js +285 -0
  158. package/dist/cjs/scaffold/executor.js.map +1 -0
  159. package/dist/cjs/scaffold/index.d.ts +74 -0
  160. package/dist/cjs/scaffold/index.js +23 -0
  161. package/dist/cjs/scaffold/index.js.map +1 -0
  162. package/dist/cjs/scaffold/merge.d.ts +56 -0
  163. package/dist/cjs/scaffold/merge.js +183 -0
  164. package/dist/cjs/scaffold/merge.js.map +1 -0
  165. package/dist/cjs/scaffold/parameter-resolver.d.ts +86 -0
  166. package/dist/cjs/scaffold/parameter-resolver.js +179 -0
  167. package/dist/cjs/scaffold/parameter-resolver.js.map +1 -0
  168. package/dist/cjs/scaffold/registry.d.ts +45 -0
  169. package/dist/cjs/scaffold/registry.js +219 -0
  170. package/dist/cjs/scaffold/registry.js.map +1 -0
  171. package/dist/cjs/scaffold/sources.d.ts +45 -0
  172. package/dist/cjs/scaffold/sources.js +113 -0
  173. package/dist/cjs/scaffold/sources.js.map +1 -0
  174. package/dist/cjs/scaffold/types.d.ts +280 -0
  175. package/dist/cjs/scaffold/types.js +14 -0
  176. package/dist/cjs/scaffold/types.js.map +1 -0
  177. package/dist/cjs/scaffold/validation.d.ts +81 -0
  178. package/dist/cjs/scaffold/validation.js +250 -0
  179. package/dist/cjs/scaffold/validation.js.map +1 -0
  180. package/dist/cjs/scaffold/validators.d.ts +33 -0
  181. package/dist/cjs/scaffold/validators.js +334 -0
  182. package/dist/cjs/scaffold/validators.js.map +1 -0
  183. package/dist/cjs/telemetry/index.d.ts +26 -0
  184. package/dist/cjs/telemetry/index.js +32 -0
  185. package/dist/cjs/telemetry/index.js.map +1 -0
  186. package/dist/cjs/telemetry/telemetry.d.ts +90 -0
  187. package/dist/cjs/telemetry/telemetry.js +283 -0
  188. package/dist/cjs/telemetry/telemetry.js.map +1 -0
  189. package/dist/cjs/telemetry/types.d.ts +62 -0
  190. package/dist/cjs/telemetry/types.js +7 -0
  191. package/dist/cjs/telemetry/types.js.map +1 -0
  192. package/dist/esm/auth/oauth-implicit.d.ts +1 -0
  193. package/dist/esm/auth/oauth-implicit.js +8 -3
  194. package/dist/esm/auth/oauth-implicit.js.map +1 -1
  195. package/dist/esm/auth/oauth.d.ts +1 -0
  196. package/dist/esm/auth/oauth.js +8 -3
  197. package/dist/esm/auth/oauth.js.map +1 -1
  198. package/dist/esm/auth/types.d.ts +5 -0
  199. package/dist/esm/auth/types.js.map +1 -1
  200. package/dist/esm/cli/am-command.d.ts +74 -0
  201. package/dist/esm/cli/am-command.js +196 -0
  202. package/dist/esm/cli/am-command.js.map +1 -0
  203. package/dist/esm/cli/base-command.d.ts +38 -0
  204. package/dist/esm/cli/base-command.js +142 -0
  205. package/dist/esm/cli/base-command.js.map +1 -1
  206. package/dist/esm/cli/config.d.ts +9 -0
  207. package/dist/esm/cli/config.js +19 -2
  208. package/dist/esm/cli/config.js.map +1 -1
  209. package/dist/esm/cli/index.d.ts +1 -0
  210. package/dist/esm/cli/index.js +1 -0
  211. package/dist/esm/cli/index.js.map +1 -1
  212. package/dist/esm/cli/instance-command.d.ts +1 -0
  213. package/dist/esm/cli/oauth-command.d.ts +21 -1
  214. package/dist/esm/cli/oauth-command.js +52 -7
  215. package/dist/esm/cli/oauth-command.js.map +1 -1
  216. package/dist/esm/cli/ods-command.d.ts +5 -1
  217. package/dist/esm/cli/ods-command.js +10 -4
  218. package/dist/esm/cli/ods-command.js.map +1 -1
  219. package/dist/esm/cli/webdav-command.d.ts +1 -0
  220. package/dist/esm/clients/am-api.d.ts +491 -0
  221. package/dist/esm/clients/am-api.js +944 -0
  222. package/dist/esm/clients/am-api.js.map +1 -0
  223. package/dist/esm/clients/am-apiclients-api.generated.d.ts +803 -0
  224. package/dist/esm/clients/am-apiclients-api.generated.js +6 -0
  225. package/dist/esm/clients/am-apiclients-api.generated.js.map +1 -0
  226. package/dist/esm/clients/am-roles-api.generated.d.ts +298 -0
  227. package/dist/esm/clients/am-roles-api.generated.js +6 -0
  228. package/dist/esm/clients/am-roles-api.generated.js.map +1 -0
  229. package/dist/esm/clients/am-users-api.generated.d.ts +891 -0
  230. package/dist/esm/clients/am-users-api.generated.js +6 -0
  231. package/dist/esm/clients/am-users-api.generated.js.map +1 -0
  232. package/dist/esm/clients/index.d.ts +4 -2
  233. package/dist/esm/clients/index.js +2 -1
  234. package/dist/esm/clients/index.js.map +1 -1
  235. package/dist/esm/clients/middleware-registry.d.ts +1 -1
  236. package/dist/esm/clients/middleware-registry.js.map +1 -1
  237. package/dist/esm/clients/middleware.d.ts +49 -2
  238. package/dist/esm/clients/middleware.js +214 -2
  239. package/dist/esm/clients/middleware.js.map +1 -1
  240. package/dist/esm/clients/mrt.js +5 -1
  241. package/dist/esm/clients/mrt.js.map +1 -1
  242. package/dist/esm/config/dw-json.d.ts +104 -33
  243. package/dist/esm/config/dw-json.js +167 -2
  244. package/dist/esm/config/dw-json.js.map +1 -1
  245. package/dist/esm/config/index.d.ts +6 -4
  246. package/dist/esm/config/index.js +6 -2
  247. package/dist/esm/config/index.js.map +1 -1
  248. package/dist/esm/config/instance-manager.d.ts +97 -0
  249. package/dist/esm/config/instance-manager.js +166 -0
  250. package/dist/esm/config/instance-manager.js.map +1 -0
  251. package/dist/esm/config/mapping.d.ts +63 -5
  252. package/dist/esm/config/mapping.js +165 -20
  253. package/dist/esm/config/mapping.js.map +1 -1
  254. package/dist/esm/config/sources/dw-json-source.d.ts +17 -1
  255. package/dist/esm/config/sources/dw-json-source.js +70 -3
  256. package/dist/esm/config/sources/dw-json-source.js.map +1 -1
  257. package/dist/esm/config/sources/package-json-source.js +6 -3
  258. package/dist/esm/config/sources/package-json-source.js.map +1 -1
  259. package/dist/esm/config/types.d.ts +72 -0
  260. package/dist/esm/defaults.d.ts +6 -0
  261. package/dist/esm/defaults.js +6 -0
  262. package/dist/esm/defaults.js.map +1 -1
  263. package/dist/esm/i18n/index.js +3 -0
  264. package/dist/esm/i18n/index.js.map +1 -1
  265. package/dist/esm/index.d.ts +8 -4
  266. package/dist/esm/index.js +9 -3
  267. package/dist/esm/index.js.map +1 -1
  268. package/dist/esm/logging/logger.js +13 -1
  269. package/dist/esm/logging/logger.js.map +1 -1
  270. package/dist/esm/operations/content/asset-query.d.ts +22 -0
  271. package/dist/esm/operations/content/asset-query.js +77 -0
  272. package/dist/esm/operations/content/asset-query.js.map +1 -0
  273. package/dist/esm/operations/content/export.d.ts +57 -0
  274. package/dist/esm/operations/content/export.js +224 -0
  275. package/dist/esm/operations/content/export.js.map +1 -0
  276. package/dist/esm/operations/content/index.d.ts +43 -0
  277. package/dist/esm/operations/content/index.js +48 -0
  278. package/dist/esm/operations/content/index.js.map +1 -0
  279. package/dist/esm/operations/content/library.d.ts +137 -0
  280. package/dist/esm/operations/content/library.js +392 -0
  281. package/dist/esm/operations/content/library.js.map +1 -0
  282. package/dist/esm/operations/content/types.d.ts +144 -0
  283. package/dist/esm/operations/content/types.js +7 -0
  284. package/dist/esm/operations/content/types.js.map +1 -0
  285. package/dist/esm/operations/mrt/b2c-config.js +19 -4
  286. package/dist/esm/operations/mrt/b2c-config.js.map +1 -1
  287. package/dist/esm/operations/mrt/index.d.ts +2 -0
  288. package/dist/esm/operations/mrt/index.js +2 -0
  289. package/dist/esm/operations/mrt/index.js.map +1 -1
  290. package/dist/esm/operations/mrt/tail-logs.d.ts +130 -0
  291. package/dist/esm/operations/mrt/tail-logs.js +223 -0
  292. package/dist/esm/operations/mrt/tail-logs.js.map +1 -0
  293. package/dist/esm/operations/ods/index.d.ts +2 -0
  294. package/dist/esm/operations/ods/index.js +1 -0
  295. package/dist/esm/operations/ods/index.js.map +1 -1
  296. package/dist/esm/operations/ods/wait-for-sandbox.d.ts +64 -0
  297. package/dist/esm/operations/ods/wait-for-sandbox.js +114 -0
  298. package/dist/esm/operations/ods/wait-for-sandbox.js.map +1 -0
  299. package/dist/esm/operations/orgs/index.d.ts +74 -0
  300. package/dist/esm/operations/orgs/index.js +33 -0
  301. package/dist/esm/operations/orgs/index.js.map +1 -0
  302. package/dist/esm/operations/roles/index.d.ts +43 -0
  303. package/dist/esm/operations/roles/index.js +48 -0
  304. package/dist/esm/operations/roles/index.js.map +1 -0
  305. package/dist/esm/operations/users/index.d.ts +143 -0
  306. package/dist/esm/operations/users/index.js +141 -0
  307. package/dist/esm/operations/users/index.js.map +1 -0
  308. package/dist/esm/scaffold/engine.d.ts +68 -0
  309. package/dist/esm/scaffold/engine.js +149 -0
  310. package/dist/esm/scaffold/engine.js.map +1 -0
  311. package/dist/esm/scaffold/executor.d.ts +36 -0
  312. package/dist/esm/scaffold/executor.js +285 -0
  313. package/dist/esm/scaffold/executor.js.map +1 -0
  314. package/dist/esm/scaffold/index.d.ts +74 -0
  315. package/dist/esm/scaffold/index.js +23 -0
  316. package/dist/esm/scaffold/index.js.map +1 -0
  317. package/dist/esm/scaffold/merge.d.ts +56 -0
  318. package/dist/esm/scaffold/merge.js +183 -0
  319. package/dist/esm/scaffold/merge.js.map +1 -0
  320. package/dist/esm/scaffold/parameter-resolver.d.ts +86 -0
  321. package/dist/esm/scaffold/parameter-resolver.js +179 -0
  322. package/dist/esm/scaffold/parameter-resolver.js.map +1 -0
  323. package/dist/esm/scaffold/registry.d.ts +45 -0
  324. package/dist/esm/scaffold/registry.js +219 -0
  325. package/dist/esm/scaffold/registry.js.map +1 -0
  326. package/dist/esm/scaffold/sources.d.ts +45 -0
  327. package/dist/esm/scaffold/sources.js +113 -0
  328. package/dist/esm/scaffold/sources.js.map +1 -0
  329. package/dist/esm/scaffold/types.d.ts +280 -0
  330. package/dist/esm/scaffold/types.js +14 -0
  331. package/dist/esm/scaffold/types.js.map +1 -0
  332. package/dist/esm/scaffold/validation.d.ts +81 -0
  333. package/dist/esm/scaffold/validation.js +250 -0
  334. package/dist/esm/scaffold/validation.js.map +1 -0
  335. package/dist/esm/scaffold/validators.d.ts +33 -0
  336. package/dist/esm/scaffold/validators.js +334 -0
  337. package/dist/esm/scaffold/validators.js.map +1 -0
  338. package/dist/esm/telemetry/index.d.ts +26 -0
  339. package/dist/esm/telemetry/index.js +32 -0
  340. package/dist/esm/telemetry/index.js.map +1 -0
  341. package/dist/esm/telemetry/telemetry.d.ts +90 -0
  342. package/dist/esm/telemetry/telemetry.js +283 -0
  343. package/dist/esm/telemetry/telemetry.js.map +1 -0
  344. package/dist/esm/telemetry/types.d.ts +62 -0
  345. package/dist/esm/telemetry/types.js +7 -0
  346. package/dist/esm/telemetry/types.js.map +1 -0
  347. package/package.json +86 -17
  348. package/specs/am-apiclients-api-v1.yaml +965 -0
  349. package/specs/am-roles-api-v1.yaml +316 -0
  350. package/specs/am-users-api-v1.yaml +1102 -0
@@ -0,0 +1,137 @@
1
+ import type { LibraryNodeType, LibraryParseOptions, TraverseOptions, TraverseCallback, FilterCallback, TreeStringOptions } from './types.js';
2
+ /**
3
+ * A node in the content library tree.
4
+ *
5
+ * Represents a library, page, content asset, component, or static asset reference.
6
+ */
7
+ export declare class LibraryNode {
8
+ id: string;
9
+ type: LibraryNodeType;
10
+ typeId: string | null;
11
+ data: Record<string, unknown> | null;
12
+ parent: LibraryNode | null;
13
+ children: LibraryNode[];
14
+ hidden: boolean;
15
+ /** @internal Raw xml2js content object */
16
+ xml: Record<string, unknown> | null;
17
+ constructor(values: {
18
+ id: string;
19
+ type: LibraryNodeType;
20
+ typeId: string | null;
21
+ data: Record<string, unknown> | null;
22
+ parent: LibraryNode | null;
23
+ children: LibraryNode[];
24
+ hidden: boolean;
25
+ xml: Record<string, unknown> | null;
26
+ });
27
+ toJSON(): Record<string, unknown>;
28
+ }
29
+ /**
30
+ * Provides an interface for manipulating B2C Commerce content libraries.
31
+ *
32
+ * Use the static `Library.parse()` factory to create instances from library XML.
33
+ * The library tree supports filtering, traversal, mutation, and serialization
34
+ * back to importable XML.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const library = await Library.parse(xmlString);
39
+ *
40
+ * // Filter to specific pages
41
+ * library.filter(node => node.id === 'homepage');
42
+ *
43
+ * // Traverse visible nodes
44
+ * library.traverse(node => {
45
+ * console.log(node.id, node.type);
46
+ * });
47
+ *
48
+ * // Serialize back to XML
49
+ * const xml = await library.toXMLString({ traverseHidden: false });
50
+ * ```
51
+ */
52
+ export declare class Library {
53
+ assetQuery: string[];
54
+ tree: LibraryNode;
55
+ /** @internal Raw xml2js parsed object */
56
+ xml: Record<string, unknown>;
57
+ /** @internal */
58
+ constructor(guard: symbol);
59
+ /**
60
+ * Parse library XML into a Library tree.
61
+ *
62
+ * @param libraryXML - Raw XML string of a content library
63
+ * @param options - Parse options
64
+ * @returns Parsed Library instance
65
+ */
66
+ static parse(libraryXML: string, { assetQuery, keepOrphans }?: LibraryParseOptions): Promise<Library>;
67
+ /**
68
+ * Depth-first traversal of the library tree.
69
+ *
70
+ * @param callback - Function called for each visited node
71
+ * @param options - Traversal options
72
+ * @returns this (for chaining)
73
+ */
74
+ traverse(callback: TraverseCallback, { traverseHidden, callbackHidden }?: TraverseOptions): this;
75
+ /**
76
+ * Generator-based depth-first iteration of the library tree.
77
+ *
78
+ * @param options - Traversal options
79
+ * @yields LibraryNode for each visited node
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * for (const node of library.nodes()) {
84
+ * console.log(node.id, node.type);
85
+ * }
86
+ * ```
87
+ */
88
+ nodes({ traverseHidden, callbackHidden }?: TraverseOptions): Generator<LibraryNode>;
89
+ /**
90
+ * Filter the library tree by setting hidden flags on root children.
91
+ *
92
+ * @param predicate - Return true to keep the node visible
93
+ * @param options - Filter options
94
+ * @returns this (for chaining)
95
+ */
96
+ filter(predicate: FilterCallback, { recursive }?: {
97
+ recursive?: boolean | undefined;
98
+ }): this;
99
+ /**
100
+ * Move a node from its current parent to the root of the library tree.
101
+ *
102
+ * Useful for exporting individual components that are normally nested under pages.
103
+ * The node is removed from its original parent's children and added as a root child.
104
+ *
105
+ * @param node - The node to promote
106
+ * @returns this (for chaining)
107
+ */
108
+ promoteToRoot(node: LibraryNode): this;
109
+ /**
110
+ * Reset all hidden flags, making every node visible again.
111
+ *
112
+ * @returns this (for chaining)
113
+ */
114
+ reset(): this;
115
+ /**
116
+ * Serialize the library back to importable XML.
117
+ *
118
+ * Only includes visible content unless `traverseHidden` is true.
119
+ *
120
+ * @param options - Serialization options
121
+ * @returns XML string
122
+ */
123
+ toXMLString({ traverseHidden }?: {
124
+ traverseHidden?: boolean;
125
+ }): Promise<string>;
126
+ /**
127
+ * Returns a text tree visualization of the library structure.
128
+ *
129
+ * @param options - Tree string options (traversal and optional colorize function)
130
+ * @returns Multi-line tree string
131
+ */
132
+ getTreeString({ traverseHidden, colorize }?: TreeStringOptions): string;
133
+ /**
134
+ * Returns a JSON-safe representation of the library tree.
135
+ */
136
+ toJSON(): Record<string, unknown>;
137
+ }
@@ -0,0 +1,392 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import * as xml2js from 'xml2js';
7
+ import { getLogger } from '../../logging/logger.js';
8
+ import { extractAssetPaths } from './asset-query.js';
9
+ /**
10
+ * A node in the content library tree.
11
+ *
12
+ * Represents a library, page, content asset, component, or static asset reference.
13
+ */
14
+ export class LibraryNode {
15
+ id;
16
+ type;
17
+ typeId;
18
+ data;
19
+ parent;
20
+ children;
21
+ hidden;
22
+ /** @internal Raw xml2js content object */
23
+ xml;
24
+ constructor(values) {
25
+ this.id = values.id;
26
+ this.type = values.type;
27
+ this.typeId = values.typeId;
28
+ this.data = values.data;
29
+ this.parent = values.parent;
30
+ this.children = values.children;
31
+ this.hidden = values.hidden;
32
+ this.xml = values.xml;
33
+ }
34
+ toJSON() {
35
+ return {
36
+ id: this.id,
37
+ type: this.type,
38
+ typeId: this.typeId,
39
+ data: this.data,
40
+ children: this.children,
41
+ hidden: this.hidden,
42
+ };
43
+ }
44
+ }
45
+ /**
46
+ * Recursively processes a content XML element into a LibraryNode tree.
47
+ *
48
+ * Extracts child components via content-links and static assets via asset queries.
49
+ */
50
+ function processContent(content, allContent, assetQuery) {
51
+ const logger = getLogger();
52
+ const attrs = content['$'];
53
+ const contentId = attrs['content-id'];
54
+ const contentType = content['type']?.[0] ?? null;
55
+ const dataElements = content['data'];
56
+ const node = new LibraryNode({
57
+ id: contentId,
58
+ type: contentType ? (contentType.startsWith('page.') ? 'PAGE' : 'COMPONENT') : 'CONTENT',
59
+ typeId: contentType,
60
+ data: null,
61
+ children: [],
62
+ xml: content,
63
+ hidden: false,
64
+ parent: null,
65
+ });
66
+ // Parse JSON data and extract asset paths
67
+ if (dataElements?.[0]?.['_']) {
68
+ try {
69
+ const dataJson = JSON.parse(dataElements[0]['_']);
70
+ node.data = dataJson;
71
+ const assetPaths = extractAssetPaths(dataJson, assetQuery);
72
+ for (const assetPath of assetPaths) {
73
+ node.children.push(new LibraryNode({
74
+ id: assetPath,
75
+ type: 'STATIC',
76
+ typeId: null,
77
+ data: null,
78
+ parent: node,
79
+ children: [],
80
+ hidden: false,
81
+ xml: null,
82
+ }));
83
+ }
84
+ }
85
+ catch {
86
+ logger.warn({ contentId }, `Could not parse JSON data for content ${contentId}`);
87
+ }
88
+ }
89
+ // Recurse into content-links
90
+ const contentLinks = content['content-links'];
91
+ if (contentLinks?.[0]?.['content-link']) {
92
+ const links = contentLinks[0]['content-link'];
93
+ for (const link of links) {
94
+ const linkAttrs = link['$'];
95
+ const linkId = linkAttrs['content-id'];
96
+ if (!allContent[linkId]) {
97
+ logger.warn(`Cannot find component ${linkId} in library; skipping...`);
98
+ continue;
99
+ }
100
+ const componentNode = processContent(allContent[linkId], allContent, assetQuery);
101
+ componentNode.parent = node;
102
+ node.children.push(componentNode);
103
+ }
104
+ }
105
+ return node;
106
+ }
107
+ /** Private guard to enforce use of Library.parse() */
108
+ const CONSTRUCTOR_GUARD = Symbol('Library.parse');
109
+ /**
110
+ * Provides an interface for manipulating B2C Commerce content libraries.
111
+ *
112
+ * Use the static `Library.parse()` factory to create instances from library XML.
113
+ * The library tree supports filtering, traversal, mutation, and serialization
114
+ * back to importable XML.
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * const library = await Library.parse(xmlString);
119
+ *
120
+ * // Filter to specific pages
121
+ * library.filter(node => node.id === 'homepage');
122
+ *
123
+ * // Traverse visible nodes
124
+ * library.traverse(node => {
125
+ * console.log(node.id, node.type);
126
+ * });
127
+ *
128
+ * // Serialize back to XML
129
+ * const xml = await library.toXMLString({ traverseHidden: false });
130
+ * ```
131
+ */
132
+ export class Library {
133
+ assetQuery = [];
134
+ tree;
135
+ /** @internal Raw xml2js parsed object */
136
+ xml;
137
+ /** @internal */
138
+ constructor(guard) {
139
+ if (guard !== CONSTRUCTOR_GUARD) {
140
+ throw new Error('Use Library.parse() to construct a Library instance');
141
+ }
142
+ }
143
+ /**
144
+ * Parse library XML into a Library tree.
145
+ *
146
+ * @param libraryXML - Raw XML string of a content library
147
+ * @param options - Parse options
148
+ * @returns Parsed Library instance
149
+ */
150
+ static async parse(libraryXML, { assetQuery = ['image.path'], keepOrphans = false } = {}) {
151
+ const xml = (await xml2js.parseStringPromise(libraryXML));
152
+ const libraryElement = xml['library'];
153
+ const attrs = libraryElement['$'];
154
+ const libraryId = attrs['library-id'];
155
+ const contentArray = libraryElement['content'];
156
+ const library = new Library(CONSTRUCTOR_GUARD);
157
+ library.assetQuery = assetQuery;
158
+ const root = new LibraryNode({
159
+ id: libraryId,
160
+ type: 'LIBRARY',
161
+ typeId: null,
162
+ children: [],
163
+ data: null,
164
+ parent: null,
165
+ hidden: false,
166
+ xml: null,
167
+ });
168
+ // Index all content by ID
169
+ const contentById = {};
170
+ for (const c of contentArray) {
171
+ const cAttrs = c['$'];
172
+ contentById[cAttrs['content-id']] = c;
173
+ }
174
+ // Process pages and root-level content (no type = content asset)
175
+ for (const c of contentArray) {
176
+ const cType = c['type']?.[0];
177
+ if ((cType && cType.startsWith('page.')) || !cType) {
178
+ const node = processContent(c, contentById, assetQuery);
179
+ node.parent = root;
180
+ root.children.push(node);
181
+ }
182
+ }
183
+ library.xml = xml;
184
+ library.tree = root;
185
+ // Optionally include orphan components
186
+ if (keepOrphans) {
187
+ const processedIds = new Set();
188
+ library.traverse((node) => {
189
+ processedIds.add(node.id);
190
+ });
191
+ for (const c of contentArray) {
192
+ const cAttrs = c['$'];
193
+ const cId = cAttrs['content-id'];
194
+ if (!processedIds.has(cId)) {
195
+ const node = processContent(c, contentById, assetQuery);
196
+ node.parent = root;
197
+ root.children.push(node);
198
+ }
199
+ }
200
+ }
201
+ // Remove headers and folders from xml (not needed for filtered export)
202
+ delete libraryElement['header'];
203
+ delete libraryElement['folder'];
204
+ return library;
205
+ }
206
+ /**
207
+ * Depth-first traversal of the library tree.
208
+ *
209
+ * @param callback - Function called for each visited node
210
+ * @param options - Traversal options
211
+ * @returns this (for chaining)
212
+ */
213
+ traverse(callback, { traverseHidden = true, callbackHidden = false } = {}) {
214
+ function walk(node) {
215
+ if (!node.hidden || traverseHidden) {
216
+ for (const child of node.children) {
217
+ walk(child);
218
+ }
219
+ }
220
+ if (!node.hidden || callbackHidden) {
221
+ callback(node);
222
+ }
223
+ }
224
+ for (const child of this.tree.children) {
225
+ walk(child);
226
+ }
227
+ return this;
228
+ }
229
+ /**
230
+ * Generator-based depth-first iteration of the library tree.
231
+ *
232
+ * @param options - Traversal options
233
+ * @yields LibraryNode for each visited node
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * for (const node of library.nodes()) {
238
+ * console.log(node.id, node.type);
239
+ * }
240
+ * ```
241
+ */
242
+ *nodes({ traverseHidden = true, callbackHidden = false } = {}) {
243
+ function* walk(node) {
244
+ if (!node.hidden || traverseHidden) {
245
+ for (const child of node.children) {
246
+ yield* walk(child);
247
+ }
248
+ }
249
+ if (!node.hidden || callbackHidden) {
250
+ yield node;
251
+ }
252
+ }
253
+ for (const child of this.tree.children) {
254
+ yield* walk(child);
255
+ }
256
+ }
257
+ /**
258
+ * Filter the library tree by setting hidden flags on root children.
259
+ *
260
+ * @param predicate - Return true to keep the node visible
261
+ * @param options - Filter options
262
+ * @returns this (for chaining)
263
+ */
264
+ filter(predicate, { recursive = false } = {}) {
265
+ if (!recursive) {
266
+ for (const child of this.tree.children) {
267
+ child.hidden = !predicate(child);
268
+ }
269
+ }
270
+ else {
271
+ this.traverse((n) => {
272
+ n.hidden = !predicate(n);
273
+ }, { traverseHidden: true, callbackHidden: true });
274
+ }
275
+ return this;
276
+ }
277
+ /**
278
+ * Move a node from its current parent to the root of the library tree.
279
+ *
280
+ * Useful for exporting individual components that are normally nested under pages.
281
+ * The node is removed from its original parent's children and added as a root child.
282
+ *
283
+ * @param node - The node to promote
284
+ * @returns this (for chaining)
285
+ */
286
+ promoteToRoot(node) {
287
+ if (node.parent && node.parent !== this.tree) {
288
+ node.parent.children = node.parent.children.filter((c) => c !== node);
289
+ }
290
+ if (!this.tree.children.includes(node)) {
291
+ node.parent = this.tree;
292
+ node.hidden = false;
293
+ this.tree.children.push(node);
294
+ }
295
+ return this;
296
+ }
297
+ /**
298
+ * Reset all hidden flags, making every node visible again.
299
+ *
300
+ * @returns this (for chaining)
301
+ */
302
+ reset() {
303
+ this.traverse((n) => {
304
+ n.hidden = false;
305
+ }, { traverseHidden: true, callbackHidden: true });
306
+ return this;
307
+ }
308
+ /**
309
+ * Serialize the library back to importable XML.
310
+ *
311
+ * Only includes visible content unless `traverseHidden` is true.
312
+ *
313
+ * @param options - Serialization options
314
+ * @returns XML string
315
+ */
316
+ async toXMLString({ traverseHidden = true } = {}) {
317
+ const libraryElement = this.xml['library'];
318
+ delete libraryElement['content'];
319
+ libraryElement['content'] = [];
320
+ this.traverse((n) => {
321
+ const node = n;
322
+ if (node.data && node.xml) {
323
+ const dataEl = node.xml['data']?.[0];
324
+ if (dataEl) {
325
+ dataEl['_'] = JSON.stringify(node.data, null, 2);
326
+ }
327
+ }
328
+ if (node.xml) {
329
+ libraryElement['content'].push(node.xml);
330
+ }
331
+ }, { traverseHidden });
332
+ const builder = new xml2js.Builder();
333
+ return builder.buildObject(this.xml);
334
+ }
335
+ /**
336
+ * Returns a text tree visualization of the library structure.
337
+ *
338
+ * @param options - Tree string options (traversal and optional colorize function)
339
+ * @returns Multi-line tree string
340
+ */
341
+ getTreeString({ traverseHidden = false, colorize } = {}) {
342
+ const lines = [];
343
+ const c = colorize ?? ((_color, text) => text);
344
+ function formatNode(node) {
345
+ switch (node.type) {
346
+ case 'COMPONENT': {
347
+ return node.typeId ? `${c('cyan', node.typeId)} ${c('dim', `(${node.id})`)}` : node.id;
348
+ }
349
+ case 'CONTENT': {
350
+ return `${c('bold', node.id)} ${c('dim', '(CONTENT ASSET)')}`;
351
+ }
352
+ case 'PAGE': {
353
+ const name = c('bold', node.id);
354
+ return node.typeId ? `${name} ${c('dim', `(typeId: ${node.typeId})`)}` : name;
355
+ }
356
+ case 'STATIC': {
357
+ return `${c('green', node.id)} ${c('dim', '(STATIC ASSET)')}`;
358
+ }
359
+ default: {
360
+ return node.id;
361
+ }
362
+ }
363
+ }
364
+ function visibleChildren(node) {
365
+ return traverseHidden ? node.children : node.children.filter((child) => !child.hidden);
366
+ }
367
+ function renderSubtree(children, prefix) {
368
+ for (let i = 0; i < children.length; i++) {
369
+ const node = children[i];
370
+ const isLast = i === children.length - 1;
371
+ const connector = isLast ? '└── ' : '├── ';
372
+ const extension = isLast ? ' ' : '│ ';
373
+ const hiddenTag = node.hidden ? ` ${c('yellow', '[HIDDEN]')}` : '';
374
+ lines.push(`${c('dim', prefix + connector)}${formatNode(node)}${hiddenTag}`);
375
+ renderSubtree(visibleChildren(node), prefix + extension);
376
+ }
377
+ }
378
+ for (const child of visibleChildren(this.tree)) {
379
+ const hiddenTag = child.hidden ? ` ${c('yellow', '[HIDDEN]')}` : '';
380
+ lines.push(`${formatNode(child)}${hiddenTag}`);
381
+ renderSubtree(visibleChildren(child), '');
382
+ }
383
+ return lines.join('\n');
384
+ }
385
+ /**
386
+ * Returns a JSON-safe representation of the library tree.
387
+ */
388
+ toJSON() {
389
+ return this.tree.toJSON();
390
+ }
391
+ }
392
+ //# sourceMappingURL=library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../../../src/operations/content/library.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ import type { WaitForJobOptions } from '../jobs/run.js';
2
+ /**
3
+ * Node types in a content library tree.
4
+ */
5
+ export type LibraryNodeType = 'LIBRARY' | 'PAGE' | 'CONTENT' | 'COMPONENT' | 'STATIC';
6
+ /**
7
+ * Options for parsing a library XML string into a Library tree.
8
+ */
9
+ export interface LibraryParseOptions {
10
+ /**
11
+ * Dot-notation paths for extracting static asset references from component JSON data.
12
+ * Use `*` as a wildcard to traverse arrays.
13
+ *
14
+ * @default ['image.path']
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Extract image paths from nested JSON
19
+ * { assetQuery: ['image.path', 'banners.*.image.src'] }
20
+ * ```
21
+ */
22
+ assetQuery?: string[];
23
+ /**
24
+ * Include orphan components (components not linked to any page) as root-level children.
25
+ * Useful for cleaning up unused components.
26
+ *
27
+ * @default false
28
+ */
29
+ keepOrphans?: boolean;
30
+ }
31
+ /**
32
+ * Options controlling tree traversal behavior.
33
+ */
34
+ export interface TraverseOptions {
35
+ /** Traverse into hidden (filtered-out) subtrees. @default true */
36
+ traverseHidden?: boolean;
37
+ /** Execute callback for hidden nodes. @default false */
38
+ callbackHidden?: boolean;
39
+ }
40
+ /**
41
+ * Callback for tree traversal.
42
+ */
43
+ export type TraverseCallback = (node: LibraryNodeData) => void;
44
+ /**
45
+ * Callback for tree filtering. Return true to keep the node visible.
46
+ */
47
+ export type FilterCallback = (node: LibraryNodeData) => boolean;
48
+ /**
49
+ * A function that applies terminal color/style to text.
50
+ * Compatible with oclif's `ux.colorize(color, text)` signature.
51
+ */
52
+ export type ColorizeFn = (color: string, text: string) => string;
53
+ /**
54
+ * Options for generating a tree string visualization.
55
+ */
56
+ export interface TreeStringOptions {
57
+ /** Whether to include hidden nodes in the output. @default false */
58
+ traverseHidden?: boolean;
59
+ /** Optional colorize function for terminal styling. When omitted, plain text is returned. */
60
+ colorize?: ColorizeFn;
61
+ }
62
+ /**
63
+ * Minimal interface for LibraryNode data (avoids circular import).
64
+ */
65
+ export interface LibraryNodeData {
66
+ id: string;
67
+ type: LibraryNodeType;
68
+ typeId: string | null;
69
+ data: Record<string, unknown> | null;
70
+ parent: LibraryNodeData | null;
71
+ children: LibraryNodeData[];
72
+ hidden: boolean;
73
+ /** @internal Raw xml2js content object */
74
+ xml: Record<string, unknown> | null;
75
+ }
76
+ /**
77
+ * Options for fetching a content library from an instance or local file.
78
+ */
79
+ export interface FetchContentLibraryOptions {
80
+ /** Use a local library XML file instead of fetching from the instance. */
81
+ libraryFile?: string;
82
+ /** Library is a site-private library (use site export path). */
83
+ isSiteLibrary?: boolean;
84
+ /** Asset query paths for static asset extraction. @default ['image.path'] */
85
+ assetQuery?: string[];
86
+ /** Include orphan components. @default false */
87
+ keepOrphans?: boolean;
88
+ /** Wait options for the export job. */
89
+ waitOptions?: WaitForJobOptions;
90
+ }
91
+ /**
92
+ * Result of fetching and parsing a content library.
93
+ */
94
+ export interface FetchContentLibraryResult {
95
+ /** The parsed library tree (filter/traverse/mutate as needed). */
96
+ library: import('./library.js').Library;
97
+ /** The raw archive data buffer (for further processing or re-import). */
98
+ archiveData?: Buffer;
99
+ }
100
+ /**
101
+ * Options for the high-level content export operation.
102
+ */
103
+ export interface ContentExportOptions {
104
+ /** Library is a site-private library. @default false */
105
+ isSiteLibrary?: boolean;
106
+ /** Asset query paths for static asset extraction. @default ['image.path'] */
107
+ assetQuery?: string[];
108
+ /** Use a local library XML file instead of fetching from instance. */
109
+ libraryFile?: string;
110
+ /** Skip asset downloads. @default false */
111
+ offline?: boolean;
112
+ /** Filter by folder classification IDs. */
113
+ folders?: string[];
114
+ /** Treat page IDs as regular expressions. @default false */
115
+ regex?: boolean;
116
+ /** Include orphan components. @default false */
117
+ keepOrphans?: boolean;
118
+ /** Wait options for the export job. */
119
+ waitOptions?: WaitForJobOptions;
120
+ /** Callback for asset download progress. */
121
+ onAssetProgress?: (asset: string, index: number, total: number, success: boolean) => void;
122
+ }
123
+ /**
124
+ * Result of a content export operation.
125
+ */
126
+ export interface ContentExportResult {
127
+ /** The parsed and filtered library tree. */
128
+ library: import('./library.js').Library;
129
+ /** Output directory path. */
130
+ outputPath: string;
131
+ /** List of successfully downloaded asset paths. */
132
+ downloadedAssets: string[];
133
+ /** List of assets that failed to download. */
134
+ failedAssets: {
135
+ path: string;
136
+ error: string;
137
+ }[];
138
+ /** Number of pages in the filtered export. */
139
+ pageCount: number;
140
+ /** Number of content assets in the filtered export. */
141
+ contentCount: number;
142
+ /** Number of components in the filtered export. */
143
+ componentCount: number;
144
+ }