Skip to content

Conversation

@aquapi
Copy link
Contributor

@aquapi aquapi commented Jan 29, 2025

Description

Add stnl validator with composition and just-in-time mode: https://npmjs.com/package/stnl

Checklist

  • Conducted a self-review of the code changes.
  • Updated documentation, if necessary.
  • Added tests to validate the functionality or fix.

package.json Outdated
"serve": "14.2.4",
"simple-runtypes": "7.1.3",
"spectypes": "2.1.11",
"stnl": "^0.3.3",
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please pin the version

@moltar moltar requested review from DarkGL and hoeck January 30, 2025 01:52
Copy link
Collaborator

@hoeck hoeck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like you added stnl to the tests so you can check this task?

@@ -1 +1 @@
{"results":[{"benchmark":"parseSafe","name":"aeria","ops":985069,"margin":0.48,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"aeria","ops":1056568,"margin":0.33,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"aeria","ops":1011218,"margin":0.55,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"aeria","ops":1044562,"margin":0.39,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"ajv","ops":35032395,"margin":1.25,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"ajv","ops":19143095,"margin":1.01,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"arktype","ops":69507259,"margin":2.21,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"banditypes","ops":2555545,"margin":0.67,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"banditypes","ops":2549567,"margin":0.46,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"bueno","ops":275875,"margin":0.41,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"bueno","ops":273298,"margin":0.44,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"bueno","ops":486669,"margin":0.34,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"bueno","ops":469381,"margin":0.83,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"caketype","ops":164685,"margin":0.45,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"caketype","ops":213221,"margin":0.68,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"caketype","ops":164234,"margin":0.53,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"class-transformer-validator-sync","ops":88670,"margin":1.66,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"computed-types","ops":1544978,"margin":0.4,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"computed-types","ops":1161984,"margin":0.32,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"computed-types","ops":1162779,"margin":0.49,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"decoders","ops":375516,"margin":0.52,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"decoders","ops":226836,"margin":0.45,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"decoders","ops":226339,"margin":0.46,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"io-ts","ops":2719339,"margin":0.54,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"jointz","ops":651700,"margin":0.48,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"jointz","ops":650602,"margin":0.41,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"jointz","ops":878182,"margin":0.38,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"json-decoder","ops":1574327,"margin":0.51,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"$mol_data","ops":2969562,"margin":0.58,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"$mol_data","ops":2956216,"margin":0.62,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"@mojotech/json-type-validation","ops":2401615,"margin":0.72,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"mondrian-framework","ops":542956,"margin":0.74,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"mondrian-framework","ops":491781,"margin":0.36,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"mondrian-framework","ops":534044,"margin":0.7,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"mondrian-framework","ops":481930,"margin":0.8,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"myzod","ops":2297549,"margin":0.3,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"myzod","ops":2550905,"margin":0.4,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"myzod","ops":2635591,"margin":0.62,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"ok-computer","ops":209610,"margin":0.7,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"ok-computer","ops":219903,"margin":0.39,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"parse-dont-validate (chained function)","ops":637875,"margin":0.7,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"parse-dont-validate (named parameters)","ops":2034647,"margin":0.42,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"paseri","ops":5766043,"margin":0.22,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"paseri","ops":5743074,"margin":0.4,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"paseri","ops":5746194,"margin":0.33,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"paseri","ops":5771844,"margin":0.28,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"pure-parse (JIT compiled)","ops":22810408,"margin":0.98,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"pure-parse","ops":2634083,"margin":0.8,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"pure-parse","ops":2053041,"margin":0.47,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"pure-parse (JIT compiled)","ops":7637934,"margin":0.63,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"pure-parse (JIT compiled)","ops":46448469,"margin":1.49,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"pure-parse","ops":3968528,"margin":0.49,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"purify-ts","ops":1884464,"margin":0.82,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"r-assign","ops":1799520,"margin":0.38,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"r-assign","ops":1552572,"margin":0.52,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"r-assign","ops":1845828,"margin":0.63,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"r-assign","ops":1543013,"margin":0.37,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"rescript-schema","ops":67143191,"margin":2.25,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"rescript-schema","ops":27326017,"margin":1.11,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"rescript-schema","ops":66922539,"margin":2.73,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"rescript-schema","ops":27396988,"margin":1.17,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"rulr","ops":1086930,"margin":0.82,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"runtypes","ops":179250,"margin":0.39,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"@sapphire/shapeshift","ops":305019,"margin":0.37,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"@sapphire/shapeshift","ops":292849,"margin":0.35,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"@sapphire/shapeshift","ops":260718,"margin":0.47,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"@sapphire/shapeshift","ops":295030,"margin":0.36,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"simple-runtypes","ops":2853303,"margin":0.86,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"simple-runtypes","ops":3535246,"margin":0.7,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"simple-runtypes","ops":3506038,"margin":0.43,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"@sinclair/typebox-(ahead-of-time)","ops":81356812,"margin":2.82,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"@sinclair/typebox-(ahead-of-time)","ops":31162168,"margin":0.97,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"@sinclair/typebox-(dynamic)","ops":868150,"margin":0.52,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"@sinclair/typebox-(dynamic)","ops":779046,"margin":0.51,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"@sinclair/typebox-(just-in-time)","ops":70937963,"margin":2.82,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"@sinclair/typebox-(just-in-time)","ops":28631553,"margin":1.4,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"spectypes","ops":32581915,"margin":1.1,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"spectypes","ops":24777025,"margin":1.58,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"spectypes","ops":76253168,"margin":3.08,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"spectypes","ops":23605579,"margin":0.97,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"succulent","ops":514196,"margin":0.4,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"succulent","ops":918752,"margin":0.87,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"succulent","ops":509555,"margin":0.63,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"superstruct","ops":170079,"margin":0.22,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"superstruct","ops":210862,"margin":0.24,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"superstruct","ops":169216,"margin":0.6,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"suretype","ops":44692488,"margin":1.43,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"tiny-schema-validator","ops":1840178,"margin":0.52,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"tiny-schema-validator","ops":1840271,"margin":0.56,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"to-typed","ops":4516005,"margin":0.76,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"to-typed","ops":3461578,"margin":0.43,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"to-typed","ops":114386,"margin":0.4,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"to-typed","ops":3248289,"margin":0.43,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"toi","ops":1131839,"margin":0.41,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"toi","ops":1134236,"margin":0.49,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"ts-interface-checker","ops":4176722,"margin":0.38,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"ts-json-validator","ops":45263579,"margin":1.54,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"ts-runtime-checks","ops":29815294,"margin":1.84,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"ts-runtime-checks","ops":30600710,"margin":0.79,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"ts-runtime-checks","ops":82857840,"margin":3.29,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"ts-utils","ops":336377,"margin":0.3,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"tson","ops":706960,"margin":0.39,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"tson","ops":788036,"margin":0.48,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"tson","ops":814693,"margin":0.4,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"tson","ops":805774,"margin":0.85,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"@typeofweb/schema","ops":1619816,"margin":0.68,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"@typeofweb/schema","ops":1636228,"margin":0.29,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"typia","ops":68743128,"margin":2.63,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"typia","ops":30044733,"margin":1.45,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"typia","ops":27444544,"margin":0.96,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"typia","ops":76181353,"margin":2.88,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"unknownutil","ops":3696945,"margin":0.97,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"unknownutil","ops":3730197,"margin":0.58,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"unknownutil","ops":5313942,"margin":0.47,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"valibot","ops":2198199,"margin":0.84,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"valibot","ops":1612689,"margin":0.35,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"valibot","ops":1829142,"margin":0.52,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"valibot","ops":1627317,"margin":0.41,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"valita","ops":6289153,"margin":0.85,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"valita","ops":6289213,"margin":0.38,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"valita","ops":6653498,"margin":0.57,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"valita","ops":6154497,"margin":0.23,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"vality","ops":216634,"margin":0.34,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"vality","ops":206974,"margin":0.35,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"vality","ops":214979,"margin":0.45,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"vality","ops":206816,"margin":0.42,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"yup","ops":71877,"margin":0.35,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"yup","ops":67695,"margin":0.72,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"zod","ops":764733,"margin":0.74,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"zod","ops":682355,"margin":0.5,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"zod","ops":700015,"margin":0.43,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"zod","ops":695062,"margin":0.62,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"deepkit","ops":2489717,"margin":0.37,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"deepkit","ops":23141239,"margin":1.69,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"effect-schema","ops":1539222,"margin":0.78,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"effect-schema","ops":301503,"margin":0.42,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"effect-schema","ops":1292476,"margin":0.68,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"effect-schema","ops":312176,"margin":0.46,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"ts-auto-guard","ops":86255337,"margin":3.16,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"type-predicate-generator","ops":78666334,"margin":2.69,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseSafe","name":"jet-schema","ops":3654784,"margin":0.61,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"parseStrict","name":"jet-schema","ops":3478314,"margin":0.61,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertLoose","name":"jet-schema","ops":5481902,"margin":0.61,"runtime":"node","runtimeVersion":"v22.13.0"},{"benchmark":"assertStrict","name":"jet-schema","ops":3436232,"margin":0.8,"runtime":"node","runtimeVersion":"v22.13.0"}]}
{"results":[{"benchmark":"parseSafe","name":"aeria","ops":162927,"margin":0.55,"runtime":"node","runtimeVersion":"v22.13.1"},{"benchmark":"parseStrict","name":"aeria","ops":165421,"margin":0.4,"runtime":"node","runtimeVersion":"v22.13.1"},{"benchmark":"assertLoose","name":"aeria","ops":158137,"margin":1.67,"runtime":"node","runtimeVersion":"v22.13.1"},{"benchmark":"assertStrict","name":"aeria","ops":162511,"margin":1.33,"runtime":"node","runtimeVersion":"v22.13.1"},{"benchmark":"assertLoose","name":"ajv","ops":5026385,"margin":1.47,"runtime":"node","runtimeVersion":"v22.13.1"},{"benchmark":"assertStrict","name":"ajv","ops":2786343,"margin":1.4,"runtime":"node","runtimeVersion":"v22.13.1"}]}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please do not include this file. It will likely result in merge problems.

This file (the benchmark results) are generated via gh-actions once we merge this PR to main.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried copying the old content but it doesnt work somehow
Let me try again

@aquapi
Copy link
Contributor Author

aquapi commented Jan 30, 2025

@hoeck yes i did

@aquapi
Copy link
Contributor Author

aquapi commented Jan 30, 2025

Let me make a new PR @hoeck @moltar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants