Compare commits

...

3 Commits

Author SHA1 Message Date
8d6e9d61a1
chore: change default type 2025-03-25 14:00:14 +01:00
18aa6c8300
0.0.3 2025-03-25 13:59:14 +01:00
780423ab47
feat: Add Schema any 2025-03-25 13:59:04 +01:00
5 changed files with 19 additions and 7 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "@dzeio/schema", "name": "@dzeio/schema",
"version": "1.0.0", "version": "0.0.3",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@dzeio/schema", "name": "@dzeio/schema",
"version": "1.0.0", "version": "0.0.3",
"dependencies": { "dependencies": {
"@dzeio/object-util": "^1.8.3", "@dzeio/object-util": "^1.8.3",
"@standard-schema/spec": "^1.0.0", "@standard-schema/spec": "^1.0.0",

View File

@ -1,6 +1,6 @@
{ {
"name": "@dzeio/schema", "name": "@dzeio/schema",
"version": "0.0.2", "version": "0.0.3",
"dependencies": { "dependencies": {
"@dzeio/object-util": "^1.8.3" "@dzeio/object-util": "^1.8.3"
}, },

View File

@ -1,5 +1,6 @@
/* eslint-disable id-blacklist */ /* eslint-disable id-blacklist */
import { parseForm, parseFormData, parseQuery } from 'helpers' import { parseForm, parseFormData, parseQuery } from 'helpers'
import SchemaAny from 'items/any'
import SchemaDate from 'items/date' import SchemaDate from 'items/date'
import SchemaRecord from 'items/record' import SchemaRecord from 'items/record'
import SchemaArray from './items/array' import SchemaArray from './items/array'
@ -45,6 +46,7 @@ export function parceable() {
type SchemaItemStatic = new (...args: Array<any>) => SchemaItem type SchemaItemStatic = new (...args: Array<any>) => SchemaItem
export const Types = { export const Types = {
Any: SchemaAny,
Array: SchemaArray, Array: SchemaArray,
Boolean: SchemaBoolean, Boolean: SchemaBoolean,
Date: SchemaDate, Date: SchemaDate,
@ -79,6 +81,10 @@ export default class Schema<T extends Record<string, SchemaItem> = Record<string
return this.registeredModules.find((it) => it.name === name) return this.registeredModules.find((it) => it.name === name)
} }
public static any() {
return new SchemaAny()
}
public static array<Type extends SchemaItem>( public static array<Type extends SchemaItem>(
...inputs: ConstructorParameters<typeof SchemaArray<Type>> ...inputs: ConstructorParameters<typeof SchemaArray<Type>>
): SchemaArray<Type> { ): SchemaArray<Type> {
@ -232,10 +238,9 @@ export * from './helpers'
export type * from './types.d.ts' export type * from './types.d.ts'
export { export {
SchemaArray, SchemaAny, SchemaArray,
SchemaBoolean, SchemaDate, SchemaEnum, SchemaItem, SchemaLiteral, SchemaBoolean, SchemaDate, SchemaEnum, SchemaItem, SchemaLiteral,
SchemaNullable, SchemaNullable,
SchemaNumber, SchemaNumber, SchemaObject, SchemaRecord, SchemaString,
SchemaObject, SchemaRecord, SchemaString,
SchemaUnion SchemaUnion
} }

7
src/items/any.ts Normal file
View File

@ -0,0 +1,7 @@
import SchemaItem from '../SchemaItem'
export default class SchemaAny extends SchemaItem {
public override isOfType(input: unknown): input is any {
return true
}
}

View File

@ -6,7 +6,7 @@ type ModelInfer<M extends Record<string, SchemaItem>> = {
[key in keyof M]: SchemaInfer<M[key]> [key in keyof M]: SchemaInfer<M[key]>
} }
export default class SchemaObject<T extends Record<string, SchemaItem> = Record<string, SchemaItem>> extends SchemaItem<ModelInfer<T>> { export default class SchemaObject<T extends Record<string, SchemaItem> = any> extends SchemaItem<ModelInfer<T>> {
public id = 'object' public id = 'object'
public constructor(public readonly model: T) { public constructor(public readonly model: T) {