{"_id":"@0xcompose/sspec","_rev":"10-d5396399c4bc2e5a500a562a13644917","name":"@0xcompose/sspec","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.0":{"name":"@0xcompose/sspec","version":"1.0.0","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.0","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"bd8c13f59264c4f33df1a1114d270304efbb4abd","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.0.tgz","fileCount":128,"integrity":"sha512-EZZFjXBFbDeD4rcs6uYPObZz9k12kLY3wpruDH/LR7wloUum3H6QgRmTxQm68dZ4/Dh5cVm8aLWv9tY+F9wUqg==","signatures":[{"sig":"MEYCIQDQG3iha3w8FpGT/n2/bfhtdTdEcnQ4xujLR6Z9jAW7hQIhAJR57VBBLqIctV02I//3lclANZbxoP6+kCbcKGH1pjWu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":322014},"main":"bin/src/index.mjs","gitHead":"afb89ce93acb3b75f3df0db4fcf4f1cc1ade018e","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && chmod +x bin/src/index.mjs && npm link"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"_npmVersion":"10.8.2","description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"_nodeVersion":"18.20.3","dependencies":{"chai":"^5.1.2","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.0_1736147967687_0.12917481764677263","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@0xcompose/sspec","version":"1.0.1","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.1","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"b26f48a0a2073ec367cba70ee8541f6830db1263","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.1.tgz","fileCount":128,"integrity":"sha512-GcPveIyhlGBOacSoNaAuVd2bLOuESuRzwLgg/oL6P4sl0yykAslGPhWh0Lbl/QXUxHEXDoU9WMSPbCc1mC7t9A==","signatures":[{"sig":"MEUCID5cRFH4ab9zPWfXEeE3YrIIfz1Z7Obyf4MpW74Gs/LrAiEAiTL7CIKux0b1YU7gVR7h7nEdXYEyRdpRS+e4RKj4FZA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":321967},"main":"bin/src/index.mjs","gitHead":"afb89ce93acb3b75f3df0db4fcf4f1cc1ade018e","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && chmod +x bin/src/index.mjs && npm link"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"_npmVersion":"10.8.2","description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"_nodeVersion":"18.20.3","dependencies":{"chai":"^5.1.2","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.1_1736148480899_0.7881650608849973","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@0xcompose/sspec","version":"1.0.2","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.2","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"a1dcc98523f0ef6c35fa24c8b636ccf476acf7ef","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.2.tgz","fileCount":124,"integrity":"sha512-ICTHBA5zjfb1ZxZ14dhegnO9uFtJsJYF31tmHiWi2OudONyCAu2Ct7mbCuzMK9aFoE4euU1zT6Sh4g4R8OuwLQ==","signatures":[{"sig":"MEUCIGf90V6tARBwNkbBFjyHkmwlKx7+zrfvcUTiACZQ26mRAiEAgpqLywUdGYdzLxsfXR5E5TOTQuZKRTgOZsFn55CwlVg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259390},"main":"bin/src/index.mjs","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && chmod +x bin/src/index.mjs && npm link"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"dependencies":{"chai":"^5.1.2","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.2_1736148969628_0.35073640040161824","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@0xcompose/sspec","version":"1.0.3","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.3","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"ca3abf2f9c0b158b74ee804d4920528cfd313f6b","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.3.tgz","fileCount":124,"integrity":"sha512-mei7wFASW+fyYjTUDlqcLA4jOS0pYhlQC8Txi+oLpkL9yxyhi5Jwn+kx555rlVtw7pMorClPodSU3unckgbH5g==","signatures":[{"sig":"MEUCIQCjornNvXyGEoZeJQzuvNUPG4of+hJ/qNuNJ5Bwyt6ifwIgK75nUf/OVdf39LA2l3KCqA4s7pzfsDaFxGi4o+We8PU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259380},"main":"bin/src/index.mjs","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && yarn publish --access public"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"dependencies":{"chai":"^5.1.2","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.3_1736149099504_0.41532026586376114","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@0xcompose/sspec","version":"1.0.4","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.4","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"db7b68caa9f889b378a238b2448d86106d648031","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.4.tgz","fileCount":49,"integrity":"sha512-vqKgkQ/6iv017FkBn21URip/IVi1LaZqX71ROglBCjReXrR/e2IKIs38VTvmKIKR1xGB+yYZHRPSZq459KHDuQ==","signatures":[{"sig":"MEYCIQCRAHTfKCG5OR4V7L1FFNVJ3HDrNiqFIMLscQWtCdMYIwIhAJJ2tic3Oo/JsEUhw1AKL3qLfvdeV4q6RJCW2NWqnuDU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":64885},"main":"bin/src/index.mjs","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && yarn publish --access public"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"dependencies":{"chai":"^5.1.2","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.4_1736152036758_0.5254150088084093","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@0xcompose/sspec","version":"1.0.5","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.5","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"ffe7a1c4ba4d1a753b1fea5ae2ae2d8bcee4227a","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.5.tgz","fileCount":49,"integrity":"sha512-a7cqTPVHUeANDCYhDciJrDYtTaOBNCYlInVagXXLt2cw6z+AuOFTNPc/6t42CFGOkMxv48POfscY4kgy07Gvlg==","signatures":[{"sig":"MEUCIAlC2QlKLRJEbfsUieMI7ECtuQ+ONPvG4CtVMA3WIe8XAiEA058hjCZmlFo5A5ovC1Ho0YpneREQ9FBxmV1mqdmgZgo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":64997},"main":"bin/src/index.mjs","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && yarn publish --access public"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"dependencies":{"chai":"^5.1.2","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.5_1736166584944_0.192449035799803","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@0xcompose/sspec","version":"1.0.6","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.6","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"ad0b0333b09aff34a52790a2fd42abce643ef96c","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.6.tgz","fileCount":49,"integrity":"sha512-JKcdBHm4dU8oyswo3+wDgrKo4+qo+CHkhPi8Zpl5MqA7lmM9xmNup7nM5wPHDaf8D70BmTs+W5Z4oMANTJVs5w==","signatures":[{"sig":"MEYCIQCNkh1kFYniBa83CK9jcBfAmR9+oUY9fE1WZrc69F27BQIhAMbZz046dboeqstDWbOsMMI/TNf31a7RQXWraIdwaekr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66529},"main":"bin/src/index.mjs","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && yarn publish --access public","start:help":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/ --help","start:internal":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/ --include-internal"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"dependencies":{"chai":"^5.1.2","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.6_1736325228311_0.2417407286617883","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@0xcompose/sspec","version":"1.0.7","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.7","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"c2fa98ef84704833e7cd60487eaea90ed70a90f0","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.7.tgz","fileCount":50,"integrity":"sha512-nvD02i/PbqfjQ/VMcW33zLwWWwq3WTgWfGryZlhGI0QsmEjDiUMkZ0qKa5DTb3Det24hlpLIjv1LLhUkirXv9A==","signatures":[{"sig":"MEUCID4X6s6EwaZ4lIA60UR1OGAYgJOS/ySx4cifOOIZAVTJAiEA8V08Q4kwq5+tmq456LqUbKsmxqegnaxe1w50CePxK5I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67199},"main":"bin/src/index.mjs","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && yarn publish --access public","start:help":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/ --help","start:internal":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/ --include-internal"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"dependencies":{"chai":"^5.1.2","chalk":"^5.4.1","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.7_1736855449946_0.7300362045169817","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@0xcompose/sspec","version":"1.0.8","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","_id":"@0xcompose/sspec@1.0.8","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"bin":{"sspec":"bin/src/index.mjs"},"dist":{"shasum":"64255708ded7b0785071d79ce5ff2036377fb541","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.8.tgz","fileCount":50,"integrity":"sha512-LYV2Z/W46Y9/tR5gWKRZgqHoO0s6w6SRx6GiveXpHEV964cYLqoSmnjYbx+C+AlL57YYot3u5dcrPZHmFezQXQ==","signatures":[{"sig":"MEQCIBUGr3RTaDJaKWZ11FqZrUCO9SCl9RWMQE50BRiJNt97AiAFwebVqaNiTSx8JxrK6dXRh5g4C3Z/KHuIvjBVGj0+AA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67462},"main":"bin/src/index.mjs","scripts":{"test":"npx tsc && npx mocha bin/test/**","start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","format":"prettier --write .","update":"npx tsc && yarn publish --access public","start:help":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/ --help","start:internal":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/ --include-internal"},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","directories":{},"dependencies":{"chai":"^5.1.2","chalk":"^5.4.1","mocha":"^11.0.1","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","mocha-suppress-logs":"^0.5.1","@nomicfoundation/slang":"^0.18.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sspec_1.0.8_1736858273567_0.13890268411375484","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@0xcompose/sspec","version":"1.0.9","description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","main":"bin/src/index.mjs","bin":{"sspec":"bin/src/index.mjs"},"scripts":{"start":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/","start:help":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/ --help","start:internal":"npx tsc && node bin/src/index.mjs ./samples/src/ ./samples/test/ --include-internal","test":"npx tsc && npx mocha bin/test/**","format":"prettier --write .","update":"npx tsc && yarn publish --access public"},"keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"author":{"name":"0xCompose"},"license":"ISC","dependencies":{"@nomicfoundation/slang":"^0.19.0","@types/chai":"^5.0.1","@types/mocha":"^10.0.10","chai":"^5.1.2","chalk":"^5.4.1","mocha":"^11.0.1","mocha-suppress-logs":"^0.5.1"},"devDependencies":{"@types/node":"^22.10.2","husky":"^9.1.7","ts-node":"^10.9.2","typescript":"^5.7.2"},"_id":"@0xcompose/sspec@1.0.9","dist":{"shasum":"7fa79181d6f7728bee5e0aa05f259c0dc9df0331","integrity":"sha512-QRKvHmkqIHcxX63kNQMh2vvBzA/q5pwrH9HP0c/v5E3zkYkNMZG+0sDGmOYduqh3YM73+79zN6HxkqwIUH0ruA==","tarball":"https://registry.npmjs.org/@0xcompose/sspec/-/sspec-1.0.9.tgz","fileCount":51,"unpackedSize":68054,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICC9EAnjDvrVfOwobxRjfyrHjCbTL5jEOcort5Q1LvnfAiEA77KvMGXcq4xuWCnTERiY7bAREoC/oNuA1VjaMxkiIpk="}]},"_npmUser":{"name":"0xcompose","email":"0xcompose@maat.finance"},"directories":{},"maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sspec_1.0.9_1744625092358_0.32844584787939457"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-06T07:19:27.589Z","modified":"2025-04-14T10:04:52.717Z","1.0.0":"2025-01-06T07:19:27.920Z","1.0.1":"2025-01-06T07:28:01.081Z","1.0.2":"2025-01-06T07:36:09.794Z","1.0.3":"2025-01-06T07:38:19.721Z","1.0.4":"2025-01-06T08:27:16.946Z","1.0.5":"2025-01-06T12:29:45.157Z","1.0.6":"2025-01-08T08:33:48.506Z","1.0.7":"2025-01-14T11:50:50.121Z","1.0.8":"2025-01-14T12:37:53.788Z","1.0.9":"2025-04-14T10:04:52.549Z"},"author":{"name":"0xCompose"},"license":"ISC","keywords":["solidity","specification","slang","foundry","testing","smart","contracts"],"description":"Solidity Smart Contract specification generation tool based on Foundry tests and slang","maintainers":[{"name":"0xcompose","email":"0xcompose@maat.finance"}],"readme":"# sspec\n\nsspec comes from `Solidity SPECification`. Smart contract repositories often lack detailed or even general descriptions of what the repo and its smart contracts do. Only AIs can understand what's going on (not always). This tool was created to improve development and review simplicity.\n\nThis is a reimagining of [`scopelint`'s](https://github.com/ScopeLift/scopelint) `spec` command, which generates specifications for source smart contracts based on test files and test names.\n\nThis functionality helps not only with understanding your own test suites, but also with reviewing other repositories.\n\nBuilt using [slang](https://github.com/NomicFoundation/slang).\n\n## Installation\n\nInstall via npm or yarn:\n\n```bash\nnpm i @0xcompose/sspec --save-dev\n```\n\n```bash\nyarn add @0xcompose/sspec --dev\n```\n\n## Foundry Test Naming Conventions\n\nThere are three valid naming conventions for unit testing (according to Foundry best practices):\n\n1. Testing whole contract:\n   - Test file: `SourceContractName.t.sol`\n   - Test contract: `SourceContractNameTest`\n\n2. Testing single function:\n   - Test file: `SourceContractName.sourceFunctionName.t.sol` \n   - Test contract: `SourceFunctionName` (in PascalCase)\n\n3. Testing features:\n   - Test file: `SourceContractName.FeatureName.t.sol`\n   - Test contract: `FeatureName`\n   - Note: Feature can be anything, including integration tests","readmeFilename":"README.md"}