{"_id":"@daml-tools/daml-lint","_rev":"27-0390f89d80e5a53da4d7d85780440968","name":"@daml-tools/daml-lint","dist-tags":{"latest":"0.9.4"},"versions":{"0.3.4":{"name":"@daml-tools/daml-lint","version":"0.3.4","license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.4","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.cjs"},"dist":{"shasum":"bf848a40d0824c801cc1d40f8be2eebc75455b19","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.4.tgz","fileCount":3,"integrity":"sha512-8zRYvogg9LoS79NM+ahwH7cBDj5TE7KXaD2vtr0zWvMqglPfEkYYAfXmelp1EVUWh2QRQ2DvDoc0CH8fcWXPtQ==","signatures":[{"sig":"MEUCIDYVp1R6YntkJyzwf1EEFPNjZI0JbjcEwdosC9WYWSB2AiEAyUXs1eQo0o4RjeKtzSt3zjs5X/yky3YxEitsY1JoUfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2713},"engines":{"node":">=18"},"_npmUser":{"name":"snevins","email":"mosaics.06-equinox@icloud.com"},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git","directory":"crates/daml-lint/npm/cli"},"_npmVersion":"11.16.0","description":"npm-distributed daml-lint CLI","directories":{},"_nodeVersion":"26.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.4","@daml-tools/daml-lint-win32-x64":"0.3.4","@daml-tools/daml-lint-darwin-arm64":"0.3.4"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.4_1781742267610_0.4619530687724398","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@daml-tools/daml-lint","version":"0.3.5","license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.5","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.cjs"},"dist":{"shasum":"2aecf20042c410e892329eb45b628bdea162ec36","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.5.tgz","fileCount":3,"integrity":"sha512-z5HN6q5nzt05eCDjwBiosfyOX21olRw9GVL1IiYm3A3TuypUxWi6n8ZrJcv9mFTM76vLlhk1m9UJCqgiQIQhkA==","signatures":[{"sig":"MEUCIFljAcInpH4wa+QaLDJPbAGL5M+a8HCa+IGDXgDGP7UrAiEA2s7zYUwhx5wvaWlieZmP7kjQ6AN9USovCBEapT7LNrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3397},"engines":{"node":">=18"},"_npmUser":{"name":"snevins","email":"mosaics.06-equinox@icloud.com"},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git","directory":"crates/daml-lint/npm/cli"},"_npmVersion":"11.16.0","description":"npm-distributed daml-lint CLI","directories":{},"_nodeVersion":"26.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.5","@daml-tools/daml-lint-win32-x64":"0.3.5","@daml-tools/daml-lint-darwin-arm64":"0.3.5"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.5_1781746565746_0.1904574248223816","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@daml-tools/daml-lint","version":"0.3.6","license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.6","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.cjs"},"dist":{"shasum":"3fe6918dfdfb0793ff56a9c0bceb10897a9e90ad","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.6.tgz","fileCount":3,"integrity":"sha512-DRBZ+j4Jl00j66nLx7Ypumbs68YnGdxQrcqqKMkoY6WU9LXbwbYva9+DBnyXPn+eFpL+mqkpXTLVmy+KXGSU9Q==","signatures":[{"sig":"MEYCIQDs+Hwqj9qaAwZfq9RZtILih10F3PLvZwTmr11talpiSwIhAIkm9fEr/nfYihXbHofjXsXgv3TgUQ+Uw7uSJHXtD3NC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3397},"engines":{"node":">=18"},"gitHead":"4c60528480c8d6299238a995bb5201b1f980697c","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git","directory":"crates/daml-lint/npm/cli"},"_npmVersion":"11.17.0","description":"npm-distributed daml-lint CLI","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.6","@daml-tools/daml-lint-win32-x64":"0.3.6","@daml-tools/daml-lint-darwin-arm64":"0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.6_1781787897133_0.8141139642515853","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@daml-tools/daml-lint","version":"0.3.8","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.8","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"ccd89ddbd459ffb7128e6a7dcdbe2dd43ceff73d","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.8.tgz","fileCount":4,"integrity":"sha512-gSo7IoJNnSDjnGp373FhsJB0xTP13dpIp73r/i6dEwMU2BBOQuu7jv61D3g+PcQQbVN1t1mMRlctXvKVlUHqdw==","signatures":[{"sig":"MEYCIQDmFkuhOPv1BN8gnnDA1qrJDQz4oqqvnbzlGHM3Dr0X8QIhAMhTilfWRrouBs+EqOO874sKLIY84IWthx5MxwD2KF/i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50829},"engines":{"node":">=18"},"gitHead":"62cd09c0cbab5e4b5358472b490dd6d7d087f02a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.8","@daml-tools/daml-lint-win32-x64":"0.3.8","@daml-tools/daml-lint-linux-arm64":"0.3.8","@daml-tools/daml-lint-darwin-arm64":"0.3.8"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.8_1781811941352_0.16709021698907067","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@daml-tools/daml-lint","version":"0.3.9","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.9","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"56ff86d938e3690f692ac02e5bb2e2f7b5ea9a57","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.9.tgz","fileCount":4,"integrity":"sha512-LHrcaCk+KzmK9trjOY9jc6T7JetcM7xzvz/8YmkQ7vSLKj1Nq5jUqMY1Bt4+lCI0SKVfdyzevl2un6vWZYKFtw==","signatures":[{"sig":"MEYCIQCW5SFyWoumQVdgYqstJl1SJB8Qmdqgt8jqGGnX48ufSAIhAP1FXnt5Q1IGXpKwy05jH6vzKeyM80Gum4Plf1UXa+0O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50829},"engines":{"node":">=18"},"gitHead":"cc4613aa8b679c5a326062c50bd4ba8627c2c73f","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.9","@daml-tools/daml-lint-win32-x64":"0.3.9","@daml-tools/daml-lint-linux-arm64":"0.3.9","@daml-tools/daml-lint-darwin-arm64":"0.3.9"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.9_1781836111805_0.6288157782518822","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"@daml-tools/daml-lint","version":"0.3.10","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.10","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"4bd305657e160969f13231f376be8f0489c0a887","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.10.tgz","fileCount":4,"integrity":"sha512-onClZCDZJ9/SkfeI8bN392U1A+qFCK/IXeIsbdj5u100ibU455XYNkgVR+L3kG6Te/pyqg6d4BlLYjx+Jt/5fQ==","signatures":[{"sig":"MEQCIHHWoC7H68g45bMbXyEaiIkRx1jNcuX8WLk3/f8AsYO1AiBf0si4LLIqmomxiUoi+rLLWfGuhF6DpjWkYOhqAEvtHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"d4a90424d27d21004931f8c86349bf43dfe427c3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.10","@daml-tools/daml-lint-win32-x64":"0.3.10","@daml-tools/daml-lint-linux-arm64":"0.3.10","@daml-tools/daml-lint-darwin-arm64":"0.3.10"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.10_1781838020321_0.30005661505788384","host":"s3://npm-registry-packages-npm-production"}},"0.3.11":{"name":"@daml-tools/daml-lint","version":"0.3.11","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.11","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"4f6f0202303015a276bf8062dc1a900f15cc0faa","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.11.tgz","fileCount":4,"integrity":"sha512-QLF0OKecl+GY5oAtXqL/i9iUr+VUitDceACmvpJ/F8mwDHHC5aGPso+hbxA275QcVtw520CeXEcRgftp9Qu/fw==","signatures":[{"sig":"MEUCIH3PVY+MIV/k6o2kzHi1lMP58+UNmdE7VrHU27RamGpQAiEA4QtCeSLuwfR7OmPOFbTH5qjHrtx7WgBxB4yIcNDY7qM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"0ed60c9e92b16848b20db5748d64628512c3c039","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.11","@daml-tools/daml-lint-win32-x64":"0.3.11","@daml-tools/daml-lint-linux-arm64":"0.3.11","@daml-tools/daml-lint-darwin-arm64":"0.3.11"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.11_1781879134574_0.5522812839139033","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"@daml-tools/daml-lint","version":"0.3.12","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.12","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"661566ca753bd6d1552a7f8f98e82eaa5f4598f8","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.12.tgz","fileCount":4,"integrity":"sha512-v2oJgLVf2k+R+Imu1VU6rGTmwaSIJ76S9sbLGYszevsP1Xkcb5j2BOJDlvPnOP6MzJoxVL+5PPbdQRUbvgssJg==","signatures":[{"sig":"MEUCIQCQw/+ZXPzLlRNVwjQ8lB1f/FIrO5qkKSExFKfhOg2ENQIgRBHSsSQ8CX26jEBS3AmANXzpQBU0pD340ReQoHs4klQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"ce9096622a95f27f348ec5b9aa8f8b107d0eaa00","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.12","@daml-tools/daml-lint-win32-x64":"0.3.12","@daml-tools/daml-lint-linux-arm64":"0.3.12","@daml-tools/daml-lint-darwin-arm64":"0.3.12"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.12_1782138227742_0.07352938750659832","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"@daml-tools/daml-lint","version":"0.3.13","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.13","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"8138f16ae3bddef8193537556770db1c0611bf2b","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.13.tgz","fileCount":4,"integrity":"sha512-9Ndjdh6XmkAjCcjyYzE8JJxdAu8xZ6UhKLd55kndzlGVsb8ru4cNIfnaIs5/JqM0YrKudgRkcG8EzNyreUy77Q==","signatures":[{"sig":"MEUCIB44eY41xEKLLxSVK9jKt6yCUZa/6ZRPGWOIIHc9OQfqAiEAqFiWxMoltg3VuiNl3m0SvTR1bGPaPyJ036KojZoVZV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"2c762b8523be6838eef4bfff2f2ad70be88b213a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.13","@daml-tools/daml-lint-win32-x64":"0.3.13","@daml-tools/daml-lint-linux-arm64":"0.3.13","@daml-tools/daml-lint-darwin-arm64":"0.3.13"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.13_1782168194009_0.604084063833805","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"@daml-tools/daml-lint","version":"0.3.14","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.14","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"acc708096cab7bcc3d4c18c25e1dc1c97b1fb018","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.14.tgz","fileCount":4,"integrity":"sha512-6CJn219Sp7FS36Z36tYjSr3hh0gdZuPYJgvpCUKwELRmM1I3dqrWw4XgcA986/ifqD8sW7gw4DrlV6zdUk6Kuw==","signatures":[{"sig":"MEQCIEcjxBAK6PNgHYYkHytEKfFEYL3U0WX97ZnLuK7TbZSoAiA4psKwE/1ETniRBjVIQfCaZnA+bdf/+lzuMhm3bvDeBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"ff51805d2463cf2c977498858b9591b3fb79060f","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.14","@daml-tools/daml-lint-win32-x64":"0.3.14","@daml-tools/daml-lint-linux-arm64":"0.3.14","@daml-tools/daml-lint-darwin-arm64":"0.3.14"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.14_1782171444151_0.695807197648487","host":"s3://npm-registry-packages-npm-production"}},"0.3.15":{"name":"@daml-tools/daml-lint","version":"0.3.15","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.15","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"0494f3f03ab8cd1b0efa25f7faab45fac1b21923","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.15.tgz","fileCount":4,"integrity":"sha512-1Gd0mEdQX+4AOq4HCeCBhx2Rk3YOnF/GPKdT6ajtXYIJBsnInCtOreOypZmrjR0y4JnO6jc4L7fbListi97M2Q==","signatures":[{"sig":"MEUCIGl2TBaRvyT4bt8a9k3qDH5FMmtf67EZfl2o68xZ6AaNAiEAl/Fh9nlXmu6FxtrXnVZW7AG8nfVMirEGlJpuHRkiK1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"75b896403b333bb99dfba971c78d967500303685","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.15","@daml-tools/daml-lint-win32-x64":"0.3.15","@daml-tools/daml-lint-linux-arm64":"0.3.15","@daml-tools/daml-lint-darwin-arm64":"0.3.15"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.15_1782183661489_0.7905833364118429","host":"s3://npm-registry-packages-npm-production"}},"0.3.16":{"name":"@daml-tools/daml-lint","version":"0.3.16","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.16","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"2fc09bb7c48e64de8e6caedc363b1122b71d8d53","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.16.tgz","fileCount":4,"integrity":"sha512-KZxZ88g6ynOPTBxLYdZRc+mwDJ7dF85Ui6sORD2VkqN6YFjnZK6TB6dseae9Va+y51dlWlflT0VFMj/TU8OiWg==","signatures":[{"sig":"MEUCIFZnpcMyvDxF3tZ1dQ1pnpkJtHdzJa+O/98eTyo5C1yLAiEAweZ68BrtifRLfhuAN8YgAtb9sHR89rtA6Zp5v67gwjg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"d1de009c2aa35aecade85bc33bcc56cd27c40619","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.16","@daml-tools/daml-lint-win32-x64":"0.3.16","@daml-tools/daml-lint-linux-arm64":"0.3.16","@daml-tools/daml-lint-darwin-arm64":"0.3.16"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.16_1782184707767_0.8915487515856952","host":"s3://npm-registry-packages-npm-production"}},"0.3.17":{"name":"@daml-tools/daml-lint","version":"0.3.17","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.17","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"3781017b541ef3e2ecaef251f670c13a9fd661b8","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.17.tgz","fileCount":4,"integrity":"sha512-1l81YPPCCtfIodOKz/UtPN0scR5XD1hupNhMi5X+dmBoqZ+b2Y7hnUKOrI60LLl78Gfv4GtzLmP31YxOIw6JWA==","signatures":[{"sig":"MEUCIQCP5Ssv18ulJKGVpdmhlFvZrenHGpw76e+f84jZlx4OIgIgEBWvFua4DDWB11cDbDIsHKr38iia6pnkJRD5h0DyNno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"51aea492c0bd731b45f3269ac8c71d13b50c69b6","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.17","@daml-tools/daml-lint-win32-x64":"0.3.17","@daml-tools/daml-lint-linux-arm64":"0.3.17","@daml-tools/daml-lint-darwin-arm64":"0.3.17"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.17_1782237314769_0.17228147607704436","host":"s3://npm-registry-packages-npm-production"}},"0.3.18":{"name":"@daml-tools/daml-lint","version":"0.3.18","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.3.18","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"20fa4271cdd3d49912f70fc2837e850ff3199f6b","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.3.18.tgz","fileCount":4,"integrity":"sha512-bkD/FIAB1AHh68zXCvweh/dCMbfyxv60e7pmnnClqmZqym5vcuMFa5k5GeBehOLnI8UBcvPcqqh5uv+NtQ76Vg==","signatures":[{"sig":"MEUCIElriaPDQeEA1Dpe40hi3nYMr99cf2oMZTf5y9WnofTFAiEAxOkPnMFqHc/sXoj3OHMeXz7A6bAOD7osgNGV2XGrD1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50834},"engines":{"node":">=18"},"gitHead":"de60e62caffd9f0bbbafefe1825c37f1cd4952bb","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.3.18","@daml-tools/daml-lint-win32-x64":"0.3.18","@daml-tools/daml-lint-linux-arm64":"0.3.18","@daml-tools/daml-lint-darwin-arm64":"0.3.18"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.3.18_1782238996179_0.11862512557727323","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@daml-tools/daml-lint","version":"0.4.0","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.4.0","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"60a3311e5a9808e34cda7f39ebdb6978d4827ecb","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.4.0.tgz","fileCount":4,"integrity":"sha512-fjUtFZ8vUNOi5trERP64oIZVu6IkcWAVpqXd6ZTf7FkK8T6SNjnatd3MkXBJ8mLWlIkdEWhb4JwsB36Nn41kmw==","signatures":[{"sig":"MEUCIQD+4sWNM5MgVpE7Qjk0hFVbV5YZFx+9UqWdZzz+0MaAfwIgUIvSizyfLKFViFDyDJp5UEIbseLXxbrcqrKXac5xhSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50829},"engines":{"node":">=18"},"gitHead":"f570a0b25f7e765ea82a34f4b519ccc4b355b3f4","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.4.0","@daml-tools/daml-lint-win32-x64":"0.4.0","@daml-tools/daml-lint-linux-arm64":"0.4.0","@daml-tools/daml-lint-darwin-arm64":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.4.0_1782242681380_0.9721371954277036","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@daml-tools/daml-lint","version":"0.5.0","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.5.0","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"a75ba3a60e81c7706e32cdbf00fd9be8e996787c","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.5.0.tgz","fileCount":4,"integrity":"sha512-vb2MySdgYEoM13Co81Rc0cw+m/agEtp1x4fFtnqbFR26V2+AyMTZywQ+WdaeUaNTRr1nFmKmZ5CaGg3Ioo5AWw==","signatures":[{"sig":"MEQCIG19V38U6E7f3Nt9npaJ4ACTKEgll59+l5DU6WrHdFxOAiABe0dMAnTzzs/yHW5H4f/CwxXeVWMvdJHV8MHKg8tntg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50829},"engines":{"node":">=18"},"gitHead":"dab818c2153c1fe772f3278a38bee21aeee18f72","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.5.0","@daml-tools/daml-lint-win32-x64":"0.5.0","@daml-tools/daml-lint-linux-arm64":"0.5.0","@daml-tools/daml-lint-darwin-arm64":"0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.5.0_1782246143980_0.7510831403377152","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@daml-tools/daml-lint","version":"0.6.0","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.6.0","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"7ffe054786db2bdbe773744b4d91fea5a3b9485d","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.6.0.tgz","fileCount":4,"integrity":"sha512-PBTgKqJCzh641TKeSFdXf83uCrIdMr0Jp3iLrHPJR/Y6DQ0DGzT87YkHmGVGpWVGd2JGacDDC5G0FM6NJaVPuA==","signatures":[{"sig":"MEUCIQCiIMxJXA/zyYCvqjG7G0kC4BmfHN9xEm23Xf2uU2w4cQIgK/t+VU/cFRvfx51z5DSWj+oK3FhOgNVrzSRqWns6zRc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51032},"engines":{"node":">=18"},"gitHead":"37bba34c1fdbd5a0f936ca22992c2efb07759b48","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.6.0","@daml-tools/daml-lint-win32-x64":"0.6.0","@daml-tools/daml-lint-linux-arm64":"0.6.0","@daml-tools/daml-lint-darwin-arm64":"0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.6.0_1782255825526_0.17071693998517623","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@daml-tools/daml-lint","version":"0.6.1","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.6.1","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"171bf41c6e4dbe7226c32992d6bb9275bfa4ff91","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.6.1.tgz","fileCount":4,"integrity":"sha512-Ecp9aa61nGvV+qw2i2v1VwRGs1vXnLuPIZPLZnHn6Ji/LGHajiCJsTVZ4Hx2OM+cGPGpUGSMvMRM8XOlCozLbQ==","signatures":[{"sig":"MEYCIQCWWnTY+J0J1DHGCKrO+4g7Mb0htQ61Rk4Pat13Rj7jYwIhAO/Zyemom0V/6mQjcJrbW5k3aBQdj+QNCF1PICn8o+Bx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51032},"engines":{"node":">=18"},"gitHead":"81c70e3cf5de7cca9b223566c1514e2ada94623c","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.6.1","@daml-tools/daml-lint-win32-x64":"0.6.1","@daml-tools/daml-lint-linux-arm64":"0.6.1","@daml-tools/daml-lint-darwin-arm64":"0.6.1"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.6.1_1782260055548_0.3982458243621081","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@daml-tools/daml-lint","version":"0.6.2","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.6.2","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools#readme","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"50d09b01bcfb58f0758695fcd1c215b1d772d810","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.6.2.tgz","fileCount":4,"integrity":"sha512-rqAm7zXCb6imhswxrWBb/I4xK2cASIMebGojVh3I8HT+1P8qOlpz3JDefGBiRWyGGuWobMZ3BUJOf7mzaLabng==","signatures":[{"sig":"MEUCIQCHNDOXb+jqx4/UZm1Q6aK1hRAAEILDv7svBWdoqcBPfwIgHQsQzxO0Rb8Qf8uSfs755RJn8OwJk12volsjJ8ShJ0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51032},"engines":{"node":">=18"},"gitHead":"4f6db2666e6d9be9271e1dc9b44957ee31553f0e","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.6.2","@daml-tools/daml-lint-win32-x64":"0.6.2","@daml-tools/daml-lint-linux-arm64":"0.6.2","@daml-tools/daml-lint-darwin-arm64":"0.6.2"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.6.2_1782265015469_0.03871582097868309","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@daml-tools/daml-lint","version":"0.7.0","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.7.0","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"b3f5cf040237cafca87558406801da6024d49ed6","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.7.0.tgz","fileCount":4,"integrity":"sha512-wyPqK6S0fuZvA56upX5kqhT1gexnj+06l09e4IAUcEh7A/B91y0P54T5dCUh4fgEIpOUK7RiwB0dPdUTiRU7CA==","signatures":[{"sig":"MEYCIQDS8VTM705Vv+nvZL84uc0ENYni1cNlzQIPhY8BghM7RQIhAMxh0KVqr7rHL5S5llQ6TRU1iKelkpoJ5KjuZq86CZc8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51601},"engines":{"node":">=18"},"gitHead":"9c2b423fac249f994b01caeebdaa87065bc4bd42","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.7.0","@daml-tools/daml-lint-win32-x64":"0.7.0","@daml-tools/daml-lint-linux-arm64":"0.7.0","@daml-tools/daml-lint-darwin-arm64":"0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.7.0_1782272682269_0.3267917048620588","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@daml-tools/daml-lint","version":"0.8.0","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.8.0","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"7f6b6666d1214a4ee7a2d27891c00052928cd3d6","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.8.0.tgz","fileCount":4,"integrity":"sha512-ZvavywPcoCcpCgiawUMwgRSpiwWBcz98WcVn8KidU2GzrXazN7KncwYdTIqmp9QXzOCzSu+M3w3ONk4emX+3Pw==","signatures":[{"sig":"MEUCIQC3cfyVEsS/oVk2e9o4V9mzxlPKPe2OptC9YKaVlbcjAQIgQQCcFFvl0EIsMpqWPq1gMysX20c/v8SBvKNWjVERUaI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52279},"engines":{"node":">=18"},"gitHead":"a665785c5b0ec79cca56e9e95c29e970032c8048","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.8.0","@daml-tools/daml-lint-win32-x64":"0.8.0","@daml-tools/daml-lint-linux-arm64":"0.8.0","@daml-tools/daml-lint-darwin-arm64":"0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.8.0_1782304345066_0.9429863871188615","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@daml-tools/daml-lint","version":"0.8.1","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.8.1","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"de785b78a40f20ee51fdb9351786079206e908a6","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.8.1.tgz","fileCount":4,"integrity":"sha512-s01ZPW+CkiN3kc3hhiqz+Py0usInyKyuhsorZF8Sgd/XZ4hpSCYJRHlYUlAUd6ixjTXF0Bwx7ALag2GsaS3mxg==","signatures":[{"sig":"MEUCIQDAYhFtMwJWVqIk9zoRBdkpf5bHwwRgQ/q+N6K/9ugrDgIgUwY2OdA9S103KxE7dZMrUyVS3GTTbSnhfriTUSxy43w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52279},"engines":{"node":">=18"},"gitHead":"8758f332a951237595653eb28e19942c3bfef68c","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.8.1","@daml-tools/daml-lint-win32-x64":"0.8.1","@daml-tools/daml-lint-linux-arm64":"0.8.1","@daml-tools/daml-lint-darwin-arm64":"0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.8.1_1782304783173_0.026927623885171004","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@daml-tools/daml-lint","version":"0.9.0","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.9.0","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"dfd7122223c1b711d6b81b56744f3cc0830f693b","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.9.0.tgz","fileCount":4,"integrity":"sha512-niYli/oLaRe/PMowIgNGxpGOgcGjuJznBpF2F64N4BAfNmaQzZIYeycHN4INo1AKX2fAlnxx47h0XacO2avSKQ==","signatures":[{"sig":"MEQCIAmvXcOk6i0sfJHUN4+81vHlT5hxqLxboBafBJatwi5+AiAPPtdKjjduADzMzsG3VvASAYoix6obBLRfM6khCf4FeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53232},"engines":{"node":">=18"},"gitHead":"a7296ef2088b53b153f404ffc6ba11b737f4b9dc","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.9.0","@daml-tools/daml-lint-win32-x64":"0.9.0","@daml-tools/daml-lint-linux-arm64":"0.9.0","@daml-tools/daml-lint-darwin-arm64":"0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.9.0_1782417556795_0.007115342601802688","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@daml-tools/daml-lint","version":"0.9.1","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.9.1","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"8d7c2d2b3e3737f2bb7f8a9165ac92b8952b0510","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.9.1.tgz","fileCount":4,"integrity":"sha512-wEaC1A2f6Kf+S1Dk2N3SddesQGgFlolbiZVuhUIRuvQQhUOFo6Lz1T3gX1pcw2BcEuclScdwfIqtLSoKUKN/Tg==","signatures":[{"sig":"MEUCIQC6+q+7u7EmbuYwE04PS79UXqZiGUQqB8CZwfm70vU+VgIgSX3UUkaJ80a28K813ECYs9ppepQ3W9qwDyDXvIOKLrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53232},"engines":{"node":">=18"},"gitHead":"a5e465f978b4f121e81c3fc8c8499749520c51a2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.9.1","@daml-tools/daml-lint-win32-x64":"0.9.1","@daml-tools/daml-lint-linux-arm64":"0.9.1","@daml-tools/daml-lint-darwin-arm64":"0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.9.1_1782421786023_0.8210794137956132","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@daml-tools/daml-lint","version":"0.9.2","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.9.2","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"e20c6ce5bfeac8c8e1cedb279080e4e9b99ab3c3","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.9.2.tgz","fileCount":4,"integrity":"sha512-KKViiZ27JBB0/yck4fMnXFpazClkv+aH+ZPYZKl6nMiw9s7g09aE+s1k5BANCcdyXshcWii9HllY1+YSgWDQ5w==","signatures":[{"sig":"MEUCIQD6G3k3PcrWWSU+ZipLUbNZB/u7g9E8G3IiGthOa8hlBQIgLrQjv/JBhfUZFQ9P/q9nRcoUW2bzbwy8xtA0dGaAUM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53508},"engines":{"node":">=18"},"gitHead":"78cf40c463692d77be4bb83e73c0a5ff51902c7d","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.9.2","@daml-tools/daml-lint-win32-x64":"0.9.2","@daml-tools/daml-lint-linux-arm64":"0.9.2","@daml-tools/daml-lint-darwin-arm64":"0.9.2"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.9.2_1782498587364_0.2676202927222058","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@daml-tools/daml-lint","version":"0.9.3","keywords":["daml","linter","static-analysis","smart-contracts","security"],"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","_id":"@daml-tools/daml-lint@0.9.3","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"homepage":"https://github.com/stevennevins/daml-tools","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"bin":{"daml-lint":"bin/daml-lint.js"},"dist":{"shasum":"aec4fdd00f38e2c826fdc75facdd2914b2259795","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.9.3.tgz","fileCount":4,"integrity":"sha512-uKWtJU+cLGCxtiHpRWGh/aGfrDNEdgjpy2oPEPZEaieAlkefwr2WHYPId3o79Y0ma6KvyvoJeeLbQAjc1YKemA==","signatures":[{"sig":"MEQCIAPB06ClBIY16H4g/o9tY5njSphP1pvZXnmbUh52naDlAiAlSSO0cqmCc+wNP5DTm73hL7LuFSweHcLUjVAcU1n+2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54137},"engines":{"node":">=18"},"gitHead":"cde1a92b224ec48c49ecb9f5d98301e4a3615a5f","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"repository":{"url":"git+https://github.com/stevennevins/daml-tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Static analysis scanner for Daml smart contracts","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@daml-tools/daml-lint-linux-x64":"0.9.3","@daml-tools/daml-lint-win32-x64":"0.9.3","@daml-tools/daml-lint-linux-arm64":"0.9.3","@daml-tools/daml-lint-darwin-arm64":"0.9.3"},"_npmOperationalInternal":{"tmp":"tmp/daml-lint_0.9.3_1782529196047_0.798919018775702","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@daml-tools/daml-lint","version":"0.9.4","description":"Static analysis scanner for Daml smart contracts","keywords":["daml","linter","static-analysis","smart-contracts","security"],"homepage":"https://github.com/stevennevins/daml-tools","license":"AGPL-3.0-only","author":{"name":"Steven Nevins"},"repository":{"type":"git","url":"git+https://github.com/stevennevins/daml-tools.git"},"bin":{"daml-lint":"bin/daml-lint.js"},"engines":{"node":">=18"},"optionalDependencies":{"@daml-tools/daml-lint-darwin-arm64":"0.9.4","@daml-tools/daml-lint-linux-arm64":"0.9.4","@daml-tools/daml-lint-linux-x64":"0.9.4","@daml-tools/daml-lint-win32-x64":"0.9.4"},"publishConfig":{"access":"public"},"gitHead":"2beb52a1afd71324bca8c918a20d95afbfbed472","_id":"@daml-tools/daml-lint@0.9.4","bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"_nodeVersion":"24.17.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-xnYi1SRoklwvfK6mWWSeoMalgFk9+veR12oqKmGg6zGxyfr9Hgc4TCunB90Ney6U3EzbGb22jdT1KT8DopqS2w==","shasum":"02ff7cbfb768a72f22822030f7154a03eec86eb6","tarball":"https://registry.npmjs.org/@daml-tools/daml-lint/-/daml-lint-0.9.4.tgz","fileCount":4,"unpackedSize":54143,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBl6Sw39KASPfesFhZZ1lVDEyb64ewWsp6C966EkuEZ4AiAVrNzSIN7aHPPR74jcwxto5fFfb4adkcNq+hEXLPpTYg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4141204-789a-4fe8-94a7-ce3d00c018e8"}},"directories":{},"maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/daml-lint_0.9.4_1782578002010_0.5839651178175611"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-18T00:24:27.459Z","modified":"2026-06-27T16:33:22.270Z","0.3.4":"2026-06-18T00:24:27.752Z","0.3.5":"2026-06-18T01:36:05.902Z","0.3.6":"2026-06-18T13:04:57.270Z","0.3.8":"2026-06-18T19:45:41.480Z","0.3.9":"2026-06-19T02:28:31.929Z","0.3.10":"2026-06-19T03:00:20.456Z","0.3.11":"2026-06-19T14:25:34.708Z","0.3.12":"2026-06-22T14:23:47.876Z","0.3.13":"2026-06-22T22:43:14.141Z","0.3.14":"2026-06-22T23:37:24.286Z","0.3.15":"2026-06-23T03:01:01.614Z","0.3.16":"2026-06-23T03:18:27.879Z","0.3.17":"2026-06-23T17:55:14.891Z","0.3.18":"2026-06-23T18:23:16.334Z","0.4.0":"2026-06-23T19:24:41.507Z","0.5.0":"2026-06-23T20:22:24.183Z","0.6.0":"2026-06-23T23:03:45.680Z","0.6.1":"2026-06-24T00:14:15.700Z","0.6.2":"2026-06-24T01:36:55.634Z","0.7.0":"2026-06-24T03:44:42.434Z","0.8.0":"2026-06-24T12:32:25.236Z","0.8.1":"2026-06-24T12:39:43.319Z","0.9.0":"2026-06-25T19:59:16.946Z","0.9.1":"2026-06-25T21:09:46.157Z","0.9.2":"2026-06-26T18:29:47.588Z","0.9.3":"2026-06-27T02:59:56.174Z","0.9.4":"2026-06-27T16:33:22.138Z"},"bugs":{"url":"https://github.com/stevennevins/daml-tools/issues"},"author":{"name":"Steven Nevins"},"license":"AGPL-3.0-only","homepage":"https://github.com/stevennevins/daml-tools","keywords":["daml","linter","static-analysis","smart-contracts","security"],"repository":{"type":"git","url":"git+https://github.com/stevennevins/daml-tools.git"},"description":"Static analysis scanner for Daml smart contracts","maintainers":[{"name":"snevins","email":"mosaics.06-equinox@icloud.com"}],"readme":"# daml-lint\n\n[![CI](https://github.com/stevennevins/daml-tools/actions/workflows/ci.yml/badge.svg)](https://github.com/stevennevins/daml-tools/actions/workflows/ci.yml)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n\n> [!WARNING]\n> This software is experimental and not intended for production use. Use at your own risk.\n\nStatic analysis scanner for [Daml](https://www.digitalasset.com/developers) smart contracts. Catches security vulnerabilities and anti-patterns through AST pattern matching, similar to what [Slither](https://github.com/crytic/slither) does for Solidity.\n\nPart of the [daml-tools](https://github.com/stevennevins/daml-tools) workspace.\nParsing is the shared [`daml-parser`](https://crates.io/crates/daml-parser) crate — lexer (comments,\nstrings, layout-aware spans) → Haskell offside-rule layout resolution →\nrecursive-descent parser producing a typed AST with positions on every node.\ndaml-lint lowers that AST to a rule-facing IR and runs detectors over it. Files\nthat fail to parse degrade to partial structure with a diagnostic on stderr\n(`file:line:col`); a scan never aborts on bad input.\n\n## Documentation\n\nThe workspace docs split task guides, reference, and design background:\n\n- [Scan Daml source](https://github.com/stevennevins/daml-tools/blob/main/docs/how-to/scan-daml.md) for CLI usage patterns\n- [Write a custom rule](https://github.com/stevennevins/daml-tools/blob/main/docs/tutorials/write-a-daml-lint-custom-rule.md)\n  for a guided first external rule\n- [Custom rule contract](https://github.com/stevennevins/daml-tools/blob/main/docs/reference/daml-lint-custom-rule-contract.md)\n  for the JavaScript runtime contract and TypeScript types\n- [CLI reference](https://github.com/stevennevins/daml-tools/blob/main/docs/reference/cli.md) for options, output formats, and\n  exit codes\n- [Crate reference](https://github.com/stevennevins/daml-tools/blob/main/docs/reference/crates.md) for features and public\n  modules\n- [Rule authoring model](https://github.com/stevennevins/daml-tools/blob/main/docs/explanation/daml-lint-rule-authoring.md)\n  for why TypeScript authoring is bundled to JavaScript\n- [Workspace architecture](https://github.com/stevennevins/daml-tools/blob/main/docs/explanation/workspace-architecture.md)\n  for how `daml-lint` uses `daml-parser`\n\n## Detectors\n\n| Detector | Severity | Description |\n|----------|----------|-------------|\n| `missing-ensure-decimal` | HIGH | Template has Decimal fields without an `ensure` clause bounding them to > 0 |\n| `unguarded-division` | HIGH | Division operation without a prior guard checking the denominator is non-zero |\n| `missing-positive-amount` | HIGH | Choice accepts amount/quantity/price parameter without asserting it is positive |\n| `archive-before-execute` | HIGH | Contract archived before a `try/catch` block — contract is lost if execution fails |\n| `head-of-list-query` | MEDIUM | Pattern match on head of `queryFilter` result — non-deterministic ordering risk |\n| `unbounded-fields` | MEDIUM | Text, List, or TextMap fields without size bounds in the `ensure` clause |\n\n## Installation\n\nFor JavaScript/TypeScript projects that want `daml-lint` as a dev dependency:\n\n```sh\nnpm install --save-dev @daml-tools/daml-lint\nnpx daml-lint ./daml\n```\n\nCargo installs require [Rust](https://rustup.rs/) 1.87+ (the `rquickjs`\ndependency needs rustc 1.87).\n\n```sh\ncargo install daml-lint\n```\n\nOr straight from the workspace repo:\n\n```sh\ncargo install --git https://github.com/stevennevins/daml-tools daml-lint\n```\n\nOr from a local checkout:\n\n```sh\ngit clone https://github.com/stevennevins/daml-tools.git\ncd daml-tools\ncargo install --path crates/daml-lint\n```\n\n## Library features\n\nThe default features build the published CLI and custom-rule engine:\n\n```toml\n[dependencies]\ndaml-lint = \"0.9.4\"\n```\n\nLibrary consumers that only need parser lowering and the rule-facing IR can\navoid the CLI parser and QuickJS runtime:\n\n```toml\n[dependencies]\ndaml-lint = { version = \"0.9.4\", default-features = false }\n```\n\nRust-facing finding locations, parser diagnostics, and IR spans use the\ncoordinate newtypes from `daml-syntax` (`LineNumber`, `CharColumn`,\n`Utf16Offset`, and `ByteOffset`) so byte, UTF-16, line, and column coordinates\ncannot be mixed accidentally. JSON, SARIF, and custom-rule JavaScript output\nstill serialize those coordinates as numbers.\n\nThe `js-runtime` feature enables the QuickJS-backed runtime used by shipped\nbuilt-ins. The `custom-rules` feature implies `js-runtime` and enables loading\nuser-provided rule files through `--rules` and configured plugin packages.\nShipped built-ins are authored in TypeScript and embedded as generated JavaScript; no TypeScript\ntoolchain is required at runtime. The shipped detectors are registered through\n`create_builtin_detectors()` rather than exposed as individual Rust detector\nmodules. The `cli` feature enables the `daml-lint` binary and implies `js-runtime`.\n\n## Usage\n\nScan a single file:\n\n```sh\ndaml-lint src/MyContract.daml\n```\n\nScan a directory recursively:\n\n```sh\ndaml-lint ./daml/\n```\n\nChoose an output format:\n\n```sh\ndaml-lint ./daml/ --format sarif    # SARIF JSON (GitHub / IDE integration)\ndaml-lint ./daml/ --format markdown # Human-readable (default)\ndaml-lint ./daml/ --format json     # Machine-readable JSON\ndaml-lint ./daml/ --rule missing-ensure-decimal # run one built-in rule\ndaml-lint ./daml/ --group recommended           # run a rule group\n```\n\nWrite results to a file:\n\n```sh\ndaml-lint ./daml/ --format sarif --output report.sarif\n```\n\n### Custom detectors\n\nDefine your own detectors as AST rule scripts and pass them with `--rules`\n(repeatable), in the style of [solhint custom rules](https://github.com/protofire/solhint/blob/master/docs/writing-plugins.md):\n\n```sh\ndaml-lint ./daml/ --rules my-rule.js --rules another-rule.js\n```\n\nInstalled plugin packages can also be enabled from `./daml.yaml`:\n\n```yaml\ndaml-tools:\n  lint:\n    plugins: [template]\n    plugin-paths: [./plugins]\n    rules:\n      missing-ensure-decimal: off\n      template/template-requires-ensure:\n        - warning\n        - allowEmptyEnsure: false\n```\n\n`template` resolves to `daml-lint-plugin-template` in `node_modules`; use\n`plugin-paths` for local package roots during development. Rule options from the\narray form are exposed to the rule as global `CONFIG`.\n\nA rule is TypeScript/JavaScript (executed by an embedded QuickJS engine):\nconstants for metadata, plus visitor functions named after the node types you\ncare about — like solhint's `ContractDefinition(node)` callbacks. Write rules\nin TypeScript against [examples/daml-lint.d.ts](examples/daml-lint.d.ts) for\ntype checking and autocomplete. The `globalThis.__daml_lint_rule` assignment is\nthe TypeScript-checked rule object; the current runtime still discovers\ntop-level metadata constants and visitor `function` declarations:\n\n```typescript\nimport type { Template } from \"./daml-lint\";\n\nconst NAME = \"template-requires-ensure\";\nconst SEVERITY = \"medium\";\nconst DESCRIPTION = \"Every template must declare an ensure clause\";   // optional\n\nfunction on_template(template: Template): void {\n  if (template.ensure_clause === null) {\n    report(template, `Template '${template.name}' has no ensure clause`);\n  }\n}\n\nglobalThis.__daml_lint_rule = { NAME, SEVERITY, DESCRIPTION, on_template };\n```\n\nthen compile to the JavaScript file you pass to `--rules`:\n\n```sh\nnpx esbuild my-rule.ts --bundle --outfile=dist/my-rule.js\n```\n\nType-only imports are erased by the build. Runtime helper imports must be\nbundled because the rule engine runs JavaScript without `import`, `require`,\nfilesystem, or network APIs. Plain JavaScript rules work directly — the compile\nstep is only for TypeScript.\n\nVisitors (define any subset, at least one):\n\n| Function | Called for | Node fields |\n|---|---|---|\n| `on_template(template)` | each template | `name`, `fields`, `signatory_exprs`, `observer_exprs`, `ensure_clause` (`null` if absent), `key_expr`, `key_type`, `maintainer_exprs`, `choices`, `interface_instances`, `span` |\n| `on_choice(choice, template)` | each choice | `name`, `consuming`, `controller_exprs`, `observer_exprs`, `parameters`, `return_type`, `body`, `span` |\n| `on_field(field, template)` | each template field | `name`, `type_`, `span` |\n| `on_function(function)` | each top-level function | `name`, `type_signature`, `body`, `span` |\n| `on_import(import)` | each import | `module_name`, `qualified`, `alias` |\n| `on_interface(interface)` | each interface | `name`, `requires`, `viewtype`, `methods`, `choices`, `span` |\n| `check(m)` | once per module | `ir_version`, `name`, `file`, `imports`, `templates`, `interfaces`, `functions`, `source` |\n\nReport findings with `report(node, message)` (location taken from the node's\n`span`) or `report(line, message)`. Pass `report(node, message, evidence)` when\nthe report should show structural evidence instead of the source line. The\nrule's `SEVERITY` applies to all its findings. Node shapes are declared in\n[examples/daml-lint.d.ts](examples/daml-lint.d.ts) and mirror the IR in\n[src/ir.rs](src/ir.rs); statement nodes in `body` are objects keyed by kind,\ne.g. `\"Create\" in stmt`.\n\nChoice consumption and import forms are surfaced as string enums (`choice.consuming`\nis `\"consuming\" | \"non-consuming\"`; `import.qualified` is `\"qualified\" | \"unqualified\"`)\nto avoid boolean ambiguity.\n\nStatements carry a typed expression AST: `stmt.Let.value`,\n`stmt.Assert.condition_expr`, `stmt.Exercise.cid`/`.argument`, and\n`stmt.Other.expr` are `Expr` nodes — tagged unions like\n`{ BinOp: { op: \"/\", lhs, rhs, span } }` with a 1-based `span` on every\nnode (see the `Expr` type in the .d.ts). Type-bearing fields carry `TypeNode`\ntrees such as `{ Con: { name: \"Party\", qualifier: null, span } }`,\n`{ App: { head, args, span } }`, and `{ Lit: { kind: \"Text\", value: \"cid\", span } }`\nfor type-level literals (for example `HasField \"cid\"`); type spans include `line`/`column`,\nJavaScript string offsets (`start`/`end`, suitable for\n`m.source.slice(start, end)`), and parser byte offsets\n(`byte_start`/`byte_end`). Compatibility-only raw-text fields and rendered\nparty-name lists were removed in the breaking custom-rule surface, so rules\nshould match on structure, not substrings.\n[examples/unguarded-division-ast.ts](examples/unguarded-division-ast.ts)\nshows a denominator-guard check written entirely on typed nodes.\n\nRemoved v1/v2 compatibility fields and their structured replacements:\n\n| Removed field | Use instead | Notes |\n|---|---|---|\n| `choice.body_raw`, `function.body_raw` | `body` (`Statement[]`) | Match statements structurally; only `stmt.Other.raw` / `Expr.Unknown.raw` preserve unsupported source text. |\n| `template.ensure_clause.raw_text` | `ensure_clause.expr` (`Expr`) | Match the condition structurally. |\n| `stmt.Let.expr` | `stmt.Let.value` (`Expr`) | The bound expression. |\n| `stmt.Assert.condition` | `stmt.Assert.condition_expr` (`Expr`) | The condition expression only. |\n| `stmt.Fetch.cid_expr`, `stmt.Archive.cid_expr`, `stmt.Exercise.cid_expr` | `.cid` (`Expr`) | The contract-id expression. |\n| `stmt.Create.raw` | `template_name` + `argument` (`Expr`) | `argument` is the created payload. |\n| `stmt.Exercise.raw` | `cid` + `choice_name` + `argument` (`Expr`) | `argument` is the choice argument, if present. |\n| `choice.controllers` | `controller_exprs` (`Expr[]`) | Flatten list expressions in the rule if you want list-literal party semantics. |\n| `choice.authorities` | `authority_exprs` (`Expr[]`) | Source-level `authority` metadata clauses on choices. |\n| `interface_instance.view` | `view_expr` (`Expr \\| null`) | Source-level `view = ...` on interface instances, distinct from method names. |\n| `case_alt.guards` | `branches[].guards` (`CaseGuard[]`) | Boolean and pattern guards on case alternative branches. |\n| `case_alt.where` | `where_bindings` (`LetBinding[]`) | Alternative-local `where` helper bindings on case alternatives. |\n| `import.package` | `package_label` (`string \\| null`) | Decoded package string from `import \"pkg\" Module`; not an LF `PackageId`. |\n| `template.signatories`, `template.observers` | `signatory_exprs`, `observer_exprs` (`Expr[]`) | Structured party expressions only. |\n\n`stmt.Other.raw` and the `Unknown` expression's `raw` are deliberate raw-source\nescape hatches for constructs with no structured form (e.g.\n[examples/no-trace.ts](examples/no-trace.ts) matches source text).\n\nHeads up: visitors must be `function` declarations — arrow functions assigned\nto `const` are not discovered. If a script fails at runtime, the CLI exits 2;\nlibrary callers can use `Detector::try_detect` to receive the rule error\nwithout terminating the host process. `DetectError` preserves the underlying\n`ScriptLoadError` through `std::error::Error::source()` when one is available,\nso library callers can inspect the typed failure chain instead of parsing\nstrings. Rule errors are never swallowed. A runaway loop is interrupted so a\nbroken rule can't hang CI. The engine runs JavaScript\n(ES2023) — no Node APIs, no `require`/`import`, no filesystem or network.\nEach rule's script is evaluated once and its visitors are then called for\nevery module — visitors should be stateless; don't accumulate findings in\ntop-level mutable state across files.\n\n`SEVERITY` is one of `critical`, `high`, `medium`, `low`, `info`. Config can\nalso use `error` (high) and `warning` (medium). Custom rules\nrun alongside the built-in detectors, appear in all output formats, and count\ntoward `--fail-on`. Direct `--rules` names must not collide with built-in\ndetector names or each other. Installed plugin rules are reported under their\nconfigured `plugin/rule` ID.\n\nExamples:\n\n- [examples/template-requires-ensure.ts](examples/template-requires-ensure.ts) — structural check on a single node\n- [examples/consuming-choice-signatory-controller.ts](examples/consuming-choice-signatory-controller.ts) — cross-references choice controllers against template signatories\n- [examples/no-create-in-nonconsuming.ts](examples/no-create-in-nonconsuming.ts) — walks choice body statements, recursing into try/catch\n- [examples/no-trace.ts](examples/no-trace.ts) — banned-token check over raw source lines\n- [examples/unguarded-division-ast.ts](examples/unguarded-division-ast.ts) — expression-level analysis on the typed AST (division denominators vs prior assertions)\n\nEach example is authored in TypeScript and ships with its compiled `.js` under\n[examples/dist/](examples/dist/) - that's the file `--rules` takes. Run\n`npm run build:examples` from this crate to refresh those generated files.\n\nTo check that a rule script parses without running a scan, point the tool at a nonexistent path — rule errors are reported before file discovery. (A valid script then prints `No .daml files found.`, which also exits 2 — go by the message, not the exit code.)\n\nLibrary callers can load custom rules without writing temporary files:\n`detectors::script::load_script_source(label, source)` accepts in-memory\nJavaScript, and `load_script_reader_with_options(label, reader, options)`\naccepts any `std::io::Read` source plus JSON rule `CONFIG`.\n\n### CI gating\n\nUse `--fail-on` to control when the tool returns a non-zero exit code:\n\n```sh\ndaml-lint ./daml/ --fail-on medium   # fail on medium or above\ndaml-lint ./daml/ --fail-on critical # fail only on critical\n```\n\n## Output Formats\n\n- **SARIF** — Standard format for static analysis tools. Integrates with GitHub Code Scanning and IDEs.\n- **Markdown** — Human-readable report grouped by severity. Good for pull request comments.\n- **JSON** — Flat findings array with summary counts. Good for dashboards and aggregation.\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | No findings at or above the `--fail-on` threshold |\n| 1 | One or more findings at or above the threshold |\n| 2 | CLI error (invalid format, no files found, etc.) |\n| 3 | A scanned file had parse errors (scan is not authoritative) |\n\n## Development\n\n```sh\ncargo test\n```\n\nTests run entirely offline: parser and layout integration tests use a vendored\ncopy of the [daml-finance](https://github.com/digital-asset/daml-finance)\nsources under [corpus/daml-finance/](https://github.com/stevennevins/daml-tools/tree/main/corpus/daml-finance) (634 real\n`.daml` files) — shared at the workspace root with `daml-parser` — as a\nground-truth corpus; see\n[corpus/daml-finance/README.md](https://github.com/stevennevins/daml-tools/blob/main/corpus/daml-finance/README.md) for\nprovenance and licensing.\n\n## Public API Stability\n\n`daml-lint` is pre-1.0. The CLI exit codes and documented feature flags are the\nstable user contract for the current 0.9.x line. The rule-facing IR is\nintentionally public for custom rules and library users, but it may gain\nstructure in 0.x minor releases;\ncustom rules should check `ir_version` and match typed nodes rather than raw\nsource substrings. Detector result types such as `Finding`, `Severity`, and\n`DetectError` are non-exhaustive; use their documented fields/accessors and keep\nwildcard arms when matching enums. Patch releases should remain compatible.\n\nBreaking updates introduced in this branch:\n\n- `Severity` no longer implements `Ord`/`PartialOrd`; use `rank()` or\n  `meets_or_exceeds()` for risk-based ordering and thresholds.\n- `Severity::from_str` now returns `SeverityParseError` instead of `()`.\n- `parse_severity` was removed; use `value.parse::<Severity>()` so invalid\n  input preserves `SeverityParseError`.\n- Public IR/report DTO structs are `#[non_exhaustive]`; construct through\n  parser lowering or documented constructors such as `Finding::new`.\n- `parse_daml_with_diagnostics` now returns a named `ParseResult` with fields\n  (`module`, `diagnostics`) instead of a tuple.\n- Rule setting values are now canonical only: `off`, `critical`, `high`,\n  `medium`, `low`, `info` (legacy `warn`/`error` and numeric shortcuts\n  `0`/`1`/`2` are intentionally rejected).\n\n## License\n\nAGPL-3.0-only. See [LICENSE](LICENSE).\n","readmeFilename":"README.md"}