@@ -19,20 +19,22 @@ export class MonarchDate extends MonarchType<Date, Date> {
1919 } ) ;
2020 }
2121
22+ protected copy ( ) {
23+ return new MonarchDate ( ) ;
24+ }
25+
2226 /**
2327 * Validates date is after a target date.
2428 *
2529 * @param targetDate - Target date for comparison
2630 * @returns MonarchDate with after validation
2731 */
2832 public after ( targetDate : Date ) {
29- return date ( ) . extend ( this , {
30- parse : ( input ) => {
31- if ( input <= targetDate ) {
32- throw new MonarchParseError ( `date must be after ${ targetDate . toISOString ( ) } ` ) ;
33- }
34- return input ;
35- } ,
33+ return this . parse ( ( input ) => {
34+ if ( input <= targetDate ) {
35+ throw new MonarchParseError ( `date must be after ${ targetDate . toISOString ( ) } ` ) ;
36+ }
37+ return input ;
3638 } ) ;
3739 }
3840
@@ -43,13 +45,11 @@ export class MonarchDate extends MonarchType<Date, Date> {
4345 * @returns MonarchDate with before validation
4446 */
4547 public before ( targetDate : Date ) {
46- return date ( ) . extend ( this , {
47- parse : ( input ) => {
48- if ( input >= targetDate ) {
49- throw new MonarchParseError ( `date must be before ${ targetDate . toISOString ( ) } ` ) ;
50- }
51- return input ;
52- } ,
48+ return this . parse ( ( input ) => {
49+ if ( input >= targetDate ) {
50+ throw new MonarchParseError ( `date must be before ${ targetDate . toISOString ( ) } ` ) ;
51+ }
52+ return input ;
5353 } ) ;
5454 }
5555}
@@ -66,10 +66,7 @@ export const createdAt = () => date().default(() => new Date());
6666 *
6767 * @returns MonarchDate with update and default values
6868 */
69- export const updatedAt = ( ) => {
70- const base = date ( ) ;
71- return base . extend ( base , { onUpdate : ( ) => new Date ( ) } ) . default ( ( ) => new Date ( ) ) ;
72- } ;
69+ export const updatedAt = ( ) => createdAt ( ) . onUpdate ( ( ) => new Date ( ) ) ;
7370
7471/**
7572 * Date string type that accepts ISO date strings.
@@ -91,20 +88,22 @@ export class MonarchDateString extends MonarchType<string, Date> {
9188 } ) ;
9289 }
9390
91+ protected copy ( ) {
92+ return new MonarchDateString ( ) ;
93+ }
94+
9495 /**
9596 * Validates date is after a target date.
9697 *
9798 * @param targetDate - Target date for comparison
9899 * @returns MonarchDateString with after validation
99100 */
100101 public after ( targetDate : Date ) {
101- return dateString ( ) . extend ( this , {
102- parse : ( input ) => {
103- if ( input <= targetDate ) {
104- throw new MonarchParseError ( `date must be after ${ targetDate . toISOString ( ) } ` ) ;
105- }
106- return input ;
107- } ,
102+ return this . parse ( ( input : Date ) => {
103+ if ( input <= targetDate ) {
104+ throw new MonarchParseError ( `date must be after ${ targetDate . toISOString ( ) } ` ) ;
105+ }
106+ return input ;
108107 } ) ;
109108 }
110109
@@ -115,13 +114,11 @@ export class MonarchDateString extends MonarchType<string, Date> {
115114 * @returns MonarchDateString with before validation
116115 */
117116 public before ( targetDate : Date ) {
118- return dateString ( ) . extend ( this , {
119- parse : ( input ) => {
120- if ( input >= targetDate ) {
121- throw new MonarchParseError ( `date must be before ${ targetDate . toISOString ( ) } ` ) ;
122- }
123- return input ;
124- } ,
117+ return this . parse ( ( input : Date ) => {
118+ if ( input >= targetDate ) {
119+ throw new MonarchParseError ( `date must be before ${ targetDate . toISOString ( ) } ` ) ;
120+ }
121+ return input ;
125122 } ) ;
126123 }
127124}
0 commit comments