Observed since 20 Oct, 23:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xcompose/sspec
Solidity Smart Contract specification generation tool based on Foundry tests and slang
sspec 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.
This is a reimagining of scopelint's spec command, which generates specifications for source smart contracts based on test files and test names.
This functionality helps not only with understanding your own test suites, but also with reviewing other repositories.
Built using slang.
Install via npm or yarn:
npm i @0xcompose/sspec --save-dev
yarn add @0xcompose/sspec --dev
There are three valid naming conventions for unit testing (according to Foundry best practices):
Testing whole contract:
SourceContractName.t.solSourceContractNameTestTesting single function:
SourceContractName.sourceFunctionName.t.solSourceFunctionName (in PascalCase)Testing features:
SourceContractName.FeatureName.t.solFeatureNameDownload counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
chaiEnvironment{
"local_name": "chai",
"alias": false,
"peer_metadata": null
} | ^5.1.2 | runtime |
mochaEnvironment{
"local_name": "mocha",
"alias": false,
"peer_metadata": null
} | ^11.0.1 | runtime |
@types/chaiEnvironment{
"local_name": "@types/chai",
"alias": false,
"peer_metadata": null
} | ^5.0.1 | runtime |
@types/mochaEnvironment{
"local_name": "@types/mocha",
"alias": false,
"peer_metadata": null
} | ^10.0.10 | runtime |
mocha-suppress-logsEnvironment{
"local_name": "mocha-suppress-logs",
"alias": false,
"peer_metadata": null
} | ^0.5.1 | runtime |
@nomicfoundation/slangEnvironment{
"local_name": "@nomicfoundation/slang",
"alias": false,
"peer_metadata": null
} | ^0.18.3 | runtime |
huskyEnvironment{
"local_name": "husky",
"alias": false,
"peer_metadata": null
} | ^9.1.7 | development |
ts-nodeEnvironment{
"local_name": "ts-node",
"alias": false,
"peer_metadata": null
} | ^10.9.2 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^5.7.2 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | ^22.10.2 | development |
Source distribution
{
"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
}Observed since 20 Oct, 23:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:5aa6bba4f14fa4608dc25af2c1feb133e58f87f80139be105939bb0b6fffa45c