Skip to content

added ok-computer #865

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
May 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
* [marshal](https://github.com/marcj/marshal.ts)
* [@mojotech/json-type-validaton](https://github.com/mojotech/json-type-validation)
* [myzod](https://github.com/davidmdm/myzod)
* [ok-computer](https://github.com/richardscarrott/ok-computer)
* [purify-ts](https://github.com/gigobyte/purify)
* [rulr](https://github.com/ryansmith94/rulr)
* [runtypes](https://github.com/pelotom/runtypes)
Expand Down
1 change: 1 addition & 0 deletions cases/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import './json-decoder';
import './marshal';
import './mojotech-json-type-validation';
import './myzod';
import './ok-computer';
import './purify-ts';
import './rulr';
import './runtypes';
Expand Down
46 changes: 46 additions & 0 deletions cases/ok-computer.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { boolean, number, object, string, assert } from 'ok-computer';
import { UnknownData, addCase } from '../benchmarks';

const dataType = object({
number: number,
negNumber: number,
maxNumber: number,
string: string,
longString: string,
boolean: boolean,
deeplyNested: object({
foo: string,
num: number,
bool: boolean,
}),
});

const dataTypeLoose = object(
{
number: number,
negNumber: number,
maxNumber: number,
string: string,
longString: string,
boolean: boolean,
deeplyNested: object(
{
foo: string,
num: number,
bool: boolean,
},
{ allowUnknown: true }
),
},
{ allowUnknown: true }
);

addCase('ok-computer', 'assertStrict', (data: UnknownData) => {
assert(dataType(data));
return true;
});

addCase('ok-computer', 'assertLoose', (data: UnknownData) => {
assert(dataTypeLoose(data));
return true;
});
2 changes: 1 addition & 1 deletion docs/results/node-16.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"results":[{"benchmark":"assertLoose","name":"ajv","ops":17150181,"margin":0.15,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"bueno","ops":274837,"margin":0.3,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"class-transformer-validator-sync","ops":44885,"margin":17.65,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"io-ts","ops":1086967,"margin":0.38,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"jointz","ops":596262,"margin":0.22,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"marshal","ops":16151263,"margin":0.69,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"runtypes","ops":97001,"margin":0.46,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"spectypes","ops":32611713,"margin":0.41,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"superstruct","ops":105528,"margin":0.96,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"suretype","ops":19625467,"margin":2.05,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"tson","ops":392634,"margin":0.4,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"ts-interface-checker","ops":1764274,"margin":0.32,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"ts-json-validator","ops":16963963,"margin":1.09,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"@typeofweb/schema","ops":675394,"margin":0.37,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"valita","ops":2673962,"margin":0.38,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"yup","ops":27002,"margin":0.37,"nodeVersion":"v16.14.2"},{"benchmark":"assertLoose","name":"zod","ops":77595,"margin":0.3,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"ajv","ops":8991858,"margin":0.65,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"bueno","ops":260699,"margin":0.26,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"computed-types","ops":523275,"margin":0.24,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"decoders","ops":116802,"margin":0.29,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"jointz","ops":569777,"margin":0.28,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"myzod","ops":1090018,"margin":0.27,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"simple-runtypes","ops":1292544,"margin":0.17,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"spectypes","ops":10603614,"margin":0.76,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"superstruct","ops":86332,"margin":0.75,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"toi","ops":448342,"margin":0.26,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"tson","ops":392628,"margin":0.31,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"valita","ops":2326739,"margin":0.16,"nodeVersion":"v16.14.2"},{"benchmark":"assertStrict","name":"zod","ops":75618,"margin":0.48,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"bueno","ops":141362,"margin":0.46,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"computed-types","ops":621692,"margin":0.21,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"decoders","ops":184459,"margin":0.4,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"json-decoder","ops":553676,"margin":10.78,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"@mojotech/json-type-validation","ops":978066,"margin":0.37,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"myzod","ops":921644,"margin":0.3,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"purify-ts","ops":564794,"margin":0.3,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"rulr","ops":471304,"margin":0.27,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"simple-runtypes","ops":993025,"margin":8.01,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"spectypes","ops":12755755,"margin":1.2,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"tson","ops":345142,"margin":0.47,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"ts-utils","ops":176008,"margin":0.19,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"valita","ops":2265565,"margin":4.04,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"yup","ops":20712,"margin":36.22,"nodeVersion":"v16.14.2"},{"benchmark":"parseSafe","name":"zod","ops":76224,"margin":0.41,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"bueno","ops":142133,"margin":0.34,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"computed-types","ops":513406,"margin":0.43,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"decoders","ops":115846,"margin":0.72,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"jointz","ops":1084025,"margin":0.22,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"myzod","ops":1148888,"margin":0.45,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"simple-runtypes","ops":1263306,"margin":5.14,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"spectypes","ops":12335849,"margin":0.3,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"superstruct","ops":91441,"margin":0.3,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"toi","ops":477104,"margin":0.32,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"tson","ops":398794,"margin":0.26,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"@typeofweb/schema","ops":704251,"margin":0.35,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"valita","ops":2334119,"margin":0.3,"nodeVersion":"v16.14.2"},{"benchmark":"parseStrict","name":"zod","ops":72216,"margin":11.38,"nodeVersion":"v16.14.2"}]}
{"results":[{"benchmark":"assertLoose","name":"ajv","ops":54172586,"margin":1.17,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"bueno","ops":735746,"margin":1.74,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"class-transformer-validator-sync","ops":137918,"margin":0.22,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"io-ts","ops":3128480,"margin":0.21,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"jointz","ops":1570041,"margin":0.24,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"marshal","ops":45222491,"margin":0.18,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"ok-computer","ops":13728,"margin":0.41,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"runtypes","ops":251167,"margin":1.52,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"spectypes","ops":84194182,"margin":1.55,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"superstruct","ops":249001,"margin":0.21,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"suretype","ops":55414661,"margin":1.2,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"tson","ops":1051321,"margin":1.09,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"ts-interface-checker","ops":4655662,"margin":1.25,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"ts-json-validator","ops":55568578,"margin":1.16,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"@typeofweb/schema","ops":1978225,"margin":1.01,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"valita","ops":7215936,"margin":0.32,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"yup","ops":71119,"margin":0.3,"nodeVersion":"v16.13.0"},{"benchmark":"assertLoose","name":"zod","ops":197877,"margin":0.32,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"ajv","ops":20512318,"margin":1.06,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"bueno","ops":620194,"margin":1.71,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"computed-types","ops":1276381,"margin":1.16,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"decoders","ops":289037,"margin":0.53,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"jointz","ops":1487201,"margin":0.48,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"myzod","ops":3167942,"margin":0.29,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"ok-computer","ops":13434,"margin":2.88,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"simple-runtypes","ops":3287081,"margin":0.6,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"spectypes","ops":24549012,"margin":0.75,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"superstruct","ops":192391,"margin":2.97,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"toi","ops":1217176,"margin":0.34,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"tson","ops":1020658,"margin":0.55,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"valita","ops":5963090,"margin":0.3,"nodeVersion":"v16.13.0"},{"benchmark":"assertStrict","name":"zod","ops":195434,"margin":0.32,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"bueno","ops":379878,"margin":0.31,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"computed-types","ops":1564675,"margin":0.41,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"decoders","ops":448487,"margin":2.32,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"json-decoder","ops":1561126,"margin":1.42,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"@mojotech/json-type-validation","ops":2718765,"margin":3.17,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"myzod","ops":2454308,"margin":0.53,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"purify-ts","ops":1530739,"margin":3.74,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"rulr","ops":1296095,"margin":2.05,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"simple-runtypes","ops":2860201,"margin":2.61,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"spectypes","ops":30428822,"margin":0.69,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"tson","ops":852959,"margin":0.2,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"ts-utils","ops":420946,"margin":1.01,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"valita","ops":5838957,"margin":1.49,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"yup","ops":63798,"margin":0.73,"nodeVersion":"v16.13.0"},{"benchmark":"parseSafe","name":"zod","ops":187215,"margin":1.29,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"bueno","ops":371467,"margin":0.26,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"computed-types","ops":1237875,"margin":1.67,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"decoders","ops":277524,"margin":1.25,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"jointz","ops":3104278,"margin":0.24,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"myzod","ops":3105564,"margin":0.27,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"simple-runtypes","ops":3270804,"margin":0.26,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"spectypes","ops":24157539,"margin":2.67,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"superstruct","ops":174137,"margin":4.45,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"toi","ops":1155719,"margin":0.43,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"tson","ops":989236,"margin":0.44,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"@typeofweb/schema","ops":1893751,"margin":0.31,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"valita","ops":5962057,"margin":0.33,"nodeVersion":"v16.13.0"},{"benchmark":"parseStrict","name":"zod","ops":178106,"margin":8.88,"nodeVersion":"v16.13.0"}]}
11 changes: 11 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
"jointz": "6.1.1",
"json-decoder": "1.4.0",
"myzod": "1.8.6",
"ok-computer": "1.0.0",
"preact": "10.6.5",
"purify-ts": "1.1.0",
"reflect-metadata": "0.1.13",
Expand Down