@cicore/cli 1.0.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 (337) hide show
  1. package/bin/ci.js +13 -0
  2. package/dist/commands/addon/api-actions.d.ts +45 -0
  3. package/dist/commands/addon/api-actions.d.ts.map +1 -0
  4. package/dist/commands/addon/api-actions.js +281 -0
  5. package/dist/commands/addon/api-actions.js.map +1 -0
  6. package/dist/commands/addon/build.d.ts +11 -0
  7. package/dist/commands/addon/build.d.ts.map +1 -0
  8. package/dist/commands/addon/build.js +182 -0
  9. package/dist/commands/addon/build.js.map +1 -0
  10. package/dist/commands/addon/create.d.ts +11 -0
  11. package/dist/commands/addon/create.d.ts.map +1 -0
  12. package/dist/commands/addon/create.js +1186 -0
  13. package/dist/commands/addon/create.js.map +1 -0
  14. package/dist/commands/addon/delete.d.ts +13 -0
  15. package/dist/commands/addon/delete.d.ts.map +1 -0
  16. package/dist/commands/addon/delete.js +83 -0
  17. package/dist/commands/addon/delete.js.map +1 -0
  18. package/dist/commands/addon/deploy.d.ts +27 -0
  19. package/dist/commands/addon/deploy.d.ts.map +1 -0
  20. package/dist/commands/addon/deploy.js +459 -0
  21. package/dist/commands/addon/deploy.js.map +1 -0
  22. package/dist/commands/addon/dev-deploy.d.ts +31 -0
  23. package/dist/commands/addon/dev-deploy.d.ts.map +1 -0
  24. package/dist/commands/addon/dev-deploy.js +128 -0
  25. package/dist/commands/addon/dev-deploy.js.map +1 -0
  26. package/dist/commands/addon/dev.d.ts +36 -0
  27. package/dist/commands/addon/dev.d.ts.map +1 -0
  28. package/dist/commands/addon/dev.js +323 -0
  29. package/dist/commands/addon/dev.js.map +1 -0
  30. package/dist/commands/addon/extract-classes.d.ts +23 -0
  31. package/dist/commands/addon/extract-classes.d.ts.map +1 -0
  32. package/dist/commands/addon/extract-classes.js +281 -0
  33. package/dist/commands/addon/extract-classes.js.map +1 -0
  34. package/dist/commands/addon/generate-safelist.d.ts +24 -0
  35. package/dist/commands/addon/generate-safelist.d.ts.map +1 -0
  36. package/dist/commands/addon/generate-safelist.js +276 -0
  37. package/dist/commands/addon/generate-safelist.js.map +1 -0
  38. package/dist/commands/addon/index.d.ts +19 -0
  39. package/dist/commands/addon/index.d.ts.map +1 -0
  40. package/dist/commands/addon/index.js +296 -0
  41. package/dist/commands/addon/index.js.map +1 -0
  42. package/dist/commands/addon/init-repo.d.ts +25 -0
  43. package/dist/commands/addon/init-repo.d.ts.map +1 -0
  44. package/dist/commands/addon/init-repo.js +171 -0
  45. package/dist/commands/addon/init-repo.js.map +1 -0
  46. package/dist/commands/addon/install.d.ts +23 -0
  47. package/dist/commands/addon/install.d.ts.map +1 -0
  48. package/dist/commands/addon/install.js +84 -0
  49. package/dist/commands/addon/install.js.map +1 -0
  50. package/dist/commands/addon/list.d.ts +10 -0
  51. package/dist/commands/addon/list.d.ts.map +1 -0
  52. package/dist/commands/addon/list.js +102 -0
  53. package/dist/commands/addon/list.js.map +1 -0
  54. package/dist/commands/addon/manifest-refresh.d.ts +17 -0
  55. package/dist/commands/addon/manifest-refresh.d.ts.map +1 -0
  56. package/dist/commands/addon/manifest-refresh.js +48 -0
  57. package/dist/commands/addon/manifest-refresh.js.map +1 -0
  58. package/dist/commands/addon/migrate.d.ts +40 -0
  59. package/dist/commands/addon/migrate.d.ts.map +1 -0
  60. package/dist/commands/addon/migrate.js +236 -0
  61. package/dist/commands/addon/migrate.js.map +1 -0
  62. package/dist/commands/addon/publish.d.ts +33 -0
  63. package/dist/commands/addon/publish.d.ts.map +1 -0
  64. package/dist/commands/addon/publish.js +236 -0
  65. package/dist/commands/addon/publish.js.map +1 -0
  66. package/dist/commands/addon/scaffold-quality.d.ts +21 -0
  67. package/dist/commands/addon/scaffold-quality.d.ts.map +1 -0
  68. package/dist/commands/addon/scaffold-quality.js +90 -0
  69. package/dist/commands/addon/scaffold-quality.js.map +1 -0
  70. package/dist/commands/addon/sign.d.ts +9 -0
  71. package/dist/commands/addon/sign.d.ts.map +1 -0
  72. package/dist/commands/addon/sign.js +83 -0
  73. package/dist/commands/addon/sign.js.map +1 -0
  74. package/dist/commands/addon/toggle.d.ts +6 -0
  75. package/dist/commands/addon/toggle.d.ts.map +1 -0
  76. package/dist/commands/addon/toggle.js +46 -0
  77. package/dist/commands/addon/toggle.js.map +1 -0
  78. package/dist/commands/agent/index.d.ts +34 -0
  79. package/dist/commands/agent/index.d.ts.map +1 -0
  80. package/dist/commands/agent/index.js +564 -0
  81. package/dist/commands/agent/index.js.map +1 -0
  82. package/dist/commands/brand/index.d.ts +54 -0
  83. package/dist/commands/brand/index.d.ts.map +1 -0
  84. package/dist/commands/brand/index.js +367 -0
  85. package/dist/commands/brand/index.js.map +1 -0
  86. package/dist/commands/build/index.d.ts +53 -0
  87. package/dist/commands/build/index.d.ts.map +1 -0
  88. package/dist/commands/build/index.js +726 -0
  89. package/dist/commands/build/index.js.map +1 -0
  90. package/dist/commands/cache/flush-local.d.ts +31 -0
  91. package/dist/commands/cache/flush-local.d.ts.map +1 -0
  92. package/dist/commands/cache/flush-local.js +161 -0
  93. package/dist/commands/cache/flush-local.js.map +1 -0
  94. package/dist/commands/cache/index.d.ts +14 -0
  95. package/dist/commands/cache/index.d.ts.map +1 -0
  96. package/dist/commands/cache/index.js +453 -0
  97. package/dist/commands/cache/index.js.map +1 -0
  98. package/dist/commands/check/index.d.ts +8 -0
  99. package/dist/commands/check/index.d.ts.map +1 -0
  100. package/dist/commands/check/index.js +1316 -0
  101. package/dist/commands/check/index.js.map +1 -0
  102. package/dist/commands/cloudflare/index.d.ts +8 -0
  103. package/dist/commands/cloudflare/index.d.ts.map +1 -0
  104. package/dist/commands/cloudflare/index.js +453 -0
  105. package/dist/commands/cloudflare/index.js.map +1 -0
  106. package/dist/commands/core/create.d.ts +12 -0
  107. package/dist/commands/core/create.d.ts.map +1 -0
  108. package/dist/commands/core/create.js +206 -0
  109. package/dist/commands/core/create.js.map +1 -0
  110. package/dist/commands/core/delete.d.ts +11 -0
  111. package/dist/commands/core/delete.d.ts.map +1 -0
  112. package/dist/commands/core/delete.js +64 -0
  113. package/dist/commands/core/delete.js.map +1 -0
  114. package/dist/commands/core/env.d.ts +12 -0
  115. package/dist/commands/core/env.d.ts.map +1 -0
  116. package/dist/commands/core/env.js +95 -0
  117. package/dist/commands/core/env.js.map +1 -0
  118. package/dist/commands/core/health.d.ts +6 -0
  119. package/dist/commands/core/health.d.ts.map +1 -0
  120. package/dist/commands/core/health.js +215 -0
  121. package/dist/commands/core/health.js.map +1 -0
  122. package/dist/commands/core/index.d.ts +15 -0
  123. package/dist/commands/core/index.d.ts.map +1 -0
  124. package/dist/commands/core/index.js +86 -0
  125. package/dist/commands/core/index.js.map +1 -0
  126. package/dist/commands/core/list.d.ts +11 -0
  127. package/dist/commands/core/list.d.ts.map +1 -0
  128. package/dist/commands/core/list.js +58 -0
  129. package/dist/commands/core/list.js.map +1 -0
  130. package/dist/commands/core/rebuild.d.ts +13 -0
  131. package/dist/commands/core/rebuild.d.ts.map +1 -0
  132. package/dist/commands/core/rebuild.js +119 -0
  133. package/dist/commands/core/rebuild.js.map +1 -0
  134. package/dist/commands/db/index.d.ts +23 -0
  135. package/dist/commands/db/index.d.ts.map +1 -0
  136. package/dist/commands/db/index.js +355 -0
  137. package/dist/commands/db/index.js.map +1 -0
  138. package/dist/commands/db/promote-silo.d.ts +320 -0
  139. package/dist/commands/db/promote-silo.d.ts.map +1 -0
  140. package/dist/commands/db/promote-silo.js +930 -0
  141. package/dist/commands/db/promote-silo.js.map +1 -0
  142. package/dist/commands/db/relocate.d.ts +41 -0
  143. package/dist/commands/db/relocate.d.ts.map +1 -0
  144. package/dist/commands/db/relocate.js +482 -0
  145. package/dist/commands/db/relocate.js.map +1 -0
  146. package/dist/commands/db/rollback-silo.d.ts +44 -0
  147. package/dist/commands/db/rollback-silo.d.ts.map +1 -0
  148. package/dist/commands/db/rollback-silo.js +402 -0
  149. package/dist/commands/db/rollback-silo.js.map +1 -0
  150. package/dist/commands/deploy/index.d.ts +26 -0
  151. package/dist/commands/deploy/index.d.ts.map +1 -0
  152. package/dist/commands/deploy/index.js +107 -0
  153. package/dist/commands/deploy/index.js.map +1 -0
  154. package/dist/commands/devops/index.d.ts +6 -0
  155. package/dist/commands/devops/index.d.ts.map +1 -0
  156. package/dist/commands/devops/index.js +220 -0
  157. package/dist/commands/devops/index.js.map +1 -0
  158. package/dist/commands/domain/index.d.ts +8 -0
  159. package/dist/commands/domain/index.d.ts.map +1 -0
  160. package/dist/commands/domain/index.js +386 -0
  161. package/dist/commands/domain/index.js.map +1 -0
  162. package/dist/commands/image/index.d.ts +8 -0
  163. package/dist/commands/image/index.d.ts.map +1 -0
  164. package/dist/commands/image/index.js +308 -0
  165. package/dist/commands/image/index.js.map +1 -0
  166. package/dist/commands/install/factory-reset.d.ts +21 -0
  167. package/dist/commands/install/factory-reset.d.ts.map +1 -0
  168. package/dist/commands/install/factory-reset.js +83 -0
  169. package/dist/commands/install/factory-reset.js.map +1 -0
  170. package/dist/commands/install/index.d.ts +17 -0
  171. package/dist/commands/install/index.d.ts.map +1 -0
  172. package/dist/commands/install/index.js +44 -0
  173. package/dist/commands/install/index.js.map +1 -0
  174. package/dist/commands/install/install.d.ts +35 -0
  175. package/dist/commands/install/install.d.ts.map +1 -0
  176. package/dist/commands/install/install.js +171 -0
  177. package/dist/commands/install/install.js.map +1 -0
  178. package/dist/commands/login/index.d.ts +15 -0
  179. package/dist/commands/login/index.d.ts.map +1 -0
  180. package/dist/commands/login/index.js +58 -0
  181. package/dist/commands/login/index.js.map +1 -0
  182. package/dist/commands/nginx/index.d.ts +11 -0
  183. package/dist/commands/nginx/index.d.ts.map +1 -0
  184. package/dist/commands/nginx/index.js +580 -0
  185. package/dist/commands/nginx/index.js.map +1 -0
  186. package/dist/commands/server/bootstrap.d.ts +25 -0
  187. package/dist/commands/server/bootstrap.d.ts.map +1 -0
  188. package/dist/commands/server/bootstrap.js +260 -0
  189. package/dist/commands/server/bootstrap.js.map +1 -0
  190. package/dist/commands/server/index.d.ts +8 -0
  191. package/dist/commands/server/index.d.ts.map +1 -0
  192. package/dist/commands/server/index.js +2524 -0
  193. package/dist/commands/server/index.js.map +1 -0
  194. package/dist/commands/setup/index.d.ts +34 -0
  195. package/dist/commands/setup/index.d.ts.map +1 -0
  196. package/dist/commands/setup/index.js +423 -0
  197. package/dist/commands/setup/index.js.map +1 -0
  198. package/dist/commands/ssl/index.d.ts +8 -0
  199. package/dist/commands/ssl/index.d.ts.map +1 -0
  200. package/dist/commands/ssl/index.js +275 -0
  201. package/dist/commands/ssl/index.js.map +1 -0
  202. package/dist/commands/superadmin/index.d.ts +16 -0
  203. package/dist/commands/superadmin/index.d.ts.map +1 -0
  204. package/dist/commands/superadmin/index.js +81 -0
  205. package/dist/commands/superadmin/index.js.map +1 -0
  206. package/dist/commands/tenant/index.d.ts +6 -0
  207. package/dist/commands/tenant/index.d.ts.map +1 -0
  208. package/dist/commands/tenant/index.js +192 -0
  209. package/dist/commands/tenant/index.js.map +1 -0
  210. package/dist/index.d.ts +11 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +107 -0
  213. package/dist/index.js.map +1 -0
  214. package/dist/lib/addon-sign.d.ts +23 -0
  215. package/dist/lib/addon-sign.d.ts.map +1 -0
  216. package/dist/lib/addon-sign.js +39 -0
  217. package/dist/lib/addon-sign.js.map +1 -0
  218. package/dist/lib/addon-sign.test.d.ts +2 -0
  219. package/dist/lib/addon-sign.test.d.ts.map +1 -0
  220. package/dist/lib/addon-sign.test.js +27 -0
  221. package/dist/lib/addon-sign.test.js.map +1 -0
  222. package/dist/lib/cdn.d.ts +25 -0
  223. package/dist/lib/cdn.d.ts.map +1 -0
  224. package/dist/lib/cdn.js +131 -0
  225. package/dist/lib/cdn.js.map +1 -0
  226. package/dist/lib/cloudflare.d.ts +133 -0
  227. package/dist/lib/cloudflare.d.ts.map +1 -0
  228. package/dist/lib/cloudflare.js +435 -0
  229. package/dist/lib/cloudflare.js.map +1 -0
  230. package/dist/lib/config.d.ts +96 -0
  231. package/dist/lib/config.d.ts.map +1 -0
  232. package/dist/lib/config.js +132 -0
  233. package/dist/lib/config.js.map +1 -0
  234. package/dist/lib/env.d.ts +8 -0
  235. package/dist/lib/env.d.ts.map +1 -0
  236. package/dist/lib/env.js +64 -0
  237. package/dist/lib/env.js.map +1 -0
  238. package/dist/lib/hosts.d.ts +194 -0
  239. package/dist/lib/hosts.d.ts.map +1 -0
  240. package/dist/lib/hosts.js +183 -0
  241. package/dist/lib/hosts.js.map +1 -0
  242. package/dist/lib/logger.d.ts +68 -0
  243. package/dist/lib/logger.d.ts.map +1 -0
  244. package/dist/lib/logger.js +130 -0
  245. package/dist/lib/logger.js.map +1 -0
  246. package/dist/lib/nginx-config.d.ts +78 -0
  247. package/dist/lib/nginx-config.d.ts.map +1 -0
  248. package/dist/lib/nginx-config.js +736 -0
  249. package/dist/lib/nginx-config.js.map +1 -0
  250. package/dist/lib/ops/addon-dev.d.ts +93 -0
  251. package/dist/lib/ops/addon-dev.d.ts.map +1 -0
  252. package/dist/lib/ops/addon-dev.js +237 -0
  253. package/dist/lib/ops/addon-dev.js.map +1 -0
  254. package/dist/lib/ops/addon-quality.d.ts +38 -0
  255. package/dist/lib/ops/addon-quality.d.ts.map +1 -0
  256. package/dist/lib/ops/addon-quality.js +338 -0
  257. package/dist/lib/ops/addon-quality.js.map +1 -0
  258. package/dist/lib/ops/addon-routes.d.ts +49 -0
  259. package/dist/lib/ops/addon-routes.d.ts.map +1 -0
  260. package/dist/lib/ops/addon-routes.js +189 -0
  261. package/dist/lib/ops/addon-routes.js.map +1 -0
  262. package/dist/lib/ops/addon.d.ts +120 -0
  263. package/dist/lib/ops/addon.d.ts.map +1 -0
  264. package/dist/lib/ops/addon.js +260 -0
  265. package/dist/lib/ops/addon.js.map +1 -0
  266. package/dist/lib/ops/cdn.d.ts +87 -0
  267. package/dist/lib/ops/cdn.d.ts.map +1 -0
  268. package/dist/lib/ops/cdn.js +170 -0
  269. package/dist/lib/ops/cdn.js.map +1 -0
  270. package/dist/lib/ops/cf.d.ts +36 -0
  271. package/dist/lib/ops/cf.d.ts.map +1 -0
  272. package/dist/lib/ops/cf.js +114 -0
  273. package/dist/lib/ops/cf.js.map +1 -0
  274. package/dist/lib/ops/compose.d.ts +95 -0
  275. package/dist/lib/ops/compose.d.ts.map +1 -0
  276. package/dist/lib/ops/compose.js +165 -0
  277. package/dist/lib/ops/compose.js.map +1 -0
  278. package/dist/lib/ops/core.d.ts +117 -0
  279. package/dist/lib/ops/core.d.ts.map +1 -0
  280. package/dist/lib/ops/core.js +322 -0
  281. package/dist/lib/ops/core.js.map +1 -0
  282. package/dist/lib/ops/db.d.ts +116 -0
  283. package/dist/lib/ops/db.d.ts.map +1 -0
  284. package/dist/lib/ops/db.js +351 -0
  285. package/dist/lib/ops/db.js.map +1 -0
  286. package/dist/lib/ops/dns.d.ts +111 -0
  287. package/dist/lib/ops/dns.d.ts.map +1 -0
  288. package/dist/lib/ops/dns.js +306 -0
  289. package/dist/lib/ops/dns.js.map +1 -0
  290. package/dist/lib/ops/image.d.ts +94 -0
  291. package/dist/lib/ops/image.d.ts.map +1 -0
  292. package/dist/lib/ops/image.js +159 -0
  293. package/dist/lib/ops/image.js.map +1 -0
  294. package/dist/lib/ops/nginx.d.ts +114 -0
  295. package/dist/lib/ops/nginx.d.ts.map +1 -0
  296. package/dist/lib/ops/nginx.js +388 -0
  297. package/dist/lib/ops/nginx.js.map +1 -0
  298. package/dist/lib/ops/redis.d.ts +7 -0
  299. package/dist/lib/ops/redis.d.ts.map +1 -0
  300. package/dist/lib/ops/redis.js +35 -0
  301. package/dist/lib/ops/redis.js.map +1 -0
  302. package/dist/lib/ops/ssh.d.ts +127 -0
  303. package/dist/lib/ops/ssh.d.ts.map +1 -0
  304. package/dist/lib/ops/ssh.js +269 -0
  305. package/dist/lib/ops/ssh.js.map +1 -0
  306. package/dist/lib/prompts.d.ts +46 -0
  307. package/dist/lib/prompts.d.ts.map +1 -0
  308. package/dist/lib/prompts.js +113 -0
  309. package/dist/lib/prompts.js.map +1 -0
  310. package/dist/lib/sast.d.ts +43 -0
  311. package/dist/lib/sast.d.ts.map +1 -0
  312. package/dist/lib/sast.js +79 -0
  313. package/dist/lib/sast.js.map +1 -0
  314. package/dist/lib/sast.test.d.ts +2 -0
  315. package/dist/lib/sast.test.d.ts.map +1 -0
  316. package/dist/lib/sast.test.js +33 -0
  317. package/dist/lib/sast.test.js.map +1 -0
  318. package/dist/lib/shell.d.ts +61 -0
  319. package/dist/lib/shell.d.ts.map +1 -0
  320. package/dist/lib/shell.js +183 -0
  321. package/dist/lib/shell.js.map +1 -0
  322. package/dist/lib/ssh-config.d.ts +37 -0
  323. package/dist/lib/ssh-config.d.ts.map +1 -0
  324. package/dist/lib/ssh-config.js +122 -0
  325. package/dist/lib/ssh-config.js.map +1 -0
  326. package/dist/lib/tenant-scope.d.ts +38 -0
  327. package/dist/lib/tenant-scope.d.ts.map +1 -0
  328. package/dist/lib/tenant-scope.js +129 -0
  329. package/dist/lib/tenant-scope.js.map +1 -0
  330. package/dist/lib/tenant-scope.test.d.ts +2 -0
  331. package/dist/lib/tenant-scope.test.d.ts.map +1 -0
  332. package/dist/lib/tenant-scope.test.js +223 -0
  333. package/dist/lib/tenant-scope.test.js.map +1 -0
  334. package/package.json +58 -0
  335. package/templates/bootstrap/.env.template +54 -0
  336. package/templates/bootstrap/docker-compose.yml +145 -0
  337. package/templates/vhost.conf.tmpl +446 -0
