@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
@@ -0,0 +1,435 @@
1
+ /**
2
+ * CiCore CLI - Cloudflare API Integration
3
+ *
4
+ * Handles DNS management and Origin Certificate generation
5
+ */
6
+ import fs from 'fs-extra';
7
+ import path from 'path';
8
+ import os from 'os';
9
+ import { log } from './logger.js';
10
+ // Cloudflare API Base URL
11
+ const CF_API_BASE = 'https://api.cloudflare.com/client/v4';
12
+ // Config file path
13
+ const CF_CONFIG_PATH = path.join(os.homedir(), '.vucore', 'cloudflare.json');
14
+ // ============================================
15
+ // CONFIG MANAGEMENT
16
+ // ============================================
17
+ export async function saveCloudflareConfig(config) {
18
+ await fs.ensureDir(path.dirname(CF_CONFIG_PATH));
19
+ await fs.writeJson(CF_CONFIG_PATH, config, { spaces: 2 });
20
+ }
21
+ export async function loadCloudflareConfig() {
22
+ try {
23
+ if (await fs.pathExists(CF_CONFIG_PATH)) {
24
+ return await fs.readJson(CF_CONFIG_PATH);
25
+ }
26
+ }
27
+ catch (error) {
28
+ // Ignore
29
+ }
30
+ return null;
31
+ }
32
+ export async function getCloudflareToken() {
33
+ // Check environment variable first
34
+ if (process.env.CLOUDFLARE_API_TOKEN) {
35
+ return process.env.CLOUDFLARE_API_TOKEN;
36
+ }
37
+ // Check config file
38
+ const config = await loadCloudflareConfig();
39
+ return config?.apiToken || null;
40
+ }
41
+ // ============================================
42
+ // API HELPERS
43
+ // ============================================
44
+ async function cfFetch(endpoint, options = {}) {
45
+ const token = options.token || await getCloudflareToken();
46
+ if (!token) {
47
+ return { success: false, errors: [{ message: 'Cloudflare API token not configured' }] };
48
+ }
49
+ try {
50
+ const response = await fetch(`${CF_API_BASE}${endpoint}`, {
51
+ method: options.method || 'GET',
52
+ headers: {
53
+ 'Authorization': `Bearer ${token}`,
54
+ 'Content-Type': 'application/json',
55
+ },
56
+ body: options.body ? JSON.stringify(options.body) : undefined,
57
+ });
58
+ const data = await response.json();
59
+ return {
60
+ success: data.success,
61
+ result: data.result,
62
+ errors: data.errors,
63
+ };
64
+ }
65
+ catch (error) {
66
+ return {
67
+ success: false,
68
+ errors: [{ message: error.message }],
69
+ };
70
+ }
71
+ }
72
+ // ============================================
73
+ // ZONE OPERATIONS
74
+ // ============================================
75
+ /**
76
+ * List all zones (domains) in the account
77
+ */
78
+ export async function listZones() {
79
+ const response = await cfFetch('/zones');
80
+ if (!response.success) {
81
+ log.error('Failed to list zones:', response.errors?.[0]?.message);
82
+ return [];
83
+ }
84
+ return response.result || [];
85
+ }
86
+ /**
87
+ * Get zone by domain name
88
+ */
89
+ export async function getZoneByDomain(domain) {
90
+ // First try exact domain match
91
+ let response = await cfFetch(`/zones?name=${domain}`);
92
+ if (response.success && response.result?.length) {
93
+ return response.result[0];
94
+ }
95
+ // Handle multi-part TLDs like .com.tr, .co.uk
96
+ const parts = domain.split('.');
97
+ // Try different combinations for multi-part TLDs
98
+ // e.g., cicore.com.tr -> try cicore.com.tr first, then com.tr won't work
99
+ // e.g., api.cicore.com.tr -> try cicore.com.tr
100
+ if (parts.length > 2) {
101
+ // Try removing first subdomain
102
+ const withoutSubdomain = parts.slice(1).join('.');
103
+ response = await cfFetch(`/zones?name=${withoutSubdomain}`);
104
+ if (response.success && response.result?.length) {
105
+ return response.result[0];
106
+ }
107
+ }
108
+ // Fallback: try last 2 parts (standard TLD)
109
+ const rootDomain = parts.slice(-2).join('.');
110
+ response = await cfFetch(`/zones?name=${rootDomain}`);
111
+ if (!response.success || !response.result?.length) {
112
+ return null;
113
+ }
114
+ return response.result[0];
115
+ }
116
+ // ============================================
117
+ // DNS OPERATIONS
118
+ // ============================================
119
+ /**
120
+ * List DNS records for a zone
121
+ */
122
+ export async function listDNSRecords(zoneId) {
123
+ const response = await cfFetch(`/zones/${zoneId}/dns_records`);
124
+ if (!response.success) {
125
+ log.error('Failed to list DNS records:', response.errors?.[0]?.message);
126
+ return [];
127
+ }
128
+ return response.result || [];
129
+ }
130
+ /**
131
+ * Create or update DNS record
132
+ */
133
+ export async function upsertDNSRecord(zoneId, type, name, content, proxied = true, ttl = 1 // 1 = auto
134
+ ) {
135
+ // Check if record exists
136
+ const records = await listDNSRecords(zoneId);
137
+ const existing = records.find(r => r.type === type && r.name === name);
138
+ const recordData = {
139
+ type,
140
+ name,
141
+ content,
142
+ proxied,
143
+ ttl,
144
+ };
145
+ let response;
146
+ if (existing) {
147
+ // Update existing record
148
+ response = await cfFetch(`/zones/${zoneId}/dns_records/${existing.id}`, { method: 'PUT', body: recordData });
149
+ }
150
+ else {
151
+ // Create new record
152
+ response = await cfFetch(`/zones/${zoneId}/dns_records`, { method: 'POST', body: recordData });
153
+ }
154
+ if (!response.success) {
155
+ log.error('Failed to upsert DNS record:', response.errors?.[0]?.message);
156
+ return null;
157
+ }
158
+ return response.result || null;
159
+ }
160
+ /**
161
+ * Delete DNS record
162
+ */
163
+ export async function deleteDNSRecord(zoneId, recordId) {
164
+ const response = await cfFetch(`/zones/${zoneId}/dns_records/${recordId}`, { method: 'DELETE' });
165
+ return response.success;
166
+ }
167
+ // ============================================
168
+ // SSL/TLS OPERATIONS
169
+ // ============================================
170
+ /**
171
+ * Get current SSL/TLS mode for a zone
172
+ */
173
+ export async function getSSLMode(zoneId) {
174
+ const response = await cfFetch(`/zones/${zoneId}/settings/ssl`);
175
+ if (!response.success) {
176
+ return null;
177
+ }
178
+ return response.result?.value || null;
179
+ }
180
+ /**
181
+ * Set SSL/TLS mode for a zone
182
+ * Options: off, flexible, full, strict
183
+ */
184
+ export async function setSSLMode(zoneId, mode) {
185
+ const response = await cfFetch(`/zones/${zoneId}/settings/ssl`, { method: 'PATCH', body: { value: mode } });
186
+ return response.success;
187
+ }
188
+ /**
189
+ * Create Origin Certificate (15 years, free)
190
+ * This certificate is used between Cloudflare and your origin server
191
+ */
192
+ export async function createOriginCertificate(hostnames, validityDays = 5475 // 15 years (max)
193
+ ) {
194
+ // Get zone ID from first hostname
195
+ const domain = hostnames[0].replace('*.', '');
196
+ // Handle .com.tr, .co.uk etc - try full domain first, then strip subdomains
197
+ let zone = await getZoneByDomain(domain);
198
+ if (!zone) {
199
+ // Try with last 3 parts (e.g., cicore.com.tr)
200
+ const parts = domain.split('.');
201
+ if (parts.length > 2) {
202
+ const rootDomain = parts.slice(-3).join('.');
203
+ zone = await getZoneByDomain(rootDomain);
204
+ }
205
+ }
206
+ if (!zone) {
207
+ log.error(`Zone not found for domain: ${domain}`);
208
+ return null;
209
+ }
210
+ // Generate CSR using openssl on server (called from server CLI)
211
+ const { execSync } = await import('child_process');
212
+ const fsSync = await import('fs');
213
+ const os = await import('os');
214
+ const pathModule = await import('path');
215
+ const tmpDir = os.tmpdir();
216
+ const keyFile = pathModule.join(tmpDir, `vucore-origin.key`);
217
+ const csrFile = pathModule.join(tmpDir, `vucore-origin.csr`);
218
+ const configFile = pathModule.join(tmpDir, `vucore-origin.cnf`);
219
+ try {
220
+ // Create openssl config for SAN
221
+ const sanExt = hostnames.map((h, i) => `DNS.${i + 1}=${h}`).join('\n');
222
+ const configContent = `[req]
223
+ distinguished_name = req_distinguished_name
224
+ req_extensions = v3_req
225
+ prompt = no
226
+
227
+ [req_distinguished_name]
228
+ CN = ${hostnames[0].replace('*.', '')}
229
+ O = VuCore
230
+ C = TR
231
+
232
+ [v3_req]
233
+ subjectAltName = @alt_names
234
+
235
+ [alt_names]
236
+ ${sanExt}
237
+ `;
238
+ fsSync.writeFileSync(configFile, configContent);
239
+ // Generate private key
240
+ log.info('Generating private key...');
241
+ execSync(`openssl genrsa -out "${keyFile}" 2048`, { stdio: 'pipe' });
242
+ // Generate CSR
243
+ log.info('Generating CSR...');
244
+ execSync(`openssl req -new -key "${keyFile}" -out "${csrFile}" -config "${configFile}"`, { stdio: 'pipe' });
245
+ const csr = fsSync.readFileSync(csrFile, 'utf-8');
246
+ const privateKey = fsSync.readFileSync(keyFile, 'utf-8');
247
+ // Cleanup temp files
248
+ try {
249
+ fsSync.unlinkSync(configFile);
250
+ }
251
+ catch { }
252
+ try {
253
+ fsSync.unlinkSync(keyFile);
254
+ }
255
+ catch { }
256
+ try {
257
+ fsSync.unlinkSync(csrFile);
258
+ }
259
+ catch { }
260
+ // Cloudflare Origin CA API with CSR
261
+ log.info('Requesting certificate from Cloudflare...');
262
+ const response = await cfFetch('/certificates', {
263
+ method: 'POST',
264
+ body: {
265
+ hostnames,
266
+ requested_validity: validityDays,
267
+ request_type: 'origin-rsa',
268
+ csr: csr,
269
+ },
270
+ });
271
+ if (!response.success) {
272
+ const errorMsg = response.errors?.[0]?.message || 'Unknown error';
273
+ log.error('Failed to create origin certificate:', errorMsg);
274
+ return null;
275
+ }
276
+ // Add private key to result
277
+ if (response.result) {
278
+ response.result.private_key = privateKey;
279
+ }
280
+ return response.result || null;
281
+ }
282
+ catch (error) {
283
+ log.error('Failed to generate CSR:', error.message);
284
+ // Cleanup on error
285
+ try {
286
+ fsSync.unlinkSync(configFile);
287
+ }
288
+ catch { }
289
+ try {
290
+ fsSync.unlinkSync(keyFile);
291
+ }
292
+ catch { }
293
+ try {
294
+ fsSync.unlinkSync(csrFile);
295
+ }
296
+ catch { }
297
+ return null;
298
+ }
299
+ }
300
+ /**
301
+ * List Origin Certificates
302
+ */
303
+ export async function listOriginCertificates(zoneId) {
304
+ const response = await cfFetch(`/certificates?zone_id=${zoneId}`);
305
+ if (!response.success) {
306
+ return [];
307
+ }
308
+ return response.result || [];
309
+ }
310
+ /**
311
+ * Revoke Origin Certificate
312
+ */
313
+ export async function revokeOriginCertificate(certId) {
314
+ const response = await cfFetch(`/certificates/${certId}`, { method: 'DELETE' });
315
+ return response.success;
316
+ }
317
+ // ============================================
318
+ // CACHE OPERATIONS
319
+ // ============================================
320
+ /**
321
+ * Purge all cache for a zone
322
+ */
323
+ export async function purgeAllCache(zoneId) {
324
+ const response = await cfFetch(`/zones/${zoneId}/purge_cache`, { method: 'POST', body: { purge_everything: true } });
325
+ if (!response.success) {
326
+ const errorMsg = response.errors?.[0]?.message || 'Unknown error';
327
+ log.error('Cache purge failed:', errorMsg);
328
+ return { success: false, error: errorMsg };
329
+ }
330
+ return { success: true };
331
+ }
332
+ /**
333
+ * Purge cache by URLs
334
+ */
335
+ export async function purgeCacheByUrls(zoneId, urls) {
336
+ const response = await cfFetch(`/zones/${zoneId}/purge_cache`, { method: 'POST', body: { files: urls } });
337
+ if (!response.success) {
338
+ const errorMsg = response.errors?.[0]?.message || 'Unknown error';
339
+ log.error('Cache purge by URLs failed:', errorMsg);
340
+ return { success: false, error: errorMsg };
341
+ }
342
+ return { success: true };
343
+ }
344
+ /**
345
+ * Purge cache by tags (Enterprise only)
346
+ */
347
+ export async function purgeCacheByTags(zoneId, tags) {
348
+ const response = await cfFetch(`/zones/${zoneId}/purge_cache`, { method: 'POST', body: { tags } });
349
+ return response.success;
350
+ }
351
+ /**
352
+ * Purge cache by prefixes
353
+ */
354
+ export async function purgeCacheByPrefixes(zoneId, prefixes) {
355
+ const response = await cfFetch(`/zones/${zoneId}/purge_cache`, { method: 'POST', body: { prefixes } });
356
+ return response.success;
357
+ }
358
+ // ============================================
359
+ // HIGH-LEVEL OPERATIONS
360
+ // ============================================
361
+ /**
362
+ * Setup domain for VuCore
363
+ * - Creates DNS records (A, AAAA for root and subdomains)
364
+ * - Sets SSL mode to Full (Strict)
365
+ * - Creates Origin Certificate
366
+ */
367
+ export async function setupDomainForVuCore(domain, serverIP, options = {}) {
368
+ const { createWildcard = true, createApiSubdomain = true, sslMode = 'strict' } = options;
369
+ // Get zone
370
+ const zone = await getZoneByDomain(domain);
371
+ if (!zone) {
372
+ return { success: false, error: `Domain ${domain} not found in Cloudflare` };
373
+ }
374
+ const dnsRecords = [];
375
+ // Create A record for root domain
376
+ const rootRecord = await upsertDNSRecord(zone.id, 'A', domain, serverIP, true);
377
+ if (rootRecord)
378
+ dnsRecords.push(rootRecord);
379
+ // Create A record for www
380
+ const wwwRecord = await upsertDNSRecord(zone.id, 'A', `www.${domain}`, serverIP, true);
381
+ if (wwwRecord)
382
+ dnsRecords.push(wwwRecord);
383
+ // Create A record for api subdomain
384
+ if (createApiSubdomain) {
385
+ const apiRecord = await upsertDNSRecord(zone.id, 'A', `api.${domain}`, serverIP, true);
386
+ if (apiRecord)
387
+ dnsRecords.push(apiRecord);
388
+ }
389
+ // Create wildcard record for tenant subdomains
390
+ if (createWildcard) {
391
+ // Note: Wildcard DNS with proxy requires Cloudflare paid plan
392
+ // For free plan, we create without proxy
393
+ const wildcardRecord = await upsertDNSRecord(zone.id, 'A', `*.${domain}`, serverIP, false);
394
+ if (wildcardRecord)
395
+ dnsRecords.push(wildcardRecord);
396
+ }
397
+ // Set SSL mode
398
+ await setSSLMode(zone.id, sslMode);
399
+ // Create Origin Certificate
400
+ const hostnames = [domain, `*.${domain}`];
401
+ const certificate = await createOriginCertificate(hostnames);
402
+ if (!certificate) {
403
+ return {
404
+ success: false,
405
+ error: 'Failed to create origin certificate',
406
+ dnsRecords
407
+ };
408
+ }
409
+ return {
410
+ success: true,
411
+ certificate,
412
+ dnsRecords,
413
+ };
414
+ }
415
+ /**
416
+ * Verify API token is valid
417
+ */
418
+ export async function verifyToken(token) {
419
+ const response = await cfFetch('/user/tokens/verify', { token });
420
+ if (!response.success) {
421
+ return { valid: false, error: response.errors?.[0]?.message };
422
+ }
423
+ return { valid: true };
424
+ }
425
+ /**
426
+ * Get account email
427
+ */
428
+ export async function getAccountInfo() {
429
+ const response = await cfFetch('/user');
430
+ if (!response.success) {
431
+ return null;
432
+ }
433
+ return response.result || null;
434
+ }
435
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/lib/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * CiCore CLI Configuration Manager
3
+ *
4
+ * Manages CLI configuration, environment detection, and paths
5
+ */
6
+ import Conf from 'conf';
7
+ interface CLIConfig {
8
+ env: 'dev' | 'prod';
9
+ verbose: boolean;
10
+ dryRun: boolean;
11
+ sshHost: string;
12
+ sshUser: string;
13
+ dockerRegistry: string;
14
+ cdnApiUrl: string;
15
+ cdnApiKey: string;
16
+ dockerHubToken: string;
17
+ }
18
+ export declare const config: Conf<CLIConfig>;
19
+ /** Set transient flags from parsed CLI options (called by the bootstrap hook). */
20
+ export declare function setRuntimeFlags(flags: {
21
+ dryRun?: boolean;
22
+ verbose?: boolean;
23
+ }): void;
24
+ /**
25
+ * Path configurations based on environment
26
+ */
27
+ export declare const paths: {
28
+ dev: {
29
+ root: string;
30
+ addons: string;
31
+ scripts: string;
32
+ shared: string;
33
+ storage: string;
34
+ };
35
+ prod: {
36
+ root: string;
37
+ cores: string;
38
+ services: string;
39
+ scripts: string;
40
+ addons: (coreName: string) => string;
41
+ shared: (coreName: string) => string;
42
+ storage: (coreName: string) => string;
43
+ };
44
+ };
45
+ /**
46
+ * Docker container names
47
+ */
48
+ export declare const containers: {
49
+ nuxt: string;
50
+ php: string;
51
+ nginx: string;
52
+ postgres: string;
53
+ redis: string;
54
+ dev: {
55
+ nuxt: string;
56
+ php: string;
57
+ nginx: string;
58
+ postgres: string;
59
+ redis: string;
60
+ };
61
+ };
62
+ /**
63
+ * Docker compose files
64
+ */
65
+ export declare const composeFiles: {
66
+ dev: string;
67
+ prod: {
68
+ nuxt: string;
69
+ php: string;
70
+ nginx: string;
71
+ postgres: string;
72
+ redis: string;
73
+ };
74
+ };
75
+ /**
76
+ * Get current environment
77
+ */
78
+ export declare function getEnv(): 'dev' | 'prod';
79
+ /**
80
+ * Check if running in dry-run mode
81
+ */
82
+ export declare function isDryRun(): boolean;
83
+ /**
84
+ * Check if verbose mode is enabled
85
+ */
86
+ export declare function isVerbose(): boolean;
87
+ /**
88
+ * Get SSH connection string
89
+ */
90
+ export declare function getSSHConnection(): string;
91
+ /**
92
+ * Get Docker registry
93
+ */
94
+ export declare function getDockerRegistry(): string;
95
+ export {};
96
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,UAAU,SAAS;IACjB,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAgBD,eAAO,MAAM,MAAM,iBAGjB,CAAC;AAiBH,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAGpF;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;2BAgBK,MAAM;2BACN,MAAM;4BACL,MAAM;;CAE7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAetB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;CASxB,CAAC;AAEF;;GAEG;AACH,wBAAgB,MAAM,IAAI,KAAK,GAAG,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * CiCore CLI Configuration Manager
3
+ *
4
+ * Manages CLI configuration, environment detection, and paths
5
+ */
6
+ import Conf from 'conf';
7
+ import { join } from 'path';
8
+ // Default configuration
9
+ const defaults = {
10
+ env: 'dev',
11
+ verbose: false,
12
+ dryRun: false,
13
+ sshHost: 'cicore',
14
+ sshUser: 'root',
15
+ dockerRegistry: 'baynis',
16
+ cdnApiUrl: 'https://cdn-api.cicore.com.tr',
17
+ cdnApiKey: '',
18
+ dockerHubToken: '',
19
+ };
20
+ // Persistent configuration store
21
+ export const config = new Conf({
22
+ projectName: 'vucore-cli',
23
+ defaults,
24
+ });
25
+ /**
26
+ * Transient per-invocation flags (`--dry-run`, `--verbose`).
27
+ *
28
+ * These MUST NOT live in the persistent `Conf` store: persisting `dryRun`
29
+ * means a single `ci --dry-run …` run writes `true` to disk, and any code
30
+ * path that reads `isDryRun()` without first going through the CLI's
31
+ * `preAction` hook (tests, direct `ops/*` imports, ad-hoc scripts) then sees
32
+ * a stale `true` and silently no-ops real work. Bug surfaced 2026-05-25 when
33
+ * a prior `--dry-run` leaked into a live DNS provisioning check.
34
+ *
35
+ * Kept in module memory, defaulting to `false`; `setRuntimeFlags()` is called
36
+ * once from the CLI bootstrap. A fresh process always starts clean.
37
+ */
38
+ const runtimeFlags = { dryRun: false, verbose: false };
39
+ /** Set transient flags from parsed CLI options (called by the bootstrap hook). */
40
+ export function setRuntimeFlags(flags) {
41
+ if (flags.dryRun !== undefined)
42
+ runtimeFlags.dryRun = flags.dryRun;
43
+ if (flags.verbose !== undefined)
44
+ runtimeFlags.verbose = flags.verbose;
45
+ }
46
+ /**
47
+ * Path configurations based on environment
48
+ */
49
+ export const paths = {
50
+ // DEV paths (local machine)
51
+ dev: {
52
+ root: process.cwd(),
53
+ addons: join(process.cwd(), 'addons'),
54
+ scripts: join(process.cwd(), 'server_scripts'),
55
+ shared: join(process.cwd(), 'shared'),
56
+ storage: join(process.cwd(), 'storage'),
57
+ },
58
+ // PROD paths (server)
59
+ prod: {
60
+ root: '/home',
61
+ cores: '/home/cores',
62
+ services: '/home/services',
63
+ scripts: '/home/scripts',
64
+ addons: (coreName) => `/home/cores/${coreName}/addons`,
65
+ shared: (coreName) => `/home/cores/${coreName}/shared`,
66
+ storage: (coreName) => `/home/cores/${coreName}/storage`,
67
+ },
68
+ };
69
+ /**
70
+ * Docker container names
71
+ */
72
+ export const containers = {
73
+ nuxt: 'cicore_nuxt',
74
+ php: 'cicore_php',
75
+ nginx: 'cicore_global_nginx',
76
+ postgres: 'cicore_global_postgres',
77
+ redis: 'cicore_global_redis',
78
+ // DEV containers
79
+ dev: {
80
+ nuxt: 'vucore_dev_nuxt',
81
+ php: 'vucore_dev_php',
82
+ nginx: 'vucore_dev_nginx',
83
+ postgres: 'vucore_dev_postgres',
84
+ redis: 'vucore_dev_redis',
85
+ },
86
+ };
87
+ /**
88
+ * Docker compose files
89
+ */
90
+ export const composeFiles = {
91
+ dev: 'docker-compose.dev.yml',
92
+ prod: {
93
+ nuxt: 'docker-core-nuxt.yml',
94
+ php: 'docker-core-php.yml',
95
+ nginx: 'docker-server-nginx.yml',
96
+ postgres: 'docker-postgresql.yml',
97
+ redis: 'docker-redis.yml',
98
+ },
99
+ };
100
+ /**
101
+ * Get current environment
102
+ */
103
+ export function getEnv() {
104
+ return config.get('env');
105
+ }
106
+ /**
107
+ * Check if running in dry-run mode
108
+ */
109
+ export function isDryRun() {
110
+ return runtimeFlags.dryRun;
111
+ }
112
+ /**
113
+ * Check if verbose mode is enabled
114
+ */
115
+ export function isVerbose() {
116
+ return runtimeFlags.verbose;
117
+ }
118
+ /**
119
+ * Get SSH connection string
120
+ */
121
+ export function getSSHConnection() {
122
+ const host = config.get('sshHost');
123
+ const user = config.get('sshUser');
124
+ return user ? `${user}@${host}` : host;
125
+ }
126
+ /**
127
+ * Get Docker registry
128
+ */
129
+ export function getDockerRegistry() {
130
+ return config.get('dockerRegistry');
131
+ }
132
+ //# sourceMappingURL=config.js.map