@interopio/iocd-cli 0.0.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 (297) hide show
  1. package/README.md +40 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +96 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/apps.command.d.ts +3 -0
  7. package/dist/commands/apps.command.d.ts.map +1 -0
  8. package/dist/commands/apps.command.js +110 -0
  9. package/dist/commands/apps.command.js.map +1 -0
  10. package/dist/commands/components.command.d.ts +3 -0
  11. package/dist/commands/components.command.d.ts.map +1 -0
  12. package/dist/commands/components.command.js +116 -0
  13. package/dist/commands/components.command.js.map +1 -0
  14. package/dist/commands/create.command.d.ts +3 -0
  15. package/dist/commands/create.command.d.ts.map +1 -0
  16. package/dist/commands/create.command.js +19 -0
  17. package/dist/commands/create.command.js.map +1 -0
  18. package/dist/commands/dev.command.d.ts +4 -0
  19. package/dist/commands/dev.command.d.ts.map +1 -0
  20. package/dist/commands/dev.command.js +25 -0
  21. package/dist/commands/dev.command.js.map +1 -0
  22. package/dist/commands/installer.command.d.ts +3 -0
  23. package/dist/commands/installer.command.d.ts.map +1 -0
  24. package/dist/commands/installer.command.js +19 -0
  25. package/dist/commands/installer.command.js.map +1 -0
  26. package/dist/commands/license.command.d.ts +3 -0
  27. package/dist/commands/license.command.d.ts.map +1 -0
  28. package/dist/commands/license.command.js +23 -0
  29. package/dist/commands/license.command.js.map +1 -0
  30. package/dist/commands/modifications.command.d.ts +3 -0
  31. package/dist/commands/modifications.command.d.ts.map +1 -0
  32. package/dist/commands/modifications.command.js +28 -0
  33. package/dist/commands/modifications.command.js.map +1 -0
  34. package/dist/commands/setup.command.d.ts +4 -0
  35. package/dist/commands/setup.command.d.ts.map +1 -0
  36. package/dist/commands/setup.command.js +34 -0
  37. package/dist/commands/setup.command.js.map +1 -0
  38. package/dist/services/app-builder.service.d.ts +2 -0
  39. package/dist/services/app-builder.service.d.ts.map +1 -0
  40. package/dist/services/app-builder.service.js +3 -0
  41. package/dist/services/app-builder.service.js.map +1 -0
  42. package/dist/services/app.service.d.ts +74 -0
  43. package/dist/services/app.service.d.ts.map +1 -0
  44. package/dist/services/app.service.js +328 -0
  45. package/dist/services/app.service.js.map +1 -0
  46. package/dist/services/components/component.config.d.ts +11 -0
  47. package/dist/services/components/component.config.d.ts.map +1 -0
  48. package/dist/services/components/component.config.js +101 -0
  49. package/dist/services/components/component.config.js.map +1 -0
  50. package/dist/services/components/component.d.ts +12 -0
  51. package/dist/services/components/component.d.ts.map +1 -0
  52. package/dist/services/components/component.js +3 -0
  53. package/dist/services/components/component.js.map +1 -0
  54. package/dist/services/components/components.registry.d.ts +40 -0
  55. package/dist/services/components/components.registry.d.ts.map +1 -0
  56. package/dist/services/components/components.registry.js +72 -0
  57. package/dist/services/components/components.registry.js.map +1 -0
  58. package/dist/services/components/components.service.d.ts +20 -0
  59. package/dist/services/components/components.service.d.ts.map +1 -0
  60. package/dist/services/components/components.service.js +171 -0
  61. package/dist/services/components/components.service.js.map +1 -0
  62. package/dist/services/components/file.helper.d.ts +12 -0
  63. package/dist/services/components/file.helper.d.ts.map +1 -0
  64. package/dist/services/components/file.helper.js +124 -0
  65. package/dist/services/components/file.helper.js.map +1 -0
  66. package/dist/services/components/platform.utils.d.ts +72 -0
  67. package/dist/services/components/platform.utils.d.ts.map +1 -0
  68. package/dist/services/components/platform.utils.js +156 -0
  69. package/dist/services/components/platform.utils.js.map +1 -0
  70. package/dist/services/components/stores/github.store.d.ts +35 -0
  71. package/dist/services/components/stores/github.store.d.ts.map +1 -0
  72. package/dist/services/components/stores/github.store.js +157 -0
  73. package/dist/services/components/stores/github.store.js.map +1 -0
  74. package/dist/services/components/stores/local.store.d.ts +69 -0
  75. package/dist/services/components/stores/local.store.d.ts.map +1 -0
  76. package/dist/services/components/stores/local.store.js +300 -0
  77. package/dist/services/components/stores/local.store.js.map +1 -0
  78. package/dist/services/components/stores/s3.store.d.ts +98 -0
  79. package/dist/services/components/stores/s3.store.d.ts.map +1 -0
  80. package/dist/services/components/stores/s3.store.js +368 -0
  81. package/dist/services/components/stores/s3.store.js.map +1 -0
  82. package/dist/services/components/stores/store.d.ts +11 -0
  83. package/dist/services/components/stores/store.d.ts.map +1 -0
  84. package/dist/services/components/stores/store.js +3 -0
  85. package/dist/services/components/stores/store.js.map +1 -0
  86. package/dist/services/config/cli.config.d.ts +57 -0
  87. package/dist/services/config/cli.config.d.ts.map +1 -0
  88. package/dist/services/config/cli.config.js +3 -0
  89. package/dist/services/config/cli.config.js.map +1 -0
  90. package/dist/services/config/config.service.d.ts +14 -0
  91. package/dist/services/config/config.service.d.ts.map +1 -0
  92. package/dist/services/config/config.service.js +170 -0
  93. package/dist/services/config/config.service.js.map +1 -0
  94. package/dist/services/create.service.d.ts +58 -0
  95. package/dist/services/create.service.d.ts.map +1 -0
  96. package/dist/services/create.service.js +318 -0
  97. package/dist/services/create.service.js.map +1 -0
  98. package/dist/services/dev.service.d.ts +2 -0
  99. package/dist/services/dev.service.d.ts.map +1 -0
  100. package/dist/services/dev.service.js +78 -0
  101. package/dist/services/dev.service.js.map +1 -0
  102. package/dist/services/installer/electronBuilder.d.ts +2 -0
  103. package/dist/services/installer/electronBuilder.d.ts.map +1 -0
  104. package/dist/services/installer/electronBuilder.js +3 -0
  105. package/dist/services/installer/electronBuilder.js.map +1 -0
  106. package/dist/services/installer/electronForge.d.ts +2 -0
  107. package/dist/services/installer/electronForge.d.ts.map +1 -0
  108. package/dist/services/installer/electronForge.js +248 -0
  109. package/dist/services/installer/electronForge.js.map +1 -0
  110. package/dist/services/installer/installer.service.d.ts +5 -0
  111. package/dist/services/installer/installer.service.d.ts.map +1 -0
  112. package/dist/services/installer/installer.service.js +101 -0
  113. package/dist/services/installer/installer.service.js.map +1 -0
  114. package/dist/services/installer/macOS.helper.d.ts +3 -0
  115. package/dist/services/installer/macOS.helper.d.ts.map +1 -0
  116. package/dist/services/installer/macOS.helper.js +244 -0
  117. package/dist/services/installer/macOS.helper.js.map +1 -0
  118. package/dist/services/installer/prerequisites.d.ts +2 -0
  119. package/dist/services/installer/prerequisites.d.ts.map +1 -0
  120. package/dist/services/installer/prerequisites.js +73 -0
  121. package/dist/services/installer/prerequisites.js.map +1 -0
  122. package/dist/services/installer/windows.helper.d.ts +10 -0
  123. package/dist/services/installer/windows.helper.d.ts.map +1 -0
  124. package/dist/services/installer/windows.helper.js +394 -0
  125. package/dist/services/installer/windows.helper.js.map +1 -0
  126. package/dist/services/license.service.d.ts +7 -0
  127. package/dist/services/license.service.d.ts.map +1 -0
  128. package/dist/services/license.service.js +14 -0
  129. package/dist/services/license.service.js.map +1 -0
  130. package/dist/services/modifications/macOS.helper.d.ts +13 -0
  131. package/dist/services/modifications/macOS.helper.d.ts.map +1 -0
  132. package/dist/services/modifications/macOS.helper.js +274 -0
  133. package/dist/services/modifications/macOS.helper.js.map +1 -0
  134. package/dist/services/modifications/modifications.service.d.ts +2 -0
  135. package/dist/services/modifications/modifications.service.d.ts.map +1 -0
  136. package/dist/services/modifications/modifications.service.js +376 -0
  137. package/dist/services/modifications/modifications.service.js.map +1 -0
  138. package/dist/services/modifications/windows.helper.d.ts +2 -0
  139. package/dist/services/modifications/windows.helper.d.ts.map +1 -0
  140. package/dist/services/modifications/windows.helper.js +83 -0
  141. package/dist/services/modifications/windows.helper.js.map +1 -0
  142. package/dist/services/template.service.d.ts +116 -0
  143. package/dist/services/template.service.d.ts.map +1 -0
  144. package/dist/services/template.service.js +354 -0
  145. package/dist/services/template.service.js.map +1 -0
  146. package/dist/templates/auto-tests/README.md +31 -0
  147. package/dist/templates/auto-tests/playwright.config.js +19 -0
  148. package/dist/templates/auto-tests/template.json +12 -0
  149. package/dist/templates/auto-tests/tests/basic.test.js +15 -0
  150. package/dist/templates/ioconnect-desktop/.env.example +29 -0
  151. package/dist/templates/ioconnect-desktop/.github/workflows/build-installers.yml +170 -0
  152. package/dist/templates/ioconnect-desktop/LICENSE +0 -0
  153. package/dist/templates/ioconnect-desktop/README.md +0 -0
  154. package/dist/templates/ioconnect-desktop/config/mac-build/entitlements.mac.plist +44 -0
  155. package/dist/templates/ioconnect-desktop/config/win-build/template.nuspectemplate +33 -0
  156. package/dist/templates/ioconnect-desktop/forge.config.js +47 -0
  157. package/dist/templates/ioconnect-desktop/iocd.cli.config.json +45 -0
  158. package/dist/templates/ioconnect-desktop/modifications/iocd/assets/images/logo.icns +0 -0
  159. package/dist/templates/ioconnect-desktop/modifications/iocd/assets/images/logo.ico +0 -0
  160. package/dist/templates/ioconnect-desktop/modifications/iocd/assets/images/logo.png +0 -0
  161. package/dist/templates/ioconnect-desktop/modifications/iocd/config/system.json.merge +3 -0
  162. package/dist/templates/ioconnect-desktop/package.json +43 -0
  163. package/dist/templates/ioconnect-desktop/template.json +7 -0
  164. package/dist/templates/launchpad/apps/launchpad/.eslintrc.json +3 -0
  165. package/dist/templates/launchpad/apps/launchpad/config/iocd.app.def.dev.json +57 -0
  166. package/dist/templates/launchpad/apps/launchpad/config/iocd.app.def.prod.json +2 -0
  167. package/dist/templates/launchpad/apps/launchpad/config/iocd.system.dev.json +3 -0
  168. package/dist/templates/launchpad/apps/launchpad/config/iocd.system.prod.json +3 -0
  169. package/dist/templates/launchpad/apps/launchpad/index.html +16 -0
  170. package/dist/templates/launchpad/apps/launchpad/iocd.app.json +32 -0
  171. package/dist/templates/launchpad/apps/launchpad/package-lock.json +2778 -0
  172. package/dist/templates/launchpad/apps/launchpad/package.json +21 -0
  173. package/dist/templates/launchpad/apps/launchpad/public/favicon.ico +0 -0
  174. package/dist/templates/launchpad/apps/launchpad/src/app/app.tsx +39 -0
  175. package/dist/templates/launchpad/apps/launchpad/src/app/constants.ts +27 -0
  176. package/dist/templates/launchpad/apps/launchpad/src/components/logo.tsx +11 -0
  177. package/dist/templates/launchpad/apps/launchpad/src/components/main-context-menu.tsx +162 -0
  178. package/dist/templates/launchpad/apps/launchpad/src/components/notifications-button.tsx +44 -0
  179. package/dist/templates/launchpad/apps/launchpad/src/main.tsx +6 -0
  180. package/dist/templates/launchpad/apps/launchpad/src/styles.css +17 -0
  181. package/dist/templates/launchpad/apps/launchpad/tsconfig.json +10 -0
  182. package/dist/templates/launchpad/apps/launchpad/vite.config.ts +13 -0
  183. package/dist/templates/launchpad/template.json +12 -0
  184. package/dist/templates/splash-screen/apps/splash-screen/README.md +119 -0
  185. package/dist/templates/splash-screen/apps/splash-screen/config/system-dev.json +9 -0
  186. package/dist/templates/splash-screen/apps/splash-screen/config/system-prod.json +8 -0
  187. package/dist/templates/splash-screen/apps/splash-screen/index.html +55 -0
  188. package/dist/templates/splash-screen/apps/splash-screen/iocd.app.json +20 -0
  189. package/dist/templates/splash-screen/apps/splash-screen/package-lock.json +1059 -0
  190. package/dist/templates/splash-screen/apps/splash-screen/package.json +17 -0
  191. package/dist/templates/splash-screen/apps/splash-screen/public/assets/fonts/PTSans-Regular.ttf +0 -0
  192. package/dist/templates/splash-screen/apps/splash-screen/public/assets/images/logo-light.svg +85 -0
  193. package/dist/templates/splash-screen/apps/splash-screen/public/assets/images/splash-bg.png +0 -0
  194. package/dist/templates/splash-screen/apps/splash-screen/public/assets/styles/style.css +149 -0
  195. package/dist/templates/splash-screen/apps/splash-screen/public/assets/styles/style.css.map +1 -0
  196. package/dist/templates/splash-screen/apps/splash-screen/public/assets/styles/style.scss +90 -0
  197. package/dist/templates/splash-screen/apps/splash-screen/src/main.ts +93 -0
  198. package/dist/templates/splash-screen/apps/splash-screen/src/types.ts +28 -0
  199. package/dist/templates/splash-screen/apps/splash-screen/tsconfig.json +25 -0
  200. package/dist/templates/splash-screen/apps/splash-screen/vite.config.ts +27 -0
  201. package/dist/templates/splash-screen/template.json +12 -0
  202. package/dist/templates/web-groups/apps/web-groups/README.md +15 -0
  203. package/dist/templates/web-groups/apps/web-groups/config/web-group-dev.json +13 -0
  204. package/dist/templates/web-groups/apps/web-groups/config/web-group-prod.json +12 -0
  205. package/dist/templates/web-groups/apps/web-groups/index.html +18 -0
  206. package/dist/templates/web-groups/apps/web-groups/iocd.app.json +24 -0
  207. package/dist/templates/web-groups/apps/web-groups/package.json +28 -0
  208. package/dist/templates/web-groups/apps/web-groups/public/favicon.ico +0 -0
  209. package/dist/templates/web-groups/apps/web-groups/public/logo192.png +0 -0
  210. package/dist/templates/web-groups/apps/web-groups/public/logo512.png +0 -0
  211. package/dist/templates/web-groups/apps/web-groups/public/manifest.json +25 -0
  212. package/dist/templates/web-groups/apps/web-groups/public/robots.txt +3 -0
  213. package/dist/templates/web-groups/apps/web-groups/src/App.css +38 -0
  214. package/dist/templates/web-groups/apps/web-groups/src/App.tsx +11 -0
  215. package/dist/templates/web-groups/apps/web-groups/src/index.css +13 -0
  216. package/dist/templates/web-groups/apps/web-groups/src/index.tsx +25 -0
  217. package/dist/templates/web-groups/apps/web-groups/src/logo.svg +1 -0
  218. package/dist/templates/web-groups/apps/web-groups/src/reportWebVitals.ts +15 -0
  219. package/dist/templates/web-groups/apps/web-groups/tsconfig.json +26 -0
  220. package/dist/templates/web-groups/apps/web-groups/vite.config.ts +8 -0
  221. package/dist/templates/web-groups/template.json +12 -0
  222. package/dist/templates/workspaces/apps/workspaces/README.md +15 -0
  223. package/dist/templates/workspaces/apps/workspaces/config/workspaces-dev.json +21 -0
  224. package/dist/templates/workspaces/apps/workspaces/config/workspaces-prod.json +20 -0
  225. package/dist/templates/workspaces/apps/workspaces/index.html +17 -0
  226. package/dist/templates/workspaces/apps/workspaces/iocd.app.json +24 -0
  227. package/dist/templates/workspaces/apps/workspaces/package.json +29 -0
  228. package/dist/templates/workspaces/apps/workspaces/public/favicon.ico +0 -0
  229. package/dist/templates/workspaces/apps/workspaces/public/logo192.png +0 -0
  230. package/dist/templates/workspaces/apps/workspaces/public/logo512.png +0 -0
  231. package/dist/templates/workspaces/apps/workspaces/public/manifest.json +25 -0
  232. package/dist/templates/workspaces/apps/workspaces/public/robots.txt +3 -0
  233. package/dist/templates/workspaces/apps/workspaces/src/AddWindowButton.tsx +33 -0
  234. package/dist/templates/workspaces/apps/workspaces/src/AfterTabs.tsx +27 -0
  235. package/dist/templates/workspaces/apps/workspaces/src/App.css +38 -0
  236. package/dist/templates/workspaces/apps/workspaces/src/App.tsx +103 -0
  237. package/dist/templates/workspaces/apps/workspaces/src/GroupHeaderButtons.tsx +9 -0
  238. package/dist/templates/workspaces/apps/workspaces/src/index.css +4 -0
  239. package/dist/templates/workspaces/apps/workspaces/src/index.tsx +28 -0
  240. package/dist/templates/workspaces/apps/workspaces/src/logo.svg +7 -0
  241. package/dist/templates/workspaces/apps/workspaces/src/reportWebVitals.ts +15 -0
  242. package/dist/templates/workspaces/apps/workspaces/src/setupTests.ts +5 -0
  243. package/dist/templates/workspaces/apps/workspaces/src/useAddWindowButtonVisible.tsx +30 -0
  244. package/dist/templates/workspaces/apps/workspaces/tsconfig.json +26 -0
  245. package/dist/templates/workspaces/apps/workspaces/vite.config.ts +8 -0
  246. package/dist/templates/workspaces/template.json +12 -0
  247. package/dist/tools/rcedit-x64.exe +0 -0
  248. package/dist/utils/colors.d.ts +57 -0
  249. package/dist/utils/colors.d.ts.map +1 -0
  250. package/dist/utils/colors.js +151 -0
  251. package/dist/utils/colors.js.map +1 -0
  252. package/dist/utils/deep.merge.d.ts +5 -0
  253. package/dist/utils/deep.merge.d.ts.map +1 -0
  254. package/dist/utils/deep.merge.js +27 -0
  255. package/dist/utils/deep.merge.js.map +1 -0
  256. package/dist/utils/electron.builder.config.helper.d.ts +6 -0
  257. package/dist/utils/electron.builder.config.helper.d.ts.map +1 -0
  258. package/dist/utils/electron.builder.config.helper.js +25 -0
  259. package/dist/utils/electron.builder.config.helper.js.map +1 -0
  260. package/dist/utils/ensure.iocd.exists.d.ts +2 -0
  261. package/dist/utils/ensure.iocd.exists.d.ts.map +1 -0
  262. package/dist/utils/ensure.iocd.exists.js +27 -0
  263. package/dist/utils/ensure.iocd.exists.js.map +1 -0
  264. package/dist/utils/error.handler.d.ts +30 -0
  265. package/dist/utils/error.handler.d.ts.map +1 -0
  266. package/dist/utils/error.handler.js +104 -0
  267. package/dist/utils/error.handler.js.map +1 -0
  268. package/dist/utils/file.d.ts +10 -0
  269. package/dist/utils/file.d.ts.map +1 -0
  270. package/dist/utils/file.js +40 -0
  271. package/dist/utils/file.js.map +1 -0
  272. package/dist/utils/find.package.dir.d.ts +2 -0
  273. package/dist/utils/find.package.dir.d.ts.map +1 -0
  274. package/dist/utils/find.package.dir.js +23 -0
  275. package/dist/utils/find.package.dir.js.map +1 -0
  276. package/dist/utils/logger.d.ts +19 -0
  277. package/dist/utils/logger.d.ts.map +1 -0
  278. package/dist/utils/logger.js +184 -0
  279. package/dist/utils/logger.js.map +1 -0
  280. package/dist/utils/nextSteps.d.ts +2 -0
  281. package/dist/utils/nextSteps.d.ts.map +1 -0
  282. package/dist/utils/nextSteps.js +44 -0
  283. package/dist/utils/nextSteps.js.map +1 -0
  284. package/dist/utils/pacakge.json.helper.d.ts +9 -0
  285. package/dist/utils/pacakge.json.helper.d.ts.map +1 -0
  286. package/dist/utils/pacakge.json.helper.js +71 -0
  287. package/dist/utils/pacakge.json.helper.js.map +1 -0
  288. package/dist/utils/path.d.ts +19 -0
  289. package/dist/utils/path.d.ts.map +1 -0
  290. package/dist/utils/path.js +81 -0
  291. package/dist/utils/path.js.map +1 -0
  292. package/dist/utils/version.d.ts +2 -0
  293. package/dist/utils/version.d.ts.map +1 -0
  294. package/dist/utils/version.js +16 -0
  295. package/dist/utils/version.js.map +1 -0
  296. package/package.json +69 -0
  297. package/tools/rcedit-x64.exe +0 -0
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyModifications = applyModifications;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const child_process_1 = require("child_process");
7
+ const logger_1 = require("../../utils/logger");
8
+ const config_service_1 = require("../config/config.service");
9
+ const deep_merge_1 = require("../../utils/deep.merge");
10
+ const windows_helper_1 = require("./windows.helper");
11
+ const path_2 = require("../../utils/path");
12
+ // Conditionally import macOS helper only on macOS
13
+ let macOSHelper = null;
14
+ if (process.platform === 'darwin') {
15
+ try {
16
+ macOSHelper = require('./macOS.helper');
17
+ }
18
+ catch (error) {
19
+ // Will be handled later when needed
20
+ }
21
+ }
22
+ const logger = logger_1.Logger.getInstance();
23
+ const variables = {
24
+ dev: [
25
+ { name: "COMPONENTS_PATH", value: path_2.PathUtils.getComponentsDir(), path: true }
26
+ ],
27
+ prod: [
28
+ { name: "COMPONENTS_PATH", value: (0, path_1.join)(path_2.PathUtils.getIOCDDir(), "components"), path: true }
29
+ ]
30
+ };
31
+ async function applyModifications(mode) {
32
+ try {
33
+ logger.info(`Applying modifications in ${mode} mode...`);
34
+ const modificationsDir = (0, path_1.join)(process.cwd(), 'modifications');
35
+ const componentsDir = (0, path_1.join)(process.cwd(), 'components');
36
+ if (!(0, fs_1.existsSync)(modificationsDir)) {
37
+ logger.debug('No modifications directory found - skipping modifications');
38
+ return;
39
+ }
40
+ if (!(0, fs_1.existsSync)(componentsDir)) {
41
+ logger.debug('No components directory found - skipping modifications');
42
+ return;
43
+ }
44
+ if (process.platform === "win32") {
45
+ logger.debug('Running on Windows, proceeding with Windows-specific modifications');
46
+ await (0, windows_helper_1.modifyExe)();
47
+ logger.debug('Windows-specific modifications applied successfully!');
48
+ }
49
+ // Get all component directories in modifications
50
+ const componentDirs = (0, fs_1.readdirSync)(modificationsDir, { withFileTypes: true })
51
+ .filter(dirent => dirent.isDirectory())
52
+ .map(dirent => dirent.name);
53
+ if (componentDirs.length === 0) {
54
+ logger.debug('No component modifications found');
55
+ return;
56
+ }
57
+ for (const componentName of componentDirs) {
58
+ const modComponentDir = (0, path_1.join)(modificationsDir, componentName);
59
+ const baseTargetComponentDir = (0, path_1.join)(componentsDir, componentName);
60
+ if (!(0, fs_1.existsSync)(baseTargetComponentDir)) {
61
+ logger.warn(`Target component directory ${componentName} not found - skipping`);
62
+ continue;
63
+ }
64
+ // Handle macOS app bundle structure for iocd component
65
+ if (process.platform === 'darwin' && componentName === 'iocd') {
66
+ await processIocdComponentOnMacOS(modComponentDir, baseTargetComponentDir, mode);
67
+ }
68
+ else {
69
+ const targetComponentDir = getActualComponentPath(baseTargetComponentDir, componentName);
70
+ if (!(0, fs_1.existsSync)(targetComponentDir)) {
71
+ logger.warn(`Target component path ${(0, path_1.relative)(process.cwd(), targetComponentDir)} not found - skipping`);
72
+ continue;
73
+ }
74
+ logger.info(`Applying modifications for component: ${componentName}`);
75
+ await processModificationDirectory(modComponentDir, targetComponentDir, mode);
76
+ }
77
+ logger.info(`Modifications applied successfully for component: ${componentName}`);
78
+ }
79
+ logger.info('All Modifications applied successfully!');
80
+ }
81
+ catch (error) {
82
+ logger.error(`Failed to apply modifications: ${error}`);
83
+ throw error;
84
+ }
85
+ }
86
+ /**
87
+ * Recursively process a modification directory and apply changes to the target
88
+ */
89
+ async function processModificationDirectory(modDir, targetDir, mode) {
90
+ const items = (0, fs_1.readdirSync)(modDir, { withFileTypes: true });
91
+ logger.debug(`Processing modifications in ${modDir} with targetDir ${targetDir}`);
92
+ for (const item of items) {
93
+ logger.debug(`Processing item ${item.name}`);
94
+ const modItemPath = (0, path_1.join)(modDir, item.name);
95
+ const targetItemPath = (0, path_1.join)(targetDir, item.name);
96
+ if (item.isDirectory()) {
97
+ await processDirectory(modItemPath, targetItemPath, mode);
98
+ }
99
+ else {
100
+ await processFile(modItemPath, targetItemPath, item.name, mode);
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * Process a directory modification
106
+ */
107
+ async function processDirectory(modDirPath, targetDirPath, mode) {
108
+ logger.debug(`Processing directory ${modDirPath} with targetDir ${targetDirPath}`);
109
+ // Check for .replace marker in the modification directory
110
+ const replaceMarkerPath = (0, path_1.join)(modDirPath, '.replace');
111
+ const hasReplaceMarker = (0, fs_1.existsSync)(replaceMarkerPath);
112
+ // Check for .delete marker in the modification directory
113
+ const deleteMarkerPath = (0, path_1.join)(modDirPath, '.delete');
114
+ const hasDeleteMarker = (0, fs_1.existsSync)(deleteMarkerPath);
115
+ if (hasDeleteMarker) {
116
+ // Delete the entire target directory
117
+ if ((0, fs_1.existsSync)(targetDirPath)) {
118
+ logger.debug(` Deleting directory: ${(0, path_1.relative)(process.cwd(), targetDirPath)}`);
119
+ (0, fs_1.rmSync)(targetDirPath, { recursive: true, force: true });
120
+ logger.debug(`Deleted directory: ${(0, path_1.relative)(process.cwd(), targetDirPath)}`);
121
+ }
122
+ return;
123
+ }
124
+ if (hasReplaceMarker) {
125
+ // Replace the entire directory
126
+ if ((0, fs_1.existsSync)(targetDirPath)) {
127
+ logger.debug(`Replacing directory: ${(0, path_1.relative)(process.cwd(), targetDirPath)}`);
128
+ (0, fs_1.rmSync)(targetDirPath, { recursive: true, force: true });
129
+ }
130
+ // Create target directory
131
+ (0, fs_1.mkdirSync)(targetDirPath, { recursive: true });
132
+ // Copy all files except the .replace marker
133
+ const items = (0, fs_1.readdirSync)(modDirPath, { withFileTypes: true });
134
+ for (const item of items) {
135
+ if (item.name === '.replace')
136
+ continue;
137
+ const srcPath = (0, path_1.join)(modDirPath, item.name);
138
+ const destPath = (0, path_1.join)(targetDirPath, item.name);
139
+ if (item.isDirectory()) {
140
+ await copyDirectoryRecursive(srcPath, destPath);
141
+ }
142
+ else {
143
+ ensureDirectoryExists((0, path_1.dirname)(destPath));
144
+ (0, fs_1.copyFileSync)(srcPath, destPath);
145
+ logger.debug(`Copied file: ${(0, path_1.relative)(process.cwd(), destPath)}`);
146
+ }
147
+ }
148
+ logger.debug(`Replaced directory: ${(0, path_1.relative)(process.cwd(), targetDirPath)}`);
149
+ }
150
+ else {
151
+ // Normal directory processing - ensure target exists and recurse
152
+ if (!(0, fs_1.existsSync)(targetDirPath)) {
153
+ (0, fs_1.mkdirSync)(targetDirPath, { recursive: true });
154
+ }
155
+ await processModificationDirectory(modDirPath, targetDirPath, mode);
156
+ }
157
+ }
158
+ /**
159
+ * Process a file modification
160
+ */
161
+ async function processFile(modFilePath, targetFilePath, fileName, mode) {
162
+ logger.debug(`Processing file ${fileName} with target ${targetFilePath} and modFilePath ${modFilePath}`);
163
+ if (fileName.endsWith('.gitkeep')) {
164
+ // ignore .gitkeep files
165
+ return;
166
+ }
167
+ // Handle .delete files
168
+ if (fileName.endsWith('.delete')) {
169
+ const targetFile = fileName.slice(0, -7); // Remove '.delete' suffix
170
+ const actualTargetPath = (0, path_1.join)((0, path_1.dirname)(targetFilePath), targetFile);
171
+ logger.debug(`Deleting file: ${(0, path_1.relative)(process.cwd(), actualTargetPath)}`);
172
+ if ((0, fs_1.existsSync)(actualTargetPath)) {
173
+ (0, fs_1.rmSync)(actualTargetPath, { force: true });
174
+ logger.debug(`Deleted file: ${(0, path_1.relative)(process.cwd(), actualTargetPath)}`);
175
+ }
176
+ else {
177
+ logger.debug(`File not found: ${(0, path_1.relative)(process.cwd(), actualTargetPath)}`);
178
+ }
179
+ return;
180
+ }
181
+ // Handle .json.merge files
182
+ // names can be like system.json.merge or system.json.merge-suffix
183
+ const isJSONMergeFile = fileName.endsWith('.json.merge') || fileName.includes('.json.merge-');
184
+ if (isJSONMergeFile) {
185
+ // get the base filename without the .merge or .merge-suffix
186
+ const baseFileName = fileName.split('.json.merge')[0];
187
+ const targetFile = baseFileName + '.json'; // Remove '.merge' and ensure .json
188
+ const actualTargetPath = (0, path_1.join)((0, path_1.dirname)(targetFilePath), targetFile);
189
+ await mergeJsonFile(modFilePath, actualTargetPath);
190
+ await expandVars(actualTargetPath, mode);
191
+ return;
192
+ }
193
+ // Handle regular file replacement
194
+ ensureDirectoryExists((0, path_1.dirname)(targetFilePath));
195
+ (0, fs_1.copyFileSync)(modFilePath, targetFilePath);
196
+ if (fileName.endsWith('.json')) {
197
+ // expand vars in the final file only if json
198
+ await expandVars(targetFilePath, mode);
199
+ logger.debug(`Expanded env vars in file: ${targetFilePath}`);
200
+ }
201
+ logger.debug(`Copied file: ${(0, path_1.relative)(process.cwd(), targetFilePath)}`);
202
+ }
203
+ async function expandVars(filePath, mode) {
204
+ const vars = variables[mode] || [];
205
+ // Read the file content
206
+ let content = (0, fs_1.readFileSync)(filePath, 'utf-8');
207
+ for (const variable of vars) {
208
+ const value = variable.path ? toForwardSlashes(variable.value) : variable.value;
209
+ content = content.replace(new RegExp(`\\$\\{${variable.name}\\}`, 'g'), value);
210
+ }
211
+ // Write the modified content back to the file
212
+ (0, fs_1.writeFileSync)(filePath, content, 'utf-8');
213
+ }
214
+ /**
215
+ * Merge a JSON modification file with the target JSON file
216
+ */
217
+ async function mergeJsonFile(mergePath, targetPath) {
218
+ try {
219
+ logger.debug(`Merging JSON file: ${mergePath} into ${targetPath}`);
220
+ // Read the merge file
221
+ const mergeContent = (0, fs_1.readFileSync)(mergePath, 'utf-8');
222
+ const mergeData = JSON.parse(mergeContent);
223
+ let targetData = {};
224
+ // Read existing target file if it exists
225
+ if ((0, fs_1.existsSync)(targetPath)) {
226
+ const targetContent = (0, fs_1.readFileSync)(targetPath, 'utf-8');
227
+ targetData = JSON.parse(targetContent);
228
+ }
229
+ // Deep merge the objects
230
+ const mergedData = (0, deep_merge_1.deepMerge)(targetData, mergeData);
231
+ // Write the merged result
232
+ ensureDirectoryExists((0, path_1.dirname)(targetPath));
233
+ (0, fs_1.writeFileSync)(targetPath, JSON.stringify(mergedData, null, 2), 'utf-8');
234
+ logger.debug(`Merged JSON file: ${(0, path_1.relative)(process.cwd(), targetPath)}`);
235
+ }
236
+ catch (error) {
237
+ logger.error(`Failed to merge JSON file ${mergePath}: ${error}`);
238
+ throw error;
239
+ }
240
+ }
241
+ /**
242
+ * Recursively copy a directory
243
+ */
244
+ async function copyDirectoryRecursive(srcDir, destDir) {
245
+ (0, fs_1.mkdirSync)(destDir, { recursive: true });
246
+ const items = (0, fs_1.readdirSync)(srcDir, { withFileTypes: true });
247
+ for (const item of items) {
248
+ const srcPath = (0, path_1.join)(srcDir, item.name);
249
+ const destPath = (0, path_1.join)(destDir, item.name);
250
+ if (item.isDirectory()) {
251
+ await copyDirectoryRecursive(srcPath, destPath);
252
+ }
253
+ else {
254
+ (0, fs_1.copyFileSync)(srcPath, destPath);
255
+ logger.debug(`📄 Copied file: ${(0, path_1.relative)(process.cwd(), destPath)}`);
256
+ }
257
+ }
258
+ }
259
+ /**
260
+ * Ensure a directory exists
261
+ */
262
+ function ensureDirectoryExists(dirPath) {
263
+ if (!(0, fs_1.existsSync)(dirPath)) {
264
+ (0, fs_1.mkdirSync)(dirPath, { recursive: true });
265
+ }
266
+ }
267
+ /**
268
+ * Get the actual component path, handling platform-specific structures
269
+ * On macOS, iocd component is packaged as an app bundle with extra directory levels
270
+ */
271
+ function getActualComponentPath(baseComponentPath, componentName) {
272
+ // Handle macOS app bundle structure for iocd component
273
+ if (process.platform === 'darwin' && componentName === 'iocd') {
274
+ // Check for app bundle structure: iocd/{BUNDLE_NAME}/Contents/
275
+ const items = (0, fs_1.readdirSync)(baseComponentPath, { withFileTypes: true });
276
+ const appBundle = items.find(item => item.isDirectory() && item.name.endsWith('.app'));
277
+ if (appBundle) {
278
+ const appBundlePath = (0, path_1.join)(baseComponentPath, appBundle.name);
279
+ const contentsPath = (0, path_1.join)(appBundlePath, 'Contents');
280
+ // Verify the Contents directory exists
281
+ if ((0, fs_1.existsSync)(contentsPath)) {
282
+ logger.debug(`Using macOS app bundle path: ${(0, path_1.relative)(process.cwd(), contentsPath)}`);
283
+ return contentsPath;
284
+ }
285
+ }
286
+ }
287
+ // For other platforms or components, use the base path
288
+ return baseComponentPath;
289
+ }
290
+ /**
291
+ * Special handling for iocd component on macOS app bundles.
292
+ *
293
+ * This function handles the complex process of applying modifications to macOS .app bundles,
294
+ * which require special handling due to code signing and permission constraints. The strategy
295
+ * involves copying the entire app bundle to a temporary location, applying modifications there,
296
+ * and then moving it back to replace the original.
297
+ *
298
+ * Process:
299
+ * 1. Locates the target app bundle (with fallback to "io.Connect Desktop.app")
300
+ * 2. Creates a temporary copy of the entire app bundle
301
+ * 3. Applies modifications to the Contents directory of the temp copy
302
+ * 4. Renames app bundle contents (executable, Info.plist, Helper apps) using macOS helper
303
+ * 5. Replaces the original app bundle with the modified version
304
+ * 6. Cleans up temporary files
305
+ *
306
+ * @param modComponentDir - Path to the modifications directory for the iocd component
307
+ * @param baseTargetComponentDir - Path to the base target component directory (components/iocd)
308
+ * @throws {Error} When macOS helper is not available or app bundle cannot be found
309
+ * @throws {Error} When file operations fail during the modification process
310
+ */
311
+ async function processIocdComponentOnMacOS(modComponentDir, baseTargetComponentDir, mode) {
312
+ logger.info('Applying modifications for component: iocd (macOS app bundle)');
313
+ const appBundleName = config_service_1.ConfigManager.config.mac.appBundleName;
314
+ const targetAppBundlePath = (0, path_1.join)(baseTargetComponentDir, appBundleName); // where we expect the app bundle to be at the end
315
+ let currentAppBundlePath = targetAppBundlePath; // where the app bundle currently is
316
+ // Check if macOS helper is available
317
+ if (!macOSHelper) {
318
+ logger.error('macOS helper module is required but not available');
319
+ throw new Error('macOS helper module is required but not available');
320
+ }
321
+ if (!(0, fs_1.existsSync)(targetAppBundlePath)) {
322
+ // APP BUNDLE NOT FOUND, TRY io.Connect Desktop.app as fallback
323
+ const fallbackAppBundlePath = (0, path_1.join)(baseTargetComponentDir, "io.Connect Desktop.app");
324
+ if ((0, fs_1.existsSync)(fallbackAppBundlePath)) {
325
+ logger.debug(`Using fallback app bundle: ${(0, path_1.relative)(process.cwd(), fallbackAppBundlePath)}`);
326
+ currentAppBundlePath = fallbackAppBundlePath;
327
+ }
328
+ else {
329
+ throw new Error(`App bundle path not found: ${currentAppBundlePath}`);
330
+ }
331
+ }
332
+ // Strategy: Copy the entire app bundle to a temp location, modify it there, then copy back
333
+ const tempDir = (0, path_1.join)(process.cwd(), 'temp');
334
+ const tempAppPath = (0, path_1.join)(tempDir, `${appBundleName}-temp`);
335
+ try {
336
+ // Create temp directory
337
+ if (!(0, fs_1.existsSync)(tempDir)) {
338
+ (0, fs_1.mkdirSync)(tempDir, { recursive: true });
339
+ }
340
+ // Remove any existing temp app
341
+ if ((0, fs_1.existsSync)(tempAppPath)) {
342
+ (0, fs_1.rmSync)(tempAppPath, { recursive: true, force: true });
343
+ }
344
+ logger.debug(`Copying app bundle to temp location: ${tempAppPath}`);
345
+ // Copy the entire app bundle to temp (this should work since it's not constrained by permissions)
346
+ (0, child_process_1.execSync)(`cp -R "${currentAppBundlePath}" "${tempAppPath}"`, { stdio: 'pipe' });
347
+ // Apply modifications to the temp copy
348
+ const tempContentsPath = (0, path_1.join)(tempAppPath, 'Contents');
349
+ await processModificationDirectory(modComponentDir, tempContentsPath, mode); // rename the app bundle name
350
+ await macOSHelper.renameAppBundleContents(tempAppPath, appBundleName);
351
+ // Remove the original app bundle
352
+ logger.debug(`Removing original app bundle: ${currentAppBundlePath}`);
353
+ (0, fs_1.rmSync)(currentAppBundlePath, { recursive: true, force: true });
354
+ // Move the modified temp app back
355
+ logger.debug(`Moving modified app bundle back: ${targetAppBundlePath}`);
356
+ (0, child_process_1.execSync)(`mv "${tempAppPath}" "${targetAppBundlePath}"`, { stdio: 'pipe' });
357
+ logger.debug('Successfully applied modifications to macOS app bundle');
358
+ }
359
+ catch (error) {
360
+ logger.error(`Failed to process iocd component on macOS: ${error}`);
361
+ // Cleanup temp directory if it exists
362
+ if ((0, fs_1.existsSync)(tempAppPath)) {
363
+ try {
364
+ (0, fs_1.rmSync)(tempAppPath, { recursive: true, force: true });
365
+ }
366
+ catch (cleanupError) {
367
+ logger.warn(`Could not clean up temp directory: ${cleanupError}`);
368
+ }
369
+ }
370
+ throw error;
371
+ }
372
+ }
373
+ function toForwardSlashes(path) {
374
+ return path.replace(/\\/g, "/");
375
+ }
376
+ //# sourceMappingURL=modifications.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modifications.service.js","sourceRoot":"","sources":["../../../src/services/modifications/modifications.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function modifyExe(): Promise<void>;
2
+ //# sourceMappingURL=windows.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows.helper.d.ts","sourceRoot":"","sources":["../../../src/services/modifications/windows.helper.ts"],"names":[],"mappings":"AAYA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAU/C"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.modifyExe = modifyExe;
4
+ const path_1 = require("path");
5
+ const logger_1 = require("../../utils/logger");
6
+ const fs_1 = require("fs");
7
+ const config_service_1 = require("../config/config.service");
8
+ const path_2 = require("../../utils/path");
9
+ const child_process_1 = require("child_process");
10
+ const find_package_dir_1 = require("../../utils/find.package.dir");
11
+ const version_1 = require("../../utils/version");
12
+ const logger = logger_1.Logger.getInstance();
13
+ async function modifyExe() {
14
+ logger.info('Modifying Windows executable...');
15
+ restoreOriginalUnsignedExeIfNeeded();
16
+ const defaultIOCDPath = (0, path_1.join)(path_2.PathUtils.getComponentDir("iocd"), 'io-connect-desktop.exe');
17
+ const options = config_service_1.ConfigManager.config;
18
+ const newExePath = renameExe(defaultIOCDPath, options.win.exe.exeName);
19
+ await changeIconAndMetadata(newExePath, options);
20
+ logger.info('Modification complete successfully!');
21
+ }
22
+ function restoreOriginalUnsignedExeIfNeeded() {
23
+ // we store the original unsigned exe before signing, because rcedit can be done on unsigned exe only (see installer/windows.helper.ts for store logic).
24
+ // at this point we are restoring it so we can do rcedit again if needed.
25
+ logger.debug('Will check if original unsigned exe exists in _temp...');
26
+ const tempDir = path_2.PathUtils.getComponentDir("_temp");
27
+ const exeBaseName = (0, path_1.basename)(path_2.PathUtils.getIOCDExePath());
28
+ const tempPath = (0, path_1.join)(tempDir, exeBaseName);
29
+ if ((0, fs_1.existsSync)(tempPath)) {
30
+ logger.debug('Restoring exe from _temp directory...');
31
+ (0, fs_1.copyFileSync)(tempPath, path_2.PathUtils.getIOCDExePath());
32
+ logger.debug('Restored exe from _temp directory.');
33
+ }
34
+ }
35
+ /** rename io-connect-desktop.exe in the path to newName.exe; don to use regex */
36
+ function renameExe(path, newName) {
37
+ logger.debug(`Renaming executable in path: ${path} to ${newName}.exe`);
38
+ const dir = (0, path_1.dirname)(path);
39
+ const oldPath = (0, path_1.join)(dir, 'io-connect-desktop.exe');
40
+ const newPath = (0, path_1.join)(dir, `${newName}`);
41
+ const oldExists = (0, fs_1.existsSync)(oldPath);
42
+ const newExists = (0, fs_1.existsSync)(newPath);
43
+ if (newExists) {
44
+ logger.debug(`File with new name already exists, skipping rename: ${newPath}`);
45
+ return newPath;
46
+ }
47
+ if (oldExists) {
48
+ (0, fs_1.renameSync)(oldPath, newPath);
49
+ logger.debug(`Renamed: ${oldPath} -> ${newPath}`);
50
+ }
51
+ else {
52
+ throw new Error(`File not found: ${oldPath} and new file does not exist: ${newPath}`);
53
+ }
54
+ return newPath;
55
+ }
56
+ async function changeIconAndMetadata(exePath, options) {
57
+ return new Promise((resolve, reject) => {
58
+ logger.debug(`Updating icon and metadata for executable: ${exePath}`);
59
+ const rceditPath = (0, path_1.join)((0, find_package_dir_1.findPackageRoot)(), "tools", "rcedit-x64.exe");
60
+ const args = [
61
+ exePath,
62
+ "--set-icon", options.win.exe.exeIconPath,
63
+ "--set-version-string", "CompanyName", options.company,
64
+ "--set-version-string", "FileDescription", options.productDescription,
65
+ "--set-version-string", "ProductName", options.productName,
66
+ "--set-file-version", (0, version_1.makeVersionFourDigitsIfNeeded)(options.version),
67
+ "--set-product-version", options.version
68
+ ];
69
+ logger.debug(`Executing rcedit with args: ${args.join(' ')}`);
70
+ (0, child_process_1.execFile)(rceditPath, args, (error, stdout, stderr) => {
71
+ if (error) {
72
+ logger.error("rcedit error:", error);
73
+ return reject(error);
74
+ }
75
+ if (stderr) {
76
+ logger.error("rcedit stderr:", stderr);
77
+ }
78
+ logger.debug("rcedit output:", stdout);
79
+ resolve();
80
+ });
81
+ });
82
+ }
83
+ //# sourceMappingURL=windows.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows.helper.js","sourceRoot":"","sources":["../../../src/services/modifications/windows.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ export interface TemplateOptions {
2
+ productSlug: string;
3
+ productName: string;
4
+ company: string;
5
+ copyright: string;
6
+ version: string;
7
+ folderName: string;
8
+ targetDirectory: string;
9
+ templateApplications: string[];
10
+ initialComponents: string[];
11
+ }
12
+ export interface TemplateVariable {
13
+ key: string;
14
+ value: string;
15
+ description?: string;
16
+ }
17
+ export interface TemplateMetadata {
18
+ name: string;
19
+ displayName?: string;
20
+ description: string;
21
+ version: string;
22
+ type: 'base' | 'application' | 'tests';
23
+ setupUI?: {
24
+ text?: string;
25
+ separate?: boolean;
26
+ selected?: boolean;
27
+ };
28
+ }
29
+ /**
30
+ * TemplateService handles the generation of io.Connect Desktop projects using a modular template system.
31
+ *
32
+ * This service supports two types of templates:
33
+ * - Base templates: Core project structure and essential files (e.g., ioconnect-desktop)
34
+ * - Feature templates: Optional functionality modules that extend the base template
35
+ *
36
+ * The service processes templates by:
37
+ * 1. Copying base template files to the target directory
38
+ * 2. Applying variable substitutions ({{variable}} patterns)
39
+ * 3. Conditionally applying feature templates based on user selection:
40
+ * - Validates that requested features exist as separate template directories
41
+ * - Only processes features that are explicitly selected by the user
42
+ * - Each feature template contains its own template.json with type: "feature"
43
+ * - Features are independent and can be combined in any combination
44
+ * 4. Merging feature-specific files into the project structure:
45
+ * - Feature templates overlay their files onto the base project structure
46
+ * - Files from features are copied to their corresponding paths in the target
47
+ * - Directory structures are preserved (e.g., modifications/iocd/assets/feature/)
48
+ * - No conflicts occur since features target different subdirectories
49
+ * - Variable substitution is applied to feature files just like base template files
50
+ *
51
+ * Key capabilities:
52
+ * - Template discovery and validation from filesystem
53
+ * - Variable interpolation for dynamic content generation
54
+ * - Modular feature system for extensible project setup
55
+ * - Comprehensive error handling and logging
56
+ * - Support for nested directory structures and file copying
57
+ */
58
+ export declare class TemplateService {
59
+ private logger;
60
+ private templatesPath;
61
+ constructor();
62
+ /**
63
+ * Get the path to embedded templates
64
+ */
65
+ getTemplatesPath(): string;
66
+ /**
67
+ * List available templates
68
+ */
69
+ getAvailableTemplates(): string[];
70
+ /**
71
+ * Check if a template exists
72
+ */
73
+ templateExists(templateName: string): boolean;
74
+ /**
75
+ * Generate a project from a template
76
+ */
77
+ generateProject(templateName: string, options: TemplateOptions): Promise<void>;
78
+ /** Add a new template application to an already created seed project */
79
+ addTemplateApplication(appName: string): Promise<void>;
80
+ /** Adds initialComponents to the iocd.cli.config.json -> components.list object in the target directory */
81
+ private updateComponentsConfig;
82
+ /**
83
+ * Prepare template variables for replacement
84
+ */
85
+ private prepareTemplateVariables;
86
+ /**
87
+ * Generate NPM-compatible package name from product name
88
+ */
89
+ private generatePackageName;
90
+ /**
91
+ * Recursively copy template files with variable replacement
92
+ */
93
+ private copyTemplateFiles;
94
+ /**
95
+ * Copy a single file with variable replacement
96
+ */
97
+ private copyFileWithReplacement;
98
+ private copyFileNoReplacement;
99
+ /**
100
+ * Process feature-specific templates
101
+ */
102
+ private processApplicationsTemplates;
103
+ /**
104
+ * Escape special regex characters
105
+ */
106
+ private escapeRegExp;
107
+ /**
108
+ * Get template information
109
+ */
110
+ getTemplateInfo(templateName: string): TemplateMetadata;
111
+ /**
112
+ * Get available application templates with their metadata
113
+ */
114
+ getAvailableApplicationTemplates(): TemplateMetadata[];
115
+ }
116
+ //# sourceMappingURL=template.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.service.d.ts","sourceRoot":"","sources":["../../src/services/template.service.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC;IACvC,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAS;;IAM9B;;OAEG;IACI,gBAAgB,IAAI,MAAM;IAIjC;;OAEG;IACI,qBAAqB,IAAI,MAAM,EAAE;IAuBxC;;OAEG;IACI,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAKpD;;OAEG;IACU,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4E3F,wEAAwE;IAC3D,sBAAsB,CAAC,OAAO,EAAE,MAAM;IAqBnD,2GAA2G;IAC3G,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8BhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;YACW,iBAAiB;IAoC/B;;OAEG;YACW,uBAAuB;IAkBrC,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;YACW,4BAA4B;IAyB1C;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB;IAoB9D;;OAEG;IACI,gCAAgC,IAAI,gBAAgB,EAAE;CAa9D"}