@salesforce/b2c-tooling-sdk 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +191 -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 +20 -3
  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 +2 -1
  58. package/dist/cjs/cli/oauth-command.d.ts +22 -2
  59. package/dist/cjs/cli/oauth-command.js +53 -8
  60. package/dist/cjs/cli/oauth-command.js.map +1 -1
  61. package/dist/cjs/cli/ods-command.d.ts +6 -2
  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 +2 -1
  65. package/dist/cjs/clients/am-api.d.ts +521 -0
  66. package/dist/cjs/clients/am-api.js +986 -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 +954 -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 +153 -0
  151. package/dist/cjs/operations/users/index.js +139 -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 +198 -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 +20 -3
  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 +2 -1
  213. package/dist/esm/cli/oauth-command.d.ts +22 -2
  214. package/dist/esm/cli/oauth-command.js +53 -8
  215. package/dist/esm/cli/oauth-command.js.map +1 -1
  216. package/dist/esm/cli/ods-command.d.ts +6 -2
  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 +2 -1
  220. package/dist/esm/clients/am-api.d.ts +521 -0
  221. package/dist/esm/clients/am-api.js +986 -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 +954 -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 +153 -0
  306. package/dist/esm/operations/users/index.js +139 -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 +1142 -0
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Options for JSON merge operations
3
+ */
4
+ export interface JsonMergeOptions {
5
+ /** JSON path to the target location (e.g., "scripts", "hooks.dw.ocapi") */
6
+ jsonPath?: string;
7
+ /** Whether to create the path if it doesn't exist */
8
+ createPath?: boolean;
9
+ }
10
+ /**
11
+ * Merge JSON content into an existing JSON string
12
+ * @param existingJson - The existing JSON string
13
+ * @param newContent - JSON content to merge (string or object)
14
+ * @param options - Merge options
15
+ * @returns Updated JSON string
16
+ */
17
+ export declare function mergeJson(existingJson: string, newContent: string | Record<string, unknown>, options?: JsonMergeOptions): string;
18
+ /**
19
+ * Options for text insertion operations
20
+ */
21
+ export interface TextInsertOptions {
22
+ /** Marker string to find for insert-after/insert-before */
23
+ marker?: string;
24
+ /** Whether to add a newline after the inserted content */
25
+ addNewline?: boolean;
26
+ }
27
+ /**
28
+ * Insert text after a marker in existing content
29
+ * @param existingContent - The existing text content
30
+ * @param newContent - Content to insert
31
+ * @param marker - Marker string to find
32
+ * @returns Updated content
33
+ */
34
+ export declare function insertAfter(existingContent: string, newContent: string, marker: string): string;
35
+ /**
36
+ * Insert text before a marker in existing content
37
+ * @param existingContent - The existing text content
38
+ * @param newContent - Content to insert
39
+ * @param marker - Marker string to find
40
+ * @returns Updated content
41
+ */
42
+ export declare function insertBefore(existingContent: string, newContent: string, marker: string): string;
43
+ /**
44
+ * Append content to the end of existing content
45
+ * @param existingContent - The existing text content
46
+ * @param newContent - Content to append
47
+ * @returns Updated content
48
+ */
49
+ export declare function appendContent(existingContent: string, newContent: string): string;
50
+ /**
51
+ * Prepend content to the beginning of existing content
52
+ * @param existingContent - The existing text content
53
+ * @param newContent - Content to prepend
54
+ * @returns Updated content
55
+ */
56
+ export declare function prependContent(existingContent: string, newContent: string): string;
@@ -0,0 +1,183 @@
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
+ * Navigate to a nested JSON path and return parent + key
8
+ * @param obj - The object to navigate
9
+ * @param path - Dot-separated path (e.g., "hooks.dw.ocapi")
10
+ * @returns Tuple of [parent object, final key, success]
11
+ */
12
+ function navigateToPath(obj, path) {
13
+ if (!path) {
14
+ return [null, '', false];
15
+ }
16
+ const parts = path.split('.');
17
+ const finalKey = parts.pop();
18
+ let current = obj;
19
+ for (const part of parts) {
20
+ if (current === null || typeof current !== 'object') {
21
+ return [null, finalKey, false];
22
+ }
23
+ if (!(part in current)) {
24
+ return [null, finalKey, false];
25
+ }
26
+ current = current[part];
27
+ }
28
+ if (current === null || typeof current !== 'object') {
29
+ return [null, finalKey, false];
30
+ }
31
+ return [current, finalKey, true];
32
+ }
33
+ /**
34
+ * Create a nested path in an object
35
+ * @param obj - The object to modify
36
+ * @param path - Dot-separated path to create
37
+ * @returns The parent object of the final key
38
+ */
39
+ function createPath(obj, path) {
40
+ const parts = path.split('.');
41
+ const finalKey = parts.pop();
42
+ let current = obj;
43
+ for (const part of parts) {
44
+ if (!(part in current) || typeof current[part] !== 'object' || current[part] === null) {
45
+ current[part] = {};
46
+ }
47
+ current = current[part];
48
+ }
49
+ return [current, finalKey];
50
+ }
51
+ /**
52
+ * Deep merge two objects, with source overriding target for conflicts
53
+ */
54
+ function deepMerge(target, source) {
55
+ if (Array.isArray(source)) {
56
+ if (Array.isArray(target)) {
57
+ // Merge arrays by appending source items not already in target
58
+ const result = [...target];
59
+ for (const item of source) {
60
+ const itemStr = JSON.stringify(item);
61
+ const exists = result.some((existing) => JSON.stringify(existing) === itemStr);
62
+ if (!exists) {
63
+ result.push(item);
64
+ }
65
+ }
66
+ return result;
67
+ }
68
+ return source;
69
+ }
70
+ if (source !== null && typeof source === 'object') {
71
+ if (target !== null && typeof target === 'object' && !Array.isArray(target)) {
72
+ const result = { ...target };
73
+ for (const key of Object.keys(source)) {
74
+ result[key] = deepMerge(result[key], source[key]);
75
+ }
76
+ return result;
77
+ }
78
+ return source;
79
+ }
80
+ return source;
81
+ }
82
+ /**
83
+ * Merge JSON content into an existing JSON string
84
+ * @param existingJson - The existing JSON string
85
+ * @param newContent - JSON content to merge (string or object)
86
+ * @param options - Merge options
87
+ * @returns Updated JSON string
88
+ */
89
+ export function mergeJson(existingJson, newContent, options = {}) {
90
+ const existing = JSON.parse(existingJson);
91
+ const content = typeof newContent === 'string' ? JSON.parse(newContent) : newContent;
92
+ if (options.jsonPath) {
93
+ const [parent, key, found] = navigateToPath(existing, options.jsonPath);
94
+ if (!found) {
95
+ if (options.createPath !== false) {
96
+ const [newParent, newKey] = createPath(existing, options.jsonPath);
97
+ newParent[newKey] = content;
98
+ }
99
+ else {
100
+ throw new Error(`JSON path not found: ${options.jsonPath}`);
101
+ }
102
+ }
103
+ else if (parent) {
104
+ parent[key] = deepMerge(parent[key], content);
105
+ }
106
+ }
107
+ else {
108
+ // Merge at root level
109
+ const merged = deepMerge(existing, content);
110
+ return JSON.stringify(merged, null, 2);
111
+ }
112
+ return JSON.stringify(existing, null, 2);
113
+ }
114
+ /**
115
+ * Insert text after a marker in existing content
116
+ * @param existingContent - The existing text content
117
+ * @param newContent - Content to insert
118
+ * @param marker - Marker string to find
119
+ * @returns Updated content
120
+ */
121
+ export function insertAfter(existingContent, newContent, marker) {
122
+ const index = existingContent.indexOf(marker);
123
+ if (index === -1) {
124
+ throw new Error(`Marker not found: ${marker}`);
125
+ }
126
+ let insertPoint = index + marker.length;
127
+ // If there's a newline right after the marker, insert after it
128
+ if (existingContent[insertPoint] === '\n') {
129
+ insertPoint++;
130
+ }
131
+ // Check if we need to add a newline before the new content
132
+ const needsNewlineBefore = insertPoint > 0 && existingContent[insertPoint - 1] !== '\n' && !newContent.startsWith('\n');
133
+ // Check if we need to add a newline after the new content
134
+ const needsNewlineAfter = !newContent.endsWith('\n') && insertPoint < existingContent.length && existingContent[insertPoint] !== '\n';
135
+ return (existingContent.slice(0, insertPoint) +
136
+ (needsNewlineBefore ? '\n' : '') +
137
+ newContent +
138
+ (needsNewlineAfter ? '\n' : '') +
139
+ existingContent.slice(insertPoint));
140
+ }
141
+ /**
142
+ * Insert text before a marker in existing content
143
+ * @param existingContent - The existing text content
144
+ * @param newContent - Content to insert
145
+ * @param marker - Marker string to find
146
+ * @returns Updated content
147
+ */
148
+ export function insertBefore(existingContent, newContent, marker) {
149
+ const index = existingContent.indexOf(marker);
150
+ if (index === -1) {
151
+ throw new Error(`Marker not found: ${marker}`);
152
+ }
153
+ // Check if we need to add a newline before the new content
154
+ const needsNewlineBefore = index > 0 && existingContent[index - 1] !== '\n' && !newContent.startsWith('\n');
155
+ // Check if we need to add a newline after the new content (before marker)
156
+ const needsNewlineAfter = !newContent.endsWith('\n');
157
+ return (existingContent.slice(0, index) +
158
+ (needsNewlineBefore ? '\n' : '') +
159
+ newContent +
160
+ (needsNewlineAfter ? '\n' : '') +
161
+ existingContent.slice(index));
162
+ }
163
+ /**
164
+ * Append content to the end of existing content
165
+ * @param existingContent - The existing text content
166
+ * @param newContent - Content to append
167
+ * @returns Updated content
168
+ */
169
+ export function appendContent(existingContent, newContent) {
170
+ const needsNewline = existingContent.length > 0 && !existingContent.endsWith('\n');
171
+ return existingContent + (needsNewline ? '\n' : '') + newContent;
172
+ }
173
+ /**
174
+ * Prepend content to the beginning of existing content
175
+ * @param existingContent - The existing text content
176
+ * @param newContent - Content to prepend
177
+ * @returns Updated content
178
+ */
179
+ export function prependContent(existingContent, newContent) {
180
+ const needsNewline = !newContent.endsWith('\n') && existingContent.length > 0;
181
+ return newContent + (needsNewline ? '\n' : '') + existingContent;
182
+ }
183
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/scaffold/merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { B2CInstance } from '../instance/index.js';
2
+ import type { Scaffold, ScaffoldParameter, ScaffoldChoice } from './types.js';
3
+ /**
4
+ * Options for resolving scaffold parameters.
5
+ */
6
+ export interface ResolveParametersOptions {
7
+ /** Pre-provided variables (from flags, env, etc.) */
8
+ providedVariables?: Record<string, string | boolean | string[]>;
9
+ /** Project root for resolving local sources */
10
+ projectRoot?: string;
11
+ /** B2C instance for resolving remote sources (sites) */
12
+ b2cInstance?: B2CInstance;
13
+ /** Use defaults for missing values instead of erroring */
14
+ useDefaults?: boolean;
15
+ }
16
+ /**
17
+ * Error encountered during parameter validation.
18
+ */
19
+ export interface ParameterResolutionError {
20
+ /** Parameter name */
21
+ parameter: string;
22
+ /** Error message */
23
+ message: string;
24
+ /** The invalid value, if applicable */
25
+ value?: unknown;
26
+ /** Available choices, if applicable */
27
+ availableChoices?: string[];
28
+ }
29
+ /**
30
+ * Result of resolving scaffold parameters.
31
+ */
32
+ export interface ResolvedParameters {
33
+ /** All resolved variable values */
34
+ variables: Record<string, string | boolean | string[]>;
35
+ /** Parameters still missing values (need prompting) */
36
+ missingParameters: ScaffoldParameter[];
37
+ /** Validation errors encountered */
38
+ errors: ParameterResolutionError[];
39
+ }
40
+ /**
41
+ * Schema for a resolved parameter with source choices populated.
42
+ */
43
+ export interface ResolvedParameterSchema {
44
+ /** Parameter definition */
45
+ parameter: ScaffoldParameter;
46
+ /** Resolved choices from dynamic source */
47
+ resolvedChoices?: ScaffoldChoice[];
48
+ /** Path map for cartridges (name -> absolute path) */
49
+ pathMap?: Map<string, string>;
50
+ /** Warning message if source resolution failed */
51
+ warning?: string;
52
+ }
53
+ /**
54
+ * Resolve scaffold parameters by:
55
+ * 1. Validating provided variables against sources
56
+ * 2. Setting companion path variables for cartridges
57
+ * 3. Applying defaults where appropriate
58
+ * 4. Filtering by condition (`when` field)
59
+ * 5. Collecting missing required parameters
60
+ *
61
+ * @param scaffold - The scaffold to resolve parameters for
62
+ * @param options - Resolution options
63
+ * @returns Resolved parameters, missing parameters, and any errors
64
+ */
65
+ export declare function resolveScaffoldParameters(scaffold: Scaffold, options?: ResolveParametersOptions): Promise<ResolvedParameters>;
66
+ /**
67
+ * Parse key=value option strings into variables object.
68
+ * Handles boolean values and array values for multi-choice params.
69
+ *
70
+ * @param options - Array of "key=value" strings
71
+ * @param scaffold - Optional scaffold for multi-choice detection
72
+ * @returns Variables object
73
+ */
74
+ export declare function parseParameterOptions(options: string[], scaffold?: Scaffold): Record<string, boolean | string | string[]>;
75
+ /**
76
+ * Get parameter metadata with resolved source choices.
77
+ * Useful for MCP/other consumers to build input schemas.
78
+ *
79
+ * @param scaffold - The scaffold to get parameter schemas for
80
+ * @param options - Options for resolving sources
81
+ * @returns Array of resolved parameter schemas
82
+ */
83
+ export declare function getParameterSchemas(scaffold: Scaffold, options?: {
84
+ projectRoot?: string;
85
+ b2cInstance?: B2CInstance;
86
+ }): Promise<ResolvedParameterSchema[]>;
@@ -0,0 +1,179 @@
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 { evaluateCondition } from './validators.js';
7
+ import { resolveLocalSource, resolveRemoteSource, isRemoteSource, validateAgainstSource } from './sources.js';
8
+ /**
9
+ * Resolve scaffold parameters by:
10
+ * 1. Validating provided variables against sources
11
+ * 2. Setting companion path variables for cartridges
12
+ * 3. Applying defaults where appropriate
13
+ * 4. Filtering by condition (`when` field)
14
+ * 5. Collecting missing required parameters
15
+ *
16
+ * @param scaffold - The scaffold to resolve parameters for
17
+ * @param options - Resolution options
18
+ * @returns Resolved parameters, missing parameters, and any errors
19
+ */
20
+ export async function resolveScaffoldParameters(scaffold, options = {}) {
21
+ const { providedVariables = {}, projectRoot = process.cwd(), useDefaults = false } = options;
22
+ const variables = { ...providedVariables };
23
+ const missingParameters = [];
24
+ const errors = [];
25
+ // Cache for cartridge paths (only resolved once if needed)
26
+ let cartridgePathMap;
27
+ for (const param of scaffold.manifest.parameters) {
28
+ // Check if conditional parameter should be evaluated
29
+ if (param.when && !evaluateCondition(param.when, variables)) {
30
+ continue;
31
+ }
32
+ // If value was already provided, validate it against source
33
+ if (variables[param.name] !== undefined && param.source) {
34
+ const providedValue = String(variables[param.name]);
35
+ const validation = validateAgainstSource(param.source, providedValue, projectRoot);
36
+ if (!validation.valid) {
37
+ errors.push({
38
+ parameter: param.name,
39
+ message: `Invalid value "${providedValue}" for ${param.name}. Available ${param.source}: ${validation.availableChoices?.join(', ') || 'none'}`,
40
+ value: providedValue,
41
+ availableChoices: validation.availableChoices,
42
+ });
43
+ continue;
44
+ }
45
+ // Set companion path variable for cartridges source
46
+ if (param.source === 'cartridges') {
47
+ if (!cartridgePathMap) {
48
+ const result = resolveLocalSource('cartridges', projectRoot);
49
+ cartridgePathMap = result.pathMap;
50
+ }
51
+ const cartridgePath = cartridgePathMap?.get(providedValue);
52
+ if (cartridgePath) {
53
+ variables[`${param.name}Path`] = cartridgePath;
54
+ }
55
+ }
56
+ continue;
57
+ }
58
+ // Skip if already provided (no source validation needed)
59
+ if (variables[param.name] !== undefined) {
60
+ continue;
61
+ }
62
+ // Use default if available and useDefaults is enabled
63
+ if (useDefaults && param.default !== undefined) {
64
+ variables[param.name] = param.default;
65
+ // Set companion path variable for cartridges source with default value
66
+ if (param.source === 'cartridges' && typeof param.default === 'string') {
67
+ if (!cartridgePathMap) {
68
+ const result = resolveLocalSource('cartridges', projectRoot);
69
+ cartridgePathMap = result.pathMap;
70
+ }
71
+ const cartridgePath = cartridgePathMap?.get(param.default);
72
+ if (cartridgePath) {
73
+ variables[`${param.name}Path`] = cartridgePath;
74
+ }
75
+ }
76
+ continue;
77
+ }
78
+ // Parameter is missing - track it
79
+ if (param.required || param.default === undefined) {
80
+ missingParameters.push(param);
81
+ }
82
+ else if (param.default !== undefined) {
83
+ // Optional parameter with default - apply it
84
+ variables[param.name] = param.default;
85
+ }
86
+ }
87
+ return { variables, missingParameters, errors };
88
+ }
89
+ /**
90
+ * Parse key=value option strings into variables object.
91
+ * Handles boolean values and array values for multi-choice params.
92
+ *
93
+ * @param options - Array of "key=value" strings
94
+ * @param scaffold - Optional scaffold for multi-choice detection
95
+ * @returns Variables object
96
+ */
97
+ export function parseParameterOptions(options, scaffold) {
98
+ const variables = {};
99
+ // Build set of multi-choice parameter names
100
+ const multiChoiceParams = new Set();
101
+ if (scaffold) {
102
+ for (const param of scaffold.manifest.parameters) {
103
+ if (param.type === 'multi-choice') {
104
+ multiChoiceParams.add(param.name);
105
+ }
106
+ }
107
+ }
108
+ for (const opt of options) {
109
+ const eqIndex = opt.indexOf('=');
110
+ if (eqIndex === -1) {
111
+ // No equals sign - treat as boolean flag
112
+ variables[opt] = true;
113
+ }
114
+ else {
115
+ const key = opt.slice(0, Math.max(0, eqIndex));
116
+ const value = opt.slice(Math.max(0, eqIndex + 1));
117
+ if (value === 'true') {
118
+ variables[key] = true;
119
+ }
120
+ else if (value === 'false') {
121
+ variables[key] = false;
122
+ }
123
+ else if (multiChoiceParams.has(key)) {
124
+ // Split comma-separated values for multi-choice parameters
125
+ variables[key] = value.split(',').map((v) => v.trim());
126
+ }
127
+ else {
128
+ variables[key] = value;
129
+ }
130
+ }
131
+ }
132
+ return variables;
133
+ }
134
+ /**
135
+ * Get parameter metadata with resolved source choices.
136
+ * Useful for MCP/other consumers to build input schemas.
137
+ *
138
+ * @param scaffold - The scaffold to get parameter schemas for
139
+ * @param options - Options for resolving sources
140
+ * @returns Array of resolved parameter schemas
141
+ */
142
+ export async function getParameterSchemas(scaffold, options = {}) {
143
+ const { projectRoot = process.cwd(), b2cInstance } = options;
144
+ const schemas = [];
145
+ for (const param of scaffold.manifest.parameters) {
146
+ const schema = { parameter: param };
147
+ if (param.source) {
148
+ if (isRemoteSource(param.source)) {
149
+ // Remote source - needs B2C instance
150
+ if (b2cInstance) {
151
+ try {
152
+ schema.resolvedChoices = await resolveRemoteSource(param.source, b2cInstance);
153
+ }
154
+ catch (error) {
155
+ schema.warning = `Could not fetch ${param.source}: ${error.message}`;
156
+ schema.resolvedChoices = [];
157
+ }
158
+ }
159
+ else {
160
+ schema.warning = `Remote source '${param.source}' requires B2C instance`;
161
+ schema.resolvedChoices = [];
162
+ }
163
+ }
164
+ else {
165
+ // Local source
166
+ const result = resolveLocalSource(param.source, projectRoot);
167
+ schema.resolvedChoices = result.choices;
168
+ schema.pathMap = result.pathMap;
169
+ }
170
+ }
171
+ else if (param.choices) {
172
+ // Static choices
173
+ schema.resolvedChoices = param.choices;
174
+ }
175
+ schemas.push(schema);
176
+ }
177
+ return schemas;
178
+ }
179
+ //# sourceMappingURL=parameter-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-resolver.js","sourceRoot":"","sources":["../../../src/scaffold/parameter-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAwD5G;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,QAAkB,EAClB,UAAoC,EAAE;IAEtC,MAAM,EAAC,iBAAiB,GAAG,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;IAE3F,MAAM,SAAS,GAAgD,EAAC,GAAG,iBAAiB,EAAC,CAAC;IACtF,MAAM,iBAAiB,GAAwB,EAAE,CAAC;IAClD,MAAM,MAAM,GAA+B,EAAE,CAAC;IAE9C,2DAA2D;IAC3D,IAAI,gBAAiD,CAAC;IAEtD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjD,qDAAqD;QACrD,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,4DAA4D;QAC5D,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACxD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YAEnF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC;oBACV,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,OAAO,EAAE,kBAAkB,aAAa,SAAS,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;oBAC9I,KAAK,EAAE,aAAa;oBACpB,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;iBAC9C,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,oDAAoD;YACpD,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;oBAC7D,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC;gBACpC,CAAC;gBACD,MAAM,aAAa,GAAG,gBAAgB,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC3D,IAAI,aAAa,EAAE,CAAC;oBAClB,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,yDAAyD;QACzD,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,sDAAsD;QACtD,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/C,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YAEtC,uEAAuE;YACvE,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACvE,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;oBAC7D,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC;gBACpC,CAAC;gBACD,MAAM,aAAa,GAAG,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3D,IAAI,aAAa,EAAE,CAAC;oBAClB,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,kCAAkC;QAClC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClD,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,6CAA6C;YAC7C,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAC,CAAC;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAiB,EACjB,QAAmB;IAEnB,MAAM,SAAS,GAAgD,EAAE,CAAC;IAElE,4CAA4C;IAC5C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,yCAAyC;YACzC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAElD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACrB,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC7B,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,2DAA2D;gBAC3D,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAkB,EAClB,UAA6D,EAAE;IAE/D,MAAM,EAAC,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAC,GAAG,OAAO,CAAC;IAC3D,MAAM,OAAO,GAA8B,EAAE,CAAC;IAE9C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjD,MAAM,MAAM,GAA4B,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;QAE3D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,qCAAqC;gBACrC,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC;wBACH,MAAM,CAAC,eAAe,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;oBAChF,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,OAAO,GAAG,mBAAmB,KAAK,CAAC,MAAM,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC;wBAChF,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;oBAC9B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,OAAO,GAAG,kBAAkB,KAAK,CAAC,MAAM,yBAAyB,CAAC;oBACzE,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,eAAe;gBACf,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC7D,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;gBACxC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAClC,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,iBAAiB;YACjB,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { Scaffold, ScaffoldDiscoveryOptions, ScaffoldProvider, ScaffoldTransformer } from './types.js';
2
+ /**
3
+ * Scaffold registry for discovering and managing scaffolds
4
+ */
5
+ export declare class ScaffoldRegistry {
6
+ private providers;
7
+ private transformers;
8
+ private scaffoldCache;
9
+ /**
10
+ * Add scaffold providers
11
+ */
12
+ addProviders(providers: ScaffoldProvider[]): void;
13
+ /**
14
+ * Add scaffold transformers
15
+ */
16
+ addTransformers(transformers: ScaffoldTransformer[]): void;
17
+ /**
18
+ * Clear the scaffold cache
19
+ */
20
+ clearCache(): void;
21
+ /**
22
+ * Get all scaffolds from all sources
23
+ * @param options - Discovery options
24
+ * @returns Array of scaffolds (deduplicated by name, later sources override earlier)
25
+ */
26
+ getScaffolds(options?: ScaffoldDiscoveryOptions): Promise<Scaffold[]>;
27
+ /**
28
+ * Get a specific scaffold by ID
29
+ * @param id - Scaffold ID
30
+ * @param options - Discovery options
31
+ * @returns Scaffold or null if not found
32
+ */
33
+ getScaffold(id: string, options?: ScaffoldDiscoveryOptions): Promise<Scaffold | null>;
34
+ /**
35
+ * Search scaffolds by query
36
+ * @param query - Search query
37
+ * @param options - Additional discovery options
38
+ * @returns Matching scaffolds
39
+ */
40
+ searchScaffolds(query: string, options?: ScaffoldDiscoveryOptions): Promise<Scaffold[]>;
41
+ }
42
+ /**
43
+ * Create a new scaffold registry instance
44
+ */
45
+ export declare function createScaffoldRegistry(): ScaffoldRegistry;