diff --git a/cases/arktype.ts b/cases/arktype.ts index be39e59f8..3262d21fa 100644 --- a/cases/arktype.ts +++ b/cases/arktype.ts @@ -1,21 +1,91 @@ -import { type } from 'arktype'; +import { ArkErrors, type } from 'arktype'; import { createCase } from '../benchmarks'; -const t = type({ - number: 'number', - negNumber: 'number', - maxNumber: 'number', - string: 'string', - longString: 'string', - boolean: 'boolean', - deeplyNested: { - foo: 'string', - num: 'number', - bool: 'boolean', - }, +// As of version 2.1.9, the test fails because of a mutation attempt +// createCase('arktype', 'parseSafe', () => { +// const t = type({ +// '+': 'delete', +// number: 'number', +// negNumber: 'number', +// maxNumber: 'number', +// string: 'string', +// longString: 'string', +// boolean: 'boolean', +// deeplyNested: { +// '+': 'delete', +// foo: 'string', +// num: 'number', +// bool: 'boolean', +// }, +// }); +// return data => { +// const r = t(data); +// if (r instanceof ArkErrors) throw r; +// return r; +// }; +// }); + +createCase('arktype', 'parseStrict', () => { + const t = type({ + '+': 'reject', + number: 'number', + negNumber: 'number', + maxNumber: 'number', + string: 'string', + longString: 'string', + boolean: 'boolean', + deeplyNested: { + '+': 'reject', + foo: 'string', + num: 'number', + bool: 'boolean', + }, + }); + return data => { + const r = t(data); + if (r instanceof ArkErrors) throw r; + return r; + }; }); createCase('arktype', 'assertLoose', () => { + const t = type({ + number: 'number', + negNumber: 'number', + maxNumber: 'number', + string: 'string', + longString: 'string', + boolean: 'boolean', + deeplyNested: { + foo: 'string', + num: 'number', + bool: 'boolean', + }, + }); + + return data => { + if (t.allows(data)) return true; + throw new Error('Invalid'); + }; +}); + +createCase('arktype', 'assertStrict', () => { + const t = type({ + '+': 'reject', + number: 'number', + negNumber: 'number', + maxNumber: 'number', + string: 'string', + longString: 'string', + boolean: 'boolean', + deeplyNested: { + '+': 'reject', + foo: 'string', + num: 'number', + bool: 'boolean', + }, + }); + return data => { if (t.allows(data)) return true; throw new Error('Invalid'); diff --git a/package-lock.json b/package-lock.json index 658cb0d59..893e689d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "@types/benchmark": "2.1.5", "@vbudovski/paseri": "npm:@jsr/vbudovski__paseri@0.1.18", "ajv": "8.17.1", - "arktype": "2.0.0-dev.12-cjs", + "arktype": "2.1.9", "banditypes": "0.2.5", "benny": "3.7.1", "bueno": "0.1.5", @@ -177,19 +177,20 @@ "node": ">=6.0.0" } }, - "node_modules/@arktype/schema": { - "version": "0.1.4-cjs", - "resolved": "https://registry.npmjs.org/@arktype/schema/-/schema-0.1.4-cjs.tgz", - "integrity": "sha512-mk/9CoASlEl3NQErqc9WMfs7cGiy4BdQpsmOKqWZHIpnuzvn59XbzXZ3LXtEylIOOovPvplP1VndPkiZhb8v0Q==", + "node_modules/@ark/schema": { + "version": "0.44.4", + "resolved": "https://registry.npmjs.org/@ark/schema/-/schema-0.44.4.tgz", + "integrity": "sha512-TsZTX+k5J7xsGABsFjVdRUNgViGDMLv73sikBM8JNxC4STe0suTuMNa1OJ/AFP2N+LpJ1zL9tdWlg28PRqAYhg==", "license": "MIT", "dependencies": { - "@arktype/util": "0.0.41-cjs" + "@ark/util": "0.44.4" } }, - "node_modules/@arktype/util": { - "version": "0.0.41-cjs", - "resolved": "https://registry.npmjs.org/@arktype/util/-/util-0.0.41-cjs.tgz", - "integrity": "sha512-JuijNPUx7CSGhw36+z12mrzsR2bRmqeL5W/h0kWlR+hUCgqNc4GLY8JRL5ERg2GwidDQCVe4lvJOpiPffuOCrQ==" + "node_modules/@ark/util": { + "version": "0.44.4", + "resolved": "https://registry.npmjs.org/@ark/util/-/util-0.44.4.tgz", + "integrity": "sha512-zLfNZrsq5Dq+8B0pHJwL/wD3xNBHb8FoP0FuPB455w7HpqVaqO5qPXvn+YoO8v1Y6pNwLVsM9vCIiO221LoODQ==", + "license": "MIT" }, "node_modules/@arrows/array": { "version": "1.4.1", @@ -3857,13 +3858,13 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "node_modules/arktype": { - "version": "2.0.0-dev.12-cjs", - "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.0.0-dev.12-cjs.tgz", - "integrity": "sha512-bACCf7FLER9H3e7NY/aaxQwlUK3e36PjLRbbOgwDQiXJ2cE5EOFwb30JAt8uoFL2fFBTHipnDOhxoincUI2Ogw==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.1.9.tgz", + "integrity": "sha512-bq46shcLpfop4D9acVQN/+quZ+hIGs4OUzoLq2vCaZLdkITOlWkfamBk9abMuC6fbgxW1fu/2PamcQgggWhTwQ==", "license": "MIT", "dependencies": { - "@arktype/schema": "0.1.4-cjs", - "@arktype/util": "0.0.41-cjs" + "@ark/schema": "0.44.4", + "@ark/util": "0.44.4" } }, "node_modules/array-back": { @@ -11233,18 +11234,18 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, - "@arktype/schema": { - "version": "0.1.4-cjs", - "resolved": "https://registry.npmjs.org/@arktype/schema/-/schema-0.1.4-cjs.tgz", - "integrity": "sha512-mk/9CoASlEl3NQErqc9WMfs7cGiy4BdQpsmOKqWZHIpnuzvn59XbzXZ3LXtEylIOOovPvplP1VndPkiZhb8v0Q==", + "@ark/schema": { + "version": "0.44.4", + "resolved": "https://registry.npmjs.org/@ark/schema/-/schema-0.44.4.tgz", + "integrity": "sha512-TsZTX+k5J7xsGABsFjVdRUNgViGDMLv73sikBM8JNxC4STe0suTuMNa1OJ/AFP2N+LpJ1zL9tdWlg28PRqAYhg==", "requires": { - "@arktype/util": "0.0.41-cjs" + "@ark/util": "0.44.4" } }, - "@arktype/util": { - "version": "0.0.41-cjs", - "resolved": "https://registry.npmjs.org/@arktype/util/-/util-0.0.41-cjs.tgz", - "integrity": "sha512-JuijNPUx7CSGhw36+z12mrzsR2bRmqeL5W/h0kWlR+hUCgqNc4GLY8JRL5ERg2GwidDQCVe4lvJOpiPffuOCrQ==" + "@ark/util": { + "version": "0.44.4", + "resolved": "https://registry.npmjs.org/@ark/util/-/util-0.44.4.tgz", + "integrity": "sha512-zLfNZrsq5Dq+8B0pHJwL/wD3xNBHb8FoP0FuPB455w7HpqVaqO5qPXvn+YoO8v1Y6pNwLVsM9vCIiO221LoODQ==" }, "@arrows/array": { "version": "1.4.1", @@ -13635,12 +13636,12 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "arktype": { - "version": "2.0.0-dev.12-cjs", - "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.0.0-dev.12-cjs.tgz", - "integrity": "sha512-bACCf7FLER9H3e7NY/aaxQwlUK3e36PjLRbbOgwDQiXJ2cE5EOFwb30JAt8uoFL2fFBTHipnDOhxoincUI2Ogw==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.1.9.tgz", + "integrity": "sha512-bq46shcLpfop4D9acVQN/+quZ+hIGs4OUzoLq2vCaZLdkITOlWkfamBk9abMuC6fbgxW1fu/2PamcQgggWhTwQ==", "requires": { - "@arktype/schema": "0.1.4-cjs", - "@arktype/util": "0.0.41-cjs" + "@ark/schema": "0.44.4", + "@ark/util": "0.44.4" } }, "array-back": { diff --git a/package.json b/package.json index 552b31677..acd478d93 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@types/benchmark": "2.1.5", "@vbudovski/paseri": "npm:@jsr/vbudovski__paseri@0.1.18", "ajv": "8.17.1", - "arktype": "2.0.0-dev.12-cjs", + "arktype": "2.1.9", "banditypes": "0.2.5", "benny": "3.7.1", "bueno": "0.1.5",