{"_id":"@analog-tools/generator","_rev":"14-ffaf144cc628660dbd8d9520f96cb8da","name":"@analog-tools/generator","dist-tags":{"latest":"0.0.24"},"versions":{"0.0.11":{"name":"@analog-tools/generator","version":"0.0.11","_id":"@analog-tools/generator@0.0.11","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"dist":{"shasum":"4ebbb473145a3cf210a0f0cbdca74248a699e06e","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.11.tgz","fileCount":56,"integrity":"sha512-Nqbhunl+1eqp68oSYjXMhWUbUc/e4vNgiV/tV8WpPtB62uQhMiiTvp2mozmIMIEI1+9VQ6RYhW74LA6xx6yIWQ==","signatures":[{"sig":"MEQCIGG2yEEv5yg55CkQ8XTAM21axRmcUUfyuLVVbtiK8zAbAiB0seP73t3kLij781YxsMOjOLc+gN0JdZoLKmYoHzGq3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108581},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"36e11a3dc96cf5cd9a058f0fece115bdf14731ad","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","_npmVersion":"10.8.2","description":"Custom Nx generators that scaffold AnalogJS projects with consistent file-based routing, API handlers, and supporting configuration.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.11_1762881135042_0.7471025312333508","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@analog-tools/generator","version":"0.0.12","_id":"@analog-tools/generator@0.0.12","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"dist":{"shasum":"1d1a046c24d9a34733bacff71dcd65bf0f135dd2","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.12.tgz","fileCount":56,"integrity":"sha512-KNmlvW5v3FnfoNvtWDKGluEvbpp31oAez25KBlLEFpgD2OUzuYbUqRlLoKfkkZAp8wGIN4mzFeT2MfuBxGTrZQ==","signatures":[{"sig":"MEYCIQDDkIUyxyTGYY3yPfBc2rRNSFJxuruA+HSEcwNc1x940gIhAKawIqszXc9BeU1LPdc9m65uiSPzD6U7M8xkAD1Hq7G5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108581},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"7ff550fa563be12ad3aa617d1178761c1e3d70c6","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","_npmVersion":"10.8.2","description":"Custom Nx generators that scaffold AnalogJS projects with consistent file-based routing, API handlers, and supporting configuration.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.12_1763134043231_0.5592523360684734","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@analog-tools/generator","version":"0.0.13","_id":"@analog-tools/generator@0.0.13","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"dist":{"shasum":"a9e4ea4a4617b385659f608cca64aa475fc9d7a8","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.13.tgz","fileCount":56,"integrity":"sha512-gYr9taQ8/dPvxdExGNpRDslz/7yN3OzUhIpj0MHD95hoCLW6GPfJdFXPKPHo7TeTfdTERvAW02cq1IVV5q1rWA==","signatures":[{"sig":"MEUCIQCJS4S5yNILGSGAExRgKuqzX1vt9ss6RIr+gh5BtgmBXwIgaJrFGHJWC5isEITu9xr34A+2EmkzIMSnbYzGMwE/V2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108581},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"7416078800c742f9f09b4c09a5117c17bba35e94","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","_npmVersion":"10.8.2","description":"Custom Nx generators that scaffold AnalogJS projects with consistent file-based routing, API handlers, and supporting configuration.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.13_1763380116352_0.21119624207580268","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@analog-tools/generator","version":"0.0.14","_id":"@analog-tools/generator@0.0.14","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"dist":{"shasum":"1f3f748114dfc7e2a796565cd3dcd23d71055cbc","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.14.tgz","fileCount":56,"integrity":"sha512-cdum2zptjWExX0UvNeimfZbXCIxgtFgh8CGs5eQSdZ4LFTG99LpgzVbDh/3E9zf0O91V+gOP9D50OFZDsuPoTg==","signatures":[{"sig":"MEQCIClvZzpJ4Hmfkw69qcUyanShHEBwZQvtchr89Dg2uO89AiBYXAdf141IottaA8X8IsS/2SCGoCfDtWeVrWcKXrYY1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108583},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"936294adea642b8a2dac56335e19e1499426e563","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","_npmVersion":"10.8.2","description":"Custom Nx generators that scaffold AnalogJS projects with consistent file-based routing, API handlers, and supporting configuration.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.14_1763390545882_0.5088342043641494","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@analog-tools/generator","version":"0.0.15","_id":"@analog-tools/generator@0.0.15","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"dist":{"shasum":"192afb78715a7fb452e9903d8361bc9039ff8514","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.15.tgz","fileCount":56,"integrity":"sha512-PCecuSBPJhQimkQi9vhDS1ClXDGEJasOs/JKzL5ECN5FrURx0gm/ej47u8aQOTBdmOTV320FKCD6Nn5c4miXSg==","signatures":[{"sig":"MEUCIQCa4/WldI9c3x7pTgSmpl/vPekhIW8B5TYBhx4Gd5vMEwIgagorxfDeKHjtnx802D5ABkDdOgHwQJ8JnPXysn+ig3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108583},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"eba1a3dfc5bdbe0f4c1779b67907f16012690920","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","_npmVersion":"10.8.2","description":"Custom Nx generators that scaffold AnalogJS projects with consistent file-based routing, API handlers, and supporting configuration.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.15_1763679889848_0.2863396878638269","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@analog-tools/generator","version":"0.0.16","_id":"@analog-tools/generator@0.0.16","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"dist":{"shasum":"8804f8d5ca8cc3e7f91716642308e8b78e3e1deb","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.16.tgz","fileCount":56,"integrity":"sha512-pag6Utfd9Pt1qJeAbleZOSuDA6jaQwNuMdd5q09UojIfykVmhEp0QviwgTw0m2xbqjmEQnEENEkRf1geepML2Q==","signatures":[{"sig":"MEYCIQDU5AOVDDmsIFNFPTQRPH1l0ZOirda8GuFWiOYw9MapsAIhAMx29JXFI4gEDtR4Br7i5//mB1LTBwL7BSJFeu3B0qzw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108600},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"4062f68c95e47e6149e45c3d18bd8888120445ed","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","_npmVersion":"10.8.2","description":"Custom Nx generators that scaffold AnalogJS projects with consistent file-based routing, API handlers, and supporting configuration.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.16_1763737282657_0.5738630148632571","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@analog-tools/generator","version":"0.0.17","author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"license":"MIT","_id":"@analog-tools/generator@0.0.17","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"homepage":"https://github.com/MrBacony/analog-tools#readme","bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"dist":{"shasum":"b20fd6656d998c9e9427373001ec6256d3f5be46","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.17.tgz","fileCount":56,"integrity":"sha512-f4erjxMHxPmsuxkS5MTLgCSAkrICNaPtrvE4x94ZDEaloNcj92soCmYEmqbqxJ8/lSyE6kV0Y8W3hdOwirGrRg==","signatures":[{"sig":"MEUCIEhYEzwy/fe0q4205XzBaCcPIhOYSnzZkX+wvySfjKV5AiEA9VG0jqjZrCI1sqfi02hq/9769PMLGSVwitP39bJ/Caw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@analog-tools%2fgenerator@0.0.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108776},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"c4d04543defb01359ba9e6e98bc2e0bf8551c78a","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","repository":{"url":"git+https://github.com/MrBacony/analog-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"Code generation tools for AnalogJS applications","directories":{},"_nodeVersion":"20.19.6","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.17_1769033687460_0.30430027312061947","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@analog-tools/generator","version":"0.0.18","author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"license":"MIT","_id":"@analog-tools/generator@0.0.18","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"homepage":"https://github.com/MrBacony/analog-tools#readme","bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"dist":{"shasum":"aedf8baca51dc33a4084fc16b2aa22c3f0ceb741","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.18.tgz","fileCount":56,"integrity":"sha512-Xw5pDK/pZTRvta666+g60jqJQ7ttcF/vhiwV8NIpyEiZnv46/rm9JE8JhOduaQ7YgtpXlzWFdaYv+glOHg1mfA==","signatures":[{"sig":"MEQCIA1BvwpooDX2sKJLyv8KJye38y+VXUxlvaLUmDgpsPG0AiB/UsGvUv+qM06sbo5iD+eXjFrCulCmDeTfP9YQm0wWsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@analog-tools%2fgenerator@0.0.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109234},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"c6167929865a77157500881b0d7343ac67e7e6d2","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","repository":{"url":"git+https://github.com/MrBacony/analog-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"Code generation tools for AnalogJS applications","directories":{},"_nodeVersion":"20.20.0","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.18_1769633976885_0.3109332412777954","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@analog-tools/generator","version":"0.0.19","author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"license":"MIT","_id":"@analog-tools/generator@0.0.19","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"homepage":"https://github.com/MrBacony/analog-tools/tree/main/packages/generator#readme","bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"dist":{"shasum":"cac054ccd9426bacbd0dca06182b196e685592c3","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.19.tgz","fileCount":56,"integrity":"sha512-dXVHN1PHk6P5tUI5Q4enWWtXzqfvO732OOVITZ8a9I1iJYCIgV4RyoN9XpFjTHpbVMKazdy6ZLwIlQuLxqf2lA==","signatures":[{"sig":"MEUCIDGWG2yKHphrFnjCBtzVZLLFRTRL+oDAsSlTXpvNBMmpAiEAgPbSpDANegUbJyLrdQHeKleeO37EAbhypjJCnbvjyrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@analog-tools%2fgenerator@0.0.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114701},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"a9b43fc8a65997790f2330a4460ce6a239668c62","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","repository":{"url":"git+https://github.com/MrBacony/analog-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"Code generation tools for AnalogJS applications","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.19_1778621846725_0.13360059630201726","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@analog-tools/generator","version":"0.0.20","author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"license":"MIT","_id":"@analog-tools/generator@0.0.20","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"homepage":"https://github.com/MrBacony/analog-tools/tree/main/packages/generator#readme","bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"dist":{"shasum":"642aeeee5d80bcf67f5d88c35e780e256a9b72db","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.20.tgz","fileCount":56,"integrity":"sha512-chpV6P8+TeAgk3KYTa75WaldAoTQ05xLfWySH7an/KJgTEmrnQlm1fV3xu8+DXjJxs96b5DGsOPVCKzjh3Mq8A==","signatures":[{"sig":"MEUCIBi+eMFy0PdnSLDKP4RelqTPI4ja1IK61mKhzE04AdWNAiEA3C8V79GZb0VEvCSt8oW3KpbZlHU+ARaV6/06Fnc+3YU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@analog-tools%2fgenerator@0.0.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114705},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"4a1d7eaa500f78823c696ecef164c8e1c1122839","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"generators":"./generators.json","repository":{"url":"git+https://github.com/MrBacony/analog-tools.git","type":"git"},"_npmVersion":"10.9.8","description":"Code generation tools for AnalogJS applications","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tslib":"^2.3.0","@nx/devkit":"21.3.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.20_1780569908073_0.40269382245227203","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@analog-tools/generator","version":"0.0.21","author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"license":"MIT","_id":"@analog-tools/generator@0.0.21","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"homepage":"https://github.com/MrBacony/analog-tools/tree/main/packages/generator#readme","bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"dist":{"shasum":"d0faa42060d671fe8a11643f5e36133d85239bdb","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.21.tgz","fileCount":56,"integrity":"sha512-wPCuzUJOH58JgwiBz3ytwEwNBHFf/7wYJ8WWzzkziH7LX80k78nercrXrpNyDRXWj08K751nw5BZldlSFpD9Pg==","signatures":[{"sig":"MEUCIQCibfB2LtzGoFYWng8BK/HwduGGafQKY/GUP3T0K0HeGgIgH53iX9wyChESINAKhzc9CstEloUlepg74PAg80gPt7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@analog-tools%2fgenerator@0.0.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114464},"main":"./src/index.js","type":"commonjs","_from":"file:analog-tools-generator-0.0.21.tgz","types":"./src/index.d.ts","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"_resolved":"/tmp/2110c26ef5c97b5b81ac54e57a384daf/analog-tools-generator-0.0.21.tgz","_integrity":"sha512-wPCuzUJOH58JgwiBz3ytwEwNBHFf/7wYJ8WWzzkziH7LX80k78nercrXrpNyDRXWj08K751nw5BZldlSFpD9Pg==","generators":"./generators.json","repository":{"url":"git+https://github.com/MrBacony/analog-tools.git","type":"git"},"_npmVersion":"10.9.8","description":"Code generation tools for AnalogJS applications","directories":{},"_nodeVersion":"22.23.1","dependencies":{"tslib":"^2.3.0","@nx/devkit":"23.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.21_1786172870999_0.9158919339517362","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@analog-tools/generator","version":"0.0.22","author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"license":"MIT","_id":"@analog-tools/generator@0.0.22","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"homepage":"https://github.com/MrBacony/analog-tools/tree/main/packages/generator#readme","bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"dist":{"shasum":"8e11aea535439268ae38a2924eeb296b070e3ebb","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.22.tgz","fileCount":56,"integrity":"sha512-ndNPxU4ycDY5nAQ9S4Ii7JdqBwNuwzE3QyELUV4mX8eairhu1oFQ7XwW8Su65VSSAPqN9xF53B7W6PNdlMob8A==","signatures":[{"sig":"MEQCIH7Jn7GYp0ZIXrgeCQB+m306q7VgHM3Ez69HT0uZkhX7AiAF64k2CXsH9d9rh92a7JwigIPr8CfTVMzYqfNpePXwmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@analog-tools%2fgenerator@0.0.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114464},"main":"./src/index.js","type":"commonjs","_from":"file:analog-tools-generator-0.0.22.tgz","types":"./src/index.d.ts","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"_resolved":"/tmp/9bdcc2453c78e6535480d2e541f51587/analog-tools-generator-0.0.22.tgz","_integrity":"sha512-ndNPxU4ycDY5nAQ9S4Ii7JdqBwNuwzE3QyELUV4mX8eairhu1oFQ7XwW8Su65VSSAPqN9xF53B7W6PNdlMob8A==","generators":"./generators.json","repository":{"url":"git+https://github.com/MrBacony/analog-tools.git","type":"git"},"_npmVersion":"10.9.8","description":"Code generation tools for AnalogJS applications","directories":{},"_nodeVersion":"22.23.1","dependencies":{"tslib":"^2.3.0","@nx/devkit":"23.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.22_1786287736397_0.8810289732700369","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@analog-tools/generator","version":"0.0.23","author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"license":"MIT","_id":"@analog-tools/generator@0.0.23","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"homepage":"https://github.com/MrBacony/analog-tools/tree/main/packages/generator#readme","bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"dist":{"shasum":"c67c73adf9871e2827a80542ffcf07ec40cf148c","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.23.tgz","fileCount":56,"integrity":"sha512-j35sXIVcQhSe21y/4bhhmXXyt8n/H0zpH2+ynKy+4K637a/ndctUWOhY/mc4Pio4HqnbcEFiTRoCEby3BI1TXg==","signatures":[{"sig":"MEYCIQCW3I9n15YBJ8e4hzviBPkz9nigRJt35ySf7k9WA4+toAIhAPOkWBMHXdcIpQ/L7IhHQltELJEvfU/q6/fdd4ox8RO6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@analog-tools%2fgenerator@0.0.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114464},"main":"./src/index.js","type":"commonjs","_from":"file:analog-tools-generator-0.0.23.tgz","types":"./src/index.d.ts","_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"_resolved":"/tmp/9f56edabbfbdb965a21bf36b90e604e5/analog-tools-generator-0.0.23.tgz","_integrity":"sha512-j35sXIVcQhSe21y/4bhhmXXyt8n/H0zpH2+ynKy+4K637a/ndctUWOhY/mc4Pio4HqnbcEFiTRoCEby3BI1TXg==","generators":"./generators.json","repository":{"url":"git+https://github.com/MrBacony/analog-tools.git","type":"git"},"_npmVersion":"10.9.8","description":"Code generation tools for AnalogJS applications","directories":{},"_nodeVersion":"22.23.1","dependencies":{"tslib":"^2.3.0","@nx/devkit":"23.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generator_0.0.23_1786607877932_0.6371913130474061","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@analog-tools/generator","version":"0.0.24","description":"Code generation tools for AnalogJS applications","type":"commonjs","author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/MrBacony/analog-tools.git"},"homepage":"https://github.com/MrBacony/analog-tools/tree/main/packages/generator#readme","main":"./src/index.js","types":"./src/index.d.ts","license":"MIT","dependencies":{"@nx/devkit":"23.1.0","tslib":"^2.3.0"},"generators":"./generators.json","_id":"@analog-tools/generator@0.0.24","bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"_integrity":"sha512-dZuUw+xnj/mfk8JEQ4Y8sxYFTnORbj6oW2x2WG2Ve9eueyy0ozWt2SWI+GemlR5RjBYzx8psjh/MxwsYIFfGjg==","_resolved":"/tmp/ebc650298cbb9ad7512f2937ef6670a5/analog-tools-generator-0.0.24.tgz","_from":"file:analog-tools-generator-0.0.24.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-dZuUw+xnj/mfk8JEQ4Y8sxYFTnORbj6oW2x2WG2Ve9eueyy0ozWt2SWI+GemlR5RjBYzx8psjh/MxwsYIFfGjg==","shasum":"524ede5294b35c5ec9a6debd34666378fff4b1df","tarball":"https://registry.npmjs.org/@analog-tools/generator/-/generator-0.0.24.tgz","fileCount":56,"unpackedSize":114464,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@analog-tools%2fgenerator@0.0.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCEl5zwvlwLYV21nKKeB98sFRBGjROYpPQnOMiY6D9lJAIhAKPQfD9a6xTtaAD3BtqH5dgm4QIRV+Vrim+6KGKSzjtC"}]},"_npmUser":{"name":"mrbacony","email":"gregor.speck@googlemail.com"},"directories":{},"maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/generator_0.0.24_1786624841752_0.002215753369489537"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-11T17:12:14.910Z","modified":"2026-08-13T12:40:42.310Z","0.0.11":"2025-11-11T17:12:15.266Z","0.0.12":"2025-11-14T15:27:23.442Z","0.0.13":"2025-11-17T11:48:36.562Z","0.0.14":"2025-11-17T14:42:26.065Z","0.0.15":"2025-11-20T23:04:50.053Z","0.0.16":"2025-11-21T15:01:22.853Z","0.0.17":"2026-01-21T22:14:47.607Z","0.0.18":"2026-01-28T20:59:37.044Z","0.0.19":"2026-05-12T21:37:26.863Z","0.0.20":"2026-06-04T10:45:08.219Z","0.0.21":"2026-08-08T07:07:51.173Z","0.0.22":"2026-08-09T15:02:16.560Z","0.0.23":"2026-08-13T07:57:58.080Z","0.0.24":"2026-08-13T12:40:41.922Z"},"bugs":{"url":"https://github.com/MrBacony/analog-tools/issues"},"author":{"name":"Gregor Speck","email":"gregor.speck@gmail.com"},"license":"MIT","homepage":"https://github.com/MrBacony/analog-tools/tree/main/packages/generator#readme","repository":{"type":"git","url":"git+https://github.com/MrBacony/analog-tools.git"},"description":"Code generation tools for AnalogJS applications","maintainers":[{"name":"mrbacony","email":"gregor.speck@googlemail.com"}],"readme":"# @analog-tools/generator\n\n> **Early Development Stage** -- Breaking changes may happen frequently as APIs evolve.\n\nNx code generators for scaffolding [AnalogJS](https://analogjs.org) libraries, API routes, and authentication setup within an Nx monorepo.\n\n[![npm version](https://img.shields.io/npm/v/@analog-tools/generator.svg)](https://www.npmjs.com/package/@analog-tools/generator)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Available Generators](#available-generators)\n- [Library Generator](#library-generator)\n  - [Usage](#usage)\n  - [Options](#options)\n  - [Examples](#examples)\n  - [Generated Structure](#generated-structure)\n  - [Application Integration](#application-integration)\n- [API Route Generator](#api-route-generator)\n  - [Usage](#usage-1)\n  - [Options](#options-1)\n  - [Examples](#examples-1)\n  - [Dynamic Segments](#dynamic-segments)\n- [Init Auth Generator](#init-auth-generator)\n  - [Usage](#usage-2)\n  - [Options](#options-2)\n  - [What It Creates](#what-it-creates)\n  - [Post-Generation Steps](#post-generation-steps)\n- [Testing](#testing)\n- [Related Packages](#related-packages)\n- [License](#license)\n\n## Installation\n\n```bash\npnpm add -D @analog-tools/generator\n```\n\nPeer dependency:\n\n```bash\npnpm add -D @nx/devkit\n```\n\n## Available Generators\n\n| Generator | Description |\n|-----------|-------------|\n| `@analog-tools/generator:library` | Scaffolds an AnalogJS library with optional pages, API routes, content routes, and tRPC |\n| `@analog-tools/generator:api-route` | Adds an H3 event handler following AnalogJS file-based routing conventions |\n| `@analog-tools/generator:init-auth` | Wires up `@analog-tools/auth` in an AnalogJS application |\n\n## Library Generator\n\nScaffolds a new AnalogJS library under `libs/` with build configuration, TypeScript paths, and optional features (pages, API routes, tRPC, content routes).\n\n### Usage\n\n```bash\npnpm nx generate @analog-tools/generator:library --name=my-feature --project=analog-example\n```\n\nInteractive mode (prompts for each option):\n\n```bash\npnpm nx generate @analog-tools/generator:library\n```\n\n### Options\n\n| Option | Type | Required | Default | Description |\n|--------|------|----------|---------|-------------|\n| `name` | `string` | Yes | -- | Library name (used for directory, routes, and TS path alias) |\n| `project` | `string` | Yes | -- | Application project to wire the library into |\n| `pages` | `boolean` | No | `false` | Generate file-based routing pages |\n| `api` | `boolean` | No | `false` | Generate an API route directory with an example handler |\n| `contentRoutes` | `boolean` | No | `false` | Generate a markdown content directory |\n| `trpc` | `boolean` | No | `false` | Generate tRPC router infrastructure (context, client, routers) |\n| `skipExamples` | `boolean` | No | `false` | Skip example files; create empty directories with `.gitkeep` instead |\n| `componentPrefix` | `string` | No | `lib` | Angular component selector prefix |\n| `patchTailwind` | `boolean` | No | `true` | Add the library's source paths to the application's Tailwind config |\n\n### Examples\n\nMinimal library (components and services only):\n\n```bash\npnpm nx g @analog-tools/generator:library --name=shared-ui --project=analog-example\n```\n\nLibrary with file-based routing pages:\n\n```bash\npnpm nx g @analog-tools/generator:library \\\n  --name=admin-dashboard \\\n  --project=analog-example \\\n  --pages=true\n```\n\nLibrary with REST API and tRPC:\n\n```bash\npnpm nx g @analog-tools/generator:library \\\n  --name=user-management \\\n  --project=analog-example \\\n  --api=true \\\n  --trpc=true\n```\n\nAll features enabled, no example files:\n\n```bash\npnpm nx g @analog-tools/generator:library \\\n  --name=core-lib \\\n  --project=analog-example \\\n  --pages=true \\\n  --api=true \\\n  --contentRoutes=true \\\n  --trpc=true \\\n  --skipExamples=true\n```\n\n### Generated Structure\n\nThe output depends on which options are enabled. With all options:\n\n```\nlibs/my-feature/\n├── src/\n│   ├── index.ts                           # Public API barrel\n│   ├── test-setup.ts                      # Vitest setup\n│   ├── models/                            # Data models (example if --api)\n│   ├── lib/\n│   │   ├── components/                    # Angular components\n│   │   ├── pages/                         # Page components (if --pages)\n│   │   └── services/                      # Injectable services\n│   ├── pages/                             # File-based routes (if --pages)\n│   │   └── my-feature/\n│   │       ├── my-feature.page.ts         # Default route\n│   │       └── (my-feature).page.ts       # Layout route\n│   ├── content/                           # Markdown content (if --contentRoutes)\n│   │   └── my-feature/\n│   │       └── example-post.md\n│   └── backend/\n│       ├── index.ts                       # Backend barrel (if --api or --trpc)\n│       ├── api/routes/api/my-feature/\n│       │   ├── hello.ts                   # REST handler (if --api)\n│       │   └── trpc/[trpc].ts             # tRPC catch-all (if --trpc)\n│       └── trpc/                          # tRPC infrastructure (if --trpc)\n│           ├── context.ts\n│           ├── trpc.ts\n│           ├── trpc-client.ts\n│           └── routers/\n│               ├── index.ts\n│               └── my-feature.ts\n├── eslint.config.cjs\n├── package.json\n├── project.json\n├── README.md\n├── tsconfig.json\n├── tsconfig.lib.json\n├── tsconfig.spec.json\n└── vite.config.mts\n```\n\n### Application Integration\n\nThe generator automatically updates the target application:\n\n**Vite config** -- Adds the library's page and API paths to the AnalogJS plugin configuration so Nitro discovers the routes.\n\n**TypeScript paths** -- Registers the library's barrel export in the workspace `tsconfig.base.json`.\n\n**Tailwind** -- Appends the library's `src/` path to the application's Tailwind `content` array (disable with `--patchTailwind=false`).\n\n## API Route Generator\n\nCreates an H3 `defineEventHandler` file in the correct directory for AnalogJS file-based API routing.\n\n### Usage\n\n```bash\npnpm nx generate @analog-tools/generator:api-route --project=analog-example --route=v1/hello\n```\n\n### Options\n\n| Option | Type | Required | Default | Description |\n|--------|------|----------|---------|-------------|\n| `route` | `string` | Yes | -- | Route path relative to the API directory (e.g., `v1/users` or `v1/users/[id]`) |\n| `project` | `string` | Yes | -- | Target project (application or library) |\n| `method` | `string` | No | -- | HTTP method for a method-specific handler. One of: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`, `OPTIONS`, `HEAD` |\n\n**Output location:**\n\n- Applications: `<project-root>/src/server/routes/api/<route>.ts`\n- Libraries: `<project-root>/src/backend/api/routes/api/<route>.ts`\n\nWhen `--method` is specified, the filename includes the method suffix (e.g., `users.post.ts`).\n\n### Examples\n\nGeneric handler (responds to all HTTP methods):\n\n```bash\npnpm nx g @analog-tools/generator:api-route \\\n  --project=analog-example \\\n  --route=v1/hello\n```\n\nCreates `src/server/routes/api/v1/hello.ts`:\n\n```typescript\nimport { defineEventHandler } from 'h3';\n\nexport default defineEventHandler(async () => {\n  return {\n    status: 'ok',\n  };\n});\n```\n\nMethod-specific handler:\n\n```bash\npnpm nx g @analog-tools/generator:api-route \\\n  --project=analog-example \\\n  --route=v1/users \\\n  --method=POST\n```\n\nCreates `src/server/routes/api/v1/users.post.ts`.\n\nDynamic route parameter:\n\n```bash\npnpm nx g @analog-tools/generator:api-route \\\n  --project=analog-example \\\n  --route=v1/users/[id]\n```\n\nCreates `src/server/routes/api/v1/users/[id].ts`.\n\n### Dynamic Segments\n\nBoth syntaxes are supported for dynamic parameters:\n\n| Input | Output filename |\n|-------|----------------|\n| `users/:id` | `users/[id].ts` |\n| `users/[id]` | `users/[id].ts` |\n\nColon syntax (`:id`) is automatically converted to AnalogJS bracket notation (`[id]`).\n\n## Init Auth Generator\n\nConfigures `@analog-tools/auth` in an existing AnalogJS application. Only works with application projects (not libraries).\n\n### Usage\n\n```bash\npnpm nx generate @analog-tools/generator:init-auth --project=my-app\n```\n\n### Options\n\n| Option | Type | Required | Description |\n|--------|------|----------|-------------|\n| `project` | `string` | Yes | The application project to configure |\n\n### What It Creates\n\nThe generator performs four operations:\n\n1. **Creates `src/auth.config.ts`** -- OAuth/OIDC provider configuration with filesystem session storage. Reads credentials from environment variables and fails fast when required values are missing.\n\n2. **Creates `src/server/middleware/auth.ts`** -- H3 middleware that calls `useAnalogAuth` on every request, protecting all routes not listed in `unprotectedRoutes`.\n\n3. **Updates `src/app/app.config.ts`** -- Adds `provideAuthClient()` to the providers array and `authInterceptor` to the HTTP client interceptors.\n\n4. **Updates `vite.config.ts`** -- Adds `@analog-tools/auth` to `ssr.noExternal` so Vite bundles it for server-side rendering.\n\nThe generator also installs `@analog-tools/auth`, `@analog-tools/inject`, `@analog-tools/logger`, and `@analog-tools/session` if they are not already in `package.json`.\n\n**Generated structure:**\n\n```\nsrc/\n├── auth.config.ts                    # OAuth provider + session config\n├── app/\n│   └── app.config.ts                 # Updated with auth providers\n└── server/\n    └── middleware/\n        └── auth.ts                   # Auth middleware\nvite.config.ts                         # Updated with ssr.noExternal\n```\n\n### Post-Generation Steps\n\n1. **Set environment variables:**\n\n   ```env\n   AUTH_ISSUER=https://your-auth-provider.com\n   AUTH_CLIENT_ID=your-client-id\n   AUTH_CLIENT_SECRET=your-client-secret\n   AUTH_AUDIENCE=your-api-audience\n   AUTH_SCOPE=openid profile email\n   AUTH_CALLBACK_URL=http://localhost:4200/api/auth/callback\n   SESSION_SECRET=your-secure-random-secret\n   ```\n\n  `AUTH_ISSUER`, `AUTH_CLIENT_ID`, `AUTH_CLIENT_SECRET`, and `SESSION_SECRET` are required. The generated `auth.config.ts` throws during startup if any of them are missing.\n\n2. **Review the default filesystem session storage**:\n\n  The generator now uses the unstorage `fs` driver by default and writes sessions under `./.sessions`.\n  Adjust the `driver.options.base` path in `src/auth.config.ts` if you want a different location.\n\n3. **Configure unprotected routes** in `auth.config.ts` -- add any public routes that should bypass authentication.\n\n4. **Register your callback URL** with your OAuth provider (must match `AUTH_CALLBACK_URL` exactly).\n\nYou can switch from Redis to any other [unstorage driver](https://unstorage.unjs.io/drivers) by modifying the `sessionStorage` block in `auth.config.ts`. See [`@analog-tools/session`](https://github.com/MrBacony/analog-tools/tree/main/packages/session) for supported drivers.\n\n## Testing\n\n```bash\npnpm nx test @analog-tools/generator\n```\n\nRuns the Vitest suite covering all three generators.\n\n## Related Packages\n\n| Package | Purpose |\n|---------|---------|\n| [`@analog-tools/auth`](https://github.com/MrBacony/analog-tools/tree/main/packages/auth) | OAuth 2.0/OIDC authentication (BFF pattern) |\n| [`@analog-tools/session`](https://github.com/MrBacony/analog-tools/tree/main/packages/session) | Session management with unstorage drivers |\n| [`@analog-tools/inject`](https://github.com/MrBacony/analog-tools/tree/main/packages/inject) | Service registry dependency injection |\n| [`@analog-tools/logger`](https://github.com/MrBacony/analog-tools/tree/main/packages/logger) | Structured logging with deduplication |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}