@ingcrea/aumic-tailwind-killer 4.1.4 → 4.1.5
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.
- package/README.es.md +175 -165
- package/README.md +127 -119
- package/dist/1_atoms/constants.js +26 -0
- package/dist/1_atoms/hash.js +22 -0
- package/dist/1_atoms/types.js +6 -0
- package/dist/2_molecules/classifier.js +38 -0
- package/dist/2_molecules/concurrency.js +18 -0
- package/dist/3_cells/AiEngine.js +103 -0
- package/dist/3_cells/DuckDbCache.js +24 -0
- package/dist/3_cells/WebCloner.js +61 -0
- package/dist/4_organisms/AstParser.js +116 -0
- package/dist/5_ecosystems/RestoreEcosystem.js +85 -0
- package/dist/5_ecosystems/TransmutationEcosystem.js +552 -0
- package/dist/5_ecosystems/index.js +17 -0
- package/dist/6_galaxies/index.js +131 -0
- package/dist/index.js +5 -1629
- package/dist/worker.js +26 -14
- package/package.json +52 -51
- package/.npmrc.bak +0 -1
- package/bin/aumic-killer.js +0 -100
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# âš”ï¸ AUM-IC Tailwind Killer
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 🌠**Navigation:** 🇲🇽 [Leer en Español](./README.es.md) | 📜 [Manifesto (EN)](./MANIFEST.md) | 📜 [Manifiesto (ES)](./MANIFEST.es.md)
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@ingcrea/aumic-tailwind-killer)
|
|
6
6
|
[](https://github.com/ingcrea/aumic-tailwind-killer/stargazers)
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
[](https://nodejs.org)
|
|
11
11
|
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
12
12
|
|
|
13
|
-
**AUM-IC Tailwind Killer** is not just a CLI orchestrator
|
|
13
|
+
**AUM-IC Tailwind Killer** is not just a CLI orchestrator — it is the technical manifestation of a design standard. It is named after the **Arquitectura de Universos Multidimensionales de IngenierÃa Creativa (AUM-IC)** standard: a philosophy built to restore sanity, absolute control and infinite scalability to software engineers.
|
|
14
14
|
|
|
15
|
-
Designed under the architectural rigor of **
|
|
15
|
+
Designed under the architectural rigor of **INGENIERÃA CREATIVA Y DESARROLLOS TECNOLÓGICOS S.A.S. (IngCrea)**, this high-performance "Tailwind Killer" audits, extracts, compiles (via JIT) and purges your codebase in seconds — transmuting the chaos of utility classes into an obfuscated, standardized, dependency-free ecosystem (Zero-Bloat) powered by an implacable *Multi-Level JIT Cache (DuckDB + Node.js)* architecture with universal AST interceptors.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## âš¡ Quick Start (60 seconds)
|
|
20
20
|
|
|
21
|
-
> **Prerequisites:** Node.js >= 18.0
|
|
21
|
+
> **Prerequisites:** Node.js >= 18.0 · No extra system installations required. DuckDB is bundled.
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
# 1. Audit your project without touching any file (recommended first step)
|
|
@@ -35,7 +35,7 @@ npx @ingcrea/aumic-tailwind-killer -m restore -t ./my-project
|
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
-
##
|
|
38
|
+
## âš¡ Why AUM-IC Tailwind Killer? (The Pain Cure)
|
|
39
39
|
|
|
40
40
|
Debates in global software architecture forums expose universal complaints about Tailwind CSS at scale. AUM-IC Tailwind Killer was forged to annihilate exactly those pains:
|
|
41
41
|
|
|
@@ -43,39 +43,39 @@ Debates in global software architecture forums expose universal complaints about
|
|
|
43
43
|
The #1 developer complaint. Components flooded with kilometer-long strings (`class="flex items-center justify-between p-4 bg-white shadow-md..."`) that destroy readability. AUM-IC transmutes that toxic chain into an elegant, clean, obfuscated hash (`class="aumic-rs-1b3a"`). We give your DOM its visual purity back.
|
|
44
44
|
|
|
45
45
|
2. **Vendor Lock-In Liberation (The Escape Hatch):**
|
|
46
|
-
CTOs dread tying a massive project to third-party framework syntax that could change or become obsolete. With AUM-IC Tailwind Killer, **you are no longer Tailwind's slave**. Build fast with utilities
|
|
46
|
+
CTOs dread tying a massive project to third-party framework syntax that could change or become obsolete. With AUM-IC Tailwind Killer, **you are no longer Tailwind's slave**. Build fast with utilities — when you ship to production, our engine physically purges it from your `package.json` and extracts a standard, framework-agnostic `.css` file. You reclaim code sovereignty.
|
|
47
47
|
|
|
48
48
|
3. **Architectural Restoration (Separation of Concerns):**
|
|
49
49
|
Purists hate mixing structure and design in the same line. AUM-IC lets you enjoy Tailwind's speed in development, but in production our orchestrator extracts design into a deterministic CSS ecosystem, restoring the sacred boundary between your logic and your styles.
|
|
50
50
|
|
|
51
51
|
4. **Obfuscation, Collision Prevention and AI Semantic Naming:**
|
|
52
|
-
We don't obfuscate only for anti-scraping security. By generating mathematical hashes (`aumic-rs-[hash]`), we **unify tags and guarantee zero style collisions** after a massive migration. AUM-IC also integrates an optional **AI Semantic Naming** feature (locally via *Ollama* or remotely via *Claude, Gemini, DeepSeek, Codex*). Thanks to our deduplication algorithm, the AI **only processes UNIQUE combinations**
|
|
52
|
+
We don't obfuscate only for anti-scraping security. By generating mathematical hashes (`aumic-rs-[hash]`), we **unify tags and guarantee zero style collisions** after a massive migration. AUM-IC also integrates an optional **AI Semantic Naming** feature (locally via *Ollama* or remotely via *Claude, Gemini, DeepSeek, Codex*). Thanks to our deduplication algorithm, the AI **only processes UNIQUE combinations** — never your full source code. This saves millions of tokens and shields your privacy.
|
|
53
53
|
|
|
54
54
|
5. **Extreme Performance (Zero-Bloat Build Time):**
|
|
55
|
-
Eliminating Tailwind's massive engine from your CI/CD pipelines dramatically accelerates build times for Next.js, Astro, and Vite
|
|
55
|
+
Eliminating Tailwind's massive engine from your CI/CD pipelines dramatically accelerates build times for Next.js, Astro, and Vite — saving real server resources.
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
|
|
59
|
-
##
|
|
59
|
+
## 🆚 How Does It Compare?
|
|
60
60
|
|
|
61
61
|
| Feature | AUM-IC Tailwind Killer | PurgeCSS | UnoCSS | vanilla-extract | Manual Migration |
|
|
62
62
|
| :--- | :---: | :---: | :---: | :---: | :---: |
|
|
63
|
-
| **Removes unused CSS** |
|
|
64
|
-
| **Obfuscates class names** |
|
|
65
|
-
| **Zero-Bloat (removes Tailwind dep)** |
|
|
66
|
-
| **Fully automated migration** |
|
|
67
|
-
| **Rollback / Undo** |
|
|
68
|
-
| **AST (no regex hacks)** |
|
|
69
|
-
| **Supports v1 / v2 / v3 / v4 Oxide** |
|
|
70
|
-
| **AI Semantic Naming** |
|
|
71
|
-
| **Offline / Air-Gapped** |
|
|
72
|
-
| **Prevents CSS collisions post-migration** |
|
|
63
|
+
| **Removes unused CSS** | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
64
|
+
| **Obfuscates class names** | ✅ | ⌠| ⌠| Partial | ⌠|
|
|
65
|
+
| **Zero-Bloat (removes Tailwind dep)** | ✅ | ⌠| ⌠| ✅ | ✅ |
|
|
66
|
+
| **Fully automated migration** | ✅ | ⌠| ⌠| ⌠| ⌠|
|
|
67
|
+
| **Rollback / Undo** | ✅ | ⌠| ⌠| ⌠| ⌠|
|
|
68
|
+
| **AST (no regex hacks)** | ✅ | ⌠| N/A | N/A | N/A |
|
|
69
|
+
| **Supports v1 / v2 / v3 / v4 Oxide** | ✅ | Partial | ✅ | N/A | Manual |
|
|
70
|
+
| **AI Semantic Naming** | ✅ | ⌠| ⌠| ⌠| ⌠|
|
|
71
|
+
| **Offline / Air-Gapped** | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
72
|
+
| **Prevents CSS collisions post-migration** | ✅ | ⌠| ⌠| ✅ | Manual |
|
|
73
73
|
|
|
74
74
|
> **Summary:** PurgeCSS only removes dead code. UnoCSS is a framework, not a migrator. vanilla-extract requires a full manual rewrite. AUM-IC Tailwind Killer is the only tool that **automates the complete escape** from Tailwind with safety, reversibility and zero external dependencies.
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
78
|
-
##
|
|
78
|
+
## 🦖 Architecture v4.1.3: Multi-Level JIT Cache
|
|
79
79
|
|
|
80
80
|
AUM-IC operates under a two-level cache architecture powered 100% by Node.js and analytical databases:
|
|
81
81
|
|
|
@@ -90,76 +90,76 @@ AUM-IC operates under a two-level cache architecture powered 100% by Node.js and
|
|
|
90
90
|
|
|
91
91
|
---
|
|
92
92
|
|
|
93
|
-
##
|
|
93
|
+
## 🧠5-Phase Pipeline (The Transmutation Engine)
|
|
94
94
|
|
|
95
95
|
```
|
|
96
96
|
Your Project (source code)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
97
|
+
│
|
|
98
|
+
â–¼
|
|
99
|
+
┌───────────────────────────────────────────────────────────â”
|
|
100
|
+
│ PHASE 1 ─ Reconnaissance & Pre-Flight │
|
|
101
|
+
│ Validates Git status, permissions, excludes │
|
|
102
|
+
│ node_modules / .git / dist │
|
|
103
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
104
|
+
│
|
|
105
|
+
â–¼
|
|
106
|
+
┌───────────────────────────────────────────────────────────â”
|
|
107
|
+
│ PHASE 2 ─ Parallel Extraction (AST + Piscina Threads) │
|
|
108
|
+
│ Babel/Cheerio parse JSX/Astro/Vue/HTML surgically │
|
|
109
|
+
│ Extracts classes → Deduplicates → Unique combinations │
|
|
110
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
111
|
+
│
|
|
112
|
+
â–¼
|
|
113
|
+
┌───────────────────────────────────────────────────────────â”
|
|
114
|
+
│ PHASE 3 ─ Nomenclature Cryptography │
|
|
115
|
+
│ Deterministic hashes aumic-rs-[hash] per combination │
|
|
116
|
+
│ 5,000 repetitions of one class = 1 single hash in RAM │
|
|
117
|
+
└──────────┬────────────────────────────┬───────────────────┘
|
|
118
|
+
│ │
|
|
119
|
+
â–¼ â–¼
|
|
120
|
+
┌──────────────────────┠┌────────────────────────────────â”
|
|
121
|
+
│ L1 Cache (DuckDB) │ │ L2 Cache (Dynamic JIT) │
|
|
122
|
+
│ 26,000+ classes │ │ Local tailwindcss compiler │
|
|
123
|
+
│ O(1) · Offline │ │ For dynamic classes w-[Xpx] │
|
|
124
|
+
│ Hit Rate: 99.2% │ │ Respects your installed ver. │
|
|
125
|
+
└──────────┬───────────┘ └────────────────┬───────────────┘
|
|
126
|
+
└────────────────────────────────┘
|
|
127
|
+
│
|
|
128
|
+
â–¼
|
|
129
|
+
┌───────────────────────────────────────────────────────────â”
|
|
130
|
+
│ PHASE 4 ─ Synthesis & Output │
|
|
131
|
+
│ Pure unified CSS · aumic-lock.json (rollback map) │
|
|
132
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
133
|
+
│
|
|
134
|
+
â–¼
|
|
135
|
+
┌───────────────────────────────────────────────────────────â”
|
|
136
|
+
│ PHASE 5 ─ Total Eradication │
|
|
137
|
+
│ Purges Tailwind from package.json · Rewrites components │
|
|
138
|
+
│ Your code is free, clean and sovereign. │
|
|
139
|
+
└───────────────────────────────────────────────────────────┘
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
---
|
|
143
143
|
|
|
144
|
-
##
|
|
144
|
+
## 🔄 Before & After: What Your Code Looks Like
|
|
145
145
|
|
|
146
|
-
### HTML / JSX
|
|
146
|
+
### HTML / JSX — Before
|
|
147
147
|
```html
|
|
148
148
|
<div class="flex items-center justify-between p-4 bg-white shadow-md rounded-xl border border-gray-200">
|
|
149
149
|
<span class="text-sm font-semibold text-gray-800">Dashboard</span>
|
|
150
150
|
</div>
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
### HTML / JSX
|
|
153
|
+
### HTML / JSX — After
|
|
154
154
|
```html
|
|
155
155
|
<div class="aumic-rs-1b3a">
|
|
156
156
|
<span class="aumic-rs-2c4f">Dashboard</span>
|
|
157
157
|
</div>
|
|
158
158
|
```
|
|
159
159
|
|
|
160
|
-
### Generated CSS
|
|
160
|
+
### Generated CSS — After
|
|
161
161
|
```css
|
|
162
|
-
/* aumic-output.css
|
|
162
|
+
/* aumic-output.css — Pure CSS. No framework. No runtime. No dependencies. */
|
|
163
163
|
.aumic-rs-1b3a {
|
|
164
164
|
display: flex;
|
|
165
165
|
align-items: center;
|
|
@@ -181,7 +181,7 @@ AUM-IC operates under a two-level cache architecture powered 100% by Node.js and
|
|
|
181
181
|
|
|
182
182
|
---
|
|
183
183
|
|
|
184
|
-
##
|
|
184
|
+
## 🔒 The `aumic-lock.json` Map (Rollback & IA Schema)
|
|
185
185
|
|
|
186
186
|
Every transmutation generates an `aumic-lock.json` in your project root. This file is your **safety net and the bridge for AI semantic naming**. Its structure:
|
|
187
187
|
|
|
@@ -213,11 +213,11 @@ Every transmutation generates an `aumic-lock.json` in your project root. This fi
|
|
|
213
213
|
}
|
|
214
214
|
```
|
|
215
215
|
|
|
216
|
-
This map is what powers the `-m restore` rollback
|
|
216
|
+
This map is what powers the `-m restore` rollback — and what the AI semantic naming engine reads to produce human-readable names **without ever seeing your source code**.
|
|
217
217
|
|
|
218
218
|
---
|
|
219
219
|
|
|
220
|
-
##
|
|
220
|
+
## 🚀 Installation
|
|
221
221
|
|
|
222
222
|
> **No extra system dependencies required.** DuckDB is bundled inside the package. Works on macOS, Linux, and Windows (Node.js >= 18.0).
|
|
223
223
|
|
|
@@ -232,10 +232,10 @@ aumic-tailwind-killer -m local -t ./my-project
|
|
|
232
232
|
|
|
233
233
|
---
|
|
234
234
|
|
|
235
|
-
##
|
|
235
|
+
## 🛠Usage Modes
|
|
236
236
|
|
|
237
237
|
### 1. Simulate Mode (Dry-Run)
|
|
238
|
-
Audit your project
|
|
238
|
+
Audit your project — see how many Tailwind classes you use and preview the impact **without touching a single file**.
|
|
239
239
|
```bash
|
|
240
240
|
npx @ingcrea/aumic-tailwind-killer -m simulate -t ./
|
|
241
241
|
```
|
|
@@ -273,21 +273,21 @@ npx @ingcrea/aumic-tailwind-killer -m local -t ./ --ai gemini --ai-key AIza...
|
|
|
273
273
|
|
|
274
274
|
---
|
|
275
275
|
|
|
276
|
-
##
|
|
276
|
+
## âš™ï¸ CLI Options
|
|
277
277
|
|
|
278
278
|
| Short | Long | Description | Required |
|
|
279
279
|
| :--- | :--- | :--- | :--- |
|
|
280
280
|
| `-m` | `--mode` | Operation mode: `simulate`, `local`, `restore`. | **Yes** |
|
|
281
281
|
| `-t` | `--target` | Path to the project directory. | **Yes** |
|
|
282
282
|
| `-s` | `--scope` | Glob pattern to restrict mutation to specific files. | No |
|
|
283
|
-
|
|
|
284
|
-
|
|
|
285
|
-
|
|
|
286
|
-
|
|
|
283
|
+
| — | `--ai` | AI provider for semantic naming: `ollama`, `claude`, `gemini`, `deepseek`, `codex`. | No |
|
|
284
|
+
| — | `--ai-model` | Specific model name (e.g. `llama3`, `claude-3-5-sonnet`). | No |
|
|
285
|
+
| — | `--ai-key` | Remote provider API Key (not required for `ollama`). | No |
|
|
286
|
+
| — | `--ai-base-url` | Custom Ollama base URL (default: `http://localhost:11434`). | No |
|
|
287
287
|
|
|
288
288
|
---
|
|
289
289
|
|
|
290
|
-
##
|
|
290
|
+
## 📊 Benchmarks
|
|
291
291
|
|
|
292
292
|
Measured on a Next.js monorepo with **1,200 files** and **48,000 unique Tailwind classes** (MacBook Pro M2, 16GB RAM):
|
|
293
293
|
|
|
@@ -301,31 +301,34 @@ Measured on a Next.js monorepo with **1,200 files** and **48,000 unique Tailwind
|
|
|
301
301
|
|
|
302
302
|
---
|
|
303
303
|
|
|
304
|
-
##
|
|
304
|
+
## ðŸ–¥ï¸ Console Output Preview
|
|
305
305
|
|
|
306
306
|
```
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
[
|
|
313
|
-
[
|
|
314
|
-
[
|
|
315
|
-
[
|
|
316
|
-
[
|
|
317
|
-
[
|
|
318
|
-
[
|
|
319
|
-
[
|
|
320
|
-
[
|
|
321
|
-
|
|
322
|
-
|
|
307
|
+
â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
|
|
308
|
+
â•‘ âš”ï¸ AUM-IC Tailwind Killer v4.1.3 â•‘
|
|
309
|
+
║ Powered by DuckDB • IngCrea ® ║
|
|
310
|
+
╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
|
|
311
|
+
|
|
312
|
+
[✔] PRE-FLIGHT Clean Git branch. Filesystem validated.
|
|
313
|
+
[âš¡] SCAN Scanning 1,247 files (Piscina Worker Threads: 8)...
|
|
314
|
+
[🔎] EXTRACT 48,312 classes detected. Deduplicating...
|
|
315
|
+
[🚀] L1 CACHE DuckDB resolved 47,924 classes in O(1) [Hit Rate: 99.2%]
|
|
316
|
+
[âš™ï¸] L2 CACHE Local JIT compiled 388 dynamic classes [w-[320px], text-[#FF0000]...]
|
|
317
|
+
[🛡ï¸] HASH Deterministic hashes: 48,312 -> 5,840 unique
|
|
318
|
+
[💾] OUTPUT aumic-output.css generated (127KB -> 78KB, -39%)
|
|
319
|
+
[🔒] LOCK aumic-lock.json written. Rollback available.
|
|
320
|
+
[💥] PURGE Tailwind CSS removed from package.json. Freedom!
|
|
321
|
+
|
|
322
|
+
✔ Zero-Bloat transmutation completed in 112ms.
|
|
323
323
|
```
|
|
324
324
|
|
|
325
325
|
---
|
|
326
326
|
|
|
327
327
|
|
|
328
|
-
##
|
|
328
|
+
## 🧠Under the Hood: The Engineering
|
|
329
|
+
|
|
330
|
+
### ðŸ›¡ï¸ Zero-Trust Execution (Enterprise Security)
|
|
331
|
+
AUM-IC Tailwind Killer is built under a Zero-Trust security model. All system operations, file manipulation, and background processes are executed isolated from the system shell (strict prohibition of `exec`). This eradicates command injection vectors in SaaS and CI/CD environments, guaranteeing that code analysis is 100% secure even on untrusted repositories.
|
|
329
332
|
|
|
330
333
|
AUM-IC Tailwind Killer is not a simple Regex script. It is a **Safe Static Analysis** tool designed for enterprise-grade monorepos:
|
|
331
334
|
|
|
@@ -333,22 +336,22 @@ AUM-IC Tailwind Killer is not a simple Regex script. It is a **Safe Static Analy
|
|
|
333
336
|
* **Intermediate Bytecode for Semantic Naming:** The hashes you see injected into your code (e.g., `class="aumic-rs-1b3a"`) **are NOT the final output**. They act as an intermediate *bytecode*. AUM-IC offers an **AI Semantic Naming** engine (via Ollama or Claude) that reads your `aumic-lock.json` and automatically translates these hashes into pure, maintainable semantic CSS (e.g., `.dashboard-card`). It is an automated bridge back to traditional CSS.
|
|
334
337
|
* **Dynamic Classes Management (clsx, twMerge):** If a class cannot be deterministically resolved at compile time (e.g., `<div class={\`bg-${color}-500\`}>`), the static analyzer safely ignores it and flags it in the simulation report for developer review.
|
|
335
338
|
|
|
336
|
-
##
|
|
339
|
+
## 🥊 AUM-IC vs Tailwind v4
|
|
337
340
|
|
|
338
341
|
Tailwind v4 introduced monumental improvements in compilation speed (Oxide engine) and CSS-first configuration. So why use AUM-IC?
|
|
339
342
|
|
|
340
343
|
Tailwind v4 solves performance, but it **DOES NOT solve Vendor Lock-in or HTML Soup**.
|
|
341
344
|
If you use v4, your HTML code remains strictly coupled to a proprietary Domain-Specific Language (DSL). AUM-IC Tailwind Killer does not compete on compilation speed; its sole objective is **Architectural Independence (Zero Vendor Lock-in)**. It returns full control to you via clean, semantic HTML and standard CSS that will outlive any frontend framework trend.
|
|
342
345
|
|
|
343
|
-
##
|
|
346
|
+
## âš ï¸ Limitations and Ideal Use Cases
|
|
344
347
|
|
|
345
348
|
* **Not recommended for:** Projects highly dependent on fully dynamic classes constructed at runtime (string interpolation) without exhaustive manual auditing. If your project has thousands of runtime logic branches for styles, you will need a gradual migration approach.
|
|
346
349
|
* **Highly recommended for:** Freezing technical debt, standardizing monorepos, protecting UI Intellectual Property for commercial licensing, and preparing architectures for 10+ year maintenance lifecycles.
|
|
347
350
|
|
|
348
|
-
##
|
|
351
|
+
## â“ FAQ
|
|
349
352
|
|
|
350
353
|
**Does this break Tailwind pseudo-classes like `hover:`, `focus:`, `md:`?**
|
|
351
|
-
> No. The AST interceptor detects and preserves responsive and state modifiers. The final hash encapsulates the full selector: `hover:bg-red-500`
|
|
354
|
+
> No. The AST interceptor detects and preserves responsive and state modifiers. The final hash encapsulates the full selector: `hover:bg-red-500` → `aumic-rs-a3f1` with its `:hover` rule intact in the output CSS.
|
|
352
355
|
|
|
353
356
|
**Can I use it alongside Tailwind or does it remove it completely?**
|
|
354
357
|
> In Simulate mode (`-m simulate`), Tailwind is untouched. In Local mode (`-m local`), it is purged from `package.json`. You can revert everything at any time with `-m restore`.
|
|
@@ -363,7 +366,7 @@ If you use v4, your HTML code remains strictly coupled to a proprietary Domain-S
|
|
|
363
366
|
> Yes. The L1 DuckDB cache contains the compiled dictionary for Tailwind v4 Oxide. The L2 Cache hijacks `@tailwindcss/vite` or the native binary as detected from your `package.json`.
|
|
364
367
|
|
|
365
368
|
**What if I use CSS-in-JS (`styled-components`, `emotion`) without Tailwind?**
|
|
366
|
-
> AUM-IC Tailwind Killer processes **Tailwind utility classes** in your component markup. If your project uses CSS-in-JS libraries *without* Tailwind classes in HTML/JSX attributes, there is nothing to transmute
|
|
369
|
+
> AUM-IC Tailwind Killer processes **Tailwind utility classes** in your component markup. If your project uses CSS-in-JS libraries *without* Tailwind classes in HTML/JSX attributes, there is nothing to transmute — the tool will simply report zero classes found. For **mixed projects** (Tailwind classes in some components + CSS-in-JS in others), AUM-IC processes only the Tailwind parts and leaves CSS-in-JS components completely untouched.
|
|
367
370
|
|
|
368
371
|
**What if the migration fails mid-process?**
|
|
369
372
|
> Phase 1 (Pre-Flight) runs before touching a single file and aborts immediately if it detects uncommitted Git changes, permission issues, or missing dependencies. If a failure occurs after Phase 1 begins writing, every modified file has a `.aumic-bak` backup copy that `--mode restore` uses to recover the exact original state. Your code is always recoverable.
|
|
@@ -373,18 +376,18 @@ If you use v4, your HTML code remains strictly coupled to a proprietary Domain-S
|
|
|
373
376
|
|
|
374
377
|
---
|
|
375
378
|
|
|
376
|
-
##
|
|
379
|
+
## ðŸ—ºï¸ Roadmap
|
|
377
380
|
|
|
378
381
|
| Version | Feature | Status |
|
|
379
382
|
| :--- | :--- | :---: |
|
|
380
|
-
| v4.1.3 | DuckDB L1 Cache
|
|
381
|
-
| v4.2.0 | Native Vite plugin
|
|
382
|
-
| v4.3.0 | Svelte stable
|
|
383
|
-
| v5.0.0 | VS Code extension
|
|
383
|
+
| v4.1.3 | DuckDB L1 Cache · Parallel AST · Rollback · AI Naming | ✅ Stable |
|
|
384
|
+
| v4.2.0 | Native Vite plugin · Turbopack integration | 🔄 In development |
|
|
385
|
+
| v4.3.0 | Svelte stable · Angular 17+ support | 📋 Planned |
|
|
386
|
+
| v5.0.0 | VS Code extension · Web audit dashboard | 📋 Planned |
|
|
384
387
|
|
|
385
388
|
---
|
|
386
389
|
|
|
387
|
-
##
|
|
390
|
+
## 🤠Contributing
|
|
388
391
|
|
|
389
392
|
Found a bug or want to add support for a new framework? Contributions are welcome.
|
|
390
393
|
|
|
@@ -399,26 +402,31 @@ For major changes (new modes, new AI providers, new framework support), open an
|
|
|
399
402
|
|
|
400
403
|
---
|
|
401
404
|
|
|
402
|
-
##
|
|
405
|
+
## 🢠Enterprise Support & Dual-Licensing
|
|
403
406
|
|
|
404
407
|
**AUM-IC Tailwind Killer** operates under a **Dual-License Model**:
|
|
405
408
|
|
|
406
409
|
1. **Open Source:** Free under the [AGPL v3 License](./LICENSE) for open source, personal, or non-commercial projects.
|
|
407
410
|
2. **Commercial:** Proprietary licensing for organizations embedding AUM-IC in closed-source products, SaaS platforms, or internal enterprise workflows. See [LICENSE-COMMERCIAL.md](./LICENSE-COMMERCIAL.md) for details.
|
|
408
411
|
|
|
409
|
-
For organizations with large-scale monorepos, **
|
|
412
|
+
For organizations with large-scale monorepos, **INGENIERÃA CREATIVA Y DESARROLLOS TECNOLÓGICOS S.A.S. (IngCrea)** offers:
|
|
410
413
|
|
|
411
414
|
| Service | Description |
|
|
412
415
|
| :--- | :--- |
|
|
413
|
-
|
|
|
414
|
-
|
|
|
415
|
-
|
|
|
416
|
-
|
|
|
416
|
+
| 🔠**Migration Audit** | Technical assessment, risk identification and transmutation plan for enterprise projects. |
|
|
417
|
+
| âš¡ **Managed CI/CD Integration** | AUM-IC configured inside GitHub Actions, GitLab CI or Jenkins pipelines. |
|
|
418
|
+
| 🧠**On-Premise AI Naming** | Ollama deployment with specialized models on client infrastructure. Zero code exposure. |
|
|
419
|
+
| ðŸ›¡ï¸ **SLA & Priority Support** | Dedicated channel, critical incident resolution in under 4 hours. |
|
|
417
420
|
|
|
418
|
-
> ###
|
|
421
|
+
> ### 📧 Enterprise Contact
|
|
419
422
|
> **contacto@ingcrea.com** | [ingcrea.com](https://ingcrea.com)
|
|
420
423
|
> *Response within 24 business hours.*
|
|
421
424
|
|
|
422
425
|
---
|
|
423
426
|
|
|
424
|
-
> Developed under the technological standard of **
|
|
427
|
+
> Developed under the technological standard of **INGENIERÃA CREATIVA Y DESARROLLOS TECNOLÓGICOS S.A.S.** Excellence, Determinism and Zero-Trust.
|
|
428
|
+
|
|
429
|
+
### ðŸ›¡ï¸ Seguridad Zero-Trust y Arquitectura AUM-IC (v4.1.5)
|
|
430
|
+
A partir de la versión 4.1.5, el compilador AUM-IC Tailwind Killer ha sido reescrito desde cero utilizando nuestra propia **Arquitectura Cósmica AUM-IC (Ãtomos a Galaxias)**.
|
|
431
|
+
- **Desintegración del Monolito:** El núcleo ha sido purificado en 6 capas de abstracción (Ãtomos, Moléculas, Células, Organismos, Ecosistemas y Galaxias), promoviendo mantenibilidad y separación de responsabilidades a niveles fractales.
|
|
432
|
+
- **Modelo de Ejecución Zero-Trust:** Hemos erradicado TODAS las instancias de child_process.exec y execSync. Ahora, toda ejecución nativa opera estrictamente bajo spawn/spawnSync puro, pasando los argumentos como arreglos inmutables y deshabilitando intérpretes de shell. Esto cierra definitivamente cualquier vector de Command Injection (OWASP A03:2021) en la herramienta. AUM-IC es intrÃnsecamente seguro por diseño.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* [EN] Immutable constants that form the AUM-IC transmutation vocabulary.
|
|
4
|
+
* [ES] Constantes inmutables que forman el vocabulario de transmutación AUM-IC.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.LEVEL_PREFIX = exports.COMPONENT_ALIASES = exports.TAILWIND_SNIPER_REGEX = void 0;
|
|
8
|
+
/** [EN] O(n) pre-filter: quickly confirms Tailwind presence before invoking the Babel AST pipeline. [ES] Pre-filtro O(n): confirma rápidamente la presencia de Tailwind antes de invocar el pipeline AST Babel. */
|
|
9
|
+
exports.TAILWIND_SNIPER_REGEX = /(class(Name)?=|className:|\b(sm:|md:|lg:|xl:|2xl:|hover:|focus:|active:|disabled:|dark:|flex\b|grid\b|block\b|hidden\b|absolute\b|relative\b|bg-[a-z]+-\d{1,3}|text-[a-z]+-\d{1,3}|p[xytrbl]?-\d|m[xytrbl]?-\d|w-\d|h-\d|gap-\d|border|rounded|shadow|z-\d0|opacity-\d{2}|leading-|tracking-)|@apply|@tailwind)/;
|
|
10
|
+
/** [EN] Maps component file names to AUM-IC abbreviated identifiers for class generation. [ES] Mapea nombres de archivo de componentes a identificadores abreviados AUM-IC para la generación de clases. */
|
|
11
|
+
exports.COMPONENT_ALIASES = {
|
|
12
|
+
button: 'btn', icon: 'icon', input: 'input', badge: 'badge',
|
|
13
|
+
link: 'link', label: 'lbl', card: 'card', form: 'form',
|
|
14
|
+
dropdown: 'drop', menu: 'menu', list: 'list', modal: 'modal',
|
|
15
|
+
header: 'header', footer: 'footer', sidebar: 'sidebar', hero: 'hero',
|
|
16
|
+
table: 'table', nav: 'nav', main: 'main', section: 'section',
|
|
17
|
+
article: 'article', page: 'page', layout: 'layout', index: 'page',
|
|
18
|
+
pricing: 'pricing', trust: 'trust', features: 'features', ecosystem: 'eco',
|
|
19
|
+
teaser: 'teaser', banner: 'banner', toast: 'toast', chip: 'chip',
|
|
20
|
+
avatar: 'avatar', tag: 'tag',
|
|
21
|
+
};
|
|
22
|
+
/** [EN] Maps AUM-IC structural categories to their class name prefixes. [ES] Mapea categorías estructurales AUM-IC a sus prefijos de nombre de clase. */
|
|
23
|
+
exports.LEVEL_PREFIX = {
|
|
24
|
+
atoms: 'atom', molecules: 'molecule', organisms: 'organism',
|
|
25
|
+
ecosystems: 'ecosystem', galaxies: 'galaxy',
|
|
26
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getHash = getHash;
|
|
7
|
+
exports.escapeCssSelector = escapeCssSelector;
|
|
8
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
9
|
+
/**
|
|
10
|
+
* [EN] Deterministic 6-char hex hash for reproducible AUM-IC class identifiers.
|
|
11
|
+
* [ES] Hash hex determinista de 6 chars para identificadores de clase AUM-IC reproducibles.
|
|
12
|
+
*/
|
|
13
|
+
function getHash(str) {
|
|
14
|
+
return crypto_1.default.createHash('shake256', { outputLength: 3 }).update(str).digest('hex');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* [EN] Escapes a string for safe use as a CSS class selector.
|
|
18
|
+
* [ES] Escapa un string para uso seguro como selector de clase CSS.
|
|
19
|
+
*/
|
|
20
|
+
function escapeCssSelector(className) {
|
|
21
|
+
return className.replace(/[^a-zA-Z0-9_-]/g, '\\$&');
|
|
22
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.classifyComponent = classifyComponent;
|
|
7
|
+
/**
|
|
8
|
+
* [EN] Component classifier: maps a file name to its AUM-IC structural tier.
|
|
9
|
+
* [ES] Clasificador de componentes: mapea un nombre de archivo a su nivel estructural AUM-IC.
|
|
10
|
+
*/
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const constants_1 = require("../1_atoms/constants");
|
|
13
|
+
/** [EN] Classifies a file into its AUM-IC tier using alias lookup then regex patterns. [ES] Clasifica un archivo en su nivel AUM-IC usando búsqueda de alias y luego patrones regex. */
|
|
14
|
+
function classifyComponent(fileName) {
|
|
15
|
+
const name = path_1.default.basename(fileName, path_1.default.extname(fileName)).toLowerCase();
|
|
16
|
+
if (constants_1.COMPONENT_ALIASES[name]) {
|
|
17
|
+
const comp = constants_1.COMPONENT_ALIASES[name];
|
|
18
|
+
if (/(button|icon|input|badge|link|label)/.test(name))
|
|
19
|
+
return { category: 'atoms', component: comp };
|
|
20
|
+
if (/(card|form|dropdown|menu|list|modal)/.test(name))
|
|
21
|
+
return { category: 'molecules', component: comp };
|
|
22
|
+
if (/(header|footer|sidebar|hero|table|nav)/.test(name))
|
|
23
|
+
return { category: 'organisms', component: comp };
|
|
24
|
+
return { category: 'ecosystems', component: comp };
|
|
25
|
+
}
|
|
26
|
+
const comp = name.replace(/[^a-z0-9]/g, '').slice(0, 8) || 'comp';
|
|
27
|
+
if (/(button|btn|icon|input|badge|link|label|chip|tag|avatar)/.test(name))
|
|
28
|
+
return { category: 'atoms', component: comp };
|
|
29
|
+
if (/(card|form|dropdown|drop|menu|list|modal|toast|banner)/.test(name))
|
|
30
|
+
return { category: 'molecules', component: comp };
|
|
31
|
+
if (/(header|footer|sidebar|hero|table|nav|pricing|trust|features|teaser|rmm|cta)/.test(name))
|
|
32
|
+
return { category: 'organisms', component: comp };
|
|
33
|
+
if (/(main|section|article|page|layout|index)/.test(name))
|
|
34
|
+
return { category: 'ecosystems', component: comp };
|
|
35
|
+
if (/(app|root|core|galaxy|global|provider)/.test(name))
|
|
36
|
+
return { category: 'galaxies', component: comp };
|
|
37
|
+
return { category: 'molecules', component: comp };
|
|
38
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runConcurrent = runConcurrent;
|
|
4
|
+
/**
|
|
5
|
+
* [EN] Bounded concurrent task runner. Processes items in parallel up to the configured worker limit.
|
|
6
|
+
* [ES] Ejecutor de tareas concurrentes acotado. Procesa ítems en paralelo hasta el límite configurado.
|
|
7
|
+
*/
|
|
8
|
+
async function runConcurrent(items, concurrency, task) {
|
|
9
|
+
const results = [];
|
|
10
|
+
const iterator = items.entries();
|
|
11
|
+
const workers = Array(concurrency).fill(iterator).map(async (iter) => {
|
|
12
|
+
for (const [index, item] of iter) {
|
|
13
|
+
results[index] = await task(item);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
await Promise.all(workers);
|
|
17
|
+
return results;
|
|
18
|
+
}
|