{"_id":"@bjorntech/alchemy-azure","_rev":"12-281d65d4a31af000d99507c2dbfa9835","name":"@bjorntech/alchemy-azure","dist-tags":{"latest":"0.2.6-beta.74"},"versions":{"0.2.0-beta.57":{"name":"@bjorntech/alchemy-azure","version":"0.2.0-beta.57","keywords":["alchemy","alchemy-effect","azure","iac","infrastructure-as-code","effect","typescript"],"license":"Apache-2.0","_id":"@bjorntech/alchemy-azure@0.2.0-beta.57","maintainers":[{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},{"name":"marveltool","email":"carl@bjorntech.com"}],"homepage":"https://github.com/bjorntech/alchemy-azure#readme","bugs":{"url":"https://github.com/bjorntech/alchemy-azure/issues"},"dist":{"shasum":"5a9e995f733cedceeecaf7bd326ced21140d17d1","tarball":"https://registry.npmjs.org/@bjorntech/alchemy-azure/-/alchemy-azure-0.2.0-beta.57.tgz","fileCount":23,"integrity":"sha512-XII5XquqOwTKllHk9tlz1WjeFc8jfGtrP0ZhYvWQTrC057JIIBBKw2LRkrZU2IxtD3evMfgufB4Ddduy0ZKoxw==","signatures":[{"sig":"MEQCICU/CGHr0oAu5vxx980eH/c2vMRTnpJvWaaJaS3/tAyBAiBFSTchIPu2frGxlQ6SJ/vA10SBsTfJQOAsGSWgUOKFKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257588},"type":"module","_from":"file:bjorntech-alchemy-azure-0.2.0-beta.57.tgz","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"scripts":{"crap":"bun run scripts/crap-index.ts","test":"bun test","check":"tsc --noEmit","format":"oxfmt .","coverage":"bun test --coverage --coverage-reporter=lcov","smoke:azure":"bun run scripts/azure-production-smoke.ts","coverage:check":"bun run scripts/coverage-floor.ts","prepublishOnly":"bun run check && bun test && bun run coverage:check","smoke:azure:nuke":"bun run scripts/azure-smoke-nuke.ts","smoke:azure:negative":"bun run scripts/azure-negative-smoke.ts"},"_npmUser":{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},"_resolved":"/Users/tobbe/Projects/alchemy-azure/bjorntech-alchemy-azure-0.2.0-beta.57.tgz","_integrity":"sha512-XII5XquqOwTKllHk9tlz1WjeFc8jfGtrP0ZhYvWQTrC057JIIBBKw2LRkrZU2IxtD3evMfgufB4Ddduy0ZKoxw==","repository":{"url":"git+https://github.com/bjorntech/alchemy-azure.git","type":"git"},"_npmVersion":"11.12.1","description":"Microsoft Azure providers for Alchemy v2","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@azure/arm-msi":"^2.1.0","@azure/arm-sql":"^10.0.0","@azure/identity":"^4.13.0","@azure/ms-rest-js":"^2.7.0","@azure/arm-compute":"^23.0.0","@azure/arm-network":"^34.0.0","@azure/arm-storage":"^18.5.0","@azure/arm-cosmosdb":"^9.1.0","@azure/arm-keyvault":"^5.0.0","@azure/storage-blob":"^12.29.1","@azure/arm-resources":"^6.1.0","@azure/arm-appservice":"^17.0.0","@azure/arm-servicebus":"^6.1.0","@azure/arm-appcontainers":"^3.0.0","@azure/arm-cognitiveservices":"^7.1.0","@azure/arm-containerinstance":"^9.1.0","@azure/arm-containerregistry":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"latest","effect":"4.0.0-beta.84","alchemy":"2.0.0-beta.57","@types/bun":"latest","typescript":"latest","@effect/platform-bun":"4.0.0-beta.84","@effect/platform-node":"4.0.0-beta.84","@effect/platform-node-shared":"4.0.0-beta.84"},"peerDependencies":{"effect":">=4.0.0-beta.84 || >=4.0.0","alchemy":"2.0.0-beta.57"},"_npmOperationalInternal":{"tmp":"tmp/alchemy-azure_0.2.0-beta.57_1782544719473_0.7329172072458268","host":"s3://npm-registry-packages-npm-production"}},"0.2.2-beta.59":{"name":"@bjorntech/alchemy-azure","version":"0.2.2-beta.59","keywords":["alchemy","alchemy-effect","azure","iac","infrastructure-as-code","effect","typescript"],"license":"Apache-2.0","_id":"@bjorntech/alchemy-azure@0.2.2-beta.59","maintainers":[{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},{"name":"marveltool","email":"carl@bjorntech.com"}],"homepage":"https://github.com/bjorntech/alchemy-azure#readme","bugs":{"url":"https://github.com/bjorntech/alchemy-azure/issues"},"dist":{"shasum":"12e871ad2c3934177fd7677d5b7f21712e05baa2","tarball":"https://registry.npmjs.org/@bjorntech/alchemy-azure/-/alchemy-azure-0.2.2-beta.59.tgz","fileCount":24,"integrity":"sha512-8D53/lPdRdGRZ9i2MymuWzGWo4F4bQJcC1aCQdMcZPe8/8gEuZoYFkXc9SaHUsDnYp8AHPCxs8LouZb/ZL9zgg==","signatures":[{"sig":"MEUCIBtMnDEPlk97s7E/OMuQ7uPymAtodJzNouHkZ8sNiRlYAiEAsrf6waKsMOtm1atU2phHc6TfdeAiMYxkyCdIgu+W4ME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bjorntech%2falchemy-azure@0.2.2-beta.59","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":279153},"type":"module","_from":"file:bjorntech-alchemy-azure-0.2.2-beta.59.tgz","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"scripts":{"crap":"bun run scripts/crap-index.ts","test":"bun test","check":"tsc --noEmit","format":"oxfmt .","coverage":"bun test --coverage --coverage-reporter=lcov","smoke:azure":"bun run scripts/azure-production-smoke.ts","coverage:check":"bun run scripts/coverage-floor.ts","prepublishOnly":"bun run check && bun test && bun run coverage:check","smoke:azure:nuke":"bun run scripts/azure-smoke-nuke.ts","smoke:azure:negative":"bun run scripts/azure-negative-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aa3f5e7-3fb0-4d66-8d1b-75ad6532be1d"}},"_resolved":"/home/runner/work/alchemy-azure/alchemy-azure/bjorntech-alchemy-azure-0.2.2-beta.59.tgz","_integrity":"sha512-8D53/lPdRdGRZ9i2MymuWzGWo4F4bQJcC1aCQdMcZPe8/8gEuZoYFkXc9SaHUsDnYp8AHPCxs8LouZb/ZL9zgg==","repository":{"url":"git+https://github.com/bjorntech/alchemy-azure.git","type":"git"},"_npmVersion":"11.17.0","description":"Microsoft Azure providers for Alchemy v2","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@azure/arm-msi":"^2.1.0","@azure/arm-sql":"^10.0.0","@azure/identity":"^4.13.0","@azure/ms-rest-js":"^2.7.0","@azure/arm-compute":"^23.0.0","@azure/arm-network":"^34.0.0","@azure/arm-storage":"^18.5.0","@azure/arm-cosmosdb":"^9.1.0","@azure/arm-keyvault":"^5.0.0","@azure/storage-blob":"^12.29.1","@azure/arm-resources":"^6.1.0","@azure/arm-appservice":"^17.0.0","@azure/arm-servicebus":"^6.1.0","@azure/arm-appcontainers":"^3.0.0","@azure/arm-cognitiveservices":"^7.1.0","@azure/arm-containerinstance":"^9.1.0","@azure/arm-containerregistry":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"latest","effect":"4.0.0-beta.84","alchemy":"2.0.0-beta.59","@types/bun":"latest","typescript":"latest","@effect/platform-bun":"4.0.0-beta.84","@effect/platform-node":"4.0.0-beta.84","@effect/platform-node-shared":"4.0.0-beta.84"},"peerDependencies":{"effect":">=4.0.0-beta.84 || >=4.0.0","alchemy":"2.0.0-beta.59"},"_npmOperationalInternal":{"tmp":"tmp/alchemy-azure_0.2.2-beta.59_1782571853952_0.8177119586987844","host":"s3://npm-registry-packages-npm-production"}},"0.2.3-beta.63":{"name":"@bjorntech/alchemy-azure","version":"0.2.3-beta.63","keywords":["alchemy","alchemy-v2","azure","iac","infrastructure-as-code","effect","typescript"],"license":"Apache-2.0","_id":"@bjorntech/alchemy-azure@0.2.3-beta.63","maintainers":[{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},{"name":"marveltool","email":"carl@bjorntech.com"}],"homepage":"https://github.com/bjorntech/alchemy-azure#readme","bugs":{"url":"https://github.com/bjorntech/alchemy-azure/issues"},"dist":{"shasum":"7c843ae33eece9c5aed1b6c54068f760f5d442cf","tarball":"https://registry.npmjs.org/@bjorntech/alchemy-azure/-/alchemy-azure-0.2.3-beta.63.tgz","fileCount":24,"integrity":"sha512-nVeHud1RDgxPQwySVDkIRCjrrvpefcF8SoNX7X/4e0DqX/VbBqbI5rpFcnQbQDMU9DFXm/aZwuKi44io4Ja1iQ==","signatures":[{"sig":"MEUCIQCdBWHl9x2+M2fJtR5F6iQE//IpgMVV9wKeGqxk+ZuB5AIgOAxFnh/QJ5W76CTxNdWwGtYEhim3TQw6L8CgWIrtgKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bjorntech%2falchemy-azure@0.2.3-beta.63","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":279661},"type":"module","_from":"file:bjorntech-alchemy-azure-0.2.3-beta.63.tgz","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"scripts":{"crap":"bun run scripts/crap-index.ts","test":"bun test","check":"tsc --noEmit","format":"oxfmt .","coverage":"bun test --coverage --coverage-reporter=lcov","smoke:azure":"bun run scripts/azure-production-smoke.ts","coverage:check":"bun run scripts/coverage-floor.ts","prepublishOnly":"bun run check && bun test && bun run coverage:check","smoke:azure:nuke":"bun run scripts/azure-smoke-nuke.ts","smoke:azure:negative":"bun run scripts/azure-negative-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aa3f5e7-3fb0-4d66-8d1b-75ad6532be1d"}},"_resolved":"/home/runner/work/alchemy-azure/alchemy-azure/bjorntech-alchemy-azure-0.2.3-beta.63.tgz","_integrity":"sha512-nVeHud1RDgxPQwySVDkIRCjrrvpefcF8SoNX7X/4e0DqX/VbBqbI5rpFcnQbQDMU9DFXm/aZwuKi44io4Ja1iQ==","repository":{"url":"git+https://github.com/bjorntech/alchemy-azure.git","type":"git"},"_npmVersion":"12.0.1","description":"Microsoft Azure providers for Alchemy v2","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@azure/arm-msi":"^2.1.0","@azure/arm-sql":"^10.0.0","@azure/identity":"^4.13.0","@azure/ms-rest-js":"^2.7.0","@azure/arm-compute":"^23.0.0","@azure/arm-network":"^34.0.0","@azure/arm-storage":"^18.5.0","@azure/arm-cosmosdb":"^9.1.0","@azure/arm-keyvault":"^5.0.0","@azure/storage-blob":"^12.29.1","@azure/arm-resources":"^6.1.0","@azure/arm-appservice":"^17.0.0","@azure/arm-servicebus":"^6.1.0","@azure/arm-appcontainers":"^3.0.0","@azure/arm-cognitiveservices":"^7.1.0","@azure/arm-containerinstance":"^9.1.0","@azure/arm-containerregistry":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"latest","effect":"4.0.0-beta.97","alchemy":"2.0.0-beta.63","@types/bun":"latest","typescript":"latest","@effect/platform-bun":"4.0.0-beta.97","@effect/platform-node":"4.0.0-beta.97","@effect/platform-node-shared":"4.0.0-beta.97"},"peerDependencies":{"effect":">=4.0.0-beta.97 || >=4.0.0","alchemy":"2.0.0-beta.63"},"_npmOperationalInternal":{"tmp":"tmp/alchemy-azure_0.2.3-beta.63_1784537176807_0.7773927766464137","host":"s3://npm-registry-packages-npm-production"}},"0.2.4-beta.67":{"name":"@bjorntech/alchemy-azure","version":"0.2.4-beta.67","keywords":["alchemy","alchemy-v2","azure","iac","infrastructure-as-code","effect","typescript"],"license":"Apache-2.0","_id":"@bjorntech/alchemy-azure@0.2.4-beta.67","maintainers":[{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},{"name":"marveltool","email":"carl@bjorntech.com"}],"homepage":"https://github.com/bjorntech/alchemy-azure#readme","bugs":{"url":"https://github.com/bjorntech/alchemy-azure/issues"},"dist":{"shasum":"3db0f93ffb9a10442ad067a24da759a59e140f7e","tarball":"https://registry.npmjs.org/@bjorntech/alchemy-azure/-/alchemy-azure-0.2.4-beta.67.tgz","fileCount":24,"integrity":"sha512-jOEaCeXivFEfQ9OBo+eiZ6iyvN+cU1VbCMt5vXiS+xPDgbsGptAP0lGBAc0tbyp7UbGicsovQjtUpk7gMccWNg==","signatures":[{"sig":"MEUCIQDxifNx2rCaPi37P5gjH/i/0Zs0KG3vDs0MNK4oCUfqugIgeRmL/4fuoQ58rmlS3a43umAFxWR4lme1bn2MsV+FX1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bjorntech%2falchemy-azure@0.2.4-beta.67","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":280120},"type":"module","_from":"file:bjorntech-alchemy-azure-0.2.4-beta.67.tgz","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"scripts":{"crap":"bun run scripts/crap-index.ts","test":"bun test","check":"tsc --noEmit","format":"oxfmt .","coverage":"bun test --coverage --coverage-reporter=lcov","smoke:azure":"bun run scripts/azure-production-smoke.ts","coverage:check":"bun run scripts/coverage-floor.ts","prepublishOnly":"bun run check && bun test && bun run coverage:check","smoke:azure:nuke":"bun run scripts/azure-smoke-nuke.ts","smoke:azure:negative":"bun run scripts/azure-negative-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aa3f5e7-3fb0-4d66-8d1b-75ad6532be1d"}},"_resolved":"/home/runner/work/alchemy-azure/alchemy-azure/bjorntech-alchemy-azure-0.2.4-beta.67.tgz","_integrity":"sha512-jOEaCeXivFEfQ9OBo+eiZ6iyvN+cU1VbCMt5vXiS+xPDgbsGptAP0lGBAc0tbyp7UbGicsovQjtUpk7gMccWNg==","repository":{"url":"git+https://github.com/bjorntech/alchemy-azure.git","type":"git"},"_npmVersion":"12.0.2","description":"Microsoft Azure providers for Alchemy v2","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@azure/arm-msi":"^2.1.0","@azure/arm-sql":"^10.0.0","@azure/identity":"^4.13.0","@azure/ms-rest-js":"^2.7.0","@azure/arm-compute":"^23.0.0","@azure/arm-network":"^34.0.0","@azure/arm-storage":"^18.5.0","@azure/arm-cosmosdb":"^9.1.0","@azure/arm-keyvault":"^5.0.0","@azure/storage-blob":"^12.29.1","@azure/arm-resources":"^6.1.0","@azure/arm-appservice":"^17.0.0","@azure/arm-servicebus":"^6.1.0","@azure/arm-appcontainers":"^3.0.0","@azure/arm-cognitiveservices":"^7.1.0","@azure/arm-containerinstance":"^9.1.0","@azure/arm-containerregistry":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"latest","effect":"4.0.0-beta.103","alchemy":"2.0.0-beta.67","@types/bun":"latest","typescript":"latest","@effect/platform-bun":"4.0.0-beta.103","@effect/platform-node":"4.0.0-beta.103","@effect/platform-node-shared":"4.0.0-beta.103"},"peerDependencies":{"effect":">=4.0.0-beta.100 || >=4.0.0","alchemy":"2.0.0-beta.67"},"_npmOperationalInternal":{"tmp":"tmp/alchemy-azure_0.2.4-beta.67_1785825300724_0.9008619260718032","host":"s3://npm-registry-packages-npm-production"}},"0.2.4-beta.74":{"name":"@bjorntech/alchemy-azure","version":"0.2.4-beta.74","keywords":["alchemy","alchemy-v2","azure","iac","infrastructure-as-code","effect","typescript"],"license":"Apache-2.0","_id":"@bjorntech/alchemy-azure@0.2.4-beta.74","maintainers":[{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},{"name":"marveltool","email":"carl@bjorntech.com"}],"homepage":"https://github.com/bjorntech/alchemy-azure#readme","bugs":{"url":"https://github.com/bjorntech/alchemy-azure/issues"},"dist":{"shasum":"ba242b276b0b1ee3ce5b8e4ee85807fa2d51b9a1","tarball":"https://registry.npmjs.org/@bjorntech/alchemy-azure/-/alchemy-azure-0.2.4-beta.74.tgz","fileCount":24,"integrity":"sha512-0O9wrSK55j0OL0agdzkags6TbfzmILT51k4VRNHHK64cdmbBlsFBCD1tEXjGq8R3rG+f17MdGAuz5EIS1bW30g==","signatures":[{"sig":"MEYCIQDo0c240tNvP1pd2NYEzgt5E1N9fmlb+kCPyCW4dlzXQgIhAIT1TAffC2+0n4fJHg5+F9e5oCcCD15Z4TG/Q9vzoQv4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bjorntech%2falchemy-azure@0.2.4-beta.74","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":280769},"type":"module","_from":"file:bjorntech-alchemy-azure-0.2.4-beta.74.tgz","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"scripts":{"crap":"bun run scripts/crap-index.ts","test":"bun test","check":"tsc --noEmit","format":"oxfmt .","coverage":"bun test --coverage --coverage-reporter=lcov","smoke:azure":"bun run scripts/azure-production-smoke.ts","coverage:check":"bun run scripts/coverage-floor.ts","prepublishOnly":"bun run check && bun test && bun run coverage:check","smoke:azure:nuke":"bun run scripts/azure-smoke-nuke.ts","smoke:azure:negative":"bun run scripts/azure-negative-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aa3f5e7-3fb0-4d66-8d1b-75ad6532be1d"}},"_resolved":"/home/runner/work/alchemy-azure/alchemy-azure/bjorntech-alchemy-azure-0.2.4-beta.74.tgz","_integrity":"sha512-0O9wrSK55j0OL0agdzkags6TbfzmILT51k4VRNHHK64cdmbBlsFBCD1tEXjGq8R3rG+f17MdGAuz5EIS1bW30g==","repository":{"url":"git+https://github.com/bjorntech/alchemy-azure.git","type":"git"},"_npmVersion":"12.0.2","description":"Microsoft Azure providers for Alchemy v2","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@azure/arm-msi":"^2.1.0","@azure/arm-sql":"^10.0.0","@azure/identity":"^4.13.0","@azure/ms-rest-js":"^2.7.0","@azure/arm-compute":"^23.0.0","@azure/arm-network":"^34.0.0","@azure/arm-storage":"^18.5.0","@azure/arm-cosmosdb":"^9.1.0","@azure/arm-keyvault":"^5.0.0","@azure/storage-blob":"^12.29.1","@azure/arm-resources":"^6.1.0","@azure/arm-appservice":"^17.0.0","@azure/arm-servicebus":"^6.1.0","@azure/arm-appcontainers":"^3.0.0","@azure/arm-cognitiveservices":"^7.1.0","@azure/arm-containerinstance":"^9.1.0","@azure/arm-containerregistry":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"oxfmt":"latest","effect":"4.0.0-rc.112","alchemy":"2.0.0-beta.74","@types/bun":"latest","typescript":"latest","@effect/platform-bun":"4.0.0-rc.112","@effect/platform-node":"4.0.0-rc.112","@effect/platform-node-shared":"4.0.0-rc.112"},"peerDependencies":{"effect":">=4.0.0-rc.110 || >=4.0.0","alchemy":"2.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/alchemy-azure_0.2.4-beta.74_1787830440860_0.3678229156485813","host":"s3://npm-registry-packages-npm-production"}},"0.2.5-beta.74":{"name":"@bjorntech/alchemy-azure","version":"0.2.5-beta.74","keywords":["alchemy","alchemy-v2","azure","iac","infrastructure-as-code","effect","typescript"],"license":"Apache-2.0","_id":"@bjorntech/alchemy-azure@0.2.5-beta.74","maintainers":[{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},{"name":"marveltool","email":"carl@bjorntech.com"}],"homepage":"https://github.com/bjorntech/alchemy-azure#readme","bugs":{"url":"https://github.com/bjorntech/alchemy-azure/issues"},"dist":{"shasum":"48b4e7c8057b167da489dad746dc619a96321a29","tarball":"https://registry.npmjs.org/@bjorntech/alchemy-azure/-/alchemy-azure-0.2.5-beta.74.tgz","fileCount":24,"integrity":"sha512-UFYQJJTXRN12I/3AN9NjVpBCwSl5xtm4JvL/3u5qtkyyAAh2Fs/osTdyeHks6t8yNtCZ2YkPfgg+ay1KRSzojw==","signatures":[{"sig":"MEQCIEClFQwOBIC9zHtUfyeTtirQBIa6KJwVI7j8Q2OIXDnVAiATS99CVpYcfdOts3QP2sUzP+MIBiWQw2fm8CQhLft1pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bjorntech%2falchemy-azure@0.2.5-beta.74","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":281034},"type":"module","_from":"file:bjorntech-alchemy-azure-0.2.5-beta.74.tgz","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"scripts":{"crap":"bun run scripts/crap-index.ts","test":"bun test","check":"tsc --noEmit","format":"oxfmt .","coverage":"bun test --coverage --coverage-reporter=lcov","smoke:azure":"bun run scripts/azure-production-smoke.ts","coverage:check":"bun run scripts/coverage-floor.ts","prepublishOnly":"bun run check && bun test && bun run coverage:check","smoke:azure:nuke":"bun run scripts/azure-smoke-nuke.ts","smoke:azure:negative":"bun run scripts/azure-negative-smoke.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aa3f5e7-3fb0-4d66-8d1b-75ad6532be1d"}},"_resolved":"/home/runner/work/alchemy-azure/alchemy-azure/bjorntech-alchemy-azure-0.2.5-beta.74.tgz","_integrity":"sha512-UFYQJJTXRN12I/3AN9NjVpBCwSl5xtm4JvL/3u5qtkyyAAh2Fs/osTdyeHks6t8yNtCZ2YkPfgg+ay1KRSzojw==","repository":{"url":"git+https://github.com/bjorntech/alchemy-azure.git","type":"git"},"_npmVersion":"12.0.2","description":"Microsoft Azure providers for Alchemy v2","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@azure/arm-msi":"^2.2.0","@azure/arm-sql":"^11.0.0","@azure/identity":"^4.13.2","@azure/ms-rest-js":"^2.7.0","@azure/arm-compute":"^25.1.1","@azure/arm-network":"^38.0.0","@azure/arm-storage":"^20.1.0","@azure/arm-cosmosdb":"^9.1.0","@azure/arm-keyvault":"^5.0.0","@azure/storage-blob":"^12.33.0","@azure/arm-resources":"^8.0.0","@azure/arm-appservice":"^19.0.0","@azure/arm-servicebus":"^7.0.0","@azure/arm-appcontainers":"^3.0.0","@azure/arm-cognitiveservices":"^8.1.0","@azure/arm-containerinstance":"^9.1.0","@azure/arm-containerregistry":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"latest","effect":"4.0.0-rc.112","alchemy":"2.0.0-beta.74","@types/bun":"latest","typescript":"latest","@effect/platform-bun":"4.0.0-rc.112","@effect/platform-node":"4.0.0-rc.112","@effect/platform-node-shared":"4.0.0-rc.112"},"peerDependencies":{"effect":">=4.0.0-rc.110 || >=4.0.0","alchemy":"2.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/alchemy-azure_0.2.5-beta.74_1787844087506_0.953958669249823","host":"s3://npm-registry-packages-npm-production"}},"0.2.6-beta.74":{"name":"@bjorntech/alchemy-azure","version":"0.2.6-beta.74","description":"Microsoft Azure providers for Alchemy v2","license":"Apache-2.0","type":"module","sideEffects":false,"keywords":["alchemy","alchemy-v2","azure","iac","infrastructure-as-code","effect","typescript"],"repository":{"type":"git","url":"git+https://github.com/bjorntech/alchemy-azure.git"},"homepage":"https://github.com/bjorntech/alchemy-azure#readme","bugs":{"url":"https://github.com/bjorntech/alchemy-azure/issues"},"publishConfig":{"access":"public"},"exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"scripts":{"check":"tsc --noEmit","coverage":"bun test --coverage --coverage-reporter=lcov","coverage:check":"bun run scripts/coverage-floor.ts","crap":"bun run scripts/crap-index.ts","smoke:azure":"bun run scripts/azure-production-smoke.ts","smoke:azure:nuke":"bun run scripts/azure-smoke-nuke.ts","smoke:azure:negative":"bun run scripts/azure-negative-smoke.ts","test":"bun test","format":"oxfmt .","prepublishOnly":"bun run check && bun test && bun run coverage:check"},"dependencies":{"@azure/arm-appcontainers":"^3.0.0","@azure/arm-appservice":"^19.0.0","@azure/arm-cognitiveservices":"^8.1.0","@azure/arm-compute":"^25.1.1","@azure/arm-containerinstance":"^9.1.0","@azure/arm-containerregistry":"^12.0.0","@azure/arm-cosmosdb":"16.0.0","@azure/arm-keyvault":"^5.0.0","@azure/arm-msi":"^2.2.0","@azure/arm-network":"^38.0.0","@azure/arm-resources":"^8.0.0","@azure/arm-servicebus":"^7.0.0","@azure/arm-sql":"^11.0.0","@azure/arm-storage":"^20.1.0","@azure/identity":"^4.13.2","@azure/ms-rest-js":"^2.7.0","@azure/storage-blob":"^12.33.0"},"peerDependencies":{"alchemy":"2.0.0-beta.74","effect":">=4.0.0-rc.110 || >=4.0.0"},"devDependencies":{"@effect/platform-bun":"4.0.0-rc.112","@effect/platform-node":"4.0.0-rc.112","@effect/platform-node-shared":"4.0.0-rc.112","@types/bun":"latest","alchemy":"2.0.0-beta.74","effect":"4.0.0-rc.112","oxfmt":"latest","typescript":"latest"},"_id":"@bjorntech/alchemy-azure@0.2.6-beta.74","_integrity":"sha512-WXkXTIO0s6IJp1/u+2qIKoUGGNOyYg2FLG3vUd3YBZB+Qrx3bgr44leCYR3w64wR4buBPALRb68OVKa+OKndVA==","_resolved":"/home/runner/work/alchemy-azure/alchemy-azure/bjorntech-alchemy-azure-0.2.6-beta.74.tgz","_from":"file:bjorntech-alchemy-azure-0.2.6-beta.74.tgz","_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-WXkXTIO0s6IJp1/u+2qIKoUGGNOyYg2FLG3vUd3YBZB+Qrx3bgr44leCYR3w64wR4buBPALRb68OVKa+OKndVA==","shasum":"f1ad625a2243d6f89fdcced79e62b0eb95036191","tarball":"https://registry.npmjs.org/@bjorntech/alchemy-azure/-/alchemy-azure-0.2.6-beta.74.tgz","fileCount":24,"unpackedSize":282137,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bjorntech%2falchemy-azure@0.2.6-beta.74","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHahrZhnZclKt4rRhpSdmEKsBUoP9UHPzWIgtID8Jo2OAiASCIUbw3FI6zUTZq5+ScL+BXC9yZGvcGh+C2cSWQKKyg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aa3f5e7-3fb0-4d66-8d1b-75ad6532be1d"}},"directories":{},"maintainers":[{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},{"name":"marveltool","email":"carl@bjorntech.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/alchemy-azure_0.2.6-beta.74_1787927932677_0.9853012297930059"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-27T07:18:39.368Z","modified":"2026-08-28T14:38:53.092Z","0.2.0-beta.57":"2026-06-27T07:18:39.595Z","0.2.2-beta.59":"2026-06-27T14:50:54.145Z","0.2.3-beta.63":"2026-07-20T08:46:16.956Z","0.2.4-beta.67":"2026-08-04T06:35:00.873Z","0.2.4-beta.74":"2026-08-27T11:34:01.002Z","0.2.5-beta.74":"2026-08-27T15:21:27.642Z","0.2.6-beta.74":"2026-08-28T14:38:52.810Z"},"bugs":{"url":"https://github.com/bjorntech/alchemy-azure/issues"},"license":"Apache-2.0","homepage":"https://github.com/bjorntech/alchemy-azure#readme","keywords":["alchemy","alchemy-v2","azure","iac","infrastructure-as-code","effect","typescript"],"repository":{"type":"git","url":"git+https://github.com/bjorntech/alchemy-azure.git"},"description":"Microsoft Azure providers for Alchemy v2","maintainers":[{"name":"bjorntechtobbe","email":"tobbe@bjorntech.com"},{"name":"marveltool","email":"carl@bjorntech.com"}],"readme":"# alchemy-azure\n\nMicrosoft Azure providers for [Alchemy v2](https://v2.alchemy.run/).\n\nIf you are enjoying Alchemy v2, please give the upstream [alchemy-run/alchemy](https://github.com/alchemy-run/alchemy) repo a star ⭐️.\n\nThis package follows Alchemy's official custom-provider model: resources are declared with `Resource`, lifecycle implementations are registered with `Provider.effect`, credentials resolve through an `AuthProvider`, and all Azure providers are exposed as a single `Azure.providers()` layer.\n\n## Compatibility\n\n`@bjorntech/alchemy-azure` tracks the `alchemy` v2 beta line. The trailing number in our beta releases mirrors the `alchemy` beta we were tested against.\n\n| `@bjorntech/alchemy-azure` | `alchemy` (peer) | `effect` (peer) | Notes |\n| --------------- | ---------------- | --------------- | ----- |\n| `0.2.6-beta.74` | `2.0.0-beta.74`  | `>=4.0.0-rc.110 \\|\\| >=4.0.0` | Current beta; migrated Cosmos DB to `@azure/arm-cosmosdb@16.0.0`, direct `TokenCredential` auth, and an explicit supported REST api-version pin. |\n| `0.2.5-beta.74` | `2.0.0-beta.74`  | `>=4.0.0-rc.110 \\|\\| >=4.0.0` | Previous beta; refreshed non-Cosmos Azure SDK dependencies. |\n| `0.2.4-beta.74` | `2.0.0-beta.74`  | `>=4.0.0-rc.110 \\|\\| >=4.0.0` | Previous beta; refreshed Alchemy and Effect compatibility. |\n| `0.2.3-beta.63` | `2.0.0-beta.63`  | `>=4.0.0-beta.97 \\|\\| >=4.0.0` | Repository rename docs and upstream star CTA. |\n| `0.2.2-beta.59` | `2.0.0-beta.59`  | `>=4.0.0-beta.84 \\|\\| >=4.0.0` | VM gateway networking primitives. |\n| `0.2.1-beta.58` | `2.0.0-beta.58`  | `>=4.0.0-beta.84 \\|\\| >=4.0.0` | Whole-resource stable reference migration. |\n| `0.2.0-beta.57` | `2.0.0-beta.57`  | `>=4.0.0-beta.84 \\|\\| >=4.0.0` | Heartbeat groundwork. |\n| `0.1.1-beta.57` | `2.0.0-beta.57`  | `>=4.0.0-beta.84 \\|\\| >=4.0.0` | Blob container fix and heartbeat groundwork. |\n| `0.1.0-beta.57` | `2.0.0-beta.57`  | `>=4.0.0-beta.84 \\|\\| >=4.0.0` | Initial beta.57 compatibility release. |\n| `0.1.0-beta.35` | `2.0.0-beta.35`  | `>=4.0.0-beta.60` | Initial public beta. |\n\nThe `alchemy` peer dependency is exact-pinned to a specific beta because the v2 API is still evolving. The `effect` peer accepts the tested beta line or stable Effect 4. Bump compatibility docs and release metadata together when the tested Alchemy beta changes.\n\n## Install\n\n```sh\nbun add alchemy@2.0.0-beta.74 effect@4.0.0-rc.112 @bjorntech/alchemy-azure@0.2.6-beta.74\n```\n\n`alchemy` and `effect` are peer dependencies — install them in your app, not just transitively.\n\n`@bjorntech/alchemy-azure` ships raw TypeScript (matching the upstream `alchemy` package) and uses `.ts` import suffixes internally. Your `tsconfig.json` needs `\"moduleResolution\": \"Bundler\"` (or `\"NodeNext\"`) and `\"allowImportingTsExtensions\": true`. This is the default for Bun, Vite, and tsx; plain `tsc`-without-bundler users will need to set it explicitly.\n\n## Alignment with Alchemy v2 principles\n\nThis package follows the patterns documented at [v2.alchemy.run](https://v2.alchemy.run/):\n\n- **Resource declarations** use `Resource<Type, Props, Attributes>` with deterministic physical names via `createPhysicalName`.\n- **Provider implementations** use `Provider.effect(R, Effect.gen(...))` returning `R.Provider.of({ ... })` with a single convergent `reconcile` (observe → ensure → sync → return), idempotent `delete`, optional `diff` (with `isResolved` guards and `stables`), and `read` for state recovery + adoption.\n- **Ownership** is detected via the `alchemy:logical-id` tag (or `alchemyLogicalId` blob metadata for blob containers); foreign resources surface as `Unowned(attrs)` so `--adopt` is required to take them over.\n- **Authentication** follows the `AuthProviderLayer` pattern with `env` and `stored` methods, interactive `Clank` prompts in TTYs, and non-interactive defaults in CI.\n- **Secrets** (storage keys, connection strings, registry passwords, client secrets) are returned as `Redacted<string>`; Container App `Redacted` env values are sent through Container Apps secrets and `secretRef`.\n- **Errors** use a tagged `AzureError` (via `Schema.TaggedError`) for `Effect.catchTag` / `Effect.catchTags` interop.\n- **Provider layers** bundle into `Azure.providers()` alongside `ProfileLive`, `CredentialsStoreLive`, and the `AzureAuth` registration — same shape as `Cloudflare.providers()` / `Axiom.providers()`.\n\nFor a deeper walkthrough, see [`ARCHITECTURE.md`](./ARCHITECTURE.md).\n\n## Credentials\n\nTwo authentication methods are supported via Alchemy's profile system:\n\n### `env` (default)\n\nSet `AZURE_SUBSCRIPTION_ID`. Authentication uses a service principal when all of these are present:\n\n```sh\nAZURE_SUBSCRIPTION_ID=...\nAZURE_TENANT_ID=...\nAZURE_CLIENT_ID=...\nAZURE_CLIENT_SECRET=...\n```\n\nIf only `AZURE_SUBSCRIPTION_ID` is set, Azure SDK `DefaultAzureCredential` is used, so `az login`, managed identity, and other Azure SDK credential sources can work.\n\n### `stored`\n\nRun `alchemy login` and select **Service Principal or Subscription** to walk through an interactive flow that stores credentials under `~/.alchemy/credentials/{profile}/azure-stored.json`. You can store either a Service Principal (tenant + client + secret) or just a subscription id when relying on `DefaultAzureCredential`.\n\nCI environments always default to `env` regardless of profile config, so unattended runs work as long as the environment variables are set.\n\n## Errors\n\nAzure SDK failures inside provider lifecycle methods are wrapped as the tagged `AzureError`, carrying `operation`, `resource`, `statusCode`, `code`, and the original `cause`. The Alchemy engine surfaces them in `plan` / `deploy` output.\n\nIf you build your own custom resource on top of `@bjorntech/alchemy-azure` clients, you can match `AzureError` with `Effect.catchTag` inside the provider effect:\n\n```ts\nimport * as Effect from \"effect/Effect\";\nimport { AzureError } from \"@bjorntech/alchemy-azure\";\n\nconst ensureContainer = Effect.gen(function* () {\n  // ...your reconcile body, calling Azure clients via Effect.tryPromise\n}).pipe(\n  Effect.catchTag(\"AzureError\", (error) =>\n    error.statusCode === 409\n      ? Effect.logWarning(`Skipping: ${error.resource} already exists`)\n      : Effect.fail(error),\n  ),\n);\n```\n\n> Note: `Effect.catchTag` does not intercept errors from `yield* Azure.X(...)` directly — resource declarations register on the stack, and the engine runs `reconcile` later. To inspect or recover from `AzureError`, do it inside a custom resource's `reconcile`.\n\n## Usage\n\n```ts\nimport * as Alchemy from \"alchemy\";\nimport * as Azure from \"@bjorntech/alchemy-azure\";\nimport * as Effect from \"effect/Effect\";\n\nexport default Alchemy.Stack(\n  \"azure-demo\",\n  { providers: Azure.providers() },\n  Effect.gen(function* () {\n    const group = yield* Azure.ResourceGroup(\"Group\", {\n      location: \"westeurope\",\n      tags: { app: \"azure-demo\" },\n    });\n\n    const storage = yield* Azure.StorageAccount(\"Storage\", {\n      resourceGroup: group,\n      sku: \"Standard_LRS\",\n    });\n\n    const uploads = yield* Azure.BlobContainer(\"Uploads\", {\n      storageAccount: storage,\n      publicAccess: \"None\",\n    });\n\n    return {\n      resourceGroup: group.name,\n      storageAccount: storage.name,\n      uploadsUrl: uploads.url,\n    };\n  }),\n);\n```\n\n## Resources\n\n- `ResourceGroup` - Azure Resource Group lifecycle.\n- `ResourceProviderRegistration` - Azure resource provider namespace registration.\n- `StorageAccount` - Azure Storage Account lifecycle with keys and connection string returned as `Redacted` values.\n- `BlobContainer` - Azure Blob container lifecycle.\n- `UserAssignedIdentity` - User-assigned managed identity lifecycle.\n- `VirtualNetwork` - Virtual network and subnet lifecycle, including subnet ARM ID outputs and `subnetId(network, name)` lookup.\n- `NetworkSecurityGroup` - Network security group lifecycle.\n- `PublicIPAddress` - Public IP address lifecycle.\n- `CognitiveServices` - Azure AI/Cognitive Services account lifecycle.\n- `ServiceBus` - Service Bus namespace lifecycle.\n- `CosmosDBAccount` - Cosmos DB account lifecycle.\n- `SqlServer` - Azure SQL server lifecycle.\n- `SqlDatabase` - Azure SQL database lifecycle.\n- `KeyVault` - Key Vault lifecycle.\n- `AppServicePlan` - App Service plan lifecycle.\n- `AppService` - App Service web app lifecycle.\n- `FunctionApp` - Function App lifecycle.\n- `StaticWebApp` - Static Web App lifecycle.\n- `ContainerInstance` - Azure Container Instance lifecycle.\n- `ContainerAppEnvironment` - Azure Container Apps managed environment lifecycle.\n- `ContainerRegistry` - Azure Container Registry lifecycle with admin credentials returned as `Redacted` values.\n- `ContainerImage` - Local Docker build and push to Azure Container Registry.\n- `ContainerApp` - Experimental Azure Container Apps runtime host from an explicit image.\n- `VirtualMachine` - Virtual Machine lifecycle with managed NIC, optional public IP / NSG attachment, IP forwarding, custom data, and private/public address outputs.\n\n## Gateway VM Pattern\n\nFor SIP/RTP or other host-networked edge workloads, wire Azure networking primitives into the VM's managed NIC:\n\n```ts\nconst network = yield* Azure.VirtualNetwork(\"Network\", {\n  resourceGroup: group,\n  addressSpace: [\"10.42.0.0/16\"],\n  subnets: [{ name: \"sip\", addressPrefix: \"10.42.1.0/24\" }],\n});\n\nconst publicIp = yield* Azure.PublicIPAddress(\"GatewayIp\", {\n  resourceGroup: group,\n  sku: \"Standard\",\n  allocationMethod: \"Static\",\n  domainNameLabel: \"my-sip-gateway\",\n});\n\nconst nsg = yield* Azure.NetworkSecurityGroup(\"GatewayNsg\", {\n  resourceGroup: group,\n  securityRules: [\n    { name: \"ssh\", priority: 100, direction: \"Inbound\", access: \"Allow\", protocol: \"Tcp\", destinationPortRange: \"22\" },\n    { name: \"sip\", priority: 110, direction: \"Inbound\", access: \"Allow\", protocol: \"*\", destinationPortRange: \"5060\" },\n    { name: \"rtp\", priority: 120, direction: \"Inbound\", access: \"Allow\", protocol: \"Udp\", destinationPortRange: \"10000-20000\" },\n  ],\n});\n\nconst vm = yield* Azure.VirtualMachine(\"GatewayVm\", {\n  resourceGroup: group,\n  subnetId: Azure.subnetId(network, \"sip\"),\n  publicIPAddress: publicIp,\n  networkSecurityGroup: nsg,\n  enableIPForwarding: true,\n  adminUsername: \"gateway\",\n  sshPublicKey,\n  customData: cloudInit,\n});\n```\n\n## Experimental Container App Host\n\n`ContainerApp` is an experimental v2 `Platform` host. It deploys either an explicit image or an `Azure.ContainerImage` build artifact to Azure Container Apps; pass an external build hash to force a new revision when your build output changes.\n\n```ts\nconst environment =\n  yield *\n  Azure.ContainerAppEnvironment(\"Env\", {\n    resourceGroup: group,\n  });\n\nconst registry =\n  yield *\n  Azure.ContainerRegistry(\"Registry\", {\n    resourceGroup: group,\n  });\n\nconst image =\n  yield *\n  Azure.ContainerImage(\"Image\", {\n    registry,\n    context: \".\",\n    buildHash: build.hash,\n  });\n\nconst api =\n  yield *\n  Azure.ContainerApp(\"Api\", {\n    resourceGroup: group,\n    environment,\n    image,\n    registry,\n    buildHash: build.hash,\n    targetPort: 3000,\n    env: {\n      NODE_ENV: \"production\",\n    },\n  });\n\nreturn api.url;\n```\n\n## Provider Layer\n\nMerge Azure with other providers using Effect layers:\n\n```ts\nimport * as Layer from \"effect/Layer\";\n\nproviders: Layer.mergeAll(Cloudflare.providers(), Azure.providers());\n```\n\n## Azure Blob State\n\nUse an existing Azure Blob container as the Alchemy state backend:\n\n```ts\nexport default Alchemy.Stack(\n  \"MyApp\",\n  {\n    providers: Azure.providers(),\n    state: Azure.blobState({\n      accountName: process.env.AZURE_STORAGE_ACCOUNT!,\n      accountKey: process.env.AZURE_STORAGE_KEY!,\n      containerName: \"alchemy-state\",\n    }),\n  },\n  Effect.gen(function* () {\n    // resources...\n  }),\n);\n```\n\n## Live Smoke Tests\n\nLive Azure smoke tests are opt-in and create real Azure resources. They require `AZURE_SUBSCRIPTION_ID` plus either service principal env vars (`AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`) or an Azure SDK-compatible login such as `az login`.\n\n```sh\nAZURE_LIVE_TEST=1 bun run smoke:azure\nAZURE_LIVE_TEST=1 AZURE_SMOKE_PREFIX=<prefix-from-run> bun run smoke:azure:nuke\nAZURE_LIVE_NEGATIVE_TEST=1 bun run smoke:azure:negative\n```\n\nThe production and negative smoke runners both execute a scoped `alchemy unsafe nuke` cleanup after `destroy`, targeting only smoke resource groups and using smoke run tags to spare non-smoke groups. Azure then deletes all contained resources. `smoke:azure:nuke` is also exposed for manual cleanup if a smoke process is interrupted before its `finally` block runs.\n\nUseful flags:\n\n- `AZURE_SMOKE_LOCATION` - Azure region, defaults to `westeurope`.\n- `AZURE_SMOKE_FULL=1` - include quota/cost-sensitive optional resources such as Cosmos DB, SQL, VM, Cognitive Services, Key Vault, and Static Web App. App Service Plan, App Service, and Function App are included in the default smoke stack.\n- `AZURE_SMOKE_BUILD_IMAGE=1` - build and push the included Docker smoke image to ACR; requires Docker.\n","readmeFilename":"README.md"}