Compare commits

...

2 Commits

Author SHA1 Message Date
9cae8b31e7
0.2.0 2025-04-02 12:11:02 +02:00
7c01ca36b5
feat: add parse string to date 2025-04-02 12:10:53 +02:00
3 changed files with 28 additions and 3 deletions

4
package-lock.json generated
View File

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

View File

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

View File

@ -1,7 +1,32 @@
import { parceable } from 'Schema'
import SchemaItem from '../SchemaItem'
export default class SchemaDate extends SchemaItem<Date> {
@parceable()
public parseString(format: 'iso8601' | 'yy-mm-dd' | 'jj/mm/yy' = 'iso8601') {
switch (format) {
case 'yy-mm-dd':
case 'iso8601': {
this.addPreProcess((it) => typeof it === 'string' ? new Date(it) : it)
break
}
case 'jj/mm/yy': {
this.addPreProcess((input) => {
if (typeof input !== 'string') {
return input
}
const splitted = input.split('/').map((it) => Number.parseInt(it, 10))
if (splitted.length !== 3) {
return input
}
return new Date(splitted[2], splitted[1] - 1, splitted[0])
})
}
}
}
public override isOfType(input: unknown): input is Date {
return input instanceof Date
}