@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,68 @@
1
+ import type { TemplateHelpers } from './types.js';
2
+ /**
3
+ * Convert a string to kebab-case
4
+ */
5
+ export declare function kebabCase(str: string): string;
6
+ /**
7
+ * Convert a string to camelCase
8
+ */
9
+ export declare function camelCase(str: string): string;
10
+ /**
11
+ * Convert a string to PascalCase
12
+ */
13
+ export declare function pascalCase(str: string): string;
14
+ /**
15
+ * Convert a string to snake_case
16
+ */
17
+ export declare function snakeCase(str: string): string;
18
+ /**
19
+ * Create template helpers with current date/time
20
+ */
21
+ export declare function createTemplateHelpers(): TemplateHelpers;
22
+ /**
23
+ * Template rendering context combining variables and helpers
24
+ */
25
+ export interface TemplateContext extends TemplateHelpers {
26
+ [key: string]: string | boolean | string[] | number | ((str: string) => string) | (() => string);
27
+ }
28
+ /**
29
+ * Create a full template context with variables and helpers
30
+ */
31
+ export declare function createTemplateContext(variables: Record<string, string | boolean | string[]>): TemplateContext;
32
+ /**
33
+ * Render an EJS template string
34
+ * @param template - The EJS template string
35
+ * @param context - Template context with variables and helpers
36
+ * @returns Rendered string
37
+ */
38
+ export declare function renderTemplate(template: string, context: TemplateContext): string;
39
+ /**
40
+ * Render a file path template (using double-brace variable syntax)
41
+ * @param pathTemplate - The path template string with double-brace placeholders
42
+ * @param context - Template context with variables and helpers
43
+ * @returns Rendered path string
44
+ */
45
+ export declare function renderPathTemplate(pathTemplate: string, context: TemplateContext): string;
46
+ /**
47
+ * Scaffold template engine
48
+ */
49
+ export declare class ScaffoldEngine {
50
+ private context;
51
+ constructor(variables: Record<string, string | boolean | string[]>);
52
+ /**
53
+ * Get the current template context
54
+ */
55
+ getContext(): TemplateContext;
56
+ /**
57
+ * Render an EJS template string
58
+ */
59
+ render(template: string): string;
60
+ /**
61
+ * Render a file path template
62
+ */
63
+ renderPath(pathTemplate: string): string;
64
+ /**
65
+ * Render an EJS template file
66
+ */
67
+ renderFile(filePath: string): Promise<string>;
68
+ }
@@ -0,0 +1,149 @@
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 { randomUUID } from 'node:crypto';
7
+ import ejs from 'ejs';
8
+ /**
9
+ * Convert a string to kebab-case
10
+ */
11
+ export function kebabCase(str) {
12
+ return str
13
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
14
+ .replace(/[\s_]+/g, '-')
15
+ .toLowerCase();
16
+ }
17
+ /**
18
+ * Convert a string to camelCase
19
+ */
20
+ export function camelCase(str) {
21
+ return str.replace(/[-_\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : '')).replace(/^[A-Z]/, (c) => c.toLowerCase());
22
+ }
23
+ /**
24
+ * Convert a string to PascalCase
25
+ */
26
+ export function pascalCase(str) {
27
+ const camel = camelCase(str);
28
+ return camel.charAt(0).toUpperCase() + camel.slice(1);
29
+ }
30
+ /**
31
+ * Convert a string to snake_case
32
+ */
33
+ export function snakeCase(str) {
34
+ return str
35
+ .replace(/([a-z])([A-Z])/g, '$1_$2')
36
+ .replace(/[-\s]+/g, '_')
37
+ .toLowerCase();
38
+ }
39
+ /**
40
+ * Create template helpers with current date/time
41
+ */
42
+ export function createTemplateHelpers() {
43
+ const now = new Date();
44
+ return {
45
+ kebabCase,
46
+ camelCase,
47
+ pascalCase,
48
+ snakeCase,
49
+ year: now.getFullYear(),
50
+ date: now.toISOString().split('T')[0],
51
+ uuid: () => randomUUID(),
52
+ };
53
+ }
54
+ /**
55
+ * Create a full template context with variables and helpers
56
+ */
57
+ export function createTemplateContext(variables) {
58
+ const helpers = createTemplateHelpers();
59
+ return {
60
+ ...helpers,
61
+ ...variables,
62
+ };
63
+ }
64
+ /**
65
+ * Render an EJS template string
66
+ * @param template - The EJS template string
67
+ * @param context - Template context with variables and helpers
68
+ * @returns Rendered string
69
+ */
70
+ export function renderTemplate(template, context) {
71
+ return ejs.render(template, context, {
72
+ // Allow includes with relative paths
73
+ root: '.',
74
+ });
75
+ }
76
+ /**
77
+ * Render a file path template (using double-brace variable syntax)
78
+ * @param pathTemplate - The path template string with double-brace placeholders
79
+ * @param context - Template context with variables and helpers
80
+ * @returns Rendered path string
81
+ */
82
+ export function renderPathTemplate(pathTemplate, context) {
83
+ // Convert {{variable}} syntax to values
84
+ return pathTemplate.replace(/\{\{([^}]+)\}\}/g, (_, expr) => {
85
+ const trimmed = expr.trim();
86
+ // Handle function calls like {{kebabCase moduleName}}
87
+ const funcMatch = trimmed.match(/^(\w+)\s+(.+)$/);
88
+ if (funcMatch) {
89
+ const [, funcName, argName] = funcMatch;
90
+ const func = context[funcName];
91
+ const arg = context[argName];
92
+ if (typeof func === 'function' && typeof arg === 'string') {
93
+ return func(arg);
94
+ }
95
+ }
96
+ // Handle direct variable reference
97
+ const value = context[trimmed];
98
+ if (typeof value === 'function') {
99
+ // Only call 0-argument functions (like uuid)
100
+ if (value.length === 0) {
101
+ return value();
102
+ }
103
+ // Functions with arguments require the {{func arg}} syntax
104
+ return `{{${trimmed}}}`;
105
+ }
106
+ if (value !== undefined) {
107
+ return String(value);
108
+ }
109
+ // Return original if not found (will likely cause an error later)
110
+ return `{{${trimmed}}}`;
111
+ });
112
+ }
113
+ /**
114
+ * Scaffold template engine
115
+ */
116
+ export class ScaffoldEngine {
117
+ context;
118
+ constructor(variables) {
119
+ this.context = createTemplateContext(variables);
120
+ }
121
+ /**
122
+ * Get the current template context
123
+ */
124
+ getContext() {
125
+ return this.context;
126
+ }
127
+ /**
128
+ * Render an EJS template string
129
+ */
130
+ render(template) {
131
+ return renderTemplate(template, this.context);
132
+ }
133
+ /**
134
+ * Render a file path template
135
+ */
136
+ renderPath(pathTemplate) {
137
+ return renderPathTemplate(pathTemplate, this.context);
138
+ }
139
+ /**
140
+ * Render an EJS template file
141
+ */
142
+ async renderFile(filePath) {
143
+ const result = await ejs.renderFile(filePath, this.context, {
144
+ async: true,
145
+ });
146
+ return result;
147
+ }
148
+ }
149
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/scaffold/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { Scaffold, ScaffoldGenerateOptions, ScaffoldGenerateResult } from './types.js';
2
+ /**
3
+ * Options for resolving output directory.
4
+ */
5
+ export interface ResolveOutputDirectoryOptions {
6
+ /** Explicit output directory override */
7
+ outputDir?: string;
8
+ /** Scaffold with potential defaultOutputDir */
9
+ scaffold?: Scaffold;
10
+ /** Project root directory (defaults to cwd) */
11
+ projectRoot?: string;
12
+ }
13
+ /**
14
+ * Resolve output directory with priority:
15
+ * 1. Explicit outputDir option
16
+ * 2. Scaffold's defaultOutputDir
17
+ * 3. Project root / cwd
18
+ *
19
+ * @param options - Resolution options
20
+ * @returns Resolved absolute output directory path
21
+ */
22
+ export declare function resolveOutputDirectory(options: ResolveOutputDirectoryOptions): string;
23
+ /**
24
+ * Generate files from a scaffold
25
+ * @param scaffold - The scaffold to use
26
+ * @param options - Generation options
27
+ * @returns Generation result
28
+ */
29
+ export declare function generateFromScaffold(scaffold: Scaffold, options?: ScaffoldGenerateOptions): Promise<ScaffoldGenerateResult>;
30
+ /**
31
+ * Preview scaffold generation without writing files
32
+ * @param scaffold - The scaffold to preview
33
+ * @param options - Generation options
34
+ * @returns Preview result
35
+ */
36
+ export declare function previewScaffold(scaffold: Scaffold, options?: Omit<ScaffoldGenerateOptions, 'dryRun'>): Promise<ScaffoldGenerateResult>;
@@ -0,0 +1,285 @@
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 fs from 'node:fs/promises';
7
+ import path from 'node:path';
8
+ import { glob } from 'glob';
9
+ import { ScaffoldEngine } from './engine.js';
10
+ import { evaluateCondition, validateParameters } from './validators.js';
11
+ import { mergeJson, insertAfter, insertBefore, appendContent, prependContent } from './merge.js';
12
+ /**
13
+ * Resolve output directory with priority:
14
+ * 1. Explicit outputDir option
15
+ * 2. Scaffold's defaultOutputDir
16
+ * 3. Project root / cwd
17
+ *
18
+ * @param options - Resolution options
19
+ * @returns Resolved absolute output directory path
20
+ */
21
+ export function resolveOutputDirectory(options) {
22
+ const { outputDir, scaffold, projectRoot = process.cwd() } = options;
23
+ if (outputDir) {
24
+ // Explicit output directory takes priority
25
+ return path.resolve(projectRoot, outputDir);
26
+ }
27
+ if (scaffold?.manifest.defaultOutputDir) {
28
+ // Scaffold's default output directory
29
+ return path.resolve(projectRoot, scaffold.manifest.defaultOutputDir);
30
+ }
31
+ // Fall back to project root
32
+ return projectRoot;
33
+ }
34
+ /**
35
+ * Check if a file exists
36
+ */
37
+ async function fileExists(filePath) {
38
+ try {
39
+ await fs.access(filePath);
40
+ return true;
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ }
46
+ /**
47
+ * Get default file mappings by scanning the files/ directory
48
+ */
49
+ async function getDefaultFileMappings(filesPath) {
50
+ const files = await glob('**/*', {
51
+ cwd: filesPath,
52
+ nodir: true,
53
+ dot: true,
54
+ });
55
+ return files.map((file) => ({
56
+ template: file,
57
+ destination: file.replace(/\.ejs$/, ''),
58
+ }));
59
+ }
60
+ /**
61
+ * Generate files from a scaffold
62
+ * @param scaffold - The scaffold to use
63
+ * @param options - Generation options
64
+ * @returns Generation result
65
+ */
66
+ export async function generateFromScaffold(scaffold, options = {}) {
67
+ const outputDir = options.outputDir || process.cwd();
68
+ const variables = options.variables || {};
69
+ const dryRun = options.dryRun ?? false;
70
+ const force = options.force ?? false;
71
+ // Validate parameters
72
+ const validationResult = validateParameters(scaffold.manifest, variables);
73
+ if (!validationResult.valid) {
74
+ const errorMessages = validationResult.errors.map((e) => `${e.parameter}: ${e.message}`).join(', ');
75
+ throw new Error(`Invalid parameters: ${errorMessages}`);
76
+ }
77
+ // Create template engine with resolved variables
78
+ const engine = new ScaffoldEngine(validationResult.values);
79
+ // Get file mappings
80
+ const fileMappings = scaffold.manifest.files || (await getDefaultFileMappings(scaffold.filesPath));
81
+ const generatedFiles = [];
82
+ const createdDirs = new Set();
83
+ for (const mapping of fileMappings) {
84
+ // Check condition
85
+ if (mapping.condition && !evaluateCondition(mapping.condition, validationResult.values)) {
86
+ continue;
87
+ }
88
+ const templatePath = path.join(scaffold.filesPath, mapping.template);
89
+ const destRendered = engine.renderPath(mapping.destination);
90
+ // If destination is absolute path, use it directly; otherwise join with outputDir
91
+ const destAbsolute = path.isAbsolute(destRendered) ? destRendered : path.join(outputDir, destRendered);
92
+ // For display purposes, show path relative to cwd
93
+ const destRelative = path.relative(process.cwd(), destAbsolute) || destAbsolute;
94
+ // Check if destination exists
95
+ const exists = await fileExists(destAbsolute);
96
+ const overwrite = mapping.overwrite || 'never';
97
+ if (exists) {
98
+ if (overwrite === 'never' && !force) {
99
+ generatedFiles.push({
100
+ path: destRelative,
101
+ absolutePath: destAbsolute,
102
+ action: 'skipped',
103
+ skipReason: 'File already exists',
104
+ });
105
+ continue;
106
+ }
107
+ if (overwrite === 'prompt' && !force) {
108
+ // In non-interactive mode without force, skip
109
+ generatedFiles.push({
110
+ path: destRelative,
111
+ absolutePath: destAbsolute,
112
+ action: 'skipped',
113
+ skipReason: 'File already exists (prompt required)',
114
+ });
115
+ continue;
116
+ }
117
+ }
118
+ // Read and render template
119
+ let content;
120
+ try {
121
+ const templateContent = await fs.readFile(templatePath, 'utf-8');
122
+ // Only render EJS if the file has .ejs extension
123
+ if (mapping.template.endsWith('.ejs')) {
124
+ content = engine.render(templateContent);
125
+ }
126
+ else {
127
+ content = templateContent;
128
+ }
129
+ }
130
+ catch (error) {
131
+ throw new Error(`Failed to read template ${mapping.template}: ${error.message}`);
132
+ }
133
+ if (!dryRun) {
134
+ // Create parent directories
135
+ const destDir = path.dirname(destAbsolute);
136
+ if (!createdDirs.has(destDir)) {
137
+ await fs.mkdir(destDir, { recursive: true });
138
+ createdDirs.add(destDir);
139
+ }
140
+ // Write file
141
+ await fs.writeFile(destAbsolute, content, 'utf-8');
142
+ }
143
+ generatedFiles.push({
144
+ path: destRelative,
145
+ absolutePath: destAbsolute,
146
+ action: exists ? 'overwritten' : 'created',
147
+ });
148
+ }
149
+ // Process file modifications
150
+ if (scaffold.manifest.modifications) {
151
+ for (const modification of scaffold.manifest.modifications) {
152
+ // Check condition
153
+ if (modification.condition && !evaluateCondition(modification.condition, validationResult.values)) {
154
+ continue;
155
+ }
156
+ const targetRendered = engine.renderPath(modification.target);
157
+ const targetAbsolute = path.isAbsolute(targetRendered) ? targetRendered : path.join(outputDir, targetRendered);
158
+ const targetRelative = path.relative(process.cwd(), targetAbsolute) || targetAbsolute;
159
+ // Get modification content
160
+ let modContent;
161
+ if (modification.contentTemplate) {
162
+ const templatePath = path.join(scaffold.filesPath, modification.contentTemplate);
163
+ try {
164
+ const templateContent = await fs.readFile(templatePath, 'utf-8');
165
+ modContent = modification.contentTemplate.endsWith('.ejs') ? engine.render(templateContent) : templateContent;
166
+ }
167
+ catch (error) {
168
+ throw new Error(`Failed to read modification template ${modification.contentTemplate}: ${error.message}`);
169
+ }
170
+ }
171
+ else if (modification.content) {
172
+ modContent = engine.render(modification.content);
173
+ }
174
+ else {
175
+ throw new Error(`Modification for ${modification.target} must have content or contentTemplate`);
176
+ }
177
+ // Process the modification
178
+ const result = await processModification(modification, targetAbsolute, targetRelative, modContent, dryRun);
179
+ generatedFiles.push(result);
180
+ }
181
+ }
182
+ // Render post-instructions if present
183
+ let postInstructions;
184
+ if (scaffold.manifest.postInstructions) {
185
+ postInstructions = engine.render(scaffold.manifest.postInstructions);
186
+ }
187
+ return {
188
+ scaffold,
189
+ files: generatedFiles,
190
+ postInstructions,
191
+ dryRun,
192
+ outputDir,
193
+ };
194
+ }
195
+ /**
196
+ * Process a single file modification
197
+ */
198
+ async function processModification(modification, targetAbsolute, targetRelative, content, dryRun) {
199
+ const exists = await fileExists(targetAbsolute);
200
+ // For modifications, the file should exist (except for json-merge which can create)
201
+ if (!exists && modification.type !== 'json-merge') {
202
+ return {
203
+ path: targetRelative,
204
+ absolutePath: targetAbsolute,
205
+ action: 'skipped',
206
+ skipReason: `Target file does not exist for ${modification.type}`,
207
+ };
208
+ }
209
+ let existingContent = '';
210
+ if (exists) {
211
+ existingContent = await fs.readFile(targetAbsolute, 'utf-8');
212
+ }
213
+ let newContent;
214
+ try {
215
+ switch (modification.type) {
216
+ case 'json-merge': {
217
+ if (!exists) {
218
+ // Create new JSON file
219
+ newContent = JSON.stringify(JSON.parse(content), null, 2);
220
+ }
221
+ else {
222
+ newContent = mergeJson(existingContent, content, {
223
+ jsonPath: modification.jsonPath,
224
+ createPath: true,
225
+ });
226
+ }
227
+ break;
228
+ }
229
+ case 'insert-after': {
230
+ if (!modification.marker) {
231
+ throw new Error('insert-after requires a marker');
232
+ }
233
+ newContent = insertAfter(existingContent, content, modification.marker);
234
+ break;
235
+ }
236
+ case 'insert-before': {
237
+ if (!modification.marker) {
238
+ throw new Error('insert-before requires a marker');
239
+ }
240
+ newContent = insertBefore(existingContent, content, modification.marker);
241
+ break;
242
+ }
243
+ case 'append': {
244
+ newContent = appendContent(existingContent, content);
245
+ break;
246
+ }
247
+ case 'prepend': {
248
+ newContent = prependContent(existingContent, content);
249
+ break;
250
+ }
251
+ default: {
252
+ throw new Error(`Unknown modification type: ${modification.type}`);
253
+ }
254
+ }
255
+ }
256
+ catch (error) {
257
+ return {
258
+ path: targetRelative,
259
+ absolutePath: targetAbsolute,
260
+ action: 'skipped',
261
+ skipReason: `Modification failed: ${error.message}`,
262
+ };
263
+ }
264
+ if (!dryRun) {
265
+ // Create parent directories if needed
266
+ const targetDir = path.dirname(targetAbsolute);
267
+ await fs.mkdir(targetDir, { recursive: true });
268
+ await fs.writeFile(targetAbsolute, newContent, 'utf-8');
269
+ }
270
+ return {
271
+ path: targetRelative,
272
+ absolutePath: targetAbsolute,
273
+ action: exists ? 'merged' : 'created',
274
+ };
275
+ }
276
+ /**
277
+ * Preview scaffold generation without writing files
278
+ * @param scaffold - The scaffold to preview
279
+ * @param options - Generation options
280
+ * @returns Preview result
281
+ */
282
+ export async function previewScaffold(scaffold, options = {}) {
283
+ return generateFromScaffold(scaffold, { ...options, dryRun: true });
284
+ }
285
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/scaffold/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Scaffold generation for B2C Commerce projects.
3
+ *
4
+ * This module provides functions for discovering, validating, and executing
5
+ * project scaffolds (templates) for cartridges, custom APIs, Page Designer
6
+ * components, jobs, and other B2C artifacts.
7
+ *
8
+ * ## Scaffold Discovery
9
+ *
10
+ * Scaffolds are discovered from multiple sources in priority order:
11
+ *
12
+ * 1. **Project scaffolds** (`.b2c/scaffolds/`) - highest priority
13
+ * 2. **Plugin scaffolds** (via `b2c:scaffold-providers` hook)
14
+ * 3. **User scaffolds** (`~/.b2c/scaffolds/`)
15
+ * 4. **Built-in scaffolds** - lowest priority
16
+ *
17
+ * Later sources override earlier ones by name.
18
+ *
19
+ * - {@link ScaffoldRegistry} - Registry for managing scaffold discovery
20
+ * - {@link createScaffoldRegistry} - Create a new registry instance
21
+ *
22
+ * ## Scaffold Generation
23
+ *
24
+ * - {@link generateFromScaffold} - Generate files from a scaffold
25
+ * - {@link previewScaffold} - Preview generation without writing files
26
+ *
27
+ * ## Template Engine
28
+ *
29
+ * - {@link ScaffoldEngine} - EJS-based template rendering engine
30
+ *
31
+ * ## Validation
32
+ *
33
+ * - {@link validateScaffoldManifest} - Validate a scaffold manifest
34
+ * - {@link validateParameters} - Validate parameter values
35
+ *
36
+ * ## Usage
37
+ *
38
+ * ```typescript
39
+ * import {
40
+ * createScaffoldRegistry,
41
+ * generateFromScaffold,
42
+ * } from '@salesforce/b2c-tooling-sdk/scaffold';
43
+ *
44
+ * // Create registry and find scaffolds
45
+ * const registry = createScaffoldRegistry();
46
+ * const scaffolds = await registry.getScaffolds();
47
+ *
48
+ * // Get a specific scaffold
49
+ * const cartridgeScaffold = await registry.getScaffold('cartridge');
50
+ *
51
+ * // Generate files
52
+ * const result = await generateFromScaffold(cartridgeScaffold, {
53
+ * outputDir: './output',
54
+ * variables: { cartridgeName: 'app_custom' },
55
+ * });
56
+ * ```
57
+ *
58
+ * @module scaffold
59
+ */
60
+ export type { ScaffoldManifest, ScaffoldParameter, ScaffoldChoice, ScaffoldParameterType, ScaffoldCategory, DynamicParameterSource, FileMapping, FileModification, OverwriteBehavior, Scaffold, ScaffoldSource, ScaffoldDiscoveryOptions, ScaffoldProvider, ScaffoldProviderPriority, ScaffoldTransformer, ScaffoldContext, ScaffoldGenerateOptions, ScaffoldGenerateResult, GeneratedFile, ParameterValidationError, ParameterValidationResult, TemplateHelpers, SourceResult, } from './types.js';
61
+ export { SCAFFOLDS_DATA_DIR } from './types.js';
62
+ export { HOOK_POINTS, resolveLocalSource, resolveRemoteSource, isRemoteSource, validateAgainstSource, } from './sources.js';
63
+ export { ScaffoldRegistry, createScaffoldRegistry } from './registry.js';
64
+ export { ScaffoldEngine, createTemplateContext, createTemplateHelpers, renderTemplate, renderPathTemplate, kebabCase, camelCase, pascalCase, snakeCase, } from './engine.js';
65
+ export type { TemplateContext } from './engine.js';
66
+ export { generateFromScaffold, previewScaffold, resolveOutputDirectory } from './executor.js';
67
+ export type { ResolveOutputDirectoryOptions } from './executor.js';
68
+ export { validateScaffoldManifest, validateParameters, evaluateCondition, isValidScaffoldName, isValidParameterName, } from './validators.js';
69
+ export { mergeJson, insertAfter, insertBefore, appendContent, prependContent } from './merge.js';
70
+ export type { JsonMergeOptions, TextInsertOptions } from './merge.js';
71
+ export { resolveScaffoldParameters, parseParameterOptions, getParameterSchemas } from './parameter-resolver.js';
72
+ export type { ResolveParametersOptions, ParameterResolutionError, ResolvedParameters, ResolvedParameterSchema, } from './parameter-resolver.js';
73
+ export { validateEjsSyntax, checkTemplateFiles, checkOrphanedFiles, validateScaffoldDirectory } from './validation.js';
74
+ export type { ValidationIssueSeverity, ValidationIssue, ValidationResult, ValidateScaffoldOptions, } from './validation.js';
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ export { SCAFFOLDS_DATA_DIR } from './types.js';
7
+ // Source resolution
8
+ export { HOOK_POINTS, resolveLocalSource, resolveRemoteSource, isRemoteSource, validateAgainstSource, } from './sources.js';
9
+ // Registry
10
+ export { ScaffoldRegistry, createScaffoldRegistry } from './registry.js';
11
+ // Engine
12
+ export { ScaffoldEngine, createTemplateContext, createTemplateHelpers, renderTemplate, renderPathTemplate, kebabCase, camelCase, pascalCase, snakeCase, } from './engine.js';
13
+ // Executor
14
+ export { generateFromScaffold, previewScaffold, resolveOutputDirectory } from './executor.js';
15
+ // Validators
16
+ export { validateScaffoldManifest, validateParameters, evaluateCondition, isValidScaffoldName, isValidParameterName, } from './validators.js';
17
+ // Merge utilities
18
+ export { mergeJson, insertAfter, insertBefore, appendContent, prependContent } from './merge.js';
19
+ // Parameter resolution
20
+ export { resolveScaffoldParameters, parseParameterOptions, getParameterSchemas } from './parameter-resolver.js';
21
+ // Validation
22
+ export { validateEjsSyntax, checkTemplateFiles, checkOrphanedFiles, validateScaffoldDirectory } from './validation.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scaffold/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyFH,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAE9C,oBAAoB;AACpB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,WAAW;AACX,OAAO,EAAC,gBAAgB,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAEvE,SAAS;AACT,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,GACV,MAAM,aAAa,CAAC;AAGrB,WAAW;AACX,OAAO,EAAC,oBAAoB,EAAE,eAAe,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAG5F,aAAa;AACb,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,kBAAkB;AAClB,OAAO,EAAC,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;AAG/F,uBAAuB;AACvB,OAAO,EAAC,yBAAyB,EAAE,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAQ9G,aAAa;AACb,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,yBAAyB,EAAC,MAAM,iBAAiB,CAAC"}