package/dist/index.js ADDED
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CiCore CLI - Main Entry Point
4
+ *
5
+ * Professional Multi-Core SaaS Management Tool
6
+ *
7
+ * @author ciCore Team
8
+ * @version 1.0.0
9
+ */
10
+ import { Command } from 'commander';
11
+ import chalk from 'chalk';
12
+ import { loadDotEnv } from './lib/env.js';
13
+ import { config, setRuntimeFlags } from './lib/config.js';
14
+ // .env auto-load — host config / DB / R2 secret'larını process.env'e getirir
15
+ // (eski elle `set -a; source .env` ihtiyacını kaldırır). Komut/config env'i
16
+ // OKUMADAN önce, en başta. Shell-set vars korunur; secret loglanmaz.
17
+ {
18
+ const _env = loadDotEnv();
19
+ if (_env.loaded && process.env.CICORE_DEBUG) {
20
+ process.stderr.write(`[ci] .env loaded: ${_env.path} (${_env.count} vars)\n`);
21
+ }
22
+ }
23
+ // Import command modules
24
+ import { registerCoreCommands } from './commands/core/index.js';
25
+ import { registerAddonCommands } from './commands/addon/index.js';
26
+ import { registerTenantCommands } from './commands/tenant/index.js';
27
+ import { registerDeployCommands } from './commands/deploy/index.js';
28
+ import { registerDevOpsCommands } from './commands/devops/index.js';
29
+ import { registerServerCommands } from './commands/server/index.js';
30
+ import { registerImageCommands } from './commands/image/index.js';
31
+ import { registerCheckCommands } from './commands/check/index.js';
32
+ import { registerCloudflareCommands } from './commands/cloudflare/index.js';
33
+ import { registerNginxCommands } from './commands/nginx/index.js';
34
+ import { registerCacheCommands } from './commands/cache/index.js';
35
+ import { registerSSLCommands } from './commands/ssl/index.js';
36
+ import { registerDomainCommands } from './commands/domain/index.js';
37
+ import { registerBuildCommands } from './commands/build/index.js';
38
+ import { registerSetupCommand } from './commands/setup/index.js';
39
+ import { registerBrandCommands } from './commands/brand/index.js';
40
+ import { registerSuperAdminCommands } from './commands/superadmin/index.js';
41
+ import { registerAgentCommands } from './commands/agent/index.js';
42
+ import { registerDbCommands } from './commands/db/index.js';
43
+ import { registerInstallCommands } from './commands/install/index.js';
44
+ import { registerLoginCommand } from './commands/login/index.js';
45
+ const program = new Command();
46
+ // ASCII Art Banner
47
+ const banner = `
48
+ ${chalk.cyan('╔═══════════════════════════════════════════════════════════╗')}
49
+ ${chalk.cyan('║')} ${chalk.bold.white('CiCore CLI')} ${chalk.gray('v1.0.0')} ${chalk.cyan('║')}
50
+ ${chalk.cyan('║')} ${chalk.gray('Multi-Core SaaS Platform Management Tool')} ${chalk.cyan('║')}
51
+ ${chalk.cyan('╚═══════════════════════════════════════════════════════════╝')}
52
+ `;
53
+ program
54
+ .name('ci')
55
+ .description('CiCore CLI - Multi-Core SaaS Platform Management Tool')
56
+ .version('1.0.0')
57
+ .addHelpText('beforeAll', banner)
58
+ .option('-e, --env <environment>', 'Environment (dev/prod)', 'dev')
59
+ .option('-v, --verbose', 'Verbose output', false)
60
+ .option('--dry-run', 'Dry run mode (no actual changes)', false);
61
+ // Store global options
62
+ program.hook('preAction', (thisCommand) => {
63
+ const opts = thisCommand.opts();
64
+ config.set('env', opts.env);
65
+ // dryRun/verbose are transient per-invocation flags — keep them in memory,
66
+ // never the persisted Conf store (a leaked persisted dryRun=true silently
67
+ // no-ops real work on non-preAction code paths). See config.setRuntimeFlags.
68
+ setRuntimeFlags({ dryRun: opts.dryRun, verbose: opts.verbose });
69
+ });
70
+ // Register all command groups
71
+ registerCoreCommands(program);
72
+ registerAddonCommands(program);
73
+ registerTenantCommands(program);
74
+ registerDeployCommands(program);
75
+ registerDevOpsCommands(program);
76
+ registerServerCommands(program);
77
+ registerImageCommands(program);
78
+ registerCheckCommands(program);
79
+ registerCloudflareCommands(program);
80
+ registerNginxCommands(program);
81
+ registerCacheCommands(program);
82
+ registerSSLCommands(program);
83
+ registerDomainCommands(program);
84
+ registerBuildCommands(program);
85
+ registerSetupCommand(program);
86
+ registerBrandCommands(program);
87
+ registerSuperAdminCommands(program);
88
+ registerAgentCommands(program);
89
+ registerDbCommands(program);
90
+ registerInstallCommands(program);
91
+ registerLoginCommand(program);
92
+ // Error handling
93
+ program.exitOverride();
94
+ try {
95
+ await program.parseAsync(process.argv);
96
+ }
97
+ catch (err) {
98
+ if (err.code === 'commander.help') {
99
+ process.exit(0);
100
+ }
101
+ if (err.code === 'commander.version') {
102
+ process.exit(0);
103
+ }
104
+ console.error(chalk.red('Error:'), err.message);
105
+ process.exit(1);
106
+ }
107
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * CiCore CLI — addon package signing (M3.4 S4, K8 signed marketplace)
3
+ *
4
+ * The publish pipeline computes the package's sha256 and an HMAC signature over
5
+ * that hash. Both are stored in cp_addon_versions (sha256, signature) so a future
6
+ * `ci addon install` (and any verifier) can confirm the pulled package is the one
7
+ * the publisher signed — integrity + provenance.
8
+ *
9
+ * Format (cross-language parity with PHP / the Worker's HMAC):
10
+ * sha256 = hex(sha256(zipBytes))
11
+ * signature = base64url(HMAC-SHA256(sha256hex, secret))
12
+ *
13
+ * The secret is the shared signing key (CDN_GRANT_SECRET → CICORE_JOB_SIGNING_
14
+ * SECRET, K4 reuse, Q3). A tampered package yields a different sha256 → the
15
+ * signature no longer matches → verifyPackage() fails.
16
+ */
17
+ /** hex sha256 of a buffer (the built addon zip). */
18
+ export declare function sha256Hex(buf: Buffer | Uint8Array): string;
19
+ /** Package signature = base64url(HMAC-SHA256(sha256hex, secret)). PHP/JS parity. */
20
+ export declare function signPackage(sha256hex: string, secret: string): string;
21
+ /** Verify a package signature against the (recomputed) sha256 (constant-time-ish). */
22
+ export declare function verifyPackage(sha256hex: string, signature: string, secret: string): boolean;
23
+ //# sourceMappingURL=addon-sign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addon-sign.d.ts","sourceRoot":"","sources":["../../src/lib/addon-sign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAE1D;AAMD,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAM3F"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * CiCore CLI — addon package signing (M3.4 S4, K8 signed marketplace)
3
+ *
4
+ * The publish pipeline computes the package's sha256 and an HMAC signature over
5
+ * that hash. Both are stored in cp_addon_versions (sha256, signature) so a future
6
+ * `ci addon install` (and any verifier) can confirm the pulled package is the one
7
+ * the publisher signed — integrity + provenance.
8
+ *
9
+ * Format (cross-language parity with PHP / the Worker's HMAC):
10
+ * sha256 = hex(sha256(zipBytes))
11
+ * signature = base64url(HMAC-SHA256(sha256hex, secret))
12
+ *
13
+ * The secret is the shared signing key (CDN_GRANT_SECRET → CICORE_JOB_SIGNING_
14
+ * SECRET, K4 reuse, Q3). A tampered package yields a different sha256 → the
15
+ * signature no longer matches → verifyPackage() fails.
16
+ */
17
+ import { createHash, createHmac } from 'node:crypto';
18
+ /** hex sha256 of a buffer (the built addon zip). */
19
+ export function sha256Hex(buf) {
20
+ return createHash('sha256').update(buf).digest('hex');
21
+ }
22
+ function b64url(buf) {
23
+ return buf.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
24
+ }
25
+ /** Package signature = base64url(HMAC-SHA256(sha256hex, secret)). PHP/JS parity. */
26
+ export function signPackage(sha256hex, secret) {
27
+ return b64url(createHmac('sha256', secret).update(sha256hex).digest());
28
+ }
29
+ /** Verify a package signature against the (recomputed) sha256 (constant-time-ish). */
30
+ export function verifyPackage(sha256hex, signature, secret) {
31
+ const expected = signPackage(sha256hex, secret);
32
+ if (expected.length !== signature.length)
33
+ return false;
34
+ let diff = 0;
35
+ for (let i = 0; i < expected.length; i++)
36
+ diff |= expected.charCodeAt(i) ^ signature.charCodeAt(i);
37
+ return diff === 0;
38
+ }
39
+ //# sourceMappingURL=addon-sign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addon-sign.js","sourceRoot":"","sources":["../../src/lib/addon-sign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,oDAAoD;AACpD,MAAM,UAAU,SAAS,CAAC,GAAwB;IAChD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IACzB,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc;IAC3D,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,SAAiB,EAAE,MAAc;IAChF,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnG,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=addon-sign.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addon-sign.test.d.ts","sourceRoot":"","sources":["../../src/lib/addon-sign.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { sha256Hex, signPackage, verifyPackage } from './addon-sign.js';
3
+ describe('addon-sign (M3.4 S4)', () => {
4
+ it('sha256Hex is deterministic + tamper-sensitive', () => {
5
+ const a = sha256Hex(Buffer.from('addon-zip-bytes'));
6
+ expect(a).toMatch(/^[0-9a-f]{64}$/);
7
+ expect(sha256Hex(Buffer.from('addon-zip-bytes'))).toBe(a);
8
+ expect(sha256Hex(Buffer.from('addon-zip-bytez'))).not.toBe(a); // 1 byte changed
9
+ });
10
+ it('sign + verify round-trip', () => {
11
+ const sha = sha256Hex(Buffer.from('pkg'));
12
+ const sig = signPackage(sha, 'kat-secret');
13
+ expect(verifyPackage(sha, sig, 'kat-secret')).toBe(true);
14
+ });
15
+ it('tampered package (different sha) → signature no longer verifies', () => {
16
+ const sig = signPackage('a'.repeat(64), 'kat-secret');
17
+ expect(verifyPackage('b'.repeat(64), sig, 'kat-secret')).toBe(false); // content changed
18
+ expect(verifyPackage('a'.repeat(64), sig, 'wrong-secret')).toBe(false); // wrong key
19
+ expect(verifyPackage('a'.repeat(64), sig + 'x', 'kat-secret')).toBe(false); // tampered sig
20
+ });
21
+ it('PHP↔TS parity (known-answer vector)', () => {
22
+ // hash_hmac('sha256', str_repeat('a',64), 'kat-secret', true) → base64url, computed in PHP.
23
+ const phpSig = 'U7GDZzI-t3SW63wIlyccx7n8RDiGzh9il39OFEWXPFY';
24
+ expect(signPackage('a'.repeat(64), 'kat-secret')).toBe(phpSig);
25
+ });
26
+ });
27
+ //# sourceMappingURL=addon-sign.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addon-sign.test.js","sourceRoot":"","sources":["../../src/lib/addon-sign.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAExE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACpC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACtD,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;QACxF,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;QACpF,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,4FAA4F;QAC5F,MAAM,MAAM,GAAG,6CAA6C,CAAC;QAC7D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * CiCore CLI - CDN (Cloudflare R2) Operations
3
+ *
4
+ * Handles uploading addon and core UI files to R2 via CDN Gateway
5
+ */
6
+ export interface CDNUploadOptions {
7
+ type: 'core' | 'addon';
8
+ addonName?: string;
9
+ version?: string;
10
+ sourcePath: string;
11
+ deleteFirst?: boolean;
12
+ }
13
+ /**
14
+ * Upload files to CDN (R2) via Gateway API
15
+ */
16
+ export declare function uploadToCDN(options: CDNUploadOptions): Promise<boolean>;
17
+ /**
18
+ * Get CDN URL for addon
19
+ */
20
+ export declare function getAddonCDNUrl(addonName: string, version?: string): string;
21
+ /**
22
+ * Get CDN URL for core UI
23
+ */
24
+ export declare function getCoreCDNUrl(version?: string): string;
25
+ //# sourceMappingURL=cdn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdn.d.ts","sourceRoot":"","sources":["../../src/lib/cdn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwF7E;AAoCD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,MAAiB,GAAG,MAAM,CAEpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,MAAiB,GAAG,MAAM,CAEhE"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * CiCore CLI - CDN (Cloudflare R2) Operations
3
+ *
4
+ * Handles uploading addon and core UI files to R2 via CDN Gateway
5
+ */
6
+ import { log, spinner } from './logger.js';
7
+ import { exec } from './shell.js';
8
+ import { paths } from './config.js';
9
+ import fs from 'fs-extra';
10
+ import path from 'path';
11
+ import archiver from 'archiver';
12
+ // CDN Configuration — apiKey Kasa vault'tan env-var olarak gelir (CICORE_CDN_API_KEY).
13
+ const CDN_CONFIG = {
14
+ get apiKey() {
15
+ const key = process.env.CICORE_CDN_API_KEY;
16
+ if (!key)
17
+ throw new Error('CICORE_CDN_API_KEY env-var eksik. Kasa vault: ci kasa get cicore cdn-api-key');
18
+ return key;
19
+ },
20
+ endpoint: 'https://cdn-api.cicore.com.tr',
21
+ baseUrl: 'https://cdn.cicore.com.tr',
22
+ };
23
+ /**
24
+ * Upload files to CDN (R2) via Gateway API
25
+ */
26
+ export async function uploadToCDN(options) {
27
+ const { type, addonName, version = 'latest', sourcePath, deleteFirst = true } = options;
28
+ // Validate source path
29
+ if (!await fs.pathExists(sourcePath)) {
30
+ log.error(`Source path not found: ${sourcePath}`);
31
+ return false;
32
+ }
33
+ const uploadSpinner = spinner('Preparing CDN upload...').start();
34
+ try {
35
+ // Create ZIP file
36
+ const zipName = type === 'core'
37
+ ? `coreui-${version}.zip`
38
+ : `${addonName}-${version}.zip`;
39
+ const zipPath = path.join(paths.dev.root, '.tmp-cdn-upload', zipName);
40
+ // Ensure temp directory exists
41
+ await fs.ensureDir(path.dirname(zipPath));
42
+ // Remove old ZIP if exists
43
+ if (await fs.pathExists(zipPath)) {
44
+ await fs.remove(zipPath);
45
+ }
46
+ uploadSpinner.text = 'Creating ZIP archive...';
47
+ // Create ZIP
48
+ await createZip(sourcePath, zipPath);
49
+ const zipStats = await fs.stat(zipPath);
50
+ log.debug(`ZIP created: ${zipPath} (${(zipStats.size / 1024).toFixed(1)} KB)`);
51
+ // Delete existing files on CDN first
52
+ if (deleteFirst) {
53
+ uploadSpinner.text = 'Deleting old files from CDN...';
54
+ await deleteCDNFiles(type, addonName, version);
55
+ }
56
+ // Upload to CDN
57
+ uploadSpinner.text = 'Uploading to CDN...';
58
+ const endpoint = `${CDN_CONFIG.endpoint}/upload-coreui-zip`;
59
+ // Use PowerShell for the upload (cross-platform HTTP client issues)
60
+ const headers = {
61
+ 'x-api-key': CDN_CONFIG.apiKey,
62
+ 'x-version': version,
63
+ 'Content-Type': 'application/zip',
64
+ };
65
+ if (type === 'addon' && addonName) {
66
+ headers['x-addon'] = addonName;
67
+ }
68
+ // Build PowerShell command for upload (single line for Windows compatibility)
69
+ const addonHeader = type === 'addon' && addonName ? `'x-addon'='${addonName}';` : '';
70
+ const escapedZipPath = zipPath.replace(/\\/g, '\\\\');
71
+ const psScript = `$h=@{'x-api-key'='${CDN_CONFIG.apiKey}';'x-version'='${version}';'Content-Type'='application/zip';${addonHeader}};$b=[System.IO.File]::ReadAllBytes('${escapedZipPath}');Invoke-RestMethod -Uri '${endpoint}' -Method Post -Headers $h -Body $b`;
72
+ const result = await exec('powershell', ['-NoProfile', '-Command', psScript], { silent: true });
73
+ if (!result.success) {
74
+ throw new Error(`CDN upload failed: ${result.stderr}`);
75
+ }
76
+ uploadSpinner.succeed('Files uploaded to CDN');
77
+ // Cleanup temp ZIP
78
+ await fs.remove(path.dirname(zipPath));
79
+ // Log CDN URL
80
+ const cdnUrl = type === 'core'
81
+ ? `${CDN_CONFIG.baseUrl}/CoreUI/${version}`
82
+ : `${CDN_CONFIG.baseUrl}/addons/${addonName}/${version}`;
83
+ log.kv('CDN URL', cdnUrl);
84
+ return true;
85
+ }
86
+ catch (error) {
87
+ uploadSpinner.fail('CDN upload failed');
88
+ log.error(error.message);
89
+ return false;
90
+ }
91
+ }
92
+ /**
93
+ * Delete files from CDN before upload
94
+ */
95
+ async function deleteCDNFiles(type, addonName, version) {
96
+ const deleteEndpoint = `${CDN_CONFIG.endpoint}/delete-folder`;
97
+ const folder = type === 'core'
98
+ ? `CoreUI/${version}`
99
+ : `addons/${addonName}/${version}`;
100
+ // Single-line PowerShell for Windows compatibility
101
+ const psScript = `$h=@{'x-api-key'='${CDN_CONFIG.apiKey}';'Content-Type'='application/json'};$b='{"folder":"${folder}"}';try{Invoke-RestMethod -Uri '${deleteEndpoint}' -Method Post -Headers $h -Body $b}catch{}`;
102
+ await exec('powershell', ['-NoProfile', '-Command', psScript], { silent: true });
103
+ log.debug(`Deleted CDN folder: ${folder}`);
104
+ }
105
+ /**
106
+ * Create ZIP archive from directory
107
+ */
108
+ async function createZip(sourceDir, zipPath) {
109
+ return new Promise((resolve, reject) => {
110
+ const output = fs.createWriteStream(zipPath);
111
+ const archive = archiver('zip', { zlib: { level: 9 } });
112
+ output.on('close', () => resolve());
113
+ archive.on('error', (err) => reject(err));
114
+ archive.pipe(output);
115
+ archive.directory(sourceDir, false);
116
+ archive.finalize();
117
+ });
118
+ }
119
+ /**
120
+ * Get CDN URL for addon
121
+ */
122
+ export function getAddonCDNUrl(addonName, version = 'latest') {
123
+ return `${CDN_CONFIG.baseUrl}/addons/${addonName}/${version}`;
124
+ }
125
+ /**
126
+ * Get CDN URL for core UI
127
+ */
128
+ export function getCoreCDNUrl(version = 'latest') {
129
+ return `${CDN_CONFIG.baseUrl}/CoreUI/${version}`;
130
+ }
131
+ //# sourceMappingURL=cdn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdn.js","sourceRoot":"","sources":["../../src/lib/cdn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * CiCore CLI - Cloudflare API Integration
3
+ *
4
+ * Handles DNS management and Origin Certificate generation
5
+ */
6
+ export interface CloudflareConfig {
7
+ apiToken: string;
8
+ email?: string;
9
+ }
10
+ export interface CloudflareZone {
11
+ id: string;
12
+ name: string;
13
+ status: string;
14
+ paused: boolean;
15
+ type: string;
16
+ name_servers: string[];
17
+ }
18
+ export interface CloudflareDNSRecord {
19
+ id: string;
20
+ type: string;
21
+ name: string;
22
+ content: string;
23
+ proxied: boolean;
24
+ ttl: number;
25
+ }
26
+ export interface CloudflareOriginCertificate {
27
+ id: string;
28
+ certificate: string;
29
+ private_key: string;
30
+ hostnames: string[];
31
+ expires_on: string;
32
+ request_type: string;
33
+ requested_validity: number;
34
+ }
35
+ export declare function saveCloudflareConfig(config: CloudflareConfig): Promise<void>;
36
+ export declare function loadCloudflareConfig(): Promise<CloudflareConfig | null>;
37
+ export declare function getCloudflareToken(): Promise<string | null>;
38
+ /**
39
+ * List all zones (domains) in the account
40
+ */
41
+ export declare function listZones(): Promise<CloudflareZone[]>;
42
+ /**
43
+ * Get zone by domain name
44
+ */
45
+ export declare function getZoneByDomain(domain: string): Promise<CloudflareZone | null>;
46
+ /**
47
+ * List DNS records for a zone
48
+ */
49
+ export declare function listDNSRecords(zoneId: string): Promise<CloudflareDNSRecord[]>;
50
+ /**
51
+ * Create or update DNS record
52
+ */
53
+ export declare function upsertDNSRecord(zoneId: string, type: string, name: string, content: string, proxied?: boolean, ttl?: number): Promise<CloudflareDNSRecord | null>;
54
+ /**
55
+ * Delete DNS record
56
+ */
57
+ export declare function deleteDNSRecord(zoneId: string, recordId: string): Promise<boolean>;
58
+ /**
59
+ * Get current SSL/TLS mode for a zone
60
+ */
61
+ export declare function getSSLMode(zoneId: string): Promise<string | null>;
62
+ /**
63
+ * Set SSL/TLS mode for a zone
64
+ * Options: off, flexible, full, strict
65
+ */
66
+ export declare function setSSLMode(zoneId: string, mode: 'off' | 'flexible' | 'full' | 'strict'): Promise<boolean>;
67
+ /**
68
+ * Create Origin Certificate (15 years, free)
69
+ * This certificate is used between Cloudflare and your origin server
70
+ */
71
+ export declare function createOriginCertificate(hostnames: string[], validityDays?: number): Promise<CloudflareOriginCertificate | null>;
72
+ /**
73
+ * List Origin Certificates
74
+ */
75
+ export declare function listOriginCertificates(zoneId: string): Promise<CloudflareOriginCertificate[]>;
76
+ /**
77
+ * Revoke Origin Certificate
78
+ */
79
+ export declare function revokeOriginCertificate(certId: string): Promise<boolean>;
80
+ /**
81
+ * Purge all cache for a zone
82
+ */
83
+ export declare function purgeAllCache(zoneId: string): Promise<{
84
+ success: boolean;
85
+ error?: string;
86
+ }>;
87
+ /**
88
+ * Purge cache by URLs
89
+ */
90
+ export declare function purgeCacheByUrls(zoneId: string, urls: string[]): Promise<{
91
+ success: boolean;
92
+ error?: string;
93
+ }>;
94
+ /**
95
+ * Purge cache by tags (Enterprise only)
96
+ */
97
+ export declare function purgeCacheByTags(zoneId: string, tags: string[]): Promise<boolean>;
98
+ /**
99
+ * Purge cache by prefixes
100
+ */
101
+ export declare function purgeCacheByPrefixes(zoneId: string, prefixes: string[]): Promise<boolean>;
102
+ /**
103
+ * Setup domain for VuCore
104
+ * - Creates DNS records (A, AAAA for root and subdomains)
105
+ * - Sets SSL mode to Full (Strict)
106
+ * - Creates Origin Certificate
107
+ */
108
+ export declare function setupDomainForVuCore(domain: string, serverIP: string, options?: {
109
+ createWildcard?: boolean;
110
+ createApiSubdomain?: boolean;
111
+ sslMode?: 'flexible' | 'full' | 'strict';
112
+ }): Promise<{
113
+ success: boolean;
114
+ certificate?: CloudflareOriginCertificate;
115
+ dnsRecords?: CloudflareDNSRecord[];
116
+ error?: string;
117
+ }>;
118
+ /**
119
+ * Verify API token is valid
120
+ */
121
+ export declare function verifyToken(token?: string): Promise<{
122
+ valid: boolean;
123
+ email?: string;
124
+ error?: string;
125
+ }>;
126
+ /**
127
+ * Get account email
128
+ */
129
+ export declare function getAccountInfo(): Promise<{
130
+ email: string;
131
+ id: string;
132
+ } | null>;
133
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/lib/cloudflare.ts"],"names":[],"mappings":"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"}