{"_id":"@atlex/cli","_rev":"16-13dce951e54dad1bf2603ae59c335c08","name":"@atlex/cli","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.1":{"name":"@atlex/cli","version":"0.1.1","keywords":["atlex","cli","typescript","scaffold"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.1","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/atlex-monorepo/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"2305fbbc9f0b2e1ad5d042daf884341ce3881e49","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.1.tgz","fileCount":321,"integrity":"sha512-48RQzwUhmYyPyn2BrVGR5NNFDQ7k+unxjnQl7928mEpDoiR2GqMIPqUYnZJmHcKqrwTFh7c2vySd8PzP+9VpCA==","signatures":[{"sig":"MEUCIAQX5hyhRz1chg/Q7SP1biG4xE7+5YojfotNSwe+VV6LAiEA2Q6dR4srspJK63AAVn9sISfAgxX99IKvOB0aaR/1tCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414277},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/45e1d1535734d3aee4cf1e0a64264f1f/atlex-cli-0.1.1.tgz","_integrity":"sha512-48RQzwUhmYyPyn2BrVGR5NNFDQ7k+unxjnQl7928mEpDoiR2GqMIPqUYnZJmHcKqrwTFh7c2vySd8PzP+9VpCA==","repository":{"url":"git+https://github.com/atlex-framework/atlex-monorepo.git","type":"git","directory":"cli"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.1","@atlex/core":"0.1.1","@atlex/queue":"0.1.1","@atlex/config":"0.1.1","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.1_1776194475548_0.6789315749191565","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@atlex/cli","version":"0.1.2","keywords":["atlex","cli","typescript","scaffold"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.2","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/atlex-monorepo/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"8e24d9af7d043088f2ac6f1ac57ffbe1ea4bc93e","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.2.tgz","fileCount":369,"integrity":"sha512-SetHsyWe9xjQhgQyaPeMLsSDAR9Jzz1rIQcMxPgrW3EgOV6z/oBHzMCFXCBJbL+5arXEac/Qq+vsNQuSJJpQKQ==","signatures":[{"sig":"MEQCICOCsWxvci+vXgjPAbgPxoHybzzI7lwxDnoF3jokP0U6AiBQNmsuHRQ+wWOrda6Npjk6lGNogLnUFZRQ/yjtG97nxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424807},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/967e6cf9689c78c3be9cc89f563386b7/atlex-cli-0.1.2.tgz","_integrity":"sha512-SetHsyWe9xjQhgQyaPeMLsSDAR9Jzz1rIQcMxPgrW3EgOV6z/oBHzMCFXCBJbL+5arXEac/Qq+vsNQuSJJpQKQ==","repository":{"url":"git+https://github.com/atlex-framework/atlex-monorepo.git","type":"git","directory":"cli"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.2","@atlex/core":"0.1.2","@atlex/queue":"0.1.2","@atlex/config":"0.1.2","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.2_1776235399596_0.1993866107777682","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@atlex/cli","version":"0.1.3","keywords":["atlex","cli","typescript","scaffold"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.3","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"04e65dfbd11fe2c7b30866a943cba2cd2385c4cd","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.3.tgz","fileCount":369,"integrity":"sha512-MG07TzchJKM878aHhbDh2/hbt5h9fHMejJA3Z1wWvRbpy5CLwcxDhku7o1T1IvjsV6rQshZNuTs1+YQp+vZvQw==","signatures":[{"sig":"MEYCIQCVkdP3Gkp97WVRLm413JQt0/FYOQHKZw6Tywt3qdJ5PgIhAJZrI+3I3uMXcg2KfcNp1Xw/wNMX6MMFI97gQqgucWw+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440443},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/e52a81b42b3bdd3baaab5a6b1798fa3b/atlex-cli-0.1.3.tgz","_integrity":"sha512-MG07TzchJKM878aHhbDh2/hbt5h9fHMejJA3Z1wWvRbpy5CLwcxDhku7o1T1IvjsV6rQshZNuTs1+YQp+vZvQw==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.3","@atlex/core":"0.1.3","@atlex/queue":"0.1.3","@atlex/config":"0.1.3","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.3_1776256089926_0.38981288431658223","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@atlex/cli","version":"0.1.4","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.4","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"8047a493ca8a61d78b1a502eba54ecbc4789cb10","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.4.tgz","fileCount":369,"integrity":"sha512-GUPm2o+JFX+Y6Yd7r1CN+RCrarHg3mGjy7yg/6Lm1z7B/Ly8Y/CxOGhxmaN1YrqBpYhV9qAmyq65mKdqf+Hmvg==","signatures":[{"sig":"MEQCID8jO7RZ6cOwKZgWMAX9Tn+y7Hs8kVnzUnZMGc9ryaWZAiA6h7k6HqMYreF8+IYVsiA6Jxl6XYNyEZzQVgfaSUeBUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440354},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/28d89a6f2eb1fe606719182c20b4221e/atlex-cli-0.1.4.tgz","_integrity":"sha512-GUPm2o+JFX+Y6Yd7r1CN+RCrarHg3mGjy7yg/6Lm1z7B/Ly8Y/CxOGhxmaN1YrqBpYhV9qAmyq65mKdqf+Hmvg==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.4","@atlex/core":"0.1.4","@atlex/queue":"0.1.4","@atlex/config":"0.1.4","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.4_1776259457196_0.08229337325928499","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@atlex/cli","version":"0.1.5","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.5","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"ae2a6d3ab4f5afdc31dcaef9ba78ebf5ff5fe34e","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.5.tgz","fileCount":369,"integrity":"sha512-bbiKLE4h/3CM4adlixmWhHJWIiQi7vw25iqTY9iDAjztxjKdcOPDK40reMF5HIirYCZqc5X+cXqaHtQ2iSD5uA==","signatures":[{"sig":"MEYCIQC2umBDssu4Bqub0teUfq2dysr1CgnRGL07V8wHwEqkcQIhALr4wOj7c30WSctYXnIOZMzL5m86qrDpI3sbqOXt75Co","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441128},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/b5edd652b483441722601afd07a17e2b/atlex-cli-0.1.5.tgz","_integrity":"sha512-bbiKLE4h/3CM4adlixmWhHJWIiQi7vw25iqTY9iDAjztxjKdcOPDK40reMF5HIirYCZqc5X+cXqaHtQ2iSD5uA==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.5","@atlex/core":"0.1.5","@atlex/queue":"0.1.5","@atlex/config":"0.1.5","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.5_1776260732803_0.9287581372373814","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@atlex/cli","version":"0.1.6","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.6","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"2b1937f22f4e71c0b9cea12617ca04439f7e8ef4","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.6.tgz","fileCount":369,"integrity":"sha512-5ETz2z5s1w1BW482PUTJOS1cjTOufnOmM9NMap8vK8PKn8kA4q7od/+GUi/26udTX6zZCF5MaKz4Ba/RMPn3yQ==","signatures":[{"sig":"MEYCIQDj1U2vd9RBJ3axYV9poPUEf9kTDowL1RXZ0Z76DgwkQgIhAOmQGWNdMvJnwrVGeBVssNrgYIozaMw/GdZjXqDCvFXw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441128},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/427f3d9e2998a4e1ac6dd3e78f959251/atlex-cli-0.1.6.tgz","_integrity":"sha512-5ETz2z5s1w1BW482PUTJOS1cjTOufnOmM9NMap8vK8PKn8kA4q7od/+GUi/26udTX6zZCF5MaKz4Ba/RMPn3yQ==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.6","@atlex/core":"0.1.6","@atlex/queue":"0.1.6","@atlex/config":"0.1.6","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.6_1778694367859_0.9320595107616239","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@atlex/cli","version":"0.1.7","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.7","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"f19eec5eb79dd8ea5c75786d8753ff3c00656a39","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.7.tgz","fileCount":369,"integrity":"sha512-ttRmyQTC1O+p2U8+dy4qe2vS4LJGICXWCOs/nhF02Jam/kxv/8YKWGzgVq1Fp3AqBardeebW4drVuWgbFfcXIw==","signatures":[{"sig":"MEQCIDFJnRKo+z7fGHpGxS7hECEaBIi1nfjLl/95QAEwBEgTAiB/H4aNPKA5bWl1/3AagoSOLJl6E9fvta6g6n6MfGPHvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441128},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/363fbbc53452cb672672952feadb7ca6/atlex-cli-0.1.7.tgz","_integrity":"sha512-ttRmyQTC1O+p2U8+dy4qe2vS4LJGICXWCOs/nhF02Jam/kxv/8YKWGzgVq1Fp3AqBardeebW4drVuWgbFfcXIw==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.7","@atlex/core":"0.1.7","@atlex/queue":"0.1.7","@atlex/config":"0.1.7","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.7_1778755093989_0.13111573750385186","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@atlex/cli","version":"0.1.8","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.8","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"5678fbfd8802b0dd32f24ebb39a10d2db0bb5146","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.8.tgz","fileCount":371,"integrity":"sha512-l3JcvDc3yvAaARCclMEPZs/4rP4B3dTuGWd8OvIbhjcTin0iKtVOKGXFpxrt9F6jR+ffkBQinyTv0oMfrhY3Aw==","signatures":[{"sig":"MEQCIBRQr0e+JhFHn7xKJdJBDKIi3fpJn87CPm8nqZ7Q8NQzAiBy5iTRo2hQqpFH+Xl0D/QTrGVfvS8/K/67F+3tQDFK8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443496},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.8.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/fa7dca624bdc112bb0507f7a0db386e0/atlex-cli-0.1.8.tgz","_integrity":"sha512-l3JcvDc3yvAaARCclMEPZs/4rP4B3dTuGWd8OvIbhjcTin0iKtVOKGXFpxrt9F6jR+ffkBQinyTv0oMfrhY3Aw==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.8","@atlex/core":"0.1.8","@atlex/queue":"0.1.8","@atlex/config":"0.1.8","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.8_1778775533100_0.6161320850240843","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@atlex/cli","version":"0.1.9","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.9","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"0e7a703accdd587d509273741725f0216f2a9d13","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.9.tgz","fileCount":371,"integrity":"sha512-ZkJdIAbIoKXARONGC/Rx8/9KFtprA2Qj5kBzTBrCeaABJn87z0ROcD2+VRqGYcebuEiDpbTLe8Gm0ZCppKD86A==","signatures":[{"sig":"MEUCIQD9ZfS5mFIlXu8Czgpq1pIldDDVPvFskA7rCrCi3dCkxAIgVu8FV7Xc7DaGkrKIyeoy0ijxhmX+nBOsExE9/t6qDus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443497},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.9.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/a8619044c3d61008f12ed36d627cff2b/atlex-cli-0.1.9.tgz","_integrity":"sha512-ZkJdIAbIoKXARONGC/Rx8/9KFtprA2Qj5kBzTBrCeaABJn87z0ROcD2+VRqGYcebuEiDpbTLe8Gm0ZCppKD86A==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.10","@atlex/core":"0.1.9","@atlex/queue":"0.1.9","@atlex/config":"0.1.9","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.9_1778830258248_0.5195970776305394","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@atlex/cli","version":"0.1.10","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.10","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"bb7df859805405d6fda468c97356d8e79ff366f2","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.10.tgz","fileCount":371,"integrity":"sha512-Ub17ezcYALFIGWbQmNqmzT3LmFlimOoKuZ12Ews0V2IIwYTx+ympy48fggDLDSO5NblupODMHx7omMMnBSfYww==","signatures":[{"sig":"MEYCIQDmdQmUUWt0wto+NAPE8pNjL0+w3tf+5eQgu6q+AFrx4AIhAKhek+UIpq+5G38Ow5lh6lfOWr63Wl3kYbYGc9osK05u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443502},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.10.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/b86258b9206333596fe1cdc1ade65541/atlex-cli-0.1.10.tgz","_integrity":"sha512-Ub17ezcYALFIGWbQmNqmzT3LmFlimOoKuZ12Ews0V2IIwYTx+ympy48fggDLDSO5NblupODMHx7omMMnBSfYww==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.7","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.10","@atlex/core":"0.1.10","@atlex/queue":"0.1.10","@atlex/config":"0.1.10","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.10_1778834114320_0.5083329107908059","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@atlex/cli","version":"0.1.11","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.1.11","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"0ad02ffc1e55638519aaecec9b647e80494ad090","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.1.11.tgz","fileCount":371,"integrity":"sha512-fOxGf95l+JDGoWLkMQ3nK8Yn48mcZ13ZFvWtMFJ73yo+I+V/fWiM+q790kCyVrc/NNRaM7kalEY1oLiM+zdCDA==","signatures":[{"sig":"MEQCIALiCW5R+dAC7wKR+iWGvI00Fub6YA4uJd77tF7yIIfBAiArxlZ4ABvKEaOrsBUqXrMMP26HKLsnx+xY+DeAmQvQHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":446256},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.1.11.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/ee6c677b9739cfe627059b7b6d35252c/atlex-cli-0.1.11.tgz","_integrity":"sha512-fOxGf95l+JDGoWLkMQ3nK8Yn48mcZ13ZFvWtMFJ73yo+I+V/fWiM+q790kCyVrc/NNRaM7kalEY1oLiM+zdCDA==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.8","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.3","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.1.11","@atlex/core":"0.1.11","@atlex/queue":"0.1.11","@atlex/config":"0.1.11","@clack/prompts":"^0.11.0","@atlex/encryption":"0.1.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.11_1780144970607_0.48736160331666234","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@atlex/cli","version":"0.2.0","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.2.0","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"62d50215a83460c935cb06b7b029d646af49445f","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.2.0.tgz","fileCount":371,"integrity":"sha512-YOzEDIsLmoQcVc/RV4VK20bXv8cgsfrQt4OGVJACgNq2KCgm2bvIX/8RR9MzVe7RiTv8W0MIvwVSFfoAodOWkw==","signatures":[{"sig":"MEUCIQCjBJudiatTImAxvWKDVoLvtwyG8cWpugrHqqADoNsufwIgOhzxkLK7czYyXoPIPr/VACfQHOezFU3ceQtBhIevTj8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":446250},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/e74c2766fec49debda650aeba9cc7c68/atlex-cli-0.2.0.tgz","_integrity":"sha512-YOzEDIsLmoQcVc/RV4VK20bXv8cgsfrQt4OGVJACgNq2KCgm2bvIX/8RR9MzVe7RiTv8W0MIvwVSFfoAodOWkw==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.8","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.3","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.2.0","@atlex/core":"0.2.0","@atlex/queue":"0.2.0","@atlex/config":"0.2.0","@clack/prompts":"^0.11.0","@atlex/encryption":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.0_1780306556594_0.6607733224041177","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@atlex/cli","version":"0.2.1","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/cli@0.2.1","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"bin":{"atlex":"dist/bin/atlex.js"},"dist":{"shasum":"512525d34fcda0ecbd1bec8d41cafa8547cab48e","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.2.1.tgz","fileCount":371,"integrity":"sha512-+JQhGOzvox6VJrwStxbl+tCRCNpV5yyaCRr6aYnj+CF9c/aAANQxleM0vtz2ejlOvYXQ/EWVDkZO88yUW2gBtA==","signatures":[{"sig":"MEUCIAi0a66IFHCmVA7sQqpLXVeJ+GEyzWne0x/2xWYg7F5EAiEAhsdbfV8KTYS9t69WKNftbXrxsqPIcDpQtzNDpXyBDrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":446250},"main":"./dist/index.js","type":"module","_from":"file:atlex-cli-0.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run -c vitest.config.ts","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/d3155b09ef95a83433c7d7a59b187a65/atlex-cli-0.2.1.tgz","_integrity":"sha512-+JQhGOzvox6VJrwStxbl+tCRCNpV5yyaCRr6aYnj+CF9c/aAANQxleM0vtz2ejlOvYXQ/EWVDkZO88yUW2gBtA==","repository":{"url":"git+https://github.com/atlex-framework/cli.git","type":"git"},"_npmVersion":"10.9.8","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","directories":{},"_nodeVersion":"22.22.3","dependencies":{"execa":"^9.6.0","fs-extra":"^11.3.0","commander":"^14.0.1","@atlex/orm":"0.2.1","@atlex/core":"0.2.1","@atlex/queue":"0.2.1","@atlex/config":"0.2.1","@clack/prompts":"^0.11.0","@atlex/encryption":"0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.1_1780423676714_0.5821762388867655","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@atlex/cli","version":"0.2.2","type":"module","description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","license":"MIT","author":{"name":"Karen Hamazaspyan","url":"https://github.com/khamazaspyan"},"keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"engines":{"node":">=20"},"repository":{"type":"git","url":"git+https://github.com/atlex-framework/cli.git"},"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"publishConfig":{"access":"public"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"bin":{"atlex":"dist/bin/atlex.js"},"dependencies":{"@clack/prompts":"^0.11.0","commander":"^14.0.1","execa":"^9.6.0","fs-extra":"^11.3.0","@atlex/config":"0.2.2","@atlex/encryption":"0.2.2","@atlex/core":"0.2.2","@atlex/orm":"0.2.2","@atlex/queue":"0.2.2"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^24.0.0"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts"},"_id":"@atlex/cli@0.2.2","_integrity":"sha512-LBQK8SnT9HskY+ZChuETLiGXBQ7wKrENK5fJEeob/am3N3uM4oEbLbeLXNzGUjJnLj9C4nFfHNFUUCYKHUIq6A==","_resolved":"/tmp/a66b0f95231b36a1d9aeb6dca1dac31b/atlex-cli-0.2.2.tgz","_from":"file:atlex-cli-0.2.2.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-LBQK8SnT9HskY+ZChuETLiGXBQ7wKrENK5fJEeob/am3N3uM4oEbLbeLXNzGUjJnLj9C4nFfHNFUUCYKHUIq6A==","shasum":"9a4f6689d7c6051296cd41536ff27fd6e5f96667","tarball":"https://registry.npmjs.org/@atlex/cli/-/cli-0.2.2.tgz","fileCount":371,"unpackedSize":446250,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICbG3FqZTC3+9WCESMdea4LUxOikIP2OE3ej9S/HgwuiAiBkylhMFY2pc3+xJgaoGX/92i8x8e84JRPS2YxTwzjYcg=="}]},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"directories":{},"maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.2.2_1784391603569_0.18138838585543526"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T19:21:15.075Z","modified":"2026-07-18T16:20:03.899Z","0.1.0-beta":"2026-04-11T21:23:25.139Z","0.1.1":"2026-04-14T19:21:15.784Z","0.1.2":"2026-04-15T06:43:19.740Z","0.1.3":"2026-04-15T12:28:10.116Z","0.1.4":"2026-04-15T13:24:17.365Z","0.1.5":"2026-04-15T13:45:33.019Z","0.1.6":"2026-05-13T17:46:08.028Z","0.1.7":"2026-05-14T10:38:14.196Z","0.1.8":"2026-05-14T16:18:53.273Z","0.1.9":"2026-05-15T07:30:58.414Z","0.1.10":"2026-05-15T08:35:14.526Z","0.1.11":"2026-05-30T12:42:50.753Z","0.2.0":"2026-06-01T09:35:56.768Z","0.2.1":"2026-06-02T18:07:56.922Z","0.2.2":"2026-07-18T16:20:03.733Z"},"bugs":{"url":"https://github.com/atlex-framework/cli/issues"},"author":{"name":"Karen Hamazaspyan","url":"https://github.com/khamazaspyan"},"license":"MIT","homepage":"https://atlex.dev","keywords":["atlex","cli","scaffold","generator","code-generator","project-scaffold","create-app","boilerplate","make-controller","make-model","make-migration","artisan","artisan-alternative","laravel-artisan","migrations-cli","database-migrations","laravel-alternative","laravel-for-nodejs","laravel-nodejs","nodejs","javascript","typescript"],"repository":{"type":"git","url":"git+https://github.com/atlex-framework/cli.git"},"description":"Atlex command-line interface (atlex new, atlex serve, generators, migrate, queue, …)","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"readme":"# ![Atlex](/docs/public/logo.svg)\n\n**A modern framework for Node.js**\n\n[![npm version](https://img.shields.io/npm/v/@atlex/cli.svg?style=flat-square&color=7c3aed)](https://www.npmjs.com/package/@atlex/cli)\n[![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6?style=flat-square)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n[![Node.js](https://img.shields.io/badge/Node.js-%3E%3D20-brightgreen?style=flat-square)](https://nodejs.org)\n[![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-Support-yellow?style=flat-square&logo=buy-me-a-coffee)](https://buymeacoffee.com/khamazaspyan)\n\nBuild elegant, production-ready applications with the developer experience you love.\n\n[Documentation](https://atlex.dev) · [Getting Started](#quick-start) · [CLI Reference](#cli-reference) · [Packages](#packages)\n\n---\n\n## Why Atlex?\n\nAtlex is built for the **TypeScript ecosystem** with a focus on developer experience: expressive routing, a powerful ActiveRecord ORM, built-in auth, queues, mail, caching, and more — all in one cohesive framework.\n\n| Feature                  | Description                                                      |\n| ------------------------ | ---------------------------------------------------------------- |\n| **Expressive Routing**   | Define routes with decorators or a fluent API                    |\n| **Dependency Injection** | Built-in IoC container with decorator-based DI                   |\n| **Powerful ORM**         | ActiveRecord models, migrations, seeders, and factories          |\n| **Authentication**       | JWT + session auth with guards, middleware, and password hashing |\n| **Mail**                 | Fluent mail builder with SMTP, SES, Mailgun drivers              |\n| **Queue**                | Background jobs with Redis, SQS, database drivers                |\n| **Notifications**        | Multi-channel notifications: mail, Slack, database               |\n| **Cache**                | Redis, file, in-memory drivers with tags and locks               |\n| **Storage**              | Local, S3, GCS filesystem abstraction                            |\n| **Config**               | Centralized config with `.env` support and type-safe access      |\n| **Logging**              | Multi-channel logging: console, file, daily rotation             |\n| **Encryption**           | AES-256-GCM encryption with key rotation                         |\n| **Testing**              | First-class testing toolkit: HTTP client, fakes, assertions      |\n\n---\n\n## Quick Start\n\n### 1. Create a new application\n\n```bash\nnpm install -g @atlex/cli\n\natlex new my-app\n```\n\nThe interactive prompt will ask for your preferred language (TypeScript or JavaScript). Once scaffolded:\n\n```bash\ncd my-app\nnpm install\nnpm run dev\n```\n\nYour app is running at `http://localhost:3000`.\n\nGenerated apps include both `routes/web.{ts,js}` for web/root routes and\n`routes/api.{ts,js}` for API routes. `main.{ts,js}` loads both files\nautomatically, so routes added to `routes/api.{ts,js}` are available without\nmanual bootstrap edits.\n\n### 2. Generate an application key\n\n```bash\natlex key:generate\n```\n\n---\n\n## CLI Reference\n\n### Project Scaffolding\n\n```bash\n# Create a new Atlex application\natlex new <app-name>\n\n# Example\natlex new my-app\n```\n\nThe scaffold creates:\n\n```text\nroutes/web.{ts,js}\nroutes/api.{ts,js}\n```\n\nUse `routes/web.{ts,js}` for web/root routes such as `/`. Use\n`routes/api.{ts,js}` for API endpoints; the default file wraps routes in\n`Route.group('/api', ...)`, so a route declared there as `/users` registers as\n`GET /api/users`.\n\n---\n\n### Development Server\n\n```bash\n# Start the HTTP server (runs `npm run start`)\natlex serve\n\n# Start on a specific port\natlex serve --port 4000\n```\n\n---\n\n### Code Generators\n\nAll `make:*` commands create files under `app/` (or the appropriate directory) and support `--force` to overwrite existing files.\n\n```bash\n# Controller\natlex make:controller User\natlex make:controller User --api          # REST controller with index/store/show/update/destroy\n\n# Model\natlex make:model Post\natlex make:model Post --migration         # Also generates the create_posts_table migration\n\n# Migration\natlex make:migration create_posts_table\natlex make:migration add_status_to_posts_table\n\n# Seeder\natlex make:seeder User\n\n# Factory\natlex make:factory User\n\n# Background job\natlex make:job ProcessPodcast\n\n# Mail\natlex make:mail WelcomeMail\n\n# Notification\natlex make:notification OrderShipped\n\n# Event\natlex make:event UserRegistered\n\n# Listener\natlex make:listener SendWelcomeEmail\n\n# Middleware\natlex make:middleware EnsureEmailVerified\n\n# Service provider\natlex make:provider AppServiceProvider\n\n# Form request\natlex make:request StorePostRequest\n\n# API resource\natlex make:resource PostResource\n\n# Auth guard\natlex make:guard JwtGuard\n\n# Custom console command\natlex make:command SendEmails\n\n# Config file\natlex make:config mail\n\n# Service class\natlex make:service PaymentService\n\n# Collection\natlex make:collection PostCollection\n\n# Auth policy\natlex make:policy PostPolicy\n\n# Notification database table migration\natlex make:notification-table\n```\n\n---\n\n### Database Migrations\n\n```bash\n# Run all pending migrations\natlex migrate\n\n# Rollback the last migration batch\natlex migrate:rollback\n\n# Rollback all migrations\natlex migrate:reset\n\n# Rollback and re-run all migrations\natlex migrate:refresh\n\n# Drop all tables and re-run all migrations\natlex migrate:fresh\n\n# Show migration status\natlex migrate:status\n```\n\n---\n\n### Database Seeding\n\n```bash\n# Run the default DatabaseSeeder\natlex db:seed\n\n# Run a specific seeder class\natlex db:seed --class UserSeeder\n```\n\n---\n\n### Queue Worker\n\n```bash\n# Start processing jobs from the default connection\natlex queue:work\n\n# Process a specific connection\natlex queue:work redis\n\n# Specify queues (priority order)\natlex queue:work --queue high,default,low\n\n# Parallel processing\natlex queue:work --concurrency 4\n\n# Stop after processing N jobs\natlex queue:work --max-jobs 100\n\n# Stop after N seconds\natlex queue:work --max-time 3600\n\n# Stop when queue is empty\natlex queue:work --stop-when-empty\n\n# Full example\natlex queue:work redis --queue high,default --concurrency 4 --timeout 90 --tries 3\n```\n\n**All `queue:work` options:**\n\n| Option              | Default         | Description                                  |\n| ------------------- | --------------- | -------------------------------------------- |\n| `[connection]`      | config default  | Queue connection name                        |\n| `--queue <names>`   | `default`       | Comma-separated queue names (priority order) |\n| `--concurrency <n>` | `1`             | Parallel job processors                      |\n| `--sleep <n>`       | `3`             | Seconds to sleep when queue is empty         |\n| `--timeout <n>`     | `60`            | Per-job timeout in seconds                   |\n| `--tries <n>`       | `1`             | Max attempts per job                         |\n| `--max-jobs <n>`    | `0` (unlimited) | Stop worker after N jobs                     |\n| `--max-time <n>`    | `0` (unlimited) | Stop worker after N seconds                  |\n| `--memory <n>`      | `0` (disabled)  | Stop if memory exceeds MB                    |\n| `--rest <ms>`       | `0`             | Pause between jobs in milliseconds           |\n| `--stop-when-empty` | `false`         | Exit when the queue drains                   |\n| `--force`           | `false`         | Process jobs even in maintenance mode        |\n| `--name <name>`     | `default`       | Worker identifier name                       |\n\n---\n\n### Failed Jobs\n\n```bash\n# List failed jobs\natlex queue:failed\n\n# Filter by queue\natlex queue:failed --queue high\n\n# Limit output rows\natlex queue:failed --limit 100\n\n# Retry a specific failed job by UUID\natlex queue:retry <uuid>\n\n# Retry all failed jobs\natlex queue:retry --all\n\n# Retry all failed jobs from a specific queue\natlex queue:retry --queue high\n\n# Retry a range of failed job IDs\natlex queue:retry --range 1..50\n\n# Flush (delete) all failed jobs\natlex queue:flush\n```\n\n---\n\n### Task Scheduler\n\n```bash\n# Run all tasks that are due at this minute\natlex schedule:run\n\n# List all registered scheduled tasks\natlex schedule:list\n```\n\nWire this up with a system cron to run every minute:\n\n```\n* * * * * cd /path/to/app && atlex schedule:run >> /dev/null 2>&1\n```\n\n---\n\n### Configuration\n\n```bash\n# Cache all config files into bootstrap/cache/config.cached.json\natlex config:cache\n\n# Clear the configuration cache\natlex config:clear\n```\n\n---\n\n### Authentication\n\n```bash\n# Clear expired password reset tokens\natlex auth:clear-resets\n```\n\n---\n\n### Application Key\n\n```bash\n# Generate APP_KEY and write to .env\natlex key:generate\n\n# Print the key without writing .env\natlex key:generate --show\n\n# Overwrite existing APP_KEY without confirmation\natlex key:generate --force\n```\n\n---\n\n## Code Examples\n\n### Define a Controller\n\n```typescript\nimport { Controller, Get, Post } from '@atlex/core'\nimport { auth } from '@atlex/auth'\n\n@Controller('/users')\n@Middleware(auth())\nexport class UserController {\n  @Get('/')\n  async index() {\n    return User.query().paginate(15)\n  }\n\n  @Post('/')\n  async store(@Body() data: CreateUserDto) {\n    return User.create(data)\n  }\n}\n```\n\nGenerate with:\n\n```bash\natlex make:controller User --api\n```\n\n### Define a Model\n\n```typescript\nimport { Model, Column, HasMany, BeforeCreate } from '@atlex/orm'\nimport { hash } from '@atlex/auth'\n\nexport class User extends Model {\n  static table = 'users'\n\n  @Column() declare name: string\n  @Column() declare email: string\n\n  @HasMany(() => Post)\n  declare posts: Post[]\n\n  @BeforeCreate()\n  async hashPassword() {\n    this.password = await hash(this.password)\n  }\n}\n```\n\nGenerate with:\n\n```bash\natlex make:model User --migration\natlex migrate\n```\n\n### Fluent Routing\n\nGenerated apps load `routes/web.{ts,js}` and `routes/api.{ts,js}` from\n`main.{ts,js}`. Put API endpoints in `routes/api.{ts,js}` so they live inside\nthe default `/api` route group.\n\n```typescript\nimport { Route } from '@atlex/core'\n\nRoute.get('/', (_req, res) => res.json({ message: 'Welcome to Atlex' }))\n\nRoute.group('/api', () => {\n  Route.middleware(['auth']).group(() => {\n    Route.get('/users', [UserController, 'index'])\n    Route.post('/users', [UserController, 'store'])\n  })\n})\n```\n\n### Background Jobs\n\n```typescript\nimport { Job } from '@atlex/queue'\n\nexport class ProcessPodcast extends Job {\n  static queue = 'podcasts'\n  static maxTries = 3\n\n  async handle() {\n    // process this.data.podcast ...\n  }\n}\n\n// Dispatch\nawait new ProcessPodcast({ podcast }).dispatch()\n\n// Dispatch with delay\nawait new ProcessPodcast({ podcast }).delay(60).dispatch()\n```\n\nGenerate and run with:\n\n```bash\natlex make:job ProcessPodcast\natlex queue:work --queue podcasts --concurrency 2\n```\n\n### Send Notifications\n\n```typescript\nimport { Notification, MailMessage, SlackMessage } from '@atlex/notifications'\n\nexport class OrderShipped extends Notification {\n  via() {\n    return ['mail', 'slack', 'database']\n  }\n\n  toMail(notifiable: User): MailMessage {\n    return new MailMessage()\n      .subject('Your order has shipped!')\n      .greeting(`Hello ${notifiable.name}`)\n      .line(`Order #${this.order.id} is on its way.`)\n      .action('Track Order', this.order.trackingUrl)\n  }\n\n  toSlack(): SlackMessage {\n    return new SlackMessage()\n      .to('#orders')\n      .content(`Order #${this.order.id} shipped to ${this.order.address}`)\n  }\n}\n\nawait user.notify(new OrderShipped(order))\n```\n\nGenerate with:\n\n```bash\natlex make:notification OrderShipped\n```\n\n### Testing with Fakes\n\n```typescript\nimport { test } from 'vitest'\nimport { TestClient, MailFake, QueueFake } from '@atlex/testing'\n\ntest('user registration sends welcome email', async () => {\n  const mail = MailFake.install()\n  const queue = QueueFake.install()\n\n  const response = await TestClient.post('/register', {\n    name: 'Karen',\n    email: 'karen@example.com',\n    password: 'secret123',\n  })\n\n  response.assertCreated()\n  mail.assertSent(WelcomeMail, (m) => m.to === 'karen@example.com')\n  queue.assertPushed(ProcessNewUser)\n})\n```\n\n---\n\n## Packages\n\nAtlex is modular — use only what you need:\n\n| Package                                                                      | Description                                           |\n| ---------------------------------------------------------------------------- | ----------------------------------------------------- |\n| [`@atlex/core`](https://www.npmjs.com/package/@atlex/core)                   | IoC container, routing, middleware, service providers |\n| [`@atlex/orm`](https://www.npmjs.com/package/@atlex/orm)                     | ActiveRecord ORM, migrations, seeders, factories      |\n| [`@atlex/auth`](https://www.npmjs.com/package/@atlex/auth)                   | JWT + session authentication, guards, hashing         |\n| [`@atlex/queue`](https://www.npmjs.com/package/@atlex/queue)                 | Background job processing (Redis, SQS, database)      |\n| [`@atlex/mail`](https://www.npmjs.com/package/@atlex/mail)                   | Email sending (SMTP, SES, Mailgun)                    |\n| [`@atlex/cache`](https://www.npmjs.com/package/@atlex/cache)                 | Caching (Redis, file, memory) with tags and locks     |\n| [`@atlex/config`](https://www.npmjs.com/package/@atlex/config)               | Configuration management with `.env` support          |\n| [`@atlex/log`](https://www.npmjs.com/package/@atlex/log)                     | Structured logging (console, file, daily rotation)    |\n| [`@atlex/storage`](https://www.npmjs.com/package/@atlex/storage)             | Filesystem abstraction (local, S3, GCS)               |\n| [`@atlex/encryption`](https://www.npmjs.com/package/@atlex/encryption)       | AES-256-GCM encryption with key rotation              |\n| [`@atlex/notifications`](https://www.npmjs.com/package/@atlex/notifications) | Multi-channel notifications                           |\n| [`@atlex/testing`](https://www.npmjs.com/package/@atlex/testing)             | Testing toolkit: HTTP client, fakes, assertions       |\n| [`@atlex/cli`](https://www.npmjs.com/package/@atlex/cli)                     | CLI binary: generators, migrations, queue worker      |\n\n---\n\n## Architecture\n\n```\nmy-app/\n├── app/\n│   ├── Http/\n│   │   ├── Controllers/    # atlex make:controller\n│   │   ├── Middleware/     # atlex make:middleware\n│   │   └── Requests/       # atlex make:request\n│   ├── Models/             # atlex make:model\n│   ├── Jobs/               # atlex make:job\n│   ├── Mail/               # atlex make:mail\n│   ├── Notifications/      # atlex make:notification\n│   ├── Events/             # atlex make:event\n│   ├── Listeners/          # atlex make:listener\n│   └── Console/\n│       └── Kernel.ts       # schedule:run reads this\n├── database/\n│   ├── migrations/         # atlex make:migration\n│   ├── seeders/            # atlex make:seeder\n│   └── factories/          # atlex make:factory\n├── config/                 # atlex make:config / config:cache\n├── atlex.config.ts\n└── .env\n```\n\n---\n\n## License\n\nMIT © [Karen Hamazaspyan](https://github.com/khamazaspyan)\n\n---\n\nBuilt with 💜 by Karen Hamazaspyan\n","readmeFilename":"README.md"}