@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,281 @@
1
+ /**
2
+ * CiCore CLI - Addon CSS Class Extraction
3
+ *
4
+ * Scans addon Vue files to extract all Tailwind CSS classes.
5
+ * Generates a JSON file that will be used for safelist generation.
6
+ *
7
+ * Part of the Automated Safelist Pipeline (TIER 1)
8
+ *
9
+ * @command npx vu addon extract-classes [addonName]
10
+ */
11
+ import fs from 'fs-extra';
12
+ import path from 'path';
13
+ import { glob } from 'glob';
14
+ import { log } from '../../lib/logger.js';
15
+ import { paths } from '../../lib/config.js';
16
+ // Known Tailwind utility prefixes for validation
17
+ const TAILWIND_PREFIXES = [
18
+ // Colors
19
+ 'bg-', 'text-', 'border-', 'ring-', 'shadow-', 'outline-',
20
+ 'from-', 'via-', 'to-', 'accent-', 'caret-', 'fill-', 'stroke-',
21
+ 'decoration-', 'divide-', 'placeholder-',
22
+ // Spacing
23
+ 'p-', 'px-', 'py-', 'pt-', 'pr-', 'pb-', 'pl-', 'ps-', 'pe-',
24
+ 'm-', 'mx-', 'my-', 'mt-', 'mr-', 'mb-', 'ml-', 'ms-', 'me-',
25
+ 'gap-', 'gap-x-', 'gap-y-', 'space-x-', 'space-y-',
26
+ // Sizing
27
+ 'w-', 'h-', 'min-w-', 'min-h-', 'max-w-', 'max-h-', 'size-',
28
+ // Layout
29
+ 'grid-cols-', 'grid-rows-', 'col-', 'row-', 'columns-',
30
+ 'flex-', 'basis-', 'grow-', 'shrink-',
31
+ 'order-', 'aspect-', 'container',
32
+ // Typography
33
+ 'font-', 'text-', 'leading-', 'tracking-', 'indent-',
34
+ 'align-', 'whitespace-', 'break-', 'hyphens-',
35
+ // Borders
36
+ 'rounded-', 'border-', 'divide-',
37
+ // Effects
38
+ 'opacity-', 'blur-', 'brightness-', 'contrast-', 'drop-shadow-',
39
+ 'grayscale-', 'hue-rotate-', 'invert-', 'saturate-', 'sepia-',
40
+ 'backdrop-',
41
+ // Transitions
42
+ 'transition-', 'duration-', 'ease-', 'delay-',
43
+ 'animate-',
44
+ // Transforms
45
+ 'scale-', 'rotate-', 'translate-', 'skew-', 'origin-',
46
+ // Interactivity
47
+ 'cursor-', 'pointer-events-', 'resize-', 'scroll-', 'snap-',
48
+ 'touch-', 'select-', 'will-change-', 'appearance-',
49
+ // SVG
50
+ 'fill-', 'stroke-'
51
+ ];
52
+ // Modifier prefixes (dark:, hover:, md:, etc.)
53
+ const MODIFIERS = [
54
+ 'hover', 'focus', 'active', 'disabled', 'visited',
55
+ 'first', 'last', 'odd', 'even', 'empty',
56
+ 'focus-within', 'focus-visible', 'group-hover', 'peer-hover',
57
+ 'dark', 'light',
58
+ 'sm', 'md', 'lg', 'xl', '2xl',
59
+ 'motion-safe', 'motion-reduce',
60
+ 'print', 'portrait', 'landscape',
61
+ 'ltr', 'rtl',
62
+ 'open', 'closed',
63
+ 'before', 'after', 'first-line', 'first-letter', 'marker', 'selection',
64
+ 'placeholder', 'file', 'backdrop'
65
+ ];
66
+ /**
67
+ * Extract all Tailwind classes from Vue file content
68
+ */
69
+ function extractClassesFromContent(content) {
70
+ const classes = new Set();
71
+ // Pattern 1: Static class attributes
72
+ // class="bg-primary-500 hover:bg-primary-600"
73
+ const staticClassRegex = /class="([^"]+)"/g;
74
+ let match;
75
+ while ((match = staticClassRegex.exec(content)) !== null) {
76
+ match[1].split(/\s+/).forEach(cls => {
77
+ if (cls.trim())
78
+ classes.add(cls.trim());
79
+ });
80
+ }
81
+ // Pattern 2: Single-quote class attributes
82
+ // class='bg-primary-500'
83
+ const singleQuoteClassRegex = /class='([^']+)'/g;
84
+ while ((match = singleQuoteClassRegex.exec(content)) !== null) {
85
+ match[1].split(/\s+/).forEach(cls => {
86
+ if (cls.trim())
87
+ classes.add(cls.trim());
88
+ });
89
+ }
90
+ // Pattern 3: Dynamic class bindings - object syntax
91
+ // :class="{ 'ring-blue-600': active, 'bg-red-500': error }"
92
+ const dynamicClassObjectRegex = /:class="\{[^}]*\}/g;
93
+ const objectMatches = content.matchAll(dynamicClassObjectRegex);
94
+ for (const objMatch of objectMatches) {
95
+ const stringClassRegex = /'([^']+)'(?:\s*:)/g;
96
+ let strMatch;
97
+ while ((strMatch = stringClassRegex.exec(objMatch[0])) !== null) {
98
+ strMatch[1].split(/\s+/).forEach(cls => {
99
+ if (cls.trim())
100
+ classes.add(cls.trim());
101
+ });
102
+ }
103
+ }
104
+ // Pattern 4: Dynamic class bindings - array syntax
105
+ // :class="['bg-primary-500', isActive ? 'ring-2' : '']"
106
+ const arrayClassRegex = /:class="\[[^\]]+\]/g;
107
+ const arrayMatches = content.matchAll(arrayClassRegex);
108
+ for (const arrMatch of arrayMatches) {
109
+ const stringInArrayRegex = /'([^']+)'/g;
110
+ let inMatch;
111
+ while ((inMatch = stringInArrayRegex.exec(arrMatch[0])) !== null) {
112
+ inMatch[1].split(/\s+/).forEach(cls => {
113
+ if (cls.trim())
114
+ classes.add(cls.trim());
115
+ });
116
+ }
117
+ }
118
+ // Pattern 5: cn() / clsx() / classNames() function calls
119
+ // cn('hover:bg-gray-100', props.class)
120
+ const cnCallRegex = /(?:cn|clsx|classNames|twMerge)\([^)]*\)/g;
121
+ const cnMatches = content.matchAll(cnCallRegex);
122
+ for (const cnMatch of cnMatches) {
123
+ const stringInCnRegex = /['"`]([^'"`]+)['"`]/g;
124
+ let strMatch;
125
+ while ((strMatch = stringInCnRegex.exec(cnMatch[0])) !== null) {
126
+ strMatch[1].split(/\s+/).forEach(cls => {
127
+ if (cls.trim())
128
+ classes.add(cls.trim());
129
+ });
130
+ }
131
+ }
132
+ // Pattern 6: Template literals with class strings
133
+ // `bg-${color}-500 hover:bg-${color}-600`
134
+ const templateLiteralRegex = /`([^`]+)`/g;
135
+ while ((match = templateLiteralRegex.exec(content)) !== null) {
136
+ // Extract potential classes (handle ${} interpolations carefully)
137
+ const templateContent = match[1];
138
+ // Split by whitespace and filter potential class patterns
139
+ templateContent.split(/\s+/).forEach(part => {
140
+ // Skip pure interpolations like ${color}
141
+ if (part.includes('${') && !part.includes('-'))
142
+ return;
143
+ // If it has a known prefix after removing everything before last dash in interpolation
144
+ if (isLikelyTailwindClass(part)) {
145
+ classes.add(part);
146
+ }
147
+ });
148
+ }
149
+ return Array.from(classes);
150
+ }
151
+ /**
152
+ * Check if a string is likely a Tailwind class
153
+ */
154
+ function isLikelyTailwindClass(cls) {
155
+ // Remove modifiers to check base class
156
+ const parts = cls.split(':');
157
+ const baseClass = parts[parts.length - 1];
158
+ // Check if starts with known prefix
159
+ for (const prefix of TAILWIND_PREFIXES) {
160
+ if (baseClass.startsWith(prefix))
161
+ return true;
162
+ }
163
+ // Check common standalone utilities
164
+ const standaloneClasses = [
165
+ 'flex', 'grid', 'block', 'inline', 'hidden', 'invisible', 'visible',
166
+ 'static', 'fixed', 'absolute', 'relative', 'sticky',
167
+ 'overflow-hidden', 'overflow-auto', 'overflow-scroll', 'overflow-visible',
168
+ 'truncate', 'italic', 'not-italic', 'underline', 'overline', 'line-through',
169
+ 'uppercase', 'lowercase', 'capitalize', 'normal-case',
170
+ 'antialiased', 'subpixel-antialiased',
171
+ 'object-contain', 'object-cover', 'object-fill', 'object-none', 'object-scale-down',
172
+ 'sr-only', 'not-sr-only',
173
+ 'isolate', 'isolation-auto',
174
+ 'table', 'table-caption', 'table-cell', 'table-column', 'table-column-group',
175
+ 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row'
176
+ ];
177
+ if (standaloneClasses.includes(baseClass))
178
+ return true;
179
+ // Check if all modifiers are valid
180
+ for (let i = 0; i < parts.length - 1; i++) {
181
+ if (!MODIFIERS.includes(parts[i])) {
182
+ return false;
183
+ }
184
+ }
185
+ return false;
186
+ }
187
+ /**
188
+ * Filter classes to only include Tailwind utilities
189
+ */
190
+ function filterTailwindClasses(classes) {
191
+ return classes.filter(cls => {
192
+ // Skip empty classes
193
+ if (!cls || cls.trim() === '')
194
+ return false;
195
+ // Skip template interpolations
196
+ if (cls.includes('${'))
197
+ return false;
198
+ // Skip classes that are clearly not Tailwind
199
+ if (cls.startsWith('i-'))
200
+ return false; // Icon classes
201
+ if (cls.startsWith('v-'))
202
+ return false; // Vue directives
203
+ return isLikelyTailwindClass(cls);
204
+ });
205
+ }
206
+ /**
207
+ * Main extraction function
208
+ */
209
+ export async function extractClasses(addonName, options = {}) {
210
+ const startTime = Date.now();
211
+ log.title('🔍 Tailwind Class Extraction');
212
+ const addonsDir = path.join(paths.dev.root, 'addons');
213
+ const result = {};
214
+ // Determine which addons to scan
215
+ let addonsToScan = [];
216
+ if (addonName) {
217
+ // Single addon
218
+ const addonPath = path.join(addonsDir, addonName);
219
+ if (!await fs.pathExists(addonPath)) {
220
+ log.error(`Addon not found: ${addonName}`);
221
+ process.exit(1);
222
+ }
223
+ addonsToScan = [addonName];
224
+ }
225
+ else {
226
+ // All addons
227
+ const entries = await fs.readdir(addonsDir, { withFileTypes: true });
228
+ addonsToScan = entries
229
+ .filter(e => e.isDirectory())
230
+ .map(e => e.name);
231
+ }
232
+ log.info(`Scanning ${addonsToScan.length} addon(s)...`);
233
+ log.blank();
234
+ let totalClasses = 0;
235
+ for (const addon of addonsToScan) {
236
+ const addonPath = path.join(addonsDir, addon);
237
+ // Find all Vue files
238
+ const vueFiles = await glob('**/*.vue', {
239
+ cwd: addonPath,
240
+ absolute: true
241
+ });
242
+ if (vueFiles.length === 0) {
243
+ if (options.verbose) {
244
+ log.warn(`${addon}: No Vue files found`);
245
+ }
246
+ continue;
247
+ }
248
+ const addonClasses = new Set();
249
+ for (const file of vueFiles) {
250
+ const content = await fs.readFile(file, 'utf-8');
251
+ const extractedClasses = extractClassesFromContent(content);
252
+ const filteredClasses = filterTailwindClasses(extractedClasses);
253
+ filteredClasses.forEach(cls => addonClasses.add(cls));
254
+ if (options.verbose && filteredClasses.length > 0) {
255
+ log.info(` ${path.relative(addonPath, file)}: ${filteredClasses.length} classes`);
256
+ }
257
+ }
258
+ if (addonClasses.size > 0) {
259
+ result[addon] = Array.from(addonClasses).sort();
260
+ totalClasses += addonClasses.size;
261
+ log.success(`${addon}: ${addonClasses.size} unique Tailwind classes from ${vueFiles.length} files`);
262
+ }
263
+ else {
264
+ log.info(`${addon}: No Tailwind classes found`);
265
+ }
266
+ }
267
+ // Write output
268
+ const outputPath = options.output || path.join(paths.dev.root, 'temp', 'addon-classes.json');
269
+ await fs.ensureDir(path.dirname(outputPath));
270
+ await fs.writeJson(outputPath, result, { spaces: 2 });
271
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(2);
272
+ log.blank();
273
+ log.box('✅ Extraction Complete', [
274
+ `Total addons: ${Object.keys(result).length}`,
275
+ `Total unique classes: ${totalClasses}`,
276
+ `Output: ${outputPath}`,
277
+ `Time: ${elapsed}s`
278
+ ]);
279
+ return result;
280
+ }
281
+ //# sourceMappingURL=extract-classes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-classes.js","sourceRoot":"","sources":["../../../src/commands/addon/extract-classes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * CiCore CLI - Tailwind Safelist Generator
3
+ *
4
+ * Converts extracted addon classes into optimized Tailwind safelist patterns.
5
+ * Uses intelligent grouping to minimize pattern count while covering all classes.
6
+ *
7
+ * Part of the Automated Safelist Pipeline (TIER 1)
8
+ *
9
+ * @command npx vu addon generate-safelist [--input path]
10
+ */
11
+ export interface SafelistPattern {
12
+ pattern: string;
13
+ variants?: string[];
14
+ }
15
+ export interface GenerateSafelistOptions {
16
+ input?: string;
17
+ output?: string;
18
+ apply?: boolean;
19
+ }
20
+ /**
21
+ * Main safelist generation function
22
+ */
23
+ export declare function generateSafelist(options?: GenerateSafelistOptions): Promise<SafelistPattern[]>;
24
+ //# sourceMappingURL=generate-safelist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-safelist.d.ts","sourceRoot":"","sources":["../../../src/commands/addon/generate-safelist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAyKD,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,eAAe,EAAE,CAAC,CA0I5B"}
@@ -0,0 +1,276 @@
1
+ /**
2
+ * CiCore CLI - Tailwind Safelist Generator
3
+ *
4
+ * Converts extracted addon classes into optimized Tailwind safelist patterns.
5
+ * Uses intelligent grouping to minimize pattern count while covering all classes.
6
+ *
7
+ * Part of the Automated Safelist Pipeline (TIER 1)
8
+ *
9
+ * @command npx vu addon generate-safelist [--input path]
10
+ */
11
+ import fs from 'fs-extra';
12
+ import path from 'path';
13
+ import { log } from '../../lib/logger.js';
14
+ import { paths } from '../../lib/config.js';
15
+ // Color family detection
16
+ const COLOR_NAMES = [
17
+ 'primary', 'secondary', 'accent', 'neutral', 'muted',
18
+ 'gray', 'slate', 'zinc', 'stone',
19
+ 'red', 'orange', 'amber', 'yellow', 'lime', 'green', 'emerald', 'teal',
20
+ 'cyan', 'sky', 'blue', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose',
21
+ 'white', 'black', 'transparent', 'current', 'inherit'
22
+ ];
23
+ // Shade values
24
+ const SHADE_VALUES = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'];
25
+ // Utility categories that use colors
26
+ const COLOR_UTILITIES = [
27
+ 'bg', 'text', 'border', 'ring', 'shadow', 'outline',
28
+ 'from', 'via', 'to', 'accent', 'caret', 'fill', 'stroke',
29
+ 'decoration', 'divide', 'placeholder'
30
+ ];
31
+ /**
32
+ * Parse a Tailwind class into its components
33
+ */
34
+ function parseClass(cls) {
35
+ const parts = cls.split(':');
36
+ const modifiers = parts.slice(0, -1);
37
+ const utility = parts[parts.length - 1];
38
+ // Check if this is a color utility
39
+ for (const colorUtil of COLOR_UTILITIES) {
40
+ if (utility.startsWith(`${colorUtil}-`)) {
41
+ const afterPrefix = utility.slice(colorUtil.length + 1);
42
+ // Check for color-shade pattern: bg-primary-500
43
+ for (const color of COLOR_NAMES) {
44
+ if (afterPrefix.startsWith(color)) {
45
+ const afterColor = afterPrefix.slice(color.length);
46
+ // Check for shade: -500
47
+ if (afterColor.startsWith('-')) {
48
+ const shadeStr = afterColor.slice(1);
49
+ // Check for opacity: -500/20
50
+ const [shade, opacity] = shadeStr.split('/');
51
+ if (SHADE_VALUES.includes(shade)) {
52
+ return {
53
+ modifiers,
54
+ utility: colorUtil,
55
+ color,
56
+ shade,
57
+ opacity
58
+ };
59
+ }
60
+ }
61
+ else if (afterColor === '' || afterColor.startsWith('/')) {
62
+ // Direct color usage: bg-white, text-current/50
63
+ const [, opacity] = afterColor.split('/');
64
+ return {
65
+ modifiers,
66
+ utility: colorUtil,
67
+ color,
68
+ opacity
69
+ };
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
75
+ // Non-color utility
76
+ return {
77
+ modifiers,
78
+ utility
79
+ };
80
+ }
81
+ /**
82
+ * Group classes by utility and extract patterns
83
+ */
84
+ function groupClasses(classes) {
85
+ const groups = new Map();
86
+ for (const cls of classes) {
87
+ const parsed = parseClass(cls);
88
+ if (!parsed)
89
+ continue;
90
+ const key = parsed.color
91
+ ? `${parsed.utility}-color`
92
+ : `utility-${parsed.utility}`;
93
+ if (!groups.has(key)) {
94
+ groups.set(key, []);
95
+ }
96
+ groups.get(key).push(parsed);
97
+ }
98
+ return groups;
99
+ }
100
+ /**
101
+ * Generate regex pattern for a group of color-based classes
102
+ */
103
+ function generateColorPattern(group) {
104
+ if (group.length === 0)
105
+ return null;
106
+ const utility = group[0].utility;
107
+ const colors = new Set();
108
+ const shades = new Set();
109
+ const hasOpacity = group.some(g => g.opacity);
110
+ const modifiers = new Set();
111
+ for (const parsed of group) {
112
+ if (parsed.color)
113
+ colors.add(parsed.color);
114
+ if (parsed.shade)
115
+ shades.add(parsed.shade);
116
+ parsed.modifiers.forEach(m => modifiers.add(m));
117
+ }
118
+ if (colors.size === 0)
119
+ return null;
120
+ // Build regex pattern
121
+ const colorPattern = colors.size === 1
122
+ ? Array.from(colors)[0]
123
+ : `(${Array.from(colors).sort().join('|')})`;
124
+ let pattern;
125
+ if (shades.size > 0) {
126
+ // 🔥 CRITICAL FIX: For gradient utilities (from, via, to), use ALL shades
127
+ // This ensures future gradient classes work without regenerating safelist
128
+ const isGradientUtility = ['from', 'via', 'to'].includes(utility);
129
+ const shadePattern = isGradientUtility
130
+ ? `(${SHADE_VALUES.join('|')})` // ALL shades for gradients
131
+ : shades.size === 1
132
+ ? Array.from(shades)[0]
133
+ : `(${Array.from(shades).sort((a, b) => parseInt(a) - parseInt(b)).join('|')})`;
134
+ // 🔥 For gradient utilities, always include opacity support
135
+ // ⚡ OPTIMIZED: Only common opacity values instead of all 1-99
136
+ const OPACITY_PATTERN = '(5|10|15|20|25|30|40|50|60|70|75|80|90|95)';
137
+ pattern = (hasOpacity || isGradientUtility)
138
+ ? `^${utility}-${colorPattern}-${shadePattern}(\\/${OPACITY_PATTERN})?$`
139
+ : `^${utility}-${colorPattern}-${shadePattern}$`;
140
+ }
141
+ else {
142
+ // Direct color usage (bg-white, etc.)
143
+ // ⚡ OPTIMIZED: Only common opacity values instead of all 1-99
144
+ const OPACITY_PATTERN = '(5|10|15|20|25|30|40|50|60|70|75|80|90|95)';
145
+ pattern = hasOpacity
146
+ ? `^${utility}-${colorPattern}(\\/${OPACITY_PATTERN})?$`
147
+ : `^${utility}-${colorPattern}$`;
148
+ }
149
+ const result = { pattern };
150
+ // Add modifiers as variants if present
151
+ if (modifiers.size > 0) {
152
+ result.variants = Array.from(modifiers);
153
+ }
154
+ return result;
155
+ }
156
+ /**
157
+ * Main safelist generation function
158
+ */
159
+ export async function generateSafelist(options = {}) {
160
+ const startTime = Date.now();
161
+ log.title('🧬 Safelist Pattern Generation');
162
+ // Read extracted classes
163
+ const inputPath = options.input || path.join(paths.dev.root, 'temp', 'addon-classes.json');
164
+ if (!await fs.pathExists(inputPath)) {
165
+ log.error(`Input file not found: ${inputPath}`);
166
+ log.info('Run "npx vu addon extract-classes" first');
167
+ process.exit(1);
168
+ }
169
+ const extractedClasses = await fs.readJson(inputPath);
170
+ // Flatten all classes
171
+ const allClasses = [];
172
+ for (const [addon, classes] of Object.entries(extractedClasses)) {
173
+ log.info(`${addon}: ${classes.length} classes`);
174
+ allClasses.push(...classes);
175
+ }
176
+ // Remove duplicates
177
+ const uniqueClasses = [...new Set(allClasses)];
178
+ log.info(`Total unique classes: ${uniqueClasses.length}`);
179
+ log.blank();
180
+ // Group classes by utility type
181
+ const groups = groupClasses(uniqueClasses);
182
+ // Generate patterns
183
+ const patterns = [];
184
+ const coveredClasses = new Set();
185
+ // Process color-based utilities
186
+ for (const colorUtil of COLOR_UTILITIES) {
187
+ const key = `${colorUtil}-color`;
188
+ const group = groups.get(key);
189
+ if (group && group.length > 0) {
190
+ const pattern = generateColorPattern(group);
191
+ if (pattern) {
192
+ patterns.push(pattern);
193
+ group.forEach(g => {
194
+ const original = g.modifiers.length > 0
195
+ ? `${g.modifiers.join(':')}:${g.utility}-${g.color}${g.shade ? `-${g.shade}` : ''}${g.opacity ? `/${g.opacity}` : ''}`
196
+ : `${g.utility}-${g.color}${g.shade ? `-${g.shade}` : ''}${g.opacity ? `/${g.opacity}` : ''}`;
197
+ coveredClasses.add(original);
198
+ });
199
+ log.success(`${colorUtil}: pattern covers ${group.length} classes`);
200
+ }
201
+ }
202
+ }
203
+ // Handle remaining classes as literal safelist entries
204
+ const uncoveredClasses = uniqueClasses.filter(cls => !coveredClasses.has(cls));
205
+ // Add modifier-based patterns for color utilities (dark:, hover:, etc.)
206
+ const modifierPatterns = new Map();
207
+ for (const cls of uncoveredClasses) {
208
+ const parsed = parseClass(cls);
209
+ if (parsed && parsed.modifiers.length > 0 && parsed.color) {
210
+ const basePattern = `${parsed.utility}-${parsed.color}${parsed.shade ? `-${parsed.shade}` : ''}`;
211
+ const modKey = parsed.modifiers.join(':');
212
+ if (!modifierPatterns.has(modKey)) {
213
+ modifierPatterns.set(modKey, new Set());
214
+ }
215
+ modifierPatterns.get(modKey).add(basePattern);
216
+ }
217
+ }
218
+ // Generate modifier patterns (dark:, hover:, etc.)
219
+ for (const [modifier, basePatterns] of modifierPatterns) {
220
+ if (basePatterns.size > 0) {
221
+ // For each modifier, generate a single pattern that covers all bases
222
+ // ⚡ OPTIMIZED: Only common opacity values instead of all 1-99
223
+ const OPACITY_PATTERN = '(5|10|15|20|25|30|40|50|60|70|75|80|90|95)';
224
+ const patterns_arr = Array.from(basePatterns);
225
+ const pattern = patterns_arr.length === 1
226
+ ? `^${modifier}:${patterns_arr[0].replace(/\//g, '\\/')}(\\/${OPACITY_PATTERN})?$`
227
+ : `^${modifier}:(${patterns_arr.join('|').replace(/\//g, '\\/')})(\\/${OPACITY_PATTERN})?$`;
228
+ patterns.push({ pattern });
229
+ log.success(`${modifier}: pattern covers ${basePatterns.size} variants`);
230
+ }
231
+ }
232
+ // Generate output file
233
+ const outputPath = options.output || path.join(paths.dev.root, '.generated-safelist.js');
234
+ const outputContent = `/**
235
+ * Auto-generated Tailwind safelist patterns
236
+ * Generated by: npx vu addon generate-safelist
237
+ * Generated at: ${new Date().toISOString()}
238
+ *
239
+ * These patterns are automatically merged with Core's safelist
240
+ * to include addon-specific Tailwind classes in the production build.
241
+ *
242
+ * ⚠️ DO NOT EDIT MANUALLY - Regenerate with CLI command
243
+ */
244
+
245
+ export default [
246
+ ${patterns.map(p => {
247
+ if (p.variants) {
248
+ return ` { pattern: /${p.pattern}/, variants: ${JSON.stringify(p.variants)} }`;
249
+ }
250
+ return ` { pattern: /${p.pattern}/ }`;
251
+ }).join(',\n')}
252
+ ];
253
+ `;
254
+ await fs.writeFile(outputPath, outputContent);
255
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(2);
256
+ log.blank();
257
+ log.box('✅ Safelist Generated', [
258
+ `Generated patterns: ${patterns.length}`,
259
+ `Covered classes: ${coveredClasses.size}`,
260
+ `Output: ${outputPath}`,
261
+ `Time: ${elapsed}s`
262
+ ]);
263
+ // Show sample patterns
264
+ if (patterns.length > 0) {
265
+ log.blank();
266
+ log.info('Sample patterns:');
267
+ patterns.slice(0, 5).forEach(p => {
268
+ log.info(` ${p.pattern}`);
269
+ });
270
+ if (patterns.length > 5) {
271
+ log.info(` ... and ${patterns.length - 5} more`);
272
+ }
273
+ }
274
+ return patterns;
275
+ }
276
+ //# sourceMappingURL=generate-safelist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-safelist.js","sourceRoot":"","sources":["../../../src/commands/addon/generate-safelist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * CiCore CLI - Addon Management Commands
3
+ *
4
+ * Commands:
5
+ * vu addon:create <name> - Create a new addon
6
+ * vu addon:list [core] - List addons
7
+ * vu addon:build <name> - Build addon UI
8
+ * vu addon:install <name> <core> - Install addon to core
9
+ * vu addon:enable <name> <core> - Enable addon
10
+ * vu addon:disable <name> <core> - Disable addon
11
+ * vu addon:delete <name> <core> - Delete addon from core
12
+ * vu addon:migrate <name> <core> - Run addon migrations
13
+ * vu addon:sign <name> - Sign addon for marketplace
14
+ * vu addon:extract-classes [name] - Extract Tailwind classes from addon(s)
15
+ * vu addon:generate-safelist - Generate Tailwind safelist patterns
16
+ */
17
+ import { Command } from 'commander';
18
+ export declare function registerAddonCommands(program: Command): void;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/addon/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8R5D"}