Test case
3 generated files · +0 −15test/inputs/graphql/github1.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Test case
3 generated files · +0 −15test/inputs/graphql/github2.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -119,15 +119,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 119 | 119 | if (val === null) { |
| 120 | 120 | return null; |
| 121 | 121 | } |
| 122 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 123 | - return invalidValue(l("Date"), val, key, parent); | |
| 124 | 122 | const d = new Date(val); |
| 125 | 123 | if (isNaN(d.valueOf())) { |
| 126 | 124 | return invalidValue(l("Date"), val, key, parent); |
| 127 | 125 | } |
| 128 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 129 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 130 | - return invalidValue(l("Date"), val, key, parent); | |
| 131 | 126 | return d; |
| 132 | 127 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -119,15 +119,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 119 | 119 | if (val === null) { |
| 120 | 120 | return null; |
| 121 | 121 | } |
| 122 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 123 | - return invalidValue(l("Date"), val, key, parent); | |
| 124 | 122 | const d = new Date(val); |
| 125 | 123 | if (isNaN(d.valueOf())) { |
| 126 | 124 | return invalidValue(l("Date"), val, key, parent); |
| 127 | 125 | } |
| 128 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 129 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 130 | - return invalidValue(l("Date"), val, key, parent); | |
| 131 | 126 | return d; |
| 132 | 127 | } |
Test case
3 generated files · +0 −15test/inputs/graphql/github3.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 127 | 127 | if (val === null) { |
| 128 | 128 | return null; |
| 129 | 129 | } |
| 130 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 130 | const d = new Date(val); |
| 133 | 131 | if (isNaN(d.valueOf())) { |
| 134 | 132 | return invalidValue(l("Date"), val, key, parent); |
| 135 | 133 | } |
| 136 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 137 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 138 | - return invalidValue(l("Date"), val, key, parent); | |
| 139 | 134 | return d; |
| 140 | 135 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Test case
3 generated files · +0 −15test/inputs/graphql/github4.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 128 | 128 | if (val === null) { |
| 129 | 129 | return null; |
| 130 | 130 | } |
| 131 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 131 | const d = new Date(val); |
| 134 | 132 | if (isNaN(d.valueOf())) { |
| 135 | 133 | return invalidValue(l("Date"), val, key, parent); |
| 136 | 134 | } |
| 137 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 138 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 139 | - return invalidValue(l("Date"), val, key, parent); | |
| 140 | 135 | return d; |
| 141 | 136 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 125 | 125 | if (val === null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| 128 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 128 | const d = new Date(val); |
| 131 | 129 | if (isNaN(d.valueOf())) { |
| 132 | 130 | return invalidValue(l("Date"), val, key, parent); |
| 133 | 131 | } |
| 134 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 135 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 132 | return d; |
| 138 | 133 | } |
Test case
3 generated files · +0 −15test/inputs/graphql/github5.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Test case
3 generated files · +0 −15test/inputs/graphql/github6.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Test case
3 generated files · +0 −15test/inputs/graphql/github7.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 131 | 131 | if (val === null) { |
| 132 | 132 | return null; |
| 133 | 133 | } |
| 134 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 134 | const d = new Date(val); |
| 137 | 135 | if (isNaN(d.valueOf())) { |
| 138 | 136 | return invalidValue(l("Date"), val, key, parent); |
| 139 | 137 | } |
| 140 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 141 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 142 | - return invalidValue(l("Date"), val, key, parent); | |
| 143 | 138 | return d; |
| 144 | 139 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 131 | 131 | if (val === null) { |
| 132 | 132 | return null; |
| 133 | 133 | } |
| 134 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 134 | const d = new Date(val); |
| 137 | 135 | if (isNaN(d.valueOf())) { |
| 138 | 136 | return invalidValue(l("Date"), val, key, parent); |
| 139 | 137 | } |
| 140 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 141 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 142 | - return invalidValue(l("Date"), val, key, parent); | |
| 143 | 138 | return d; |
| 144 | 139 | } |
Test case
3 generated files · +0 −15test/inputs/graphql/github8.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 121 | 121 | if (val === null) { |
| 122 | 122 | return null; |
| 123 | 123 | } |
| 124 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 124 | const d = new Date(val); |
| 127 | 125 | if (isNaN(d.valueOf())) { |
| 128 | 126 | return invalidValue(l("Date"), val, key, parent); |
| 129 | 127 | } |
| 130 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 131 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 128 | return d; |
| 134 | 129 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -119,15 +119,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 119 | 119 | if (val === null) { |
| 120 | 120 | return null; |
| 121 | 121 | } |
| 122 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 123 | - return invalidValue(l("Date"), val, key, parent); | |
| 124 | 122 | const d = new Date(val); |
| 125 | 123 | if (isNaN(d.valueOf())) { |
| 126 | 124 | return invalidValue(l("Date"), val, key, parent); |
| 127 | 125 | } |
| 128 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 129 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 130 | - return invalidValue(l("Date"), val, key, parent); | |
| 131 | 126 | return d; |
| 132 | 127 | } |
Test case
3 generated files · +0 −15test/inputs/graphql/github9.graphql
Mgraphql-flowdefault / TopLevel.js+0 −5
| @@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 128 | 128 | if (val === null) { |
| 129 | 129 | return null; |
| 130 | 130 | } |
| 131 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 131 | const d = new Date(val); |
| 134 | 132 | if (isNaN(d.valueOf())) { |
| 135 | 133 | return invalidValue(l("Date"), val, key, parent); |
| 136 | 134 | } |
| 137 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 138 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 139 | - return invalidValue(l("Date"), val, key, parent); | |
| 140 | 135 | return d; |
| 141 | 136 | } |
Mgraphql-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mgraphql-typescriptdefault / TopLevel.ts+0 −5
| @@ -122,15 +122,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 122 | 122 | if (val === null) { |
| 123 | 123 | return null; |
| 124 | 124 | } |
| 125 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 126 | - return invalidValue(l("Date"), val, key, parent); | |
| 127 | 125 | const d = new Date(val); |
| 128 | 126 | if (isNaN(d.valueOf())) { |
| 129 | 127 | return invalidValue(l("Date"), val, key, parent); |
| 130 | 128 | } |
| 131 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 132 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 129 | return d; |
| 135 | 130 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/00c36.json
Mflowdefault / TopLevel.js+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 120 | 120 | if (val === null) { |
| 121 | 121 | return null; |
| 122 | 122 | } |
| 123 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 123 | const d = new Date(val); |
| 126 | 124 | if (isNaN(d.valueOf())) { |
| 127 | 125 | return invalidValue(l("Date"), val, key, parent); |
| 128 | 126 | } |
| 129 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 130 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 127 | return d; |
| 133 | 128 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/00ec5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -163,15 +163,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 163 | 163 | if (val === null) { |
| 164 | 164 | return null; |
| 165 | 165 | } |
| 166 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 167 | - return invalidValue(l("Date"), val, key, parent); | |
| 168 | 166 | const d = new Date(val); |
| 169 | 167 | if (isNaN(d.valueOf())) { |
| 170 | 168 | return invalidValue(l("Date"), val, key, parent); |
| 171 | 169 | } |
| 172 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 173 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 174 | - return invalidValue(l("Date"), val, key, parent); | |
| 175 | 170 | return d; |
| 176 | 171 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -162,15 +162,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 162 | 162 | if (val === null) { |
| 163 | 163 | return null; |
| 164 | 164 | } |
| 165 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 166 | - return invalidValue(l("Date"), val, key, parent); | |
| 167 | 165 | const d = new Date(val); |
| 168 | 166 | if (isNaN(d.valueOf())) { |
| 169 | 167 | return invalidValue(l("Date"), val, key, parent); |
| 170 | 168 | } |
| 171 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 172 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 173 | - return invalidValue(l("Date"), val, key, parent); | |
| 174 | 169 | return d; |
| 175 | 170 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/010b1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/016af.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/033b1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/050b0.json
Mflowdefault / TopLevel.js+0 −5
| @@ -152,15 +152,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 152 | 152 | if (val === null) { |
| 153 | 153 | return null; |
| 154 | 154 | } |
| 155 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 156 | - return invalidValue(l("Date"), val, key, parent); | |
| 157 | 155 | const d = new Date(val); |
| 158 | 156 | if (isNaN(d.valueOf())) { |
| 159 | 157 | return invalidValue(l("Date"), val, key, parent); |
| 160 | 158 | } |
| 161 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 162 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 163 | - return invalidValue(l("Date"), val, key, parent); | |
| 164 | 159 | return d; |
| 165 | 160 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/06bee.json
Mflowdefault / TopLevel.js+0 −5
| @@ -140,15 +140,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 140 | 140 | if (val === null) { |
| 141 | 141 | return null; |
| 142 | 142 | } |
| 143 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 144 | - return invalidValue(l("Date"), val, key, parent); | |
| 145 | 143 | const d = new Date(val); |
| 146 | 144 | if (isNaN(d.valueOf())) { |
| 147 | 145 | return invalidValue(l("Date"), val, key, parent); |
| 148 | 146 | } |
| 149 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 150 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 151 | - return invalidValue(l("Date"), val, key, parent); | |
| 152 | 147 | return d; |
| 153 | 148 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 131 | 131 | if (val === null) { |
| 132 | 132 | return null; |
| 133 | 133 | } |
| 134 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 134 | const d = new Date(val); |
| 137 | 135 | if (isNaN(d.valueOf())) { |
| 138 | 136 | return invalidValue(l("Date"), val, key, parent); |
| 139 | 137 | } |
| 140 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 141 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 142 | - return invalidValue(l("Date"), val, key, parent); | |
| 143 | 138 | return d; |
| 144 | 139 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/07540.json
Mflowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/0779f.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/07c75.json
Mflowdefault / TopLevel.js+0 −5
| @@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 121 | 121 | if (val === null) { |
| 122 | 122 | return null; |
| 123 | 123 | } |
| 124 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 124 | const d = new Date(val); |
| 127 | 125 | if (isNaN(d.valueOf())) { |
| 128 | 126 | return invalidValue(l("Date"), val, key, parent); |
| 129 | 127 | } |
| 130 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 131 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 128 | return d; |
| 134 | 129 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 121 | 121 | if (val === null) { |
| 122 | 122 | return null; |
| 123 | 123 | } |
| 124 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 124 | const d = new Date(val); |
| 127 | 125 | if (isNaN(d.valueOf())) { |
| 128 | 126 | return invalidValue(l("Date"), val, key, parent); |
| 129 | 127 | } |
| 130 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 131 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 128 | return d; |
| 134 | 129 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/09f54.json
Mflowdefault / TopLevel.js+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Test case
6 generated files · +5 −20test/inputs/json/misc/0a358.json
Mflowdefault / TopLevel.js+0 −5
| @@ -114,15 +114,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 114 | 114 | if (val === null) { |
| 115 | 115 | return null; |
| 116 | 116 | } |
| 117 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 117 | const d = new Date(val); |
| 120 | 118 | if (isNaN(d.valueOf())) { |
| 121 | 119 | return invalidValue(l("Date"), val, key, parent); |
| 122 | 120 | } |
| 123 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 124 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 121 | return d; |
| 127 | 122 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -20,10 +20,10 @@ _Facets = PropTypes.shape({ | ||
| 20 | 20 | }); |
| 21 | 21 | _Result = PropTypes.shape({ |
| 22 | 22 | "code": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 23 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 23 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 24 | 24 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| 25 | 25 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 26 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 26 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 27 | 27 | "uri": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 28 | 28 | }); |
| 29 | 29 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -13,7 +13,7 @@ def from_str(x: Any) -> str: | ||
| 13 | 13 | |
| 14 | 14 | |
| 15 | 15 | def from_datetime(x: Any) -> datetime.datetime: |
| 16 | - return dateutil.parser.parse(x) | |
| 16 | + return dateutil.parser.isoparse(x) | |
| 17 | 17 | |
| 18 | 18 | |
| 19 | 19 | def from_int(x: Any) -> int: |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -3,10 +3,10 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class Result extends S.Class<Result>("Result")({ |
| 5 | 5 | "code": S.String, |
| 6 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 6 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 7 | 7 | "id": S.Int, |
| 8 | 8 | "name": S.String, |
| 9 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 9 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 10 | 10 | "uri": S.String, |
| 11 | 11 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -111,15 +111,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 111 | 111 | if (val === null) { |
| 112 | 112 | return null; |
| 113 | 113 | } |
| 114 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 114 | const d = new Date(val); |
| 117 | 115 | if (isNaN(d.valueOf())) { |
| 118 | 116 | return invalidValue(l("Date"), val, key, parent); |
| 119 | 117 | } |
| 120 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 121 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 122 | - return invalidValue(l("Date"), val, key, parent); | |
| 123 | 118 | return d; |
| 124 | 119 | } |
Test case
6 generated files · +17 −32test/inputs/json/misc/0a91a.json
Mflowdefault / TopLevel.js+0 −5
| @@ -316,15 +316,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 316 | 316 | if (val === null) { |
| 317 | 317 | return null; |
| 318 | 318 | } |
| 319 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 320 | - return invalidValue(l("Date"), val, key, parent); | |
| 321 | 319 | const d = new Date(val); |
| 322 | 320 | if (isNaN(d.valueOf())) { |
| 323 | 321 | return invalidValue(l("Date"), val, key, parent); |
| 324 | 322 | } |
| 325 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 326 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 327 | - return invalidValue(l("Date"), val, key, parent); | |
| 328 | 323 | return d; |
| 329 | 324 | } |
Mjavascript-prop-typesdefault / toplevel.js+8 −8
| @@ -89,7 +89,7 @@ _BaseRepo = PropTypes.shape({ | ||
| 89 | 89 | "compare_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 90 | 90 | "contents_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 91 | 91 | "contributors_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 92 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 92 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 93 | 93 | "default_branch": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 94 | 94 | "deployments_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 95 | 95 | "description": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| @@ -130,7 +130,7 @@ _BaseRepo = PropTypes.shape({ | ||
| 130 | 130 | "owner": _MergedBy, |
| 131 | 131 | "private": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 132 | 132 | "pulls_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 133 | - "pushed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 133 | + "pushed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 134 | 134 | "releases_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 135 | 135 | "size": PropTypes.oneOfType([Integer]).isRequired, |
| 136 | 136 | "ssh_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| @@ -143,7 +143,7 @@ _BaseRepo = PropTypes.shape({ | ||
| 143 | 143 | "tags_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 144 | 144 | "teams_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 145 | 145 | "trees_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 146 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 146 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 147 | 147 | "url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 148 | 148 | "watchers": PropTypes.oneOfType([Integer]).isRequired, |
| 149 | 149 | "watchers_count": PropTypes.oneOfType([Integer]).isRequired, |
| @@ -163,12 +163,12 @@ _PullRequest = PropTypes.shape({ | ||
| 163 | 163 | "base": _Base, |
| 164 | 164 | "body": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 165 | 165 | "changed_files": PropTypes.oneOfType([Integer]).isRequired, |
| 166 | - "closed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 166 | + "closed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 167 | 167 | "comments": PropTypes.oneOfType([Integer]).isRequired, |
| 168 | 168 | "comments_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 169 | 169 | "commits": PropTypes.oneOfType([Integer]).isRequired, |
| 170 | 170 | "commits_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 171 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 171 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 172 | 172 | "deletions": PropTypes.oneOfType([Integer]).isRequired, |
| 173 | 173 | "diff_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 174 | 174 | "head": _Base, |
| @@ -181,7 +181,7 @@ _PullRequest = PropTypes.shape({ | ||
| 181 | 181 | "mergeable": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 182 | 182 | "mergeable_state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 183 | 183 | "merged": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 184 | - "merged_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 184 | + "merged_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 185 | 185 | "merged_by": _MergedBy, |
| 186 | 186 | "milestone": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 187 | 187 | "number": PropTypes.oneOfType([Integer]).isRequired, |
| @@ -194,7 +194,7 @@ _PullRequest = PropTypes.shape({ | ||
| 194 | 194 | "state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 195 | 195 | "statuses_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 196 | 196 | "title": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 197 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 197 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 198 | 198 | "url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 199 | 199 | "user": _MergedBy, |
| 200 | 200 | }); |
| @@ -221,7 +221,7 @@ _TopLevelRepo = PropTypes.shape({ | ||
| 221 | 221 | }); |
| 222 | 222 | _TopLevel = PropTypes.shape({ |
| 223 | 223 | "actor": _Actor, |
| 224 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 224 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 225 | 225 | "id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 226 | 226 | "org": PropTypes.oneOfType([_Actor, PropTypes.oneOf([null])]), |
| 227 | 227 | "payload": _Payload, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -44,7 +44,7 @@ def to_class(c: Type[T], x: Any) -> dict: | ||
| 44 | 44 | |
| 45 | 45 | |
| 46 | 46 | def from_datetime(x: Any) -> datetime.datetime: |
| 47 | - return dateutil.parser.parse(x) | |
| 47 | + return dateutil.parser.isoparse(x) | |
| 48 | 48 | |
| 49 | 49 | |
| 50 | 50 | def from_list(f: Callable[[Any], T], x: Any) -> list[T]: |
Mtypescript-effect-schemadefault / TopLevel.ts+8 −8
| @@ -63,7 +63,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({ | ||
| 63 | 63 | "compare_url": S.String, |
| 64 | 64 | "contents_url": S.String, |
| 65 | 65 | "contributors_url": S.String, |
| 66 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 66 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 67 | 67 | "default_branch": S.String, |
| 68 | 68 | "deployments_url": S.String, |
| 69 | 69 | "description": S.Null, |
| @@ -104,7 +104,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({ | ||
| 104 | 104 | "owner": MergedBy, |
| 105 | 105 | "private": S.Boolean, |
| 106 | 106 | "pulls_url": S.String, |
| 107 | - "pushed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 107 | + "pushed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 108 | 108 | "releases_url": S.String, |
| 109 | 109 | "size": S.Int, |
| 110 | 110 | "ssh_url": S.String, |
| @@ -117,7 +117,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({ | ||
| 117 | 117 | "tags_url": S.String, |
| 118 | 118 | "teams_url": S.String, |
| 119 | 119 | "trees_url": S.String, |
| 120 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 120 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 121 | 121 | "url": S.String, |
| 122 | 122 | "watchers": S.Int, |
| 123 | 123 | "watchers_count": S.Int, |
| @@ -138,12 +138,12 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({ | ||
| 138 | 138 | "base": Base, |
| 139 | 139 | "body": S.String, |
| 140 | 140 | "changed_files": S.Int, |
| 141 | - "closed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 141 | + "closed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 142 | 142 | "comments": S.Int, |
| 143 | 143 | "comments_url": S.String, |
| 144 | 144 | "commits": S.Int, |
| 145 | 145 | "commits_url": S.String, |
| 146 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 146 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 147 | 147 | "deletions": S.Int, |
| 148 | 148 | "diff_url": S.String, |
| 149 | 149 | "head": Base, |
| @@ -157,7 +157,7 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({ | ||
| 157 | 157 | "mergeable": S.Null, |
| 158 | 158 | "mergeable_state": S.String, |
| 159 | 159 | "merged": S.Boolean, |
| 160 | - "merged_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 160 | + "merged_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 161 | 161 | "merged_by": MergedBy, |
| 162 | 162 | "milestone": S.Null, |
| 163 | 163 | "number": S.Int, |
| @@ -170,7 +170,7 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({ | ||
| 170 | 170 | "state": S.String, |
| 171 | 171 | "statuses_url": S.String, |
| 172 | 172 | "title": S.String, |
| 173 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 173 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 174 | 174 | "url": S.String, |
| 175 | 175 | "user": MergedBy, |
| 176 | 176 | }) {} |
| @@ -216,7 +216,7 @@ export class Actor extends S.Class<Actor>("Actor")({ | ||
| 216 | 216 | |
| 217 | 217 | export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({ |
| 218 | 218 | "actor": Actor, |
| 219 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 219 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 220 | 220 | "id": S.String, |
| 221 | 221 | "org": S.optional(Actor), |
| 222 | 222 | "payload": Payload, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -311,15 +311,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 311 | 311 | if (val === null) { |
| 312 | 312 | return null; |
| 313 | 313 | } |
| 314 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 315 | - return invalidValue(l("Date"), val, key, parent); | |
| 316 | 314 | const d = new Date(val); |
| 317 | 315 | if (isNaN(d.valueOf())) { |
| 318 | 316 | return invalidValue(l("Date"), val, key, parent); |
| 319 | 317 | } |
| 320 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 321 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 322 | - return invalidValue(l("Date"), val, key, parent); | |
| 323 | 318 | return d; |
| 324 | 319 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/0b91a.json
Mflowdefault / TopLevel.js+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/0cffa.json
Mflowdefault / TopLevel.js+0 −5
| @@ -211,15 +211,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 211 | 211 | if (val === null) { |
| 212 | 212 | return null; |
| 213 | 213 | } |
| 214 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 215 | - return invalidValue(l("Date"), val, key, parent); | |
| 216 | 214 | const d = new Date(val); |
| 217 | 215 | if (isNaN(d.valueOf())) { |
| 218 | 216 | return invalidValue(l("Date"), val, key, parent); |
| 219 | 217 | } |
| 220 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 221 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 222 | - return invalidValue(l("Date"), val, key, parent); | |
| 223 | 218 | return d; |
| 224 | 219 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 204 | 204 | if (val === null) { |
| 205 | 205 | return null; |
| 206 | 206 | } |
| 207 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 208 | - return invalidValue(l("Date"), val, key, parent); | |
| 209 | 207 | const d = new Date(val); |
| 210 | 208 | if (isNaN(d.valueOf())) { |
| 211 | 209 | return invalidValue(l("Date"), val, key, parent); |
| 212 | 210 | } |
| 213 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 214 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 215 | - return invalidValue(l("Date"), val, key, parent); | |
| 216 | 211 | return d; |
| 217 | 212 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/0e0c2.json
Mflowdefault / TopLevel.js+0 −5
| @@ -173,15 +173,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 173 | 173 | if (val === null) { |
| 174 | 174 | return null; |
| 175 | 175 | } |
| 176 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 177 | - return invalidValue(l("Date"), val, key, parent); | |
| 178 | 176 | const d = new Date(val); |
| 179 | 177 | if (isNaN(d.valueOf())) { |
| 180 | 178 | return invalidValue(l("Date"), val, key, parent); |
| 181 | 179 | } |
| 182 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 183 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 184 | - return invalidValue(l("Date"), val, key, parent); | |
| 185 | 180 | return d; |
| 186 | 181 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -71,7 +71,7 @@ _Result = PropTypes.shape({ | ||
| 71 | 71 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| 72 | 72 | "images": PropTypes.oneOfType([PropTypes.arrayOf(_Image)]).isRequired, |
| 73 | 73 | "language": _ResultLanguage, |
| 74 | - "release_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 74 | + "release_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 75 | 75 | "stars": PropTypes.oneOfType([Integer]).isRequired, |
| 76 | 76 | "tags": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.any), PropTypes.oneOf([null])])])(props, name, ...args), |
| 77 | 77 | "title": PropTypes.oneOfType([PropTypes.string]).isRequired, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -74,7 +74,7 @@ export class Result extends S.Class<Result>("Result")({ | ||
| 74 | 74 | "id": S.Int, |
| 75 | 75 | "images": S.Array(Image), |
| 76 | 76 | "language": ResultLanguage, |
| 77 | - "release_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 77 | + "release_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 78 | 78 | "stars": S.Int, |
| 79 | 79 | "tags": S.NullOr(S.Array(S.Any)), |
| 80 | 80 | "title": S.String, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -167,15 +167,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 167 | 167 | if (val === null) { |
| 168 | 168 | return null; |
| 169 | 169 | } |
| 170 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 171 | - return invalidValue(l("Date"), val, key, parent); | |
| 172 | 170 | const d = new Date(val); |
| 173 | 171 | if (isNaN(d.valueOf())) { |
| 174 | 172 | return invalidValue(l("Date"), val, key, parent); |
| 175 | 173 | } |
| 176 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 177 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 178 | - return invalidValue(l("Date"), val, key, parent); | |
| 179 | 174 | return d; |
| 180 | 175 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/0fecf.json
Mflowdefault / TopLevel.js+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/10be4.json
Mflowdefault / TopLevel.js+0 −5
| @@ -163,15 +163,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 163 | 163 | if (val === null) { |
| 164 | 164 | return null; |
| 165 | 165 | } |
| 166 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 167 | - return invalidValue(l("Date"), val, key, parent); | |
| 168 | 166 | const d = new Date(val); |
| 169 | 167 | if (isNaN(d.valueOf())) { |
| 170 | 168 | return invalidValue(l("Date"), val, key, parent); |
| 171 | 169 | } |
| 172 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 173 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 174 | - return invalidValue(l("Date"), val, key, parent); | |
| 175 | 170 | return d; |
| 176 | 171 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/112b5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/127a1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -210,15 +210,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 210 | 210 | if (val === null) { |
| 211 | 211 | return null; |
| 212 | 212 | } |
| 213 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 214 | - return invalidValue(l("Date"), val, key, parent); | |
| 215 | 213 | const d = new Date(val); |
| 216 | 214 | if (isNaN(d.valueOf())) { |
| 217 | 215 | return invalidValue(l("Date"), val, key, parent); |
| 218 | 216 | } |
| 219 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 220 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 221 | - return invalidValue(l("Date"), val, key, parent); | |
| 222 | 217 | return d; |
| 223 | 218 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 204 | 204 | if (val === null) { |
| 205 | 205 | return null; |
| 206 | 206 | } |
| 207 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 208 | - return invalidValue(l("Date"), val, key, parent); | |
| 209 | 207 | const d = new Date(val); |
| 210 | 208 | if (isNaN(d.valueOf())) { |
| 211 | 209 | return invalidValue(l("Date"), val, key, parent); |
| 212 | 210 | } |
| 213 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 214 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 215 | - return invalidValue(l("Date"), val, key, parent); | |
| 216 | 211 | return d; |
| 217 | 212 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/13d8d.json
Mflowdefault / TopLevel.js+0 −5
| @@ -122,15 +122,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 122 | 122 | if (val === null) { |
| 123 | 123 | return null; |
| 124 | 124 | } |
| 125 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 126 | - return invalidValue(l("Date"), val, key, parent); | |
| 127 | 125 | const d = new Date(val); |
| 128 | 126 | if (isNaN(d.valueOf())) { |
| 129 | 127 | return invalidValue(l("Date"), val, key, parent); |
| 130 | 128 | } |
| 131 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 132 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 129 | return d; |
| 135 | 130 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -122,15 +122,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 122 | 122 | if (val === null) { |
| 123 | 123 | return null; |
| 124 | 124 | } |
| 125 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 126 | - return invalidValue(l("Date"), val, key, parent); | |
| 127 | 125 | const d = new Date(val); |
| 128 | 126 | if (isNaN(d.valueOf())) { |
| 129 | 127 | return invalidValue(l("Date"), val, key, parent); |
| 130 | 128 | } |
| 131 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 132 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 129 | return d; |
| 135 | 130 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/14d38.json
Mflowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/167d6.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/16bc5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -108,7 +108,7 @@ _Results = PropTypes.shape({ | ||
| 108 | 108 | }); |
| 109 | 109 | _Query = PropTypes.shape({ |
| 110 | 110 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 111 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 111 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | 112 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 113 | 113 | "results": _Results, |
| 114 | 114 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -36,7 +36,7 @@ def from_int(x: Any) -> int: | ||
| 36 | 36 | |
| 37 | 37 | |
| 38 | 38 | def from_datetime(x: Any) -> datetime.datetime: |
| 39 | - return dateutil.parser.parse(x) | |
| 39 | + return dateutil.parser.isoparse(x) | |
| 40 | 40 | |
| 41 | 41 | |
| 42 | 42 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 94 | 94 | |
| 95 | 95 | export class Query extends S.Class<Query>("Query")({ |
| 96 | 96 | "count": S.Int, |
| 97 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 97 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 98 | 98 | "lang": S.String, |
| 99 | 99 | "results": Results, |
| 100 | 100 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/176f1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 121 | 121 | if (val === null) { |
| 122 | 122 | return null; |
| 123 | 123 | } |
| 124 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 124 | const d = new Date(val); |
| 127 | 125 | if (isNaN(d.valueOf())) { |
| 128 | 126 | return invalidValue(l("Date"), val, key, parent); |
| 129 | 127 | } |
| 130 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 131 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 128 | return d; |
| 134 | 129 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 121 | 121 | if (val === null) { |
| 122 | 122 | return null; |
| 123 | 123 | } |
| 124 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 124 | const d = new Date(val); |
| 127 | 125 | if (isNaN(d.valueOf())) { |
| 128 | 126 | return invalidValue(l("Date"), val, key, parent); |
| 129 | 127 | } |
| 130 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 131 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 128 | return d; |
| 134 | 129 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/1a7f5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/1b28c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
5 generated files · +6 −21test/inputs/json/misc/1b409.json
Mflowdefault / TopLevel.js+0 −5
| @@ -187,15 +187,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 187 | 187 | if (val === null) { |
| 188 | 188 | return null; |
| 189 | 189 | } |
| 190 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 191 | - return invalidValue(l("Date"), val, key, parent); | |
| 192 | 190 | const d = new Date(val); |
| 193 | 191 | if (isNaN(d.valueOf())) { |
| 194 | 192 | return invalidValue(l("Date"), val, key, parent); |
| 195 | 193 | } |
| 196 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 197 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 194 | return d; |
| 200 | 195 | } |
Mjavascript-prop-typesdefault / toplevel.js+3 −3
| @@ -39,7 +39,7 @@ _Extra = PropTypes.shape({ | ||
| 39 | 39 | }); |
| 40 | 40 | _Person = PropTypes.shape({ |
| 41 | 41 | "bioguideid": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 42 | - "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 42 | + "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 43 | 43 | "cspanid": PropTypes.oneOfType([Integer]).isRequired, |
| 44 | 44 | "firstname": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 45 | 45 | "gender": _Gender, |
| @@ -63,7 +63,7 @@ _Object = PropTypes.shape({ | ||
| 63 | 63 | "current": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 64 | 64 | "description": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 65 | 65 | "district": PropTypes.oneOfType([Integer]).isRequired, |
| 66 | - "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 66 | + "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 67 | 67 | "extra": _Extra, |
| 68 | 68 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| 69 | 69 | "leadership_title": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| @@ -74,7 +74,7 @@ _Object = PropTypes.shape({ | ||
| 74 | 74 | "role_type_label": _RoleTypeLabel, |
| 75 | 75 | "senator_class": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 76 | 76 | "senator_rank": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 77 | - "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 77 | + "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 78 | 78 | "state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 79 | 79 | "title": _Title, |
| 80 | 80 | "title_long": _RoleTypeLabel, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+3 −3
| @@ -54,7 +54,7 @@ export type Title = S.Schema.Type<typeof Title>; | ||
| 54 | 54 | |
| 55 | 55 | export class Person extends S.Class<Person>("Person")({ |
| 56 | 56 | "bioguideid": S.String, |
| 57 | - "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 57 | + "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 58 | 58 | "cspanid": S.Int, |
| 59 | 59 | "firstname": S.String, |
| 60 | 60 | "gender": Gender, |
| @@ -87,7 +87,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({ | ||
| 87 | 87 | "current": S.Boolean, |
| 88 | 88 | "description": S.String, |
| 89 | 89 | "district": S.Int, |
| 90 | - "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 90 | + "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 91 | 91 | "extra": Extra, |
| 92 | 92 | "id": S.Int, |
| 93 | 93 | "leadership_title": S.NullOr(S.String), |
| @@ -98,7 +98,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({ | ||
| 98 | 98 | "role_type_label": RoleTypeLabel, |
| 99 | 99 | "senator_class": S.Null, |
| 100 | 100 | "senator_rank": S.Null, |
| 101 | - "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 101 | + "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 102 | 102 | "state": S.String, |
| 103 | 103 | "title": Title, |
| 104 | 104 | "title_long": RoleTypeLabel, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -170,15 +170,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 170 | 170 | if (val === null) { |
| 171 | 171 | return null; |
| 172 | 172 | } |
| 173 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 174 | - return invalidValue(l("Date"), val, key, parent); | |
| 175 | 173 | const d = new Date(val); |
| 176 | 174 | if (isNaN(d.valueOf())) { |
| 177 | 175 | return invalidValue(l("Date"), val, key, parent); |
| 178 | 176 | } |
| 179 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 180 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 181 | - return invalidValue(l("Date"), val, key, parent); | |
| 182 | 177 | return d; |
| 183 | 178 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/2465e.json
Mflowdefault / TopLevel.js+0 −5
| @@ -169,15 +169,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 169 | 169 | if (val === null) { |
| 170 | 170 | return null; |
| 171 | 171 | } |
| 172 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 173 | - return invalidValue(l("Date"), val, key, parent); | |
| 174 | 172 | const d = new Date(val); |
| 175 | 173 | if (isNaN(d.valueOf())) { |
| 176 | 174 | return invalidValue(l("Date"), val, key, parent); |
| 177 | 175 | } |
| 178 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 179 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 180 | - return invalidValue(l("Date"), val, key, parent); | |
| 181 | 176 | return d; |
| 182 | 177 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -169,15 +169,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 169 | 169 | if (val === null) { |
| 170 | 170 | return null; |
| 171 | 171 | } |
| 172 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 173 | - return invalidValue(l("Date"), val, key, parent); | |
| 174 | 172 | const d = new Date(val); |
| 175 | 173 | if (isNaN(d.valueOf())) { |
| 176 | 174 | return invalidValue(l("Date"), val, key, parent); |
| 177 | 175 | } |
| 178 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 179 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 180 | - return invalidValue(l("Date"), val, key, parent); | |
| 181 | 176 | return d; |
| 182 | 177 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/24f52.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/262f0.json
Mflowdefault / TopLevel.js+0 −5
| @@ -199,15 +199,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 199 | 199 | if (val === null) { |
| 200 | 200 | return null; |
| 201 | 201 | } |
| 202 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 203 | - return invalidValue(l("Date"), val, key, parent); | |
| 204 | 202 | const d = new Date(val); |
| 205 | 203 | if (isNaN(d.valueOf())) { |
| 206 | 204 | return invalidValue(l("Date"), val, key, parent); |
| 207 | 205 | } |
| 208 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 209 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 210 | - return invalidValue(l("Date"), val, key, parent); | |
| 211 | 206 | return d; |
| 212 | 207 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -109,7 +109,7 @@ _Results = PropTypes.shape({ | ||
| 109 | 109 | }); |
| 110 | 110 | _Query = PropTypes.shape({ |
| 111 | 111 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 112 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 113 | 113 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 114 | 114 | "results": _Results, |
| 115 | 115 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -43,7 +43,7 @@ def from_int(x: Any) -> int: | ||
| 43 | 43 | |
| 44 | 44 | |
| 45 | 45 | def from_datetime(x: Any) -> datetime.datetime: |
| 46 | - return dateutil.parser.parse(x) | |
| 46 | + return dateutil.parser.isoparse(x) | |
| 47 | 47 | |
| 48 | 48 | |
| 49 | 49 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -101,7 +101,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 101 | 101 | |
| 102 | 102 | export class Query extends S.Class<Query>("Query")({ |
| 103 | 103 | "count": S.Int, |
| 104 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 104 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 105 | 105 | "lang": S.String, |
| 106 | 106 | "results": Results, |
| 107 | 107 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 196 | 196 | if (val === null) { |
| 197 | 197 | return null; |
| 198 | 198 | } |
| 199 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 200 | - return invalidValue(l("Date"), val, key, parent); | |
| 201 | 199 | const d = new Date(val); |
| 202 | 200 | if (isNaN(d.valueOf())) { |
| 203 | 201 | return invalidValue(l("Date"), val, key, parent); |
| 204 | 202 | } |
| 205 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 206 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 207 | - return invalidValue(l("Date"), val, key, parent); | |
| 208 | 203 | return d; |
| 209 | 204 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/26b49.json
Mflowdefault / TopLevel.js+0 −5
| @@ -208,15 +208,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 208 | 208 | if (val === null) { |
| 209 | 209 | return null; |
| 210 | 210 | } |
| 211 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 212 | - return invalidValue(l("Date"), val, key, parent); | |
| 213 | 211 | const d = new Date(val); |
| 214 | 212 | if (isNaN(d.valueOf())) { |
| 215 | 213 | return invalidValue(l("Date"), val, key, parent); |
| 216 | 214 | } |
| 217 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 218 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 219 | - return invalidValue(l("Date"), val, key, parent); | |
| 220 | 215 | return d; |
| 221 | 216 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -203,15 +203,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 203 | 203 | if (val === null) { |
| 204 | 204 | return null; |
| 205 | 205 | } |
| 206 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 207 | - return invalidValue(l("Date"), val, key, parent); | |
| 208 | 206 | const d = new Date(val); |
| 209 | 207 | if (isNaN(d.valueOf())) { |
| 210 | 208 | return invalidValue(l("Date"), val, key, parent); |
| 211 | 209 | } |
| 212 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 213 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 214 | - return invalidValue(l("Date"), val, key, parent); | |
| 215 | 210 | return d; |
| 216 | 211 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/26c9c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -283,15 +283,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 283 | 283 | if (val === null) { |
| 284 | 284 | return null; |
| 285 | 285 | } |
| 286 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 287 | - return invalidValue(l("Date"), val, key, parent); | |
| 288 | 286 | const d = new Date(val); |
| 289 | 287 | if (isNaN(d.valueOf())) { |
| 290 | 288 | return invalidValue(l("Date"), val, key, parent); |
| 291 | 289 | } |
| 292 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 293 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 294 | - return invalidValue(l("Date"), val, key, parent); | |
| 295 | 290 | return d; |
| 296 | 291 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -283,15 +283,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 283 | 283 | if (val === null) { |
| 284 | 284 | return null; |
| 285 | 285 | } |
| 286 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 287 | - return invalidValue(l("Date"), val, key, parent); | |
| 288 | 286 | const d = new Date(val); |
| 289 | 287 | if (isNaN(d.valueOf())) { |
| 290 | 288 | return invalidValue(l("Date"), val, key, parent); |
| 291 | 289 | } |
| 292 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 293 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 294 | - return invalidValue(l("Date"), val, key, parent); | |
| 295 | 290 | return d; |
| 296 | 291 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/27332.json
Mflowdefault / TopLevel.js+0 −5
| @@ -249,15 +249,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 249 | 249 | if (val === null) { |
| 250 | 250 | return null; |
| 251 | 251 | } |
| 252 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 253 | - return invalidValue(l("Date"), val, key, parent); | |
| 254 | 252 | const d = new Date(val); |
| 255 | 253 | if (isNaN(d.valueOf())) { |
| 256 | 254 | return invalidValue(l("Date"), val, key, parent); |
| 257 | 255 | } |
| 258 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 259 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 260 | - return invalidValue(l("Date"), val, key, parent); | |
| 261 | 256 | return d; |
| 262 | 257 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -235,15 +235,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 235 | 235 | if (val === null) { |
| 236 | 236 | return null; |
| 237 | 237 | } |
| 238 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 239 | - return invalidValue(l("Date"), val, key, parent); | |
| 240 | 238 | const d = new Date(val); |
| 241 | 239 | if (isNaN(d.valueOf())) { |
| 242 | 240 | return invalidValue(l("Date"), val, key, parent); |
| 243 | 241 | } |
| 244 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 245 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 246 | - return invalidValue(l("Date"), val, key, parent); | |
| 247 | 242 | return d; |
| 248 | 243 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/29f47.json
Mflowdefault / TopLevel.js+0 −5
| @@ -235,15 +235,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 235 | 235 | if (val === null) { |
| 236 | 236 | return null; |
| 237 | 237 | } |
| 238 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 239 | - return invalidValue(l("Date"), val, key, parent); | |
| 240 | 238 | const d = new Date(val); |
| 241 | 239 | if (isNaN(d.valueOf())) { |
| 242 | 240 | return invalidValue(l("Date"), val, key, parent); |
| 243 | 241 | } |
| 244 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 245 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 246 | - return invalidValue(l("Date"), val, key, parent); | |
| 247 | 242 | return d; |
| 248 | 243 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -222,15 +222,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 222 | 222 | if (val === null) { |
| 223 | 223 | return null; |
| 224 | 224 | } |
| 225 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 226 | - return invalidValue(l("Date"), val, key, parent); | |
| 227 | 225 | const d = new Date(val); |
| 228 | 226 | if (isNaN(d.valueOf())) { |
| 229 | 227 | return invalidValue(l("Date"), val, key, parent); |
| 230 | 228 | } |
| 231 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 232 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 233 | - return invalidValue(l("Date"), val, key, parent); | |
| 234 | 229 | return d; |
| 235 | 230 | } |
Test case
5 generated files · +6 −21test/inputs/json/misc/2d4e2.json
Mflowdefault / TopLevel.js+0 −5
| @@ -203,15 +203,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 203 | 203 | if (val === null) { |
| 204 | 204 | return null; |
| 205 | 205 | } |
| 206 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 207 | - return invalidValue(l("Date"), val, key, parent); | |
| 208 | 206 | const d = new Date(val); |
| 209 | 207 | if (isNaN(d.valueOf())) { |
| 210 | 208 | return invalidValue(l("Date"), val, key, parent); |
| 211 | 209 | } |
| 212 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 213 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 214 | - return invalidValue(l("Date"), val, key, parent); | |
| 215 | 210 | return d; |
| 216 | 211 | } |
Mjavascript-prop-typesdefault / toplevel.js+3 −3
| @@ -43,7 +43,7 @@ _Extra = PropTypes.shape({ | ||
| 43 | 43 | }); |
| 44 | 44 | _Person = PropTypes.shape({ |
| 45 | 45 | "bioguideid": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 46 | - "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 46 | + "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 47 | 47 | "cspanid": PropTypes.oneOfType([Integer]).isRequired, |
| 48 | 48 | "firstname": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 49 | 49 | "gender": _Gender, |
| @@ -67,7 +67,7 @@ _Object = PropTypes.shape({ | ||
| 67 | 67 | "current": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 68 | 68 | "description": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 69 | 69 | "district": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 70 | - "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 70 | + "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 71 | 71 | "extra": _Extra, |
| 72 | 72 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| 73 | 73 | "leadership_title": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| @@ -80,7 +80,7 @@ _Object = PropTypes.shape({ | ||
| 80 | 80 | "senator_class_label": _SenatorClassLabel, |
| 81 | 81 | "senator_rank": _SenatorRank, |
| 82 | 82 | "senator_rank_label": _SenatorRankLabel, |
| 83 | - "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 83 | + "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 84 | 84 | "state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 85 | 85 | "title": _Title, |
| 86 | 86 | "title_long": _RoleTypeLabel, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+3 −3
| @@ -80,7 +80,7 @@ export type Title = S.Schema.Type<typeof Title>; | ||
| 80 | 80 | |
| 81 | 81 | export class Person extends S.Class<Person>("Person")({ |
| 82 | 82 | "bioguideid": S.String, |
| 83 | - "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 83 | + "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 84 | 84 | "cspanid": S.Int, |
| 85 | 85 | "firstname": S.String, |
| 86 | 86 | "gender": Gender, |
| @@ -113,7 +113,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({ | ||
| 113 | 113 | "current": S.Boolean, |
| 114 | 114 | "description": S.String, |
| 115 | 115 | "district": S.Null, |
| 116 | - "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 116 | + "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 117 | 117 | "extra": Extra, |
| 118 | 118 | "id": S.Int, |
| 119 | 119 | "leadership_title": S.NullOr(S.String), |
| @@ -126,7 +126,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({ | ||
| 126 | 126 | "senator_class_label": SenatorClassLabel, |
| 127 | 127 | "senator_rank": SenatorRank, |
| 128 | 128 | "senator_rank_label": SenatorRankLabel, |
| 129 | - "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 129 | + "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 130 | 130 | "state": S.String, |
| 131 | 131 | "title": Title, |
| 132 | 132 | "title_long": RoleTypeLabel, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -180,15 +180,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 180 | 180 | if (val === null) { |
| 181 | 181 | return null; |
| 182 | 182 | } |
| 183 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 184 | - return invalidValue(l("Date"), val, key, parent); | |
| 185 | 183 | const d = new Date(val); |
| 186 | 184 | if (isNaN(d.valueOf())) { |
| 187 | 185 | return invalidValue(l("Date"), val, key, parent); |
| 188 | 186 | } |
| 189 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 190 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 191 | - return invalidValue(l("Date"), val, key, parent); | |
| 192 | 187 | return d; |
| 193 | 188 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/2df80.json
Mflowdefault / TopLevel.js+0 −5
| @@ -169,15 +169,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 169 | 169 | if (val === null) { |
| 170 | 170 | return null; |
| 171 | 171 | } |
| 172 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 173 | - return invalidValue(l("Date"), val, key, parent); | |
| 174 | 172 | const d = new Date(val); |
| 175 | 173 | if (isNaN(d.valueOf())) { |
| 176 | 174 | return invalidValue(l("Date"), val, key, parent); |
| 177 | 175 | } |
| 178 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 179 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 180 | - return invalidValue(l("Date"), val, key, parent); | |
| 181 | 176 | return d; |
| 182 | 177 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 125 | 125 | if (val === null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| 128 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 128 | const d = new Date(val); |
| 131 | 129 | if (isNaN(d.valueOf())) { |
| 132 | 130 | return invalidValue(l("Date"), val, key, parent); |
| 133 | 131 | } |
| 134 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 135 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 132 | return d; |
| 138 | 133 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/31189.json
Mflowdefault / TopLevel.js+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -26,7 +26,7 @@ _Rates = PropTypes.shape({ | ||
| 26 | 26 | "super_reduced": PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf([null])]), |
| 27 | 27 | }); |
| 28 | 28 | _Period = PropTypes.shape({ |
| 29 | - "effective_from": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _EffectiveFromEnum])]).isRequired, | |
| 29 | + "effective_from": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _EffectiveFromEnum])]).isRequired, | |
| 30 | 30 | "rates": _Rates, |
| 31 | 31 | }); |
| 32 | 32 | _Rate = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -16,7 +16,7 @@ export class Rates extends S.Class<Rates>("Rates")({ | ||
| 16 | 16 | }) {} |
| 17 | 17 | |
| 18 | 18 | export class Period extends S.Class<Period>("Period")({ |
| 19 | - "effective_from": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), EffectiveFromEnum), | |
| 19 | + "effective_from": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), EffectiveFromEnum), | |
| 20 | 20 | "rates": Rates, |
| 21 | 21 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -123,15 +123,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 123 | 123 | if (val === null) { |
| 124 | 124 | return null; |
| 125 | 125 | } |
| 126 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 127 | - return invalidValue(l("Date"), val, key, parent); | |
| 128 | 126 | const d = new Date(val); |
| 129 | 127 | if (isNaN(d.valueOf())) { |
| 130 | 128 | return invalidValue(l("Date"), val, key, parent); |
| 131 | 129 | } |
| 132 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 133 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 134 | - return invalidValue(l("Date"), val, key, parent); | |
| 135 | 130 | return d; |
| 136 | 131 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/32431.json
Mflowdefault / TopLevel.js+0 −5
| @@ -167,15 +167,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 167 | 167 | if (val === null) { |
| 168 | 168 | return null; |
| 169 | 169 | } |
| 170 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 171 | - return invalidValue(l("Date"), val, key, parent); | |
| 172 | 170 | const d = new Date(val); |
| 173 | 171 | if (isNaN(d.valueOf())) { |
| 174 | 172 | return invalidValue(l("Date"), val, key, parent); |
| 175 | 173 | } |
| 176 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 177 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 178 | - return invalidValue(l("Date"), val, key, parent); | |
| 179 | 174 | return d; |
| 180 | 175 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -159,15 +159,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 159 | 159 | if (val === null) { |
| 160 | 160 | return null; |
| 161 | 161 | } |
| 162 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 163 | - return invalidValue(l("Date"), val, key, parent); | |
| 164 | 162 | const d = new Date(val); |
| 165 | 163 | if (isNaN(d.valueOf())) { |
| 166 | 164 | return invalidValue(l("Date"), val, key, parent); |
| 167 | 165 | } |
| 168 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 169 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 170 | - return invalidValue(l("Date"), val, key, parent); | |
| 171 | 166 | return d; |
| 172 | 167 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/32d5c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 15 | 15 | |
| 16 | 16 | let _TopLevel; |
| 17 | 17 | _TopLevel = PropTypes.shape({ |
| 18 | - "BirthDate": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 18 | + "BirthDate": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 19 | 19 | "BirthDateIsProtected": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 20 | 20 | "GenderTypeID": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | "Notes": PropTypes.oneOfType([PropTypes.string]).isRequired, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -23,7 +23,7 @@ def from_str(x: Any) -> str: | ||
| 23 | 23 | |
| 24 | 24 | |
| 25 | 25 | def from_datetime(x: Any) -> datetime.datetime: |
| 26 | - return dateutil.parser.parse(x) | |
| 26 | + return dateutil.parser.isoparse(x) | |
| 27 | 27 | |
| 28 | 28 | |
| 29 | 29 | def from_none(x: Any) -> Any: |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({ |
| 5 | - "BirthDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))), | |
| 5 | + "BirthDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))), | |
| 6 | 6 | "BirthDateIsProtected": S.Boolean, |
| 7 | 7 | "GenderTypeID": S.Int, |
| 8 | 8 | "Notes": S.String, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
6 generated files · +13 −28test/inputs/json/misc/337ed.json
Mflowdefault / TopLevel.js+0 −5
| @@ -164,15 +164,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 164 | 164 | if (val === null) { |
| 165 | 165 | return null; |
| 166 | 166 | } |
| 167 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 168 | - return invalidValue(l("Date"), val, key, parent); | |
| 169 | 167 | const d = new Date(val); |
| 170 | 168 | if (isNaN(d.valueOf())) { |
| 171 | 169 | return invalidValue(l("Date"), val, key, parent); |
| 172 | 170 | } |
| 173 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 174 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 175 | - return invalidValue(l("Date"), val, key, parent); | |
| 176 | 171 | return d; |
| 177 | 172 | } |
Mjavascript-prop-typesdefault / toplevel.js+6 −6
| @@ -24,23 +24,23 @@ _Facets = PropTypes.shape({ | ||
| 24 | 24 | }); |
| 25 | 25 | _CustomIncome = PropTypes.shape({ |
| 26 | 26 | "amount": PropTypes.oneOfType([Integer]).isRequired, |
| 27 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 27 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 28 | 28 | "id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 29 | 29 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 30 | 30 | "status": _Status, |
| 31 | 31 | "type": _CustomIncomeType, |
| 32 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 32 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 33 | 33 | "uri": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 34 | 34 | }); |
| 35 | 35 | _Result = PropTypes.shape({ |
| 36 | 36 | "cost_absolute": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 37 | 37 | "cost_max": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 38 | 38 | "cost_min": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 39 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 39 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 40 | 40 | "customIncomes": PropTypes.oneOfType([PropTypes.arrayOf(_CustomIncome)]).isRequired, |
| 41 | 41 | "direct_rep_costs_max": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 42 | 42 | "direct_rep_costs_min": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 43 | - "end_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 43 | + "end_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 44 | 44 | "eur_sources_grants": PropTypes.oneOfType([Integer]).isRequired, |
| 45 | 45 | "eur_sources_grants_src": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| 46 | 46 | "eur_sources_procurement": PropTypes.oneOfType([Integer]).isRequired, |
| @@ -56,14 +56,14 @@ _Result = PropTypes.shape({ | ||
| 56 | 56 | "public_financing_national": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 57 | 57 | "public_financing_total": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 58 | 58 | "representative": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 59 | - "start_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 59 | + "start_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 60 | 60 | "status": _Status, |
| 61 | 61 | "total_budget": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 62 | 62 | "turnover_absolute": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 63 | 63 | "turnover_max": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 64 | 64 | "turnover_min": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 65 | 65 | "type": _ResultType, |
| 66 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 66 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 67 | 67 | "uri": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 68 | 68 | }); |
| 69 | 69 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -15,7 +15,7 @@ def from_int(x: Any) -> int: | ||
| 15 | 15 | |
| 16 | 16 | |
| 17 | 17 | def from_datetime(x: Any) -> datetime.datetime: |
| 18 | - return dateutil.parser.parse(x) | |
| 18 | + return dateutil.parser.isoparse(x) | |
| 19 | 19 | |
| 20 | 20 | |
| 21 | 21 | def from_str(x: Any) -> str: |
Mtypescript-effect-schemadefault / TopLevel.ts+6 −6
| @@ -24,12 +24,12 @@ export type ResultType = S.Schema.Type<typeof ResultType>; | ||
| 24 | 24 | |
| 25 | 25 | export class CustomIncome extends S.Class<CustomIncome>("CustomIncome")({ |
| 26 | 26 | "amount": S.Int, |
| 27 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 27 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 28 | 28 | "id": S.String, |
| 29 | 29 | "name": S.String, |
| 30 | 30 | "status": Status, |
| 31 | 31 | "type": CustomIncomeType, |
| 32 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 32 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 33 | 33 | "uri": S.String, |
| 34 | 34 | }) {} |
| 35 | 35 | |
| @@ -37,11 +37,11 @@ export class Result extends S.Class<Result>("Result")({ | ||
| 37 | 37 | "cost_absolute": S.NullOr(S.Int), |
| 38 | 38 | "cost_max": S.NullOr(S.Int), |
| 39 | 39 | "cost_min": S.NullOr(S.Int), |
| 40 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 40 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 41 | 41 | "customIncomes": S.Array(CustomIncome), |
| 42 | 42 | "direct_rep_costs_max": S.Null, |
| 43 | 43 | "direct_rep_costs_min": S.Null, |
| 44 | - "end_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 44 | + "end_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 45 | 45 | "eur_sources_grants": S.Int, |
| 46 | 46 | "eur_sources_grants_src": S.NullOr(S.String), |
| 47 | 47 | "eur_sources_procurement": S.Int, |
| @@ -57,14 +57,14 @@ export class Result extends S.Class<Result>("Result")({ | ||
| 57 | 57 | "public_financing_national": S.NullOr(S.Int), |
| 58 | 58 | "public_financing_total": S.NullOr(S.Int), |
| 59 | 59 | "representative": S.String, |
| 60 | - "start_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 60 | + "start_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 61 | 61 | "status": Status, |
| 62 | 62 | "total_budget": S.NullOr(S.Int), |
| 63 | 63 | "turnover_absolute": S.NullOr(S.Int), |
| 64 | 64 | "turnover_max": S.NullOr(S.Int), |
| 65 | 65 | "turnover_min": S.NullOr(S.Int), |
| 66 | 66 | "type": ResultType, |
| 67 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 67 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 68 | 68 | "uri": S.String, |
| 69 | 69 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -154,15 +154,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 154 | 154 | if (val === null) { |
| 155 | 155 | return null; |
| 156 | 156 | } |
| 157 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 158 | - return invalidValue(l("Date"), val, key, parent); | |
| 159 | 157 | const d = new Date(val); |
| 160 | 158 | if (isNaN(d.valueOf())) { |
| 161 | 159 | return invalidValue(l("Date"), val, key, parent); |
| 162 | 160 | } |
| 163 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 164 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 165 | - return invalidValue(l("Date"), val, key, parent); | |
| 166 | 161 | return d; |
| 167 | 162 | } |
Test case
5 generated files · +4 −19test/inputs/json/misc/33d2e.json
Mflowdefault / TopLevel.js+0 −5
| @@ -149,15 +149,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 149 | 149 | if (val === null) { |
| 150 | 150 | return null; |
| 151 | 151 | } |
| 152 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 153 | - return invalidValue(l("Date"), val, key, parent); | |
| 154 | 152 | const d = new Date(val); |
| 155 | 153 | if (isNaN(d.valueOf())) { |
| 156 | 154 | return invalidValue(l("Date"), val, key, parent); |
| 157 | 155 | } |
| 158 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 159 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 160 | - return invalidValue(l("Date"), val, key, parent); | |
| 161 | 156 | return d; |
| 162 | 157 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -33,11 +33,11 @@ _Prize = PropTypes.shape({ | ||
| 33 | 33 | "year": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 34 | 34 | }); |
| 35 | 35 | _Laureate = PropTypes.shape({ |
| 36 | - "born": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _BornEnum])]).isRequired, | |
| 36 | + "born": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _BornEnum])]).isRequired, | |
| 37 | 37 | "bornCity": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 38 | 38 | "bornCountry": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 39 | 39 | "bornCountryCode": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 40 | - "died": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _BornEnum])]).isRequired, | |
| 40 | + "died": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _BornEnum])]).isRequired, | |
| 41 | 41 | "diedCity": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 42 | 42 | "diedCountry": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 43 | 43 | "diedCountryCode": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -43,11 +43,11 @@ export class Prize extends S.Class<Prize>("Prize")({ | ||
| 43 | 43 | }) {} |
| 44 | 44 | |
| 45 | 45 | export class Laureate extends S.Class<Laureate>("Laureate")({ |
| 46 | - "born": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), BornEnum), | |
| 46 | + "born": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), BornEnum), | |
| 47 | 47 | "bornCity": S.optional(S.String), |
| 48 | 48 | "bornCountry": S.optional(S.String), |
| 49 | 49 | "bornCountryCode": S.optional(S.String), |
| 50 | - "died": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), BornEnum), | |
| 50 | + "died": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), BornEnum), | |
| 51 | 51 | "diedCity": S.optional(S.String), |
| 52 | 52 | "diedCountry": S.optional(S.String), |
| 53 | 53 | "diedCountryCode": S.optional(S.String), |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -137,15 +137,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 137 | 137 | if (val === null) { |
| 138 | 138 | return null; |
| 139 | 139 | } |
| 140 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 141 | - return invalidValue(l("Date"), val, key, parent); | |
| 142 | 140 | const d = new Date(val); |
| 143 | 141 | if (isNaN(d.valueOf())) { |
| 144 | 142 | return invalidValue(l("Date"), val, key, parent); |
| 145 | 143 | } |
| 146 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 147 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 148 | - return invalidValue(l("Date"), val, key, parent); | |
| 149 | 144 | return d; |
| 150 | 145 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/34702.json
Mflowdefault / TopLevel.js+0 −5
| @@ -184,15 +184,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 184 | 184 | if (val === null) { |
| 185 | 185 | return null; |
| 186 | 186 | } |
| 187 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 188 | - return invalidValue(l("Date"), val, key, parent); | |
| 189 | 187 | const d = new Date(val); |
| 190 | 188 | if (isNaN(d.valueOf())) { |
| 191 | 189 | return invalidValue(l("Date"), val, key, parent); |
| 192 | 190 | } |
| 193 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 194 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 195 | - return invalidValue(l("Date"), val, key, parent); | |
| 196 | 191 | return d; |
| 197 | 192 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -151,15 +151,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 151 | 151 | if (val === null) { |
| 152 | 152 | return null; |
| 153 | 153 | } |
| 154 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 155 | - return invalidValue(l("Date"), val, key, parent); | |
| 156 | 154 | const d = new Date(val); |
| 157 | 155 | if (isNaN(d.valueOf())) { |
| 158 | 156 | return invalidValue(l("Date"), val, key, parent); |
| 159 | 157 | } |
| 160 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 161 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 162 | - return invalidValue(l("Date"), val, key, parent); | |
| 163 | 158 | return d; |
| 164 | 159 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/3536b.json
Mflowdefault / TopLevel.js+0 −5
| @@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 131 | 131 | if (val === null) { |
| 132 | 132 | return null; |
| 133 | 133 | } |
| 134 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 134 | const d = new Date(val); |
| 137 | 135 | if (isNaN(d.valueOf())) { |
| 138 | 136 | return invalidValue(l("Date"), val, key, parent); |
| 139 | 137 | } |
| 140 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 141 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 142 | - return invalidValue(l("Date"), val, key, parent); | |
| 143 | 138 | return d; |
| 144 | 139 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 125 | 125 | if (val === null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| 128 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 128 | const d = new Date(val); |
| 131 | 129 | if (isNaN(d.valueOf())) { |
| 132 | 130 | return invalidValue(l("Date"), val, key, parent); |
| 133 | 131 | } |
| 134 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 135 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 132 | return d; |
| 138 | 133 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/3659d.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/36d5d.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/3a6b3.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/3e9a3.json
Mflowdefault / TopLevel.js+0 −5
| @@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 121 | 121 | if (val === null) { |
| 122 | 122 | return null; |
| 123 | 123 | } |
| 124 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 124 | const d = new Date(val); |
| 127 | 125 | if (isNaN(d.valueOf())) { |
| 128 | 126 | return invalidValue(l("Date"), val, key, parent); |
| 129 | 127 | } |
| 130 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 131 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 128 | return d; |
| 134 | 129 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 121 | 121 | if (val === null) { |
| 122 | 122 | return null; |
| 123 | 123 | } |
| 124 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 124 | const d = new Date(val); |
| 127 | 125 | if (isNaN(d.valueOf())) { |
| 128 | 126 | return invalidValue(l("Date"), val, key, parent); |
| 129 | 127 | } |
| 130 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 131 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 128 | return d; |
| 134 | 129 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/3f1ce.json
Mflowdefault / TopLevel.js+0 −5
| @@ -197,15 +197,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 197 | 197 | if (val === null) { |
| 198 | 198 | return null; |
| 199 | 199 | } |
| 200 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 201 | - return invalidValue(l("Date"), val, key, parent); | |
| 202 | 200 | const d = new Date(val); |
| 203 | 201 | if (isNaN(d.valueOf())) { |
| 204 | 202 | return invalidValue(l("Date"), val, key, parent); |
| 205 | 203 | } |
| 206 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 207 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 208 | - return invalidValue(l("Date"), val, key, parent); | |
| 209 | 204 | return d; |
| 210 | 205 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -109,7 +109,7 @@ _Results = PropTypes.shape({ | ||
| 109 | 109 | }); |
| 110 | 110 | _Query = PropTypes.shape({ |
| 111 | 111 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 112 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 113 | 113 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 114 | 114 | "results": _Results, |
| 115 | 115 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -43,7 +43,7 @@ def from_int(x: Any) -> int: | ||
| 43 | 43 | |
| 44 | 44 | |
| 45 | 45 | def from_datetime(x: Any) -> datetime.datetime: |
| 46 | - return dateutil.parser.parse(x) | |
| 46 | + return dateutil.parser.isoparse(x) | |
| 47 | 47 | |
| 48 | 48 | |
| 49 | 49 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -99,7 +99,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 99 | 99 | |
| 100 | 100 | export class Query extends S.Class<Query>("Query")({ |
| 101 | 101 | "count": S.Int, |
| 102 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 102 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 103 | 103 | "lang": S.String, |
| 104 | 104 | "results": Results, |
| 105 | 105 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 196 | 196 | if (val === null) { |
| 197 | 197 | return null; |
| 198 | 198 | } |
| 199 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 200 | - return invalidValue(l("Date"), val, key, parent); | |
| 201 | 199 | const d = new Date(val); |
| 202 | 200 | if (isNaN(d.valueOf())) { |
| 203 | 201 | return invalidValue(l("Date"), val, key, parent); |
| 204 | 202 | } |
| 205 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 206 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 207 | - return invalidValue(l("Date"), val, key, parent); | |
| 208 | 203 | return d; |
| 209 | 204 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/421d4.json
Mflowdefault / TopLevel.js+0 −5
| @@ -210,15 +210,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 210 | 210 | if (val === null) { |
| 211 | 211 | return null; |
| 212 | 212 | } |
| 213 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 214 | - return invalidValue(l("Date"), val, key, parent); | |
| 215 | 213 | const d = new Date(val); |
| 216 | 214 | if (isNaN(d.valueOf())) { |
| 217 | 215 | return invalidValue(l("Date"), val, key, parent); |
| 218 | 216 | } |
| 219 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 220 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 221 | - return invalidValue(l("Date"), val, key, parent); | |
| 222 | 217 | return d; |
| 223 | 218 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -207,15 +207,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 207 | 207 | if (val === null) { |
| 208 | 208 | return null; |
| 209 | 209 | } |
| 210 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 211 | - return invalidValue(l("Date"), val, key, parent); | |
| 212 | 210 | const d = new Date(val); |
| 213 | 211 | if (isNaN(d.valueOf())) { |
| 214 | 212 | return invalidValue(l("Date"), val, key, parent); |
| 215 | 213 | } |
| 216 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 217 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 218 | - return invalidValue(l("Date"), val, key, parent); | |
| 219 | 214 | return d; |
| 220 | 215 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/437e7.json
Mflowdefault / TopLevel.js+0 −5
| @@ -205,15 +205,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 205 | 205 | if (val === null) { |
| 206 | 206 | return null; |
| 207 | 207 | } |
| 208 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 209 | - return invalidValue(l("Date"), val, key, parent); | |
| 210 | 208 | const d = new Date(val); |
| 211 | 209 | if (isNaN(d.valueOf())) { |
| 212 | 210 | return invalidValue(l("Date"), val, key, parent); |
| 213 | 211 | } |
| 214 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 215 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 216 | - return invalidValue(l("Date"), val, key, parent); | |
| 217 | 212 | return d; |
| 218 | 213 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -200,15 +200,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 200 | 200 | if (val === null) { |
| 201 | 201 | return null; |
| 202 | 202 | } |
| 203 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 204 | - return invalidValue(l("Date"), val, key, parent); | |
| 205 | 203 | const d = new Date(val); |
| 206 | 204 | if (isNaN(d.valueOf())) { |
| 207 | 205 | return invalidValue(l("Date"), val, key, parent); |
| 208 | 206 | } |
| 209 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 210 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 211 | - return invalidValue(l("Date"), val, key, parent); | |
| 212 | 207 | return d; |
| 213 | 208 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/43970.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/43eaf.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/458db.json
Mflowdefault / TopLevel.js+0 −5
| @@ -138,15 +138,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 138 | 138 | if (val === null) { |
| 139 | 139 | return null; |
| 140 | 140 | } |
| 141 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 142 | - return invalidValue(l("Date"), val, key, parent); | |
| 143 | 141 | const d = new Date(val); |
| 144 | 142 | if (isNaN(d.valueOf())) { |
| 145 | 143 | return invalidValue(l("Date"), val, key, parent); |
| 146 | 144 | } |
| 147 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 148 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 149 | - return invalidValue(l("Date"), val, key, parent); | |
| 150 | 145 | return d; |
| 151 | 146 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -137,15 +137,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 137 | 137 | if (val === null) { |
| 138 | 138 | return null; |
| 139 | 139 | } |
| 140 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 141 | - return invalidValue(l("Date"), val, key, parent); | |
| 142 | 140 | const d = new Date(val); |
| 143 | 141 | if (isNaN(d.valueOf())) { |
| 144 | 142 | return invalidValue(l("Date"), val, key, parent); |
| 145 | 143 | } |
| 146 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 147 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 148 | - return invalidValue(l("Date"), val, key, parent); | |
| 149 | 144 | return d; |
| 150 | 145 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/4961a.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/4a0d7.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/4a455.json
Mflowdefault / TopLevel.js+0 −5
| @@ -139,15 +139,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 139 | 139 | if (val === null) { |
| 140 | 140 | return null; |
| 141 | 141 | } |
| 142 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 143 | - return invalidValue(l("Date"), val, key, parent); | |
| 144 | 142 | const d = new Date(val); |
| 145 | 143 | if (isNaN(d.valueOf())) { |
| 146 | 144 | return invalidValue(l("Date"), val, key, parent); |
| 147 | 145 | } |
| 148 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 149 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 150 | - return invalidValue(l("Date"), val, key, parent); | |
| 151 | 146 | return d; |
| 152 | 147 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/4c547.json
Mflowdefault / TopLevel.js+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -108,7 +108,7 @@ _Results = PropTypes.shape({ | ||
| 108 | 108 | }); |
| 109 | 109 | _Query = PropTypes.shape({ |
| 110 | 110 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 111 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 111 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | 112 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 113 | 113 | "results": _Results, |
| 114 | 114 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -36,7 +36,7 @@ def from_int(x: Any) -> int: | ||
| 36 | 36 | |
| 37 | 37 | |
| 38 | 38 | def from_datetime(x: Any) -> datetime.datetime: |
| 39 | - return dateutil.parser.parse(x) | |
| 39 | + return dateutil.parser.isoparse(x) | |
| 40 | 40 | |
| 41 | 41 | |
| 42 | 42 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 94 | 94 | |
| 95 | 95 | export class Query extends S.Class<Query>("Query")({ |
| 96 | 96 | "count": S.Int, |
| 97 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 97 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 98 | 98 | "lang": S.String, |
| 99 | 99 | "results": Results, |
| 100 | 100 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/4d6fb.json
Mflowdefault / TopLevel.js+0 −5
| @@ -244,15 +244,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 244 | 244 | if (val === null) { |
| 245 | 245 | return null; |
| 246 | 246 | } |
| 247 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 248 | - return invalidValue(l("Date"), val, key, parent); | |
| 249 | 247 | const d = new Date(val); |
| 250 | 248 | if (isNaN(d.valueOf())) { |
| 251 | 249 | return invalidValue(l("Date"), val, key, parent); |
| 252 | 250 | } |
| 253 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 254 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 255 | - return invalidValue(l("Date"), val, key, parent); | |
| 256 | 251 | return d; |
| 257 | 252 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -234,15 +234,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 234 | 234 | if (val === null) { |
| 235 | 235 | return null; |
| 236 | 236 | } |
| 237 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 238 | - return invalidValue(l("Date"), val, key, parent); | |
| 239 | 237 | const d = new Date(val); |
| 240 | 238 | if (isNaN(d.valueOf())) { |
| 241 | 239 | return invalidValue(l("Date"), val, key, parent); |
| 242 | 240 | } |
| 243 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 244 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 245 | - return invalidValue(l("Date"), val, key, parent); | |
| 246 | 241 | return d; |
| 247 | 242 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/4e336.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/54147.json
Mflowdefault / TopLevel.js+0 −5
| @@ -112,15 +112,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 112 | 112 | if (val === null) { |
| 113 | 113 | return null; |
| 114 | 114 | } |
| 115 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 115 | const d = new Date(val); |
| 118 | 116 | if (isNaN(d.valueOf())) { |
| 119 | 117 | return invalidValue(l("Date"), val, key, parent); |
| 120 | 118 | } |
| 121 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 122 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 123 | - return invalidValue(l("Date"), val, key, parent); | |
| 124 | 119 | return d; |
| 125 | 120 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Test case
6 generated files · +5 −20test/inputs/json/misc/54d32.json
Mflowdefault / TopLevel.js+0 −5
| @@ -118,15 +118,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 118 | 118 | if (val === null) { |
| 119 | 119 | return null; |
| 120 | 120 | } |
| 121 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 122 | - return invalidValue(l("Date"), val, key, parent); | |
| 123 | 121 | const d = new Date(val); |
| 124 | 122 | if (isNaN(d.valueOf())) { |
| 125 | 123 | return invalidValue(l("Date"), val, key, parent); |
| 126 | 124 | } |
| 127 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 128 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 125 | return d; |
| 131 | 126 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -20,12 +20,12 @@ const _Status = PropTypes.oneOf(['inactive', 'active']); | ||
| 20 | 20 | _Facets = PropTypes.shape({ |
| 21 | 21 | }); |
| 22 | 22 | _Result = PropTypes.shape({ |
| 23 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 23 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 24 | 24 | "id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 25 | 25 | "person_id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 26 | 26 | "representative_id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 27 | 27 | "status": _Status, |
| 28 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 28 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 29 | 29 | }); |
| 30 | 30 | _TopLevel = PropTypes.shape({ |
| 31 | 31 | "count": PropTypes.oneOfType([Integer]).isRequired, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum) | ||
| 10 | 10 | |
| 11 | 11 | |
| 12 | 12 | def from_datetime(x: Any) -> datetime.datetime: |
| 13 | - return dateutil.parser.parse(x) | |
| 13 | + return dateutil.parser.isoparse(x) | |
| 14 | 14 | |
| 15 | 15 | |
| 16 | 16 | def from_str(x: Any) -> str: |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -8,12 +8,12 @@ export const Status = S.Literal( | ||
| 8 | 8 | export type Status = S.Schema.Type<typeof Status>; |
| 9 | 9 | |
| 10 | 10 | export class Result extends S.Class<Result>("Result")({ |
| 11 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 11 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 12 | 12 | "id": S.String, |
| 13 | 13 | "person_id": S.String, |
| 14 | 14 | "representative_id": S.String, |
| 15 | 15 | "status": Status, |
| 16 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 16 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 17 | 17 | }) {} |
| 18 | 18 | |
| 19 | 19 | export class Facets extends S.Class<Facets>("Facets")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value))) |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -113,15 +113,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 113 | 113 | if (val === null) { |
| 114 | 114 | return null; |
| 115 | 115 | } |
| 116 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 116 | const d = new Date(val); |
| 119 | 117 | if (isNaN(d.valueOf())) { |
| 120 | 118 | return invalidValue(l("Date"), val, key, parent); |
| 121 | 119 | } |
| 122 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 123 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 120 | return d; |
| 126 | 121 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/570ec.json
Mflowdefault / TopLevel.js+0 −5
| @@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 131 | 131 | if (val === null) { |
| 132 | 132 | return null; |
| 133 | 133 | } |
| 134 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 134 | const d = new Date(val); |
| 137 | 135 | if (isNaN(d.valueOf())) { |
| 138 | 136 | return invalidValue(l("Date"), val, key, parent); |
| 139 | 137 | } |
| 140 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 141 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 142 | - return invalidValue(l("Date"), val, key, parent); | |
| 143 | 138 | return d; |
| 144 | 139 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 128 | 128 | if (val === null) { |
| 129 | 129 | return null; |
| 130 | 130 | } |
| 131 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 131 | const d = new Date(val); |
| 134 | 132 | if (isNaN(d.valueOf())) { |
| 135 | 133 | return invalidValue(l("Date"), val, key, parent); |
| 136 | 134 | } |
| 137 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 138 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 139 | - return invalidValue(l("Date"), val, key, parent); | |
| 140 | 135 | return d; |
| 141 | 136 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/5dd0d.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/5eae5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 15 | 15 | |
| 16 | 16 | let _TopLevel; |
| 17 | 17 | _TopLevel = PropTypes.shape({ |
| 18 | - "Date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "Date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "ID": PropTypes.oneOfType([Integer]).isRequired, |
| 20 | 20 | "Sponsor": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 21 | 21 | "Title": PropTypes.oneOfType([PropTypes.string]).isRequired, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -8,7 +8,7 @@ T = TypeVar("T") | ||
| 8 | 8 | |
| 9 | 9 | |
| 10 | 10 | def from_datetime(x: Any) -> datetime.datetime: |
| 11 | - return dateutil.parser.parse(x) | |
| 11 | + return dateutil.parser.isoparse(x) | |
| 12 | 12 | |
| 13 | 13 | |
| 14 | 14 | def from_int(x: Any) -> int: |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({ |
| 5 | - "Date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 5 | + "Date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 6 | 6 | "ID": S.Int, |
| 7 | 7 | "Sponsor": S.String, |
| 8 | 8 | "Title": S.String, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/5eb20.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/5f3a1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/5f7fe.json
Mflowdefault / TopLevel.js+0 −5
| @@ -284,15 +284,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 284 | 284 | if (val === null) { |
| 285 | 285 | return null; |
| 286 | 286 | } |
| 287 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 288 | - return invalidValue(l("Date"), val, key, parent); | |
| 289 | 287 | const d = new Date(val); |
| 290 | 288 | if (isNaN(d.valueOf())) { |
| 291 | 289 | return invalidValue(l("Date"), val, key, parent); |
| 292 | 290 | } |
| 293 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 294 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 295 | - return invalidValue(l("Date"), val, key, parent); | |
| 296 | 291 | return d; |
| 297 | 292 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -281,15 +281,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 281 | 281 | if (val === null) { |
| 282 | 282 | return null; |
| 283 | 283 | } |
| 284 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 285 | - return invalidValue(l("Date"), val, key, parent); | |
| 286 | 284 | const d = new Date(val); |
| 287 | 285 | if (isNaN(d.valueOf())) { |
| 288 | 286 | return invalidValue(l("Date"), val, key, parent); |
| 289 | 287 | } |
| 290 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 291 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 292 | - return invalidValue(l("Date"), val, key, parent); | |
| 293 | 288 | return d; |
| 294 | 289 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/617e8.json
Mflowdefault / TopLevel.js+0 −5
| @@ -283,15 +283,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 283 | 283 | if (val === null) { |
| 284 | 284 | return null; |
| 285 | 285 | } |
| 286 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 287 | - return invalidValue(l("Date"), val, key, parent); | |
| 288 | 286 | const d = new Date(val); |
| 289 | 287 | if (isNaN(d.valueOf())) { |
| 290 | 288 | return invalidValue(l("Date"), val, key, parent); |
| 291 | 289 | } |
| 292 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 293 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 294 | - return invalidValue(l("Date"), val, key, parent); | |
| 295 | 290 | return d; |
| 296 | 291 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -280,15 +280,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 280 | 280 | if (val === null) { |
| 281 | 281 | return null; |
| 282 | 282 | } |
| 283 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 284 | - return invalidValue(l("Date"), val, key, parent); | |
| 285 | 283 | const d = new Date(val); |
| 286 | 284 | if (isNaN(d.valueOf())) { |
| 287 | 285 | return invalidValue(l("Date"), val, key, parent); |
| 288 | 286 | } |
| 289 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 290 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 291 | - return invalidValue(l("Date"), val, key, parent); | |
| 292 | 287 | return d; |
| 293 | 288 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/61b66.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/6260a.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
5 generated files · +4 −19test/inputs/json/misc/65dec.json
Mflowdefault / TopLevel.js+0 −5
| @@ -183,15 +183,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 183 | 183 | if (val === null) { |
| 184 | 184 | return null; |
| 185 | 185 | } |
| 186 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 187 | - return invalidValue(l("Date"), val, key, parent); | |
| 188 | 186 | const d = new Date(val); |
| 189 | 187 | if (isNaN(d.valueOf())) { |
| 190 | 188 | return invalidValue(l("Date"), val, key, parent); |
| 191 | 189 | } |
| 192 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 193 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 194 | - return invalidValue(l("Date"), val, key, parent); | |
| 195 | 190 | return d; |
| 196 | 191 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -28,7 +28,7 @@ _LegalityElement = PropTypes.shape({ | ||
| 28 | 28 | "legality": _LegalityEnum, |
| 29 | 29 | }); |
| 30 | 30 | _Ruling = PropTypes.shape({ |
| 31 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 31 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 32 | 32 | "text": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 33 | 33 | }); |
| 34 | 34 | _Card = PropTypes.shape({ |
| @@ -71,7 +71,7 @@ _TopLevel = PropTypes.shape({ | ||
| 71 | 71 | "mkm_id": PropTypes.oneOfType([Integer]).isRequired, |
| 72 | 72 | "mkm_name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 73 | 73 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 74 | - "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 74 | + "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 75 | 75 | "type": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 76 | 76 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -55,7 +55,7 @@ export const Type = S.Literal( | ||
| 55 | 55 | export type Type = S.Schema.Type<typeof Type>; |
| 56 | 56 | |
| 57 | 57 | export class Ruling extends S.Class<Ruling>("Ruling")({ |
| 58 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 58 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 59 | 59 | "text": S.String, |
| 60 | 60 | }) {} |
| 61 | 61 | |
| @@ -105,6 +105,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({ | ||
| 105 | 105 | "mkm_id": S.Int, |
| 106 | 106 | "mkm_name": S.String, |
| 107 | 107 | "name": S.String, |
| 108 | - "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 108 | + "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 109 | 109 | "type": S.String, |
| 110 | 110 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -159,15 +159,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 159 | 159 | if (val === null) { |
| 160 | 160 | return null; |
| 161 | 161 | } |
| 162 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 163 | - return invalidValue(l("Date"), val, key, parent); | |
| 164 | 162 | const d = new Date(val); |
| 165 | 163 | if (isNaN(d.valueOf())) { |
| 166 | 164 | return invalidValue(l("Date"), val, key, parent); |
| 167 | 165 | } |
| 168 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 169 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 170 | - return invalidValue(l("Date"), val, key, parent); | |
| 171 | 166 | return d; |
| 172 | 167 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/66121.json
Mflowdefault / TopLevel.js+0 −5
| @@ -140,15 +140,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 140 | 140 | if (val === null) { |
| 141 | 141 | return null; |
| 142 | 142 | } |
| 143 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 144 | - return invalidValue(l("Date"), val, key, parent); | |
| 145 | 143 | const d = new Date(val); |
| 146 | 144 | if (isNaN(d.valueOf())) { |
| 147 | 145 | return invalidValue(l("Date"), val, key, parent); |
| 148 | 146 | } |
| 149 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 150 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 151 | - return invalidValue(l("Date"), val, key, parent); | |
| 152 | 147 | return d; |
| 153 | 148 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 131 | 131 | if (val === null) { |
| 132 | 132 | return null; |
| 133 | 133 | } |
| 134 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 134 | const d = new Date(val); |
| 137 | 135 | if (isNaN(d.valueOf())) { |
| 138 | 136 | return invalidValue(l("Date"), val, key, parent); |
| 139 | 137 | } |
| 140 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 141 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 142 | - return invalidValue(l("Date"), val, key, parent); | |
| 143 | 138 | return d; |
| 144 | 139 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/6617c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/67c03.json
Mflowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/68c30.json
Mflowdefault / TopLevel.js+0 −5
| @@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 127 | 127 | if (val === null) { |
| 128 | 128 | return null; |
| 129 | 129 | } |
| 130 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 130 | const d = new Date(val); |
| 133 | 131 | if (isNaN(d.valueOf())) { |
| 134 | 132 | return invalidValue(l("Date"), val, key, parent); |
| 135 | 133 | } |
| 136 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 137 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 138 | - return invalidValue(l("Date"), val, key, parent); | |
| 139 | 134 | return d; |
| 140 | 135 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 127 | 127 | if (val === null) { |
| 128 | 128 | return null; |
| 129 | 129 | } |
| 130 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 130 | const d = new Date(val); |
| 133 | 131 | if (isNaN(d.valueOf())) { |
| 134 | 132 | return invalidValue(l("Date"), val, key, parent); |
| 135 | 133 | } |
| 136 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 137 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 138 | - return invalidValue(l("Date"), val, key, parent); | |
| 139 | 134 | return d; |
| 140 | 135 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/6c155.json
Mflowdefault / TopLevel.js+0 −5
| @@ -149,15 +149,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 149 | 149 | if (val === null) { |
| 150 | 150 | return null; |
| 151 | 151 | } |
| 152 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 153 | - return invalidValue(l("Date"), val, key, parent); | |
| 154 | 152 | const d = new Date(val); |
| 155 | 153 | if (isNaN(d.valueOf())) { |
| 156 | 154 | return invalidValue(l("Date"), val, key, parent); |
| 157 | 155 | } |
| 158 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 159 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 160 | - return invalidValue(l("Date"), val, key, parent); | |
| 161 | 156 | return d; |
| 162 | 157 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -149,15 +149,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 149 | 149 | if (val === null) { |
| 150 | 150 | return null; |
| 151 | 151 | } |
| 152 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 153 | - return invalidValue(l("Date"), val, key, parent); | |
| 154 | 152 | const d = new Date(val); |
| 155 | 153 | if (isNaN(d.valueOf())) { |
| 156 | 154 | return invalidValue(l("Date"), val, key, parent); |
| 157 | 155 | } |
| 158 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 159 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 160 | - return invalidValue(l("Date"), val, key, parent); | |
| 161 | 156 | return d; |
| 162 | 157 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/6de06.json
Mflowdefault / TopLevel.js+0 −5
| @@ -244,15 +244,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 244 | 244 | if (val === null) { |
| 245 | 245 | return null; |
| 246 | 246 | } |
| 247 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 248 | - return invalidValue(l("Date"), val, key, parent); | |
| 249 | 247 | const d = new Date(val); |
| 250 | 248 | if (isNaN(d.valueOf())) { |
| 251 | 249 | return invalidValue(l("Date"), val, key, parent); |
| 252 | 250 | } |
| 253 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 254 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 255 | - return invalidValue(l("Date"), val, key, parent); | |
| 256 | 251 | return d; |
| 257 | 252 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -239,15 +239,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 239 | 239 | if (val === null) { |
| 240 | 240 | return null; |
| 241 | 241 | } |
| 242 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 243 | - return invalidValue(l("Date"), val, key, parent); | |
| 244 | 242 | const d = new Date(val); |
| 245 | 243 | if (isNaN(d.valueOf())) { |
| 246 | 244 | return invalidValue(l("Date"), val, key, parent); |
| 247 | 245 | } |
| 248 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 249 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 250 | - return invalidValue(l("Date"), val, key, parent); | |
| 251 | 246 | return d; |
| 252 | 247 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/6dec6.json
Mflowdefault / TopLevel.js+0 −5
| @@ -199,15 +199,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 199 | 199 | if (val === null) { |
| 200 | 200 | return null; |
| 201 | 201 | } |
| 202 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 203 | - return invalidValue(l("Date"), val, key, parent); | |
| 204 | 202 | const d = new Date(val); |
| 205 | 203 | if (isNaN(d.valueOf())) { |
| 206 | 204 | return invalidValue(l("Date"), val, key, parent); |
| 207 | 205 | } |
| 208 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 209 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 210 | - return invalidValue(l("Date"), val, key, parent); | |
| 211 | 206 | return d; |
| 212 | 207 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -109,7 +109,7 @@ _Results = PropTypes.shape({ | ||
| 109 | 109 | }); |
| 110 | 110 | _Query = PropTypes.shape({ |
| 111 | 111 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 112 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 113 | 113 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 114 | 114 | "results": _Results, |
| 115 | 115 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -43,7 +43,7 @@ def from_int(x: Any) -> int: | ||
| 43 | 43 | |
| 44 | 44 | |
| 45 | 45 | def from_datetime(x: Any) -> datetime.datetime: |
| 46 | - return dateutil.parser.parse(x) | |
| 46 | + return dateutil.parser.isoparse(x) | |
| 47 | 47 | |
| 48 | 48 | |
| 49 | 49 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -101,7 +101,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 101 | 101 | |
| 102 | 102 | export class Query extends S.Class<Query>("Query")({ |
| 103 | 103 | "count": S.Int, |
| 104 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 104 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 105 | 105 | "lang": S.String, |
| 106 | 106 | "results": Results, |
| 107 | 107 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 196 | 196 | if (val === null) { |
| 197 | 197 | return null; |
| 198 | 198 | } |
| 199 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 200 | - return invalidValue(l("Date"), val, key, parent); | |
| 201 | 199 | const d = new Date(val); |
| 202 | 200 | if (isNaN(d.valueOf())) { |
| 203 | 201 | return invalidValue(l("Date"), val, key, parent); |
| 204 | 202 | } |
| 205 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 206 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 207 | - return invalidValue(l("Date"), val, key, parent); | |
| 208 | 203 | return d; |
| 209 | 204 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/6eb00.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/70c77.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
6 generated files · +9 −24test/inputs/json/misc/734ad.json
Mflowdefault / TopLevel.js+0 −5
| @@ -170,15 +170,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 170 | 170 | if (val === null) { |
| 171 | 171 | return null; |
| 172 | 172 | } |
| 173 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 174 | - return invalidValue(l("Date"), val, key, parent); | |
| 175 | 173 | const d = new Date(val); |
| 176 | 174 | if (isNaN(d.valueOf())) { |
| 177 | 175 | return invalidValue(l("Date"), val, key, parent); |
| 178 | 176 | } |
| 179 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 180 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 181 | - return invalidValue(l("Date"), val, key, parent); | |
| 182 | 177 | return d; |
| 183 | 178 | } |
Mjavascript-prop-typesdefault / toplevel.js+4 −4
| @@ -39,7 +39,7 @@ _Result = PropTypes.shape({ | ||
| 39 | 39 | "be_office_town": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 40 | 40 | "code_of_conduct": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 41 | 41 | "contact_country": PropTypes.oneOfType([Integer]).isRequired, |
| 42 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 42 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 43 | 43 | "entity": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 44 | 44 | "goals": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 45 | 45 | "head": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| @@ -54,7 +54,7 @@ _Result = PropTypes.shape({ | ||
| 54 | 54 | "id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 55 | 55 | "identification_code": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 56 | 56 | "info_members": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 57 | - "last_update_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 57 | + "last_update_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 58 | 58 | "legal": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 59 | 59 | "legal_status": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 60 | 60 | "main_category": PropTypes.oneOfType([Integer]).isRequired, |
| @@ -70,12 +70,12 @@ _Result = PropTypes.shape({ | ||
| 70 | 70 | "networking": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| 71 | 71 | "number_of_natural_persons": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 72 | 72 | "other_code_of_conduct": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| 73 | - "registration_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 73 | + "registration_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 74 | 74 | "status": _Status, |
| 75 | 75 | "structure_members": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 76 | 76 | "sub_category": PropTypes.oneOfType([Integer]).isRequired, |
| 77 | 77 | "sub_category_title": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 78 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 78 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 79 | 79 | "uri": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 80 | 80 | "web_site_url": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| 81 | 81 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -20,7 +20,7 @@ def from_int(x: Any) -> int: | ||
| 20 | 20 | |
| 21 | 21 | |
| 22 | 22 | def from_datetime(x: Any) -> datetime.datetime: |
| 23 | - return dateutil.parser.parse(x) | |
| 23 | + return dateutil.parser.isoparse(x) | |
| 24 | 24 | |
| 25 | 25 | |
| 26 | 26 | def from_float(x: Any) -> float: |
Mtypescript-effect-schemadefault / TopLevel.ts+4 −4
| @@ -27,7 +27,7 @@ export class Result extends S.Class<Result>("Result")({ | ||
| 27 | 27 | "be_office_town": S.optional(S.String), |
| 28 | 28 | "code_of_conduct": S.String, |
| 29 | 29 | "contact_country": S.Int, |
| 30 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 30 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 31 | 31 | "entity": S.String, |
| 32 | 32 | "goals": S.String, |
| 33 | 33 | "head": S.String, |
| @@ -42,7 +42,7 @@ export class Result extends S.Class<Result>("Result")({ | ||
| 42 | 42 | "id": S.String, |
| 43 | 43 | "identification_code": S.String, |
| 44 | 44 | "info_members": S.String, |
| 45 | - "last_update_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 45 | + "last_update_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 46 | 46 | "legal": S.String, |
| 47 | 47 | "legal_status": S.String, |
| 48 | 48 | "main_category": S.Int, |
| @@ -58,12 +58,12 @@ export class Result extends S.Class<Result>("Result")({ | ||
| 58 | 58 | "networking": S.NullOr(S.String), |
| 59 | 59 | "number_of_natural_persons": S.NullOr(S.Int), |
| 60 | 60 | "other_code_of_conduct": S.NullOr(S.String), |
| 61 | - "registration_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 61 | + "registration_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 62 | 62 | "status": Status, |
| 63 | 63 | "structure_members": S.String, |
| 64 | 64 | "sub_category": S.Int, |
| 65 | 65 | "sub_category_title": S.String, |
| 66 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 66 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 67 | 67 | "uri": S.String, |
| 68 | 68 | "web_site_url": S.NullOr(S.String), |
| 69 | 69 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -165,15 +165,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 165 | 165 | if (val === null) { |
| 166 | 166 | return null; |
| 167 | 167 | } |
| 168 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 169 | - return invalidValue(l("Date"), val, key, parent); | |
| 170 | 168 | const d = new Date(val); |
| 171 | 169 | if (isNaN(d.valueOf())) { |
| 172 | 170 | return invalidValue(l("Date"), val, key, parent); |
| 173 | 171 | } |
| 174 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 175 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 176 | - return invalidValue(l("Date"), val, key, parent); | |
| 177 | 172 | return d; |
| 178 | 173 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/75912.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/7681c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -212,15 +212,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 212 | 212 | if (val === null) { |
| 213 | 213 | return null; |
| 214 | 214 | } |
| 215 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 216 | - return invalidValue(l("Date"), val, key, parent); | |
| 217 | 215 | const d = new Date(val); |
| 218 | 216 | if (isNaN(d.valueOf())) { |
| 219 | 217 | return invalidValue(l("Date"), val, key, parent); |
| 220 | 218 | } |
| 221 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 222 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 223 | - return invalidValue(l("Date"), val, key, parent); | |
| 224 | 219 | return d; |
| 225 | 220 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 204 | 204 | if (val === null) { |
| 205 | 205 | return null; |
| 206 | 206 | } |
| 207 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 208 | - return invalidValue(l("Date"), val, key, parent); | |
| 209 | 207 | const d = new Date(val); |
| 210 | 208 | if (isNaN(d.valueOf())) { |
| 211 | 209 | return invalidValue(l("Date"), val, key, parent); |
| 212 | 210 | } |
| 213 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 214 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 215 | - return invalidValue(l("Date"), val, key, parent); | |
| 216 | 211 | return d; |
| 217 | 212 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/76ae1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -280,15 +280,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 280 | 280 | if (val === null) { |
| 281 | 281 | return null; |
| 282 | 282 | } |
| 283 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 284 | - return invalidValue(l("Date"), val, key, parent); | |
| 285 | 283 | const d = new Date(val); |
| 286 | 284 | if (isNaN(d.valueOf())) { |
| 287 | 285 | return invalidValue(l("Date"), val, key, parent); |
| 288 | 286 | } |
| 289 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 290 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 291 | - return invalidValue(l("Date"), val, key, parent); | |
| 292 | 287 | return d; |
| 293 | 288 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -277,15 +277,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 277 | 277 | if (val === null) { |
| 278 | 278 | return null; |
| 279 | 279 | } |
| 280 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 281 | - return invalidValue(l("Date"), val, key, parent); | |
| 282 | 280 | const d = new Date(val); |
| 283 | 281 | if (isNaN(d.valueOf())) { |
| 284 | 282 | return invalidValue(l("Date"), val, key, parent); |
| 285 | 283 | } |
| 286 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 287 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 288 | - return invalidValue(l("Date"), val, key, parent); | |
| 289 | 284 | return d; |
| 290 | 285 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/77392.json
Mflowdefault / TopLevel.js+0 −5
| @@ -123,15 +123,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 123 | 123 | if (val === null) { |
| 124 | 124 | return null; |
| 125 | 125 | } |
| 126 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 127 | - return invalidValue(l("Date"), val, key, parent); | |
| 128 | 126 | const d = new Date(val); |
| 129 | 127 | if (isNaN(d.valueOf())) { |
| 130 | 128 | return invalidValue(l("Date"), val, key, parent); |
| 131 | 129 | } |
| 132 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 133 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 134 | - return invalidValue(l("Date"), val, key, parent); | |
| 135 | 130 | return d; |
| 136 | 131 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -17,7 +17,7 @@ const _OrbitClass = PropTypes.oneOf(['Apollo', 'Amor', 'Aten', 'Comet', 'Jupiter | ||
| 17 | 17 | const _Pha = PropTypes.oneOf(['Y', 'N', 'n/a']); |
| 18 | 18 | _TopLevel = PropTypes.shape({ |
| 19 | 19 | "designation": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 20 | - "discovery_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | + "discovery_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 21 | 21 | "h_mag": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 22 | 22 | "i_deg": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 23 | 23 | "moid_au": PropTypes.oneOfType([PropTypes.string]).isRequired, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -15,7 +15,7 @@ def from_str(x: Any) -> str: | ||
| 15 | 15 | |
| 16 | 16 | |
| 17 | 17 | def from_datetime(x: Any) -> datetime.datetime: |
| 18 | - return dateutil.parser.parse(x) | |
| 18 | + return dateutil.parser.isoparse(x) | |
| 19 | 19 | |
| 20 | 20 | |
| 21 | 21 | def from_none(x: Any) -> Any: |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -24,7 +24,7 @@ export type Pha = S.Schema.Type<typeof Pha>; | ||
| 24 | 24 | |
| 25 | 25 | export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({ |
| 26 | 26 | "designation": S.String, |
| 27 | - "discovery_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 27 | + "discovery_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 28 | 28 | "h_mag": S.optional(S.String), |
| 29 | 29 | "i_deg": S.String, |
| 30 | 30 | "moid_au": S.String, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -111,15 +111,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 111 | 111 | if (val === null) { |
| 112 | 112 | return null; |
| 113 | 113 | } |
| 114 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 114 | const d = new Date(val); |
| 117 | 115 | if (isNaN(d.valueOf())) { |
| 118 | 116 | return invalidValue(l("Date"), val, key, parent); |
| 119 | 117 | } |
| 120 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 121 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 122 | - return invalidValue(l("Date"), val, key, parent); | |
| 123 | 118 | return d; |
| 124 | 119 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/7d397.json
Mflowdefault / TopLevel.js+0 −5
| @@ -171,15 +171,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 171 | 171 | if (val === null) { |
| 172 | 172 | return null; |
| 173 | 173 | } |
| 174 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 175 | - return invalidValue(l("Date"), val, key, parent); | |
| 176 | 174 | const d = new Date(val); |
| 177 | 175 | if (isNaN(d.valueOf())) { |
| 178 | 176 | return invalidValue(l("Date"), val, key, parent); |
| 179 | 177 | } |
| 180 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 181 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 182 | - return invalidValue(l("Date"), val, key, parent); | |
| 183 | 178 | return d; |
| 184 | 179 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -169,15 +169,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 169 | 169 | if (val === null) { |
| 170 | 170 | return null; |
| 171 | 171 | } |
| 172 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 173 | - return invalidValue(l("Date"), val, key, parent); | |
| 174 | 172 | const d = new Date(val); |
| 175 | 173 | if (isNaN(d.valueOf())) { |
| 176 | 174 | return invalidValue(l("Date"), val, key, parent); |
| 177 | 175 | } |
| 178 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 179 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 180 | - return invalidValue(l("Date"), val, key, parent); | |
| 181 | 176 | return d; |
| 182 | 177 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/7d722.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/7df41.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/7dfa6.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/7eb30.json
Mflowdefault / TopLevel.js+0 −5
| @@ -140,15 +140,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 140 | 140 | if (val === null) { |
| 141 | 141 | return null; |
| 142 | 142 | } |
| 143 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 144 | - return invalidValue(l("Date"), val, key, parent); | |
| 145 | 143 | const d = new Date(val); |
| 146 | 144 | if (isNaN(d.valueOf())) { |
| 147 | 145 | return invalidValue(l("Date"), val, key, parent); |
| 148 | 146 | } |
| 149 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 150 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 151 | - return invalidValue(l("Date"), val, key, parent); | |
| 152 | 147 | return d; |
| 153 | 148 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -133,15 +133,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 133 | 133 | if (val === null) { |
| 134 | 134 | return null; |
| 135 | 135 | } |
| 136 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 137 | - return invalidValue(l("Date"), val, key, parent); | |
| 138 | 136 | const d = new Date(val); |
| 139 | 137 | if (isNaN(d.valueOf())) { |
| 140 | 138 | return invalidValue(l("Date"), val, key, parent); |
| 141 | 139 | } |
| 142 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 143 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 144 | - return invalidValue(l("Date"), val, key, parent); | |
| 145 | 140 | return d; |
| 146 | 141 | } |
Test case
6 generated files · +5 −20test/inputs/json/misc/7f568.json
Mflowdefault / TopLevel.js+0 −5
| @@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 127 | 127 | if (val === null) { |
| 128 | 128 | return null; |
| 129 | 129 | } |
| 130 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 130 | const d = new Date(val); |
| 133 | 131 | if (isNaN(d.valueOf())) { |
| 134 | 132 | return invalidValue(l("Date"), val, key, parent); |
| 135 | 133 | } |
| 136 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 137 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 138 | - return invalidValue(l("Date"), val, key, parent); | |
| 139 | 134 | return d; |
| 140 | 135 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -28,7 +28,7 @@ _TopLevel = PropTypes.shape({ | ||
| 28 | 28 | "comments": PropTypes.oneOfType([Integer]).isRequired, |
| 29 | 29 | "comments_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 30 | 30 | "commits_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 31 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 31 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 32 | 32 | "description": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| 33 | 33 | "files": PropTypes.oneOfType([PropTypes.objectOf(_File)]).isRequired, |
| 34 | 34 | "forks_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| @@ -38,7 +38,7 @@ _TopLevel = PropTypes.shape({ | ||
| 38 | 38 | "id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 39 | 39 | "public": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 40 | 40 | "truncated": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 41 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 41 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 42 | 42 | "url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 43 | 43 | "user": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 44 | 44 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -39,7 +39,7 @@ def to_enum(c: Type[EnumT], x: Any) -> EnumT: | ||
| 39 | 39 | |
| 40 | 40 | |
| 41 | 41 | def from_datetime(x: Any) -> datetime.datetime: |
| 42 | - return dateutil.parser.parse(x) | |
| 42 | + return dateutil.parser.isoparse(x) | |
| 43 | 43 | |
| 44 | 44 | |
| 45 | 45 | def from_dict(f: Callable[[Any], T], x: Any) -> dict[str, T]: |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -24,7 +24,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement") | ||
| 24 | 24 | "comments": S.Int, |
| 25 | 25 | "comments_url": S.String, |
| 26 | 26 | "commits_url": S.String, |
| 27 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 27 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 28 | 28 | "description": S.NullOr(S.String), |
| 29 | 29 | "files": S.Record({ key: S.String, value: File}), |
| 30 | 30 | "forks_url": S.String, |
| @@ -34,7 +34,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement") | ||
| 34 | 34 | "id": S.String, |
| 35 | 35 | "public": S.Boolean, |
| 36 | 36 | "truncated": S.Boolean, |
| 37 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 37 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 38 | 38 | "url": S.String, |
| 39 | 39 | "user": S.Null, |
| 40 | 40 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 125 | 125 | if (val === null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| 128 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 128 | const d = new Date(val); |
| 131 | 129 | if (isNaN(d.valueOf())) { |
| 132 | 130 | return invalidValue(l("Date"), val, key, parent); |
| 133 | 131 | } |
| 134 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 135 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 132 | return d; |
| 138 | 133 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/7fbfb.json
Mflowdefault / TopLevel.js+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 120 | 120 | if (val === null) { |
| 121 | 121 | return null; |
| 122 | 122 | } |
| 123 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 123 | const d = new Date(val); |
| 126 | 124 | if (isNaN(d.valueOf())) { |
| 127 | 125 | return invalidValue(l("Date"), val, key, parent); |
| 128 | 126 | } |
| 129 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 130 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 127 | return d; |
| 133 | 128 | } |
Test case
6 generated files · +5 −20test/inputs/json/misc/80aff.json
Mflowdefault / TopLevel.js+0 −5
| @@ -115,15 +115,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 115 | 115 | if (val === null) { |
| 116 | 116 | return null; |
| 117 | 117 | } |
| 118 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 118 | const d = new Date(val); |
| 121 | 119 | if (isNaN(d.valueOf())) { |
| 122 | 120 | return invalidValue(l("Date"), val, key, parent); |
| 123 | 121 | } |
| 124 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 125 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 126 | - return invalidValue(l("Date"), val, key, parent); | |
| 127 | 122 | return d; |
| 128 | 123 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -19,12 +19,12 @@ let _Result; | ||
| 19 | 19 | _Facets = PropTypes.shape({ |
| 20 | 20 | }); |
| 21 | 21 | _Result = PropTypes.shape({ |
| 22 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 22 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 23 | 23 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| 24 | 24 | "items": PropTypes.oneOfType([Integer]).isRequired, |
| 25 | 25 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 26 | 26 | "parent": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 27 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 27 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 28 | 28 | "uri": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 29 | 29 | }); |
| 30 | 30 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -8,7 +8,7 @@ T = TypeVar("T") | ||
| 8 | 8 | |
| 9 | 9 | |
| 10 | 10 | def from_datetime(x: Any) -> datetime.datetime: |
| 11 | - return dateutil.parser.parse(x) | |
| 11 | + return dateutil.parser.isoparse(x) | |
| 12 | 12 | |
| 13 | 13 | |
| 14 | 14 | def from_int(x: Any) -> int: |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -2,12 +2,12 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class Result extends S.Class<Result>("Result")({ |
| 5 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 5 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 6 | 6 | "id": S.Int, |
| 7 | 7 | "items": S.Int, |
| 8 | 8 | "name": S.String, |
| 9 | 9 | "parent": S.NullOr(S.Int), |
| 10 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 10 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 11 | 11 | "uri": S.String, |
| 12 | 12 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -112,15 +112,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 112 | 112 | if (val === null) { |
| 113 | 113 | return null; |
| 114 | 114 | } |
| 115 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 115 | const d = new Date(val); |
| 118 | 116 | if (isNaN(d.valueOf())) { |
| 119 | 117 | return invalidValue(l("Date"), val, key, parent); |
| 120 | 118 | } |
| 121 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 122 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 123 | - return invalidValue(l("Date"), val, key, parent); | |
| 124 | 119 | return d; |
| 125 | 120 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/82509.json
Mflowdefault / TopLevel.js+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/8592b.json
Mflowdefault / TopLevel.js+0 −5
| @@ -219,15 +219,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 219 | 219 | if (val === null) { |
| 220 | 220 | return null; |
| 221 | 221 | } |
| 222 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 223 | - return invalidValue(l("Date"), val, key, parent); | |
| 224 | 222 | const d = new Date(val); |
| 225 | 223 | if (isNaN(d.valueOf())) { |
| 226 | 224 | return invalidValue(l("Date"), val, key, parent); |
| 227 | 225 | } |
| 228 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 229 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 230 | - return invalidValue(l("Date"), val, key, parent); | |
| 231 | 226 | return d; |
| 232 | 227 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -208,15 +208,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 208 | 208 | if (val === null) { |
| 209 | 209 | return null; |
| 210 | 210 | } |
| 211 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 212 | - return invalidValue(l("Date"), val, key, parent); | |
| 213 | 211 | const d = new Date(val); |
| 214 | 212 | if (isNaN(d.valueOf())) { |
| 215 | 213 | return invalidValue(l("Date"), val, key, parent); |
| 216 | 214 | } |
| 217 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 218 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 219 | - return invalidValue(l("Date"), val, key, parent); | |
| 220 | 215 | return d; |
| 221 | 216 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/88130.json
Mflowdefault / TopLevel.js+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -108,7 +108,7 @@ _Results = PropTypes.shape({ | ||
| 108 | 108 | }); |
| 109 | 109 | _Query = PropTypes.shape({ |
| 110 | 110 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 111 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 111 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | 112 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 113 | 113 | "results": _Results, |
| 114 | 114 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -36,7 +36,7 @@ def from_int(x: Any) -> int: | ||
| 36 | 36 | |
| 37 | 37 | |
| 38 | 38 | def from_datetime(x: Any) -> datetime.datetime: |
| 39 | - return dateutil.parser.parse(x) | |
| 39 | + return dateutil.parser.isoparse(x) | |
| 40 | 40 | |
| 41 | 41 | |
| 42 | 42 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 94 | 94 | |
| 95 | 95 | export class Query extends S.Class<Query>("Query")({ |
| 96 | 96 | "count": S.Int, |
| 97 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 97 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 98 | 98 | "lang": S.String, |
| 99 | 99 | "results": Results, |
| 100 | 100 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/8a62c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/908db.json
Mflowdefault / TopLevel.js+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/9617f.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/96f7c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/9847b.json
Mflowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/9929c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -108,7 +108,7 @@ _Results = PropTypes.shape({ | ||
| 108 | 108 | }); |
| 109 | 109 | _Query = PropTypes.shape({ |
| 110 | 110 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 111 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 111 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | 112 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 113 | 113 | "results": _Results, |
| 114 | 114 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -36,7 +36,7 @@ def from_int(x: Any) -> int: | ||
| 36 | 36 | |
| 37 | 37 | |
| 38 | 38 | def from_datetime(x: Any) -> datetime.datetime: |
| 39 | - return dateutil.parser.parse(x) | |
| 39 | + return dateutil.parser.isoparse(x) | |
| 40 | 40 | |
| 41 | 41 | |
| 42 | 42 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 94 | 94 | |
| 95 | 95 | export class Query extends S.Class<Query>("Query")({ |
| 96 | 96 | "count": S.Int, |
| 97 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 97 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 98 | 98 | "lang": S.String, |
| 99 | 99 | "results": Results, |
| 100 | 100 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/996bd.json
Mflowdefault / TopLevel.js+0 −5
| @@ -140,15 +140,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 140 | 140 | if (val === null) { |
| 141 | 141 | return null; |
| 142 | 142 | } |
| 143 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 144 | - return invalidValue(l("Date"), val, key, parent); | |
| 145 | 143 | const d = new Date(val); |
| 146 | 144 | if (isNaN(d.valueOf())) { |
| 147 | 145 | return invalidValue(l("Date"), val, key, parent); |
| 148 | 146 | } |
| 149 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 150 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 151 | - return invalidValue(l("Date"), val, key, parent); | |
| 152 | 147 | return d; |
| 153 | 148 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/9a503.json
Mflowdefault / TopLevel.js+0 −5
| @@ -126,15 +126,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 126 | 126 | if (val === null) { |
| 127 | 127 | return null; |
| 128 | 128 | } |
| 129 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 130 | - return invalidValue(l("Date"), val, key, parent); | |
| 131 | 129 | const d = new Date(val); |
| 132 | 130 | if (isNaN(d.valueOf())) { |
| 133 | 131 | return invalidValue(l("Date"), val, key, parent); |
| 134 | 132 | } |
| 135 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 136 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 137 | - return invalidValue(l("Date"), val, key, parent); | |
| 138 | 133 | return d; |
| 139 | 134 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -123,15 +123,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 123 | 123 | if (val === null) { |
| 124 | 124 | return null; |
| 125 | 125 | } |
| 126 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 127 | - return invalidValue(l("Date"), val, key, parent); | |
| 128 | 126 | const d = new Date(val); |
| 129 | 127 | if (isNaN(d.valueOf())) { |
| 130 | 128 | return invalidValue(l("Date"), val, key, parent); |
| 131 | 129 | } |
| 132 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 133 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 134 | - return invalidValue(l("Date"), val, key, parent); | |
| 135 | 130 | return d; |
| 136 | 131 | } |
Test case
6 generated files · +5 −20test/inputs/json/misc/9ac3b.json
Mflowdefault / TopLevel.js+0 −5
| @@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 127 | 127 | if (val === null) { |
| 128 | 128 | return null; |
| 129 | 129 | } |
| 130 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 130 | const d = new Date(val); |
| 133 | 131 | if (isNaN(d.valueOf())) { |
| 134 | 132 | return invalidValue(l("Date"), val, key, parent); |
| 135 | 133 | } |
| 136 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 137 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 138 | - return invalidValue(l("Date"), val, key, parent); | |
| 139 | 134 | return d; |
| 140 | 135 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -21,7 +21,7 @@ const _Title = PropTypes.oneOf(['Mr', 'Ms']); | ||
| 21 | 21 | _Facets = PropTypes.shape({ |
| 22 | 22 | }); |
| 23 | 23 | _Result = PropTypes.shape({ |
| 24 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 24 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 25 | 25 | "entity": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 26 | 26 | "first_name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 27 | 27 | "id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| @@ -30,7 +30,7 @@ _Result = PropTypes.shape({ | ||
| 30 | 30 | "position": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| 31 | 31 | "status": _Status, |
| 32 | 32 | "title": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([_Title, PropTypes.oneOf([null])])])(props, name, ...args), |
| 33 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 33 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 34 | 34 | "uri": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 35 | 35 | }); |
| 36 | 36 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum) | ||
| 10 | 10 | |
| 11 | 11 | |
| 12 | 12 | def from_datetime(x: Any) -> datetime.datetime: |
| 13 | - return dateutil.parser.parse(x) | |
| 13 | + return dateutil.parser.isoparse(x) | |
| 14 | 14 | |
| 15 | 15 | |
| 16 | 16 | def from_str(x: Any) -> str: |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -15,7 +15,7 @@ export const Title = S.Literal( | ||
| 15 | 15 | export type Title = S.Schema.Type<typeof Title>; |
| 16 | 16 | |
| 17 | 17 | export class Result extends S.Class<Result>("Result")({ |
| 18 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 18 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 19 | 19 | "entity": S.String, |
| 20 | 20 | "first_name": S.String, |
| 21 | 21 | "id": S.String, |
| @@ -24,7 +24,7 @@ export class Result extends S.Class<Result>("Result")({ | ||
| 24 | 24 | "position": S.NullOr(S.String), |
| 25 | 25 | "status": Status, |
| 26 | 26 | "title": S.NullOr(Title), |
| 27 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 27 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 28 | 28 | "uri": S.String, |
| 29 | 29 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 120 | 120 | if (val === null) { |
| 121 | 121 | return null; |
| 122 | 122 | } |
| 123 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 123 | const d = new Date(val); |
| 126 | 124 | if (isNaN(d.valueOf())) { |
| 127 | 125 | return invalidValue(l("Date"), val, key, parent); |
| 128 | 126 | } |
| 129 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 130 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 127 | return d; |
| 133 | 128 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/9eed5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 125 | 125 | if (val === null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| 128 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 128 | const d = new Date(val); |
| 131 | 129 | if (isNaN(d.valueOf())) { |
| 132 | 130 | return invalidValue(l("Date"), val, key, parent); |
| 133 | 131 | } |
| 134 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 135 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 132 | return d; |
| 138 | 133 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -123,15 +123,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 123 | 123 | if (val === null) { |
| 124 | 124 | return null; |
| 125 | 125 | } |
| 126 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 127 | - return invalidValue(l("Date"), val, key, parent); | |
| 128 | 126 | const d = new Date(val); |
| 129 | 127 | if (isNaN(d.valueOf())) { |
| 130 | 128 | return invalidValue(l("Date"), val, key, parent); |
| 131 | 129 | } |
| 132 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 133 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 134 | - return invalidValue(l("Date"), val, key, parent); | |
| 135 | 130 | return d; |
| 136 | 131 | } |
Test case
6 generated files · +9 −24test/inputs/json/misc/a0496.json
Mflowdefault / TopLevel.js+0 −5
| @@ -117,15 +117,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 117 | 117 | if (val === null) { |
| 118 | 118 | return null; |
| 119 | 119 | } |
| 120 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 120 | const d = new Date(val); |
| 123 | 121 | if (isNaN(d.valueOf())) { |
| 124 | 122 | return invalidValue(l("Date"), val, key, parent); |
| 125 | 123 | } |
| 126 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 127 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 124 | return d; |
| 130 | 125 | } |
Mjavascript-prop-typesdefault / toplevel.js+4 −4
| @@ -20,20 +20,20 @@ _Errors = PropTypes.shape({ | ||
| 20 | 20 | _TopLevel = PropTypes.shape({ |
| 21 | 21 | "code": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 22 | 22 | "column_names": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string)]).isRequired, |
| 23 | - "data": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.number, PropTypes.oneOf([null])])))]).isRequired, | |
| 23 | + "data": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.number, PropTypes.oneOf([null])])))]).isRequired, | |
| 24 | 24 | "description": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 25 | 25 | "display_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 26 | 26 | "errors": _Errors, |
| 27 | 27 | "frequency": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 28 | - "from_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 28 | + "from_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 29 | 29 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| 30 | 30 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 31 | 31 | "premium": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 32 | 32 | "source_code": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 33 | 33 | "source_name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 34 | - "to_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 34 | + "to_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 35 | 35 | "type": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 36 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 36 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 37 | 37 | "urlize_name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 38 | 38 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -53,7 +53,7 @@ def from_bool(x: Any) -> bool: | ||
| 53 | 53 | |
| 54 | 54 | |
| 55 | 55 | def from_datetime(x: Any) -> datetime.datetime: |
| 56 | - return dateutil.parser.parse(x) | |
| 56 | + return dateutil.parser.isoparse(x) | |
| 57 | 57 | |
| 58 | 58 | |
| 59 | 59 | def to_float(x: Any) -> float: |
Mtypescript-effect-schemadefault / TopLevel.ts+4 −4
| @@ -7,19 +7,19 @@ export class Errors extends S.Class<Errors>("Errors")(S.Struct({}).pipe(S.filter | ||
| 7 | 7 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 8 | 8 | "code": S.String, |
| 9 | 9 | "column_names": S.Array(S.String), |
| 10 | - "data": S.Array(S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), S.Number, S.Null))), | |
| 10 | + "data": S.Array(S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), S.Number, S.Null))), | |
| 11 | 11 | "description": S.String, |
| 12 | 12 | "display_url": S.String, |
| 13 | 13 | "errors": Errors, |
| 14 | 14 | "frequency": S.String, |
| 15 | - "from_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 15 | + "from_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 16 | 16 | "id": S.Int, |
| 17 | 17 | "name": S.String, |
| 18 | 18 | "premium": S.Boolean, |
| 19 | 19 | "source_code": S.String, |
| 20 | 20 | "source_name": S.String, |
| 21 | - "to_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 21 | + "to_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 22 | 22 | "type": S.String, |
| 23 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 23 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 24 | 24 | "urlize_name": S.String, |
| 25 | 25 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -114,15 +114,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 114 | 114 | if (val === null) { |
| 115 | 115 | return null; |
| 116 | 116 | } |
| 117 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 117 | const d = new Date(val); |
| 120 | 118 | if (isNaN(d.valueOf())) { |
| 121 | 119 | return invalidValue(l("Date"), val, key, parent); |
| 122 | 120 | } |
| 123 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 124 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 121 | return d; |
| 127 | 122 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/a1eca.json
Mflowdefault / TopLevel.js+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -108,7 +108,7 @@ _Results = PropTypes.shape({ | ||
| 108 | 108 | }); |
| 109 | 109 | _Query = PropTypes.shape({ |
| 110 | 110 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 111 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 111 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | 112 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 113 | 113 | "results": _Results, |
| 114 | 114 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -36,7 +36,7 @@ def from_int(x: Any) -> int: | ||
| 36 | 36 | |
| 37 | 37 | |
| 38 | 38 | def from_datetime(x: Any) -> datetime.datetime: |
| 39 | - return dateutil.parser.parse(x) | |
| 39 | + return dateutil.parser.isoparse(x) | |
| 40 | 40 | |
| 41 | 41 | |
| 42 | 42 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 94 | 94 | |
| 95 | 95 | export class Query extends S.Class<Query>("Query")({ |
| 96 | 96 | "count": S.Int, |
| 97 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 97 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 98 | 98 | "lang": S.String, |
| 99 | 99 | "results": Results, |
| 100 | 100 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/a3d8c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -212,15 +212,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 212 | 212 | if (val === null) { |
| 213 | 213 | return null; |
| 214 | 214 | } |
| 215 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 216 | - return invalidValue(l("Date"), val, key, parent); | |
| 217 | 215 | const d = new Date(val); |
| 218 | 216 | if (isNaN(d.valueOf())) { |
| 219 | 217 | return invalidValue(l("Date"), val, key, parent); |
| 220 | 218 | } |
| 221 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 222 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 223 | - return invalidValue(l("Date"), val, key, parent); | |
| 224 | 219 | return d; |
| 225 | 220 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -206,15 +206,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 206 | 206 | if (val === null) { |
| 207 | 207 | return null; |
| 208 | 208 | } |
| 209 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 210 | - return invalidValue(l("Date"), val, key, parent); | |
| 211 | 209 | const d = new Date(val); |
| 212 | 210 | if (isNaN(d.valueOf())) { |
| 213 | 211 | return invalidValue(l("Date"), val, key, parent); |
| 214 | 212 | } |
| 215 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 216 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 217 | - return invalidValue(l("Date"), val, key, parent); | |
| 218 | 213 | return d; |
| 219 | 214 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/a45b0.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/a71df.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/a9691.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/ab0d1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/abb4b.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/ac944.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/ad8be.json
Mflowdefault / TopLevel.js+0 −5
| @@ -163,15 +163,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 163 | 163 | if (val === null) { |
| 164 | 164 | return null; |
| 165 | 165 | } |
| 166 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 167 | - return invalidValue(l("Date"), val, key, parent); | |
| 168 | 166 | const d = new Date(val); |
| 169 | 167 | if (isNaN(d.valueOf())) { |
| 170 | 168 | return invalidValue(l("Date"), val, key, parent); |
| 171 | 169 | } |
| 172 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 173 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 174 | - return invalidValue(l("Date"), val, key, parent); | |
| 175 | 170 | return d; |
| 176 | 171 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/ae7f0.json
Mflowdefault / TopLevel.js+0 −5
| @@ -193,15 +193,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 193 | 193 | if (val === null) { |
| 194 | 194 | return null; |
| 195 | 195 | } |
| 196 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 197 | - return invalidValue(l("Date"), val, key, parent); | |
| 198 | 196 | const d = new Date(val); |
| 199 | 197 | if (isNaN(d.valueOf())) { |
| 200 | 198 | return invalidValue(l("Date"), val, key, parent); |
| 201 | 199 | } |
| 202 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 203 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 204 | - return invalidValue(l("Date"), val, key, parent); | |
| 205 | 200 | return d; |
| 206 | 201 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -184,15 +184,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 184 | 184 | if (val === null) { |
| 185 | 185 | return null; |
| 186 | 186 | } |
| 187 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 188 | - return invalidValue(l("Date"), val, key, parent); | |
| 189 | 187 | const d = new Date(val); |
| 190 | 188 | if (isNaN(d.valueOf())) { |
| 191 | 189 | return invalidValue(l("Date"), val, key, parent); |
| 192 | 190 | } |
| 193 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 194 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 195 | - return invalidValue(l("Date"), val, key, parent); | |
| 196 | 191 | return d; |
| 197 | 192 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/ae9ca.json
Mflowdefault / TopLevel.js+0 −5
| @@ -142,15 +142,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 142 | 142 | if (val === null) { |
| 143 | 143 | return null; |
| 144 | 144 | } |
| 145 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 146 | - return invalidValue(l("Date"), val, key, parent); | |
| 147 | 145 | const d = new Date(val); |
| 148 | 146 | if (isNaN(d.valueOf())) { |
| 149 | 147 | return invalidValue(l("Date"), val, key, parent); |
| 150 | 148 | } |
| 151 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 152 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 153 | - return invalidValue(l("Date"), val, key, parent); | |
| 154 | 149 | return d; |
| 155 | 150 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -132,15 +132,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 132 | 132 | if (val === null) { |
| 133 | 133 | return null; |
| 134 | 134 | } |
| 135 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 135 | const d = new Date(val); |
| 138 | 136 | if (isNaN(d.valueOf())) { |
| 139 | 137 | return invalidValue(l("Date"), val, key, parent); |
| 140 | 138 | } |
| 141 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 142 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 143 | - return invalidValue(l("Date"), val, key, parent); | |
| 144 | 139 | return d; |
| 145 | 140 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/af2d1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 204 | 204 | if (val === null) { |
| 205 | 205 | return null; |
| 206 | 206 | } |
| 207 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 208 | - return invalidValue(l("Date"), val, key, parent); | |
| 209 | 207 | const d = new Date(val); |
| 210 | 208 | if (isNaN(d.valueOf())) { |
| 211 | 209 | return invalidValue(l("Date"), val, key, parent); |
| 212 | 210 | } |
| 213 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 214 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 215 | - return invalidValue(l("Date"), val, key, parent); | |
| 216 | 211 | return d; |
| 217 | 212 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -182,15 +182,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 182 | 182 | if (val === null) { |
| 183 | 183 | return null; |
| 184 | 184 | } |
| 185 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 186 | - return invalidValue(l("Date"), val, key, parent); | |
| 187 | 185 | const d = new Date(val); |
| 188 | 186 | if (isNaN(d.valueOf())) { |
| 189 | 187 | return invalidValue(l("Date"), val, key, parent); |
| 190 | 188 | } |
| 191 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 192 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 193 | - return invalidValue(l("Date"), val, key, parent); | |
| 194 | 189 | return d; |
| 195 | 190 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/b4865.json
Mflowdefault / TopLevel.js+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -33,7 +33,7 @@ _TopLevel = PropTypes.shape({ | ||
| 33 | 33 | "recclass": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 34 | 34 | "reclat": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 35 | 35 | "reclong": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 36 | - "year": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]), | |
| 36 | + "year": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]), | |
| 37 | 37 | }); |
| 38 | 38 | |
| 39 | 39 | export const TopLevel = PropTypes.arrayOf(_TopLevel); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -49,7 +49,7 @@ def from_union(fs, x): | ||
| 49 | 49 | |
| 50 | 50 | |
| 51 | 51 | def from_datetime(x: Any) -> datetime.datetime: |
| 52 | - return dateutil.parser.parse(x) | |
| 52 | + return dateutil.parser.isoparse(x) | |
| 53 | 53 | |
| 54 | 54 | |
| 55 | 55 | def is_type(t: Type[T], x: Any) -> T: |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -36,7 +36,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement") | ||
| 36 | 36 | "recclass": S.String, |
| 37 | 37 | "reclat": S.optional(S.String), |
| 38 | 38 | "reclong": S.optional(S.String), |
| 39 | - "year": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))), | |
| 39 | + "year": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))), | |
| 40 | 40 | }) {} |
| 41 | 41 | |
| 42 | 42 | export const TopLevel = S.Array(TopLevelElement); |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 120 | 120 | if (val === null) { |
| 121 | 121 | return null; |
| 122 | 122 | } |
| 123 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 123 | const d = new Date(val); |
| 126 | 124 | if (isNaN(d.valueOf())) { |
| 127 | 125 | return invalidValue(l("Date"), val, key, parent); |
| 128 | 126 | } |
| 129 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 130 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 127 | return d; |
| 133 | 128 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/b6f2c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/b6fe5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/b9f64.json
Mflowdefault / TopLevel.js+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/bb1ec.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/be234.json
Mflowdefault / TopLevel.js+0 −5
| @@ -258,15 +258,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 258 | 258 | if (val === null) { |
| 259 | 259 | return null; |
| 260 | 260 | } |
| 261 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 262 | - return invalidValue(l("Date"), val, key, parent); | |
| 263 | 261 | const d = new Date(val); |
| 264 | 262 | if (isNaN(d.valueOf())) { |
| 265 | 263 | return invalidValue(l("Date"), val, key, parent); |
| 266 | 264 | } |
| 267 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 268 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 269 | - return invalidValue(l("Date"), val, key, parent); | |
| 270 | 265 | return d; |
| 271 | 266 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -245,15 +245,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 245 | 245 | if (val === null) { |
| 246 | 246 | return null; |
| 247 | 247 | } |
| 248 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 249 | - return invalidValue(l("Date"), val, key, parent); | |
| 250 | 248 | const d = new Date(val); |
| 251 | 249 | if (isNaN(d.valueOf())) { |
| 252 | 250 | return invalidValue(l("Date"), val, key, parent); |
| 253 | 251 | } |
| 254 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 255 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 256 | - return invalidValue(l("Date"), val, key, parent); | |
| 257 | 252 | return d; |
| 258 | 253 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/c0356.json
Mflowdefault / TopLevel.js+0 −5
| @@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 108 | 108 | if (val === null) { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 111 | const d = new Date(val); |
| 114 | 112 | if (isNaN(d.valueOf())) { |
| 115 | 113 | return invalidValue(l("Date"), val, key, parent); |
| 116 | 114 | } |
| 117 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 118 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 115 | return d; |
| 121 | 116 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 108 | 108 | if (val === null) { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 111 | const d = new Date(val); |
| 114 | 112 | if (isNaN(d.valueOf())) { |
| 115 | 113 | return invalidValue(l("Date"), val, key, parent); |
| 116 | 114 | } |
| 117 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 118 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 115 | return d; |
| 121 | 116 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/c0a3a.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/c3303.json
Mflowdefault / TopLevel.js+0 −5
| @@ -209,15 +209,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 209 | 209 | if (val === null) { |
| 210 | 210 | return null; |
| 211 | 211 | } |
| 212 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 213 | - return invalidValue(l("Date"), val, key, parent); | |
| 214 | 212 | const d = new Date(val); |
| 215 | 213 | if (isNaN(d.valueOf())) { |
| 216 | 214 | return invalidValue(l("Date"), val, key, parent); |
| 217 | 215 | } |
| 218 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 219 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 220 | - return invalidValue(l("Date"), val, key, parent); | |
| 221 | 216 | return d; |
| 222 | 217 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -203,15 +203,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 203 | 203 | if (val === null) { |
| 204 | 204 | return null; |
| 205 | 205 | } |
| 206 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 207 | - return invalidValue(l("Date"), val, key, parent); | |
| 208 | 206 | const d = new Date(val); |
| 209 | 207 | if (isNaN(d.valueOf())) { |
| 210 | 208 | return invalidValue(l("Date"), val, key, parent); |
| 211 | 209 | } |
| 212 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 213 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 214 | - return invalidValue(l("Date"), val, key, parent); | |
| 215 | 210 | return d; |
| 216 | 211 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/c6cfd.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/c8c7e.json
Mflowdefault / TopLevel.js+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 120 | 120 | if (val === null) { |
| 121 | 121 | return null; |
| 122 | 122 | } |
| 123 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 123 | const d = new Date(val); |
| 126 | 124 | if (isNaN(d.valueOf())) { |
| 127 | 125 | return invalidValue(l("Date"), val, key, parent); |
| 128 | 126 | } |
| 129 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 130 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 127 | return d; |
| 133 | 128 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/cb0cc.json
Mflowdefault / TopLevel.js+0 −5
| @@ -119,15 +119,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 119 | 119 | if (val === null) { |
| 120 | 120 | return null; |
| 121 | 121 | } |
| 122 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 123 | - return invalidValue(l("Date"), val, key, parent); | |
| 124 | 122 | const d = new Date(val); |
| 125 | 123 | if (isNaN(d.valueOf())) { |
| 126 | 124 | return invalidValue(l("Date"), val, key, parent); |
| 127 | 125 | } |
| 128 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 129 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 130 | - return invalidValue(l("Date"), val, key, parent); | |
| 131 | 126 | return d; |
| 132 | 127 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -113,15 +113,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 113 | 113 | if (val === null) { |
| 114 | 114 | return null; |
| 115 | 115 | } |
| 116 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 116 | const d = new Date(val); |
| 119 | 117 | if (isNaN(d.valueOf())) { |
| 120 | 118 | return invalidValue(l("Date"), val, key, parent); |
| 121 | 119 | } |
| 122 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 123 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 120 | return d; |
| 126 | 121 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/cb81e.json
Mflowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/ccd18.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/cd238.json
Mflowdefault / TopLevel.js+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 129 | 129 | if (val === null) { |
| 130 | 130 | return null; |
| 131 | 131 | } |
| 132 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 133 | - return invalidValue(l("Date"), val, key, parent); | |
| 134 | 132 | const d = new Date(val); |
| 135 | 133 | if (isNaN(d.valueOf())) { |
| 136 | 134 | return invalidValue(l("Date"), val, key, parent); |
| 137 | 135 | } |
| 138 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 139 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 136 | return d; |
| 142 | 137 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/cd463.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/cda6c.json
Mflowdefault / TopLevel.js+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 120 | 120 | if (val === null) { |
| 121 | 121 | return null; |
| 122 | 122 | } |
| 123 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 123 | const d = new Date(val); |
| 126 | 124 | if (isNaN(d.valueOf())) { |
| 127 | 125 | return invalidValue(l("Date"), val, key, parent); |
| 128 | 126 | } |
| 129 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 130 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 127 | return d; |
| 133 | 128 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/cf0d8.json
Mflowdefault / TopLevel.js+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -108,7 +108,7 @@ _Results = PropTypes.shape({ | ||
| 108 | 108 | }); |
| 109 | 109 | _Query = PropTypes.shape({ |
| 110 | 110 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 111 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 111 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | 112 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 113 | 113 | "results": _Results, |
| 114 | 114 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -36,7 +36,7 @@ def from_int(x: Any) -> int: | ||
| 36 | 36 | |
| 37 | 37 | |
| 38 | 38 | def from_datetime(x: Any) -> datetime.datetime: |
| 39 | - return dateutil.parser.parse(x) | |
| 39 | + return dateutil.parser.isoparse(x) | |
| 40 | 40 | |
| 41 | 41 | |
| 42 | 42 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 94 | 94 | |
| 95 | 95 | export class Query extends S.Class<Query>("Query")({ |
| 96 | 96 | "count": S.Int, |
| 97 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 97 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 98 | 98 | "lang": S.String, |
| 99 | 99 | "results": Results, |
| 100 | 100 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/cfbce.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | 17 | "base": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 18 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -3,6 +3,6 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | 5 | "base": S.String, |
| 6 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 7 | 7 | "rates": S.Record({ key: S.String, value: S.Number}), |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
5 generated files · +2 −17test/inputs/json/misc/d0908.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | let _TotalPopulation; |
| 18 | 18 | _TotalPopulation = PropTypes.shape({ |
| 19 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | 20 | "population": PropTypes.oneOfType([Integer]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({ |
| 5 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 5 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | 6 | "population": S.Int, |
| 7 | 7 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
6 generated files · +5 −20test/inputs/json/misc/d23d5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -114,15 +114,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 114 | 114 | if (val === null) { |
| 115 | 115 | return null; |
| 116 | 116 | } |
| 117 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 117 | const d = new Date(val); |
| 120 | 118 | if (isNaN(d.valueOf())) { |
| 121 | 119 | return invalidValue(l("Date"), val, key, parent); |
| 122 | 120 | } |
| 123 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 124 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 125 | - return invalidValue(l("Date"), val, key, parent); | |
| 126 | 121 | return d; |
| 127 | 122 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -20,10 +20,10 @@ _Facets = PropTypes.shape({ | ||
| 20 | 20 | }); |
| 21 | 21 | _Result = PropTypes.shape({ |
| 22 | 22 | "acronym": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| 23 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 23 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 24 | 24 | "id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 25 | 25 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 26 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 26 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 27 | 27 | "uri": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 28 | 28 | }); |
| 29 | 29 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -8,7 +8,7 @@ T = TypeVar("T") | ||
| 8 | 8 | |
| 9 | 9 | |
| 10 | 10 | def from_datetime(x: Any) -> datetime.datetime: |
| 11 | - return dateutil.parser.parse(x) | |
| 11 | + return dateutil.parser.isoparse(x) | |
| 12 | 12 | |
| 13 | 13 | |
| 14 | 14 | def from_str(x: Any) -> str: |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -3,10 +3,10 @@ import * as S from "effect/Schema"; | ||
| 3 | 3 | |
| 4 | 4 | export class Result extends S.Class<Result>("Result")({ |
| 5 | 5 | "acronym": S.NullOr(S.String), |
| 6 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 6 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 7 | 7 | "id": S.String, |
| 8 | 8 | "name": S.String, |
| 9 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 9 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 10 | 10 | "uri": S.String, |
| 11 | 11 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -111,15 +111,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 111 | 111 | if (val === null) { |
| 112 | 112 | return null; |
| 113 | 113 | } |
| 114 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 114 | const d = new Date(val); |
| 117 | 115 | if (isNaN(d.valueOf())) { |
| 118 | 116 | return invalidValue(l("Date"), val, key, parent); |
| 119 | 117 | } |
| 120 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 121 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 122 | - return invalidValue(l("Date"), val, key, parent); | |
| 123 | 118 | return d; |
| 124 | 119 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/dbfb3.json
Mflowdefault / TopLevel.js+0 −5
| @@ -198,15 +198,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 198 | 198 | if (val === null) { |
| 199 | 199 | return null; |
| 200 | 200 | } |
| 201 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 202 | - return invalidValue(l("Date"), val, key, parent); | |
| 203 | 201 | const d = new Date(val); |
| 204 | 202 | if (isNaN(d.valueOf())) { |
| 205 | 203 | return invalidValue(l("Date"), val, key, parent); |
| 206 | 204 | } |
| 207 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 208 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 209 | - return invalidValue(l("Date"), val, key, parent); | |
| 210 | 205 | return d; |
| 211 | 206 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -109,7 +109,7 @@ _Results = PropTypes.shape({ | ||
| 109 | 109 | }); |
| 110 | 110 | _Query = PropTypes.shape({ |
| 111 | 111 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 112 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 113 | 113 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 114 | 114 | "results": _Results, |
| 115 | 115 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -43,7 +43,7 @@ def from_int(x: Any) -> int: | ||
| 43 | 43 | |
| 44 | 44 | |
| 45 | 45 | def from_datetime(x: Any) -> datetime.datetime: |
| 46 | - return dateutil.parser.parse(x) | |
| 46 | + return dateutil.parser.isoparse(x) | |
| 47 | 47 | |
| 48 | 48 | |
| 49 | 49 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -100,7 +100,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 100 | 100 | |
| 101 | 101 | export class Query extends S.Class<Query>("Query")({ |
| 102 | 102 | "count": S.Int, |
| 103 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 103 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 104 | 104 | "lang": S.String, |
| 105 | 105 | "results": Results, |
| 106 | 106 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 196 | 196 | if (val === null) { |
| 197 | 197 | return null; |
| 198 | 198 | } |
| 199 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 200 | - return invalidValue(l("Date"), val, key, parent); | |
| 201 | 199 | const d = new Date(val); |
| 202 | 200 | if (isNaN(d.valueOf())) { |
| 203 | 201 | return invalidValue(l("Date"), val, key, parent); |
| 204 | 202 | } |
| 205 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 206 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 207 | - return invalidValue(l("Date"), val, key, parent); | |
| 208 | 203 | return d; |
| 209 | 204 | } |
Test case
5 generated files · +4 −19test/inputs/json/misc/dc44f.json
Mflowdefault / TopLevel.js+0 −5
| @@ -222,15 +222,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 222 | 222 | if (val === null) { |
| 223 | 223 | return null; |
| 224 | 224 | } |
| 225 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 226 | - return invalidValue(l("Date"), val, key, parent); | |
| 227 | 225 | const d = new Date(val); |
| 228 | 226 | if (isNaN(d.valueOf())) { |
| 229 | 227 | return invalidValue(l("Date"), val, key, parent); |
| 230 | 228 | } |
| 231 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 232 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 233 | - return invalidValue(l("Date"), val, key, parent); | |
| 234 | 229 | return d; |
| 235 | 230 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -31,7 +31,7 @@ _LegalityElement = PropTypes.shape({ | ||
| 31 | 31 | "legality": _LegalityEnum, |
| 32 | 32 | }); |
| 33 | 33 | _Ruling = PropTypes.shape({ |
| 34 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 34 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 35 | 35 | "text": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 36 | 36 | }); |
| 37 | 37 | _Card = PropTypes.shape({ |
| @@ -73,7 +73,7 @@ _TopLevel = PropTypes.shape({ | ||
| 73 | 73 | "mkm_id": PropTypes.oneOfType([Integer]).isRequired, |
| 74 | 74 | "mkm_name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 75 | 75 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 76 | - "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 76 | + "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 77 | 77 | "type": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 78 | 78 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -104,7 +104,7 @@ export const Type = S.Literal( | ||
| 104 | 104 | export type Type = S.Schema.Type<typeof Type>; |
| 105 | 105 | |
| 106 | 106 | export class Ruling extends S.Class<Ruling>("Ruling")({ |
| 107 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 107 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 108 | 108 | "text": S.String, |
| 109 | 109 | }) {} |
| 110 | 110 | |
| @@ -153,6 +153,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({ | ||
| 153 | 153 | "mkm_id": S.Int, |
| 154 | 154 | "mkm_name": S.String, |
| 155 | 155 | "name": S.String, |
| 156 | - "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 156 | + "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 157 | 157 | "type": S.String, |
| 158 | 158 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -164,15 +164,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 164 | 164 | if (val === null) { |
| 165 | 165 | return null; |
| 166 | 166 | } |
| 167 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 168 | - return invalidValue(l("Date"), val, key, parent); | |
| 169 | 167 | const d = new Date(val); |
| 170 | 168 | if (isNaN(d.valueOf())) { |
| 171 | 169 | return invalidValue(l("Date"), val, key, parent); |
| 172 | 170 | } |
| 173 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 174 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 175 | - return invalidValue(l("Date"), val, key, parent); | |
| 176 | 171 | return d; |
| 177 | 172 | } |
Test case
5 generated files · +4 −19test/inputs/json/misc/dd1ce.json
Mflowdefault / TopLevel.js+0 −5
| @@ -222,15 +222,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 222 | 222 | if (val === null) { |
| 223 | 223 | return null; |
| 224 | 224 | } |
| 225 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 226 | - return invalidValue(l("Date"), val, key, parent); | |
| 227 | 225 | const d = new Date(val); |
| 228 | 226 | if (isNaN(d.valueOf())) { |
| 229 | 227 | return invalidValue(l("Date"), val, key, parent); |
| 230 | 228 | } |
| 231 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 232 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 233 | - return invalidValue(l("Date"), val, key, parent); | |
| 234 | 229 | return d; |
| 235 | 230 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -31,7 +31,7 @@ _LegalityElement = PropTypes.shape({ | ||
| 31 | 31 | "legality": _LegalityEnum, |
| 32 | 32 | }); |
| 33 | 33 | _Ruling = PropTypes.shape({ |
| 34 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 34 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 35 | 35 | "text": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 36 | 36 | }); |
| 37 | 37 | _Card = PropTypes.shape({ |
| @@ -73,7 +73,7 @@ _TopLevel = PropTypes.shape({ | ||
| 73 | 73 | "mkm_id": PropTypes.oneOfType([Integer]).isRequired, |
| 74 | 74 | "mkm_name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 75 | 75 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 76 | - "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 76 | + "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 77 | 77 | "type": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 78 | 78 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -104,7 +104,7 @@ export const Type = S.Literal( | ||
| 104 | 104 | export type Type = S.Schema.Type<typeof Type>; |
| 105 | 105 | |
| 106 | 106 | export class Ruling extends S.Class<Ruling>("Ruling")({ |
| 107 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 107 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 108 | 108 | "text": S.String, |
| 109 | 109 | }) {} |
| 110 | 110 | |
| @@ -153,6 +153,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({ | ||
| 153 | 153 | "mkm_id": S.Int, |
| 154 | 154 | "mkm_name": S.String, |
| 155 | 155 | "name": S.String, |
| 156 | - "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 156 | + "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 157 | 157 | "type": S.String, |
| 158 | 158 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -164,15 +164,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 164 | 164 | if (val === null) { |
| 165 | 165 | return null; |
| 166 | 166 | } |
| 167 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 168 | - return invalidValue(l("Date"), val, key, parent); | |
| 169 | 167 | const d = new Date(val); |
| 170 | 168 | if (isNaN(d.valueOf())) { |
| 171 | 169 | return invalidValue(l("Date"), val, key, parent); |
| 172 | 170 | } |
| 173 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 174 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 175 | - return invalidValue(l("Date"), val, key, parent); | |
| 176 | 171 | return d; |
| 177 | 172 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/dec3a.json
Mflowdefault / TopLevel.js+0 −5
| @@ -157,15 +157,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 157 | 157 | if (val === null) { |
| 158 | 158 | return null; |
| 159 | 159 | } |
| 160 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 161 | - return invalidValue(l("Date"), val, key, parent); | |
| 162 | 160 | const d = new Date(val); |
| 163 | 161 | if (isNaN(d.valueOf())) { |
| 164 | 162 | return invalidValue(l("Date"), val, key, parent); |
| 165 | 163 | } |
| 166 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 167 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 168 | - return invalidValue(l("Date"), val, key, parent); | |
| 169 | 164 | return d; |
| 170 | 165 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -157,15 +157,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 157 | 157 | if (val === null) { |
| 158 | 158 | return null; |
| 159 | 159 | } |
| 160 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 161 | - return invalidValue(l("Date"), val, key, parent); | |
| 162 | 160 | const d = new Date(val); |
| 163 | 161 | if (isNaN(d.valueOf())) { |
| 164 | 162 | return invalidValue(l("Date"), val, key, parent); |
| 165 | 163 | } |
| 166 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 167 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 168 | - return invalidValue(l("Date"), val, key, parent); | |
| 169 | 164 | return d; |
| 170 | 165 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/df957.json
Mflowdefault / TopLevel.js+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -108,7 +108,7 @@ _Results = PropTypes.shape({ | ||
| 108 | 108 | }); |
| 109 | 109 | _Query = PropTypes.shape({ |
| 110 | 110 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 111 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 111 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | 112 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 113 | 113 | "results": _Results, |
| 114 | 114 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -36,7 +36,7 @@ def from_int(x: Any) -> int: | ||
| 36 | 36 | |
| 37 | 37 | |
| 38 | 38 | def from_datetime(x: Any) -> datetime.datetime: |
| 39 | - return dateutil.parser.parse(x) | |
| 39 | + return dateutil.parser.isoparse(x) | |
| 40 | 40 | |
| 41 | 41 | |
| 42 | 42 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 94 | 94 | |
| 95 | 95 | export class Query extends S.Class<Query>("Query")({ |
| 96 | 96 | "count": S.Int, |
| 97 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 97 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 98 | 98 | "lang": S.String, |
| 99 | 99 | "results": Results, |
| 100 | 100 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 194 | 194 | if (val === null) { |
| 195 | 195 | return null; |
| 196 | 196 | } |
| 197 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 198 | - return invalidValue(l("Date"), val, key, parent); | |
| 199 | 197 | const d = new Date(val); |
| 200 | 198 | if (isNaN(d.valueOf())) { |
| 201 | 199 | return invalidValue(l("Date"), val, key, parent); |
| 202 | 200 | } |
| 203 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 204 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 201 | return d; |
| 207 | 202 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/e0ac7.json
Mflowdefault / TopLevel.js+0 −5
| @@ -206,15 +206,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 206 | 206 | if (val === null) { |
| 207 | 207 | return null; |
| 208 | 208 | } |
| 209 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 210 | - return invalidValue(l("Date"), val, key, parent); | |
| 211 | 209 | const d = new Date(val); |
| 212 | 210 | if (isNaN(d.valueOf())) { |
| 213 | 211 | return invalidValue(l("Date"), val, key, parent); |
| 214 | 212 | } |
| 215 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 216 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 217 | - return invalidValue(l("Date"), val, key, parent); | |
| 218 | 213 | return d; |
| 219 | 214 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -202,15 +202,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 202 | 202 | if (val === null) { |
| 203 | 203 | return null; |
| 204 | 204 | } |
| 205 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 206 | - return invalidValue(l("Date"), val, key, parent); | |
| 207 | 205 | const d = new Date(val); |
| 208 | 206 | if (isNaN(d.valueOf())) { |
| 209 | 207 | return invalidValue(l("Date"), val, key, parent); |
| 210 | 208 | } |
| 211 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 212 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 213 | - return invalidValue(l("Date"), val, key, parent); | |
| 214 | 209 | return d; |
| 215 | 210 | } |
Test case
6 generated files · +3 −18test/inputs/json/misc/e2915.json
Mflowdefault / TopLevel.js+0 −5
| @@ -197,15 +197,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 197 | 197 | if (val === null) { |
| 198 | 198 | return null; |
| 199 | 199 | } |
| 200 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 201 | - return invalidValue(l("Date"), val, key, parent); | |
| 202 | 200 | const d = new Date(val); |
| 203 | 201 | if (isNaN(d.valueOf())) { |
| 204 | 202 | return invalidValue(l("Date"), val, key, parent); |
| 205 | 203 | } |
| 206 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 207 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 208 | - return invalidValue(l("Date"), val, key, parent); | |
| 209 | 204 | return d; |
| 210 | 205 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -109,7 +109,7 @@ _Results = PropTypes.shape({ | ||
| 109 | 109 | }); |
| 110 | 110 | _Query = PropTypes.shape({ |
| 111 | 111 | "count": PropTypes.oneOfType([Integer]).isRequired, |
| 112 | - "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 112 | + "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 113 | 113 | "lang": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 114 | 114 | "results": _Results, |
| 115 | 115 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -43,7 +43,7 @@ def from_int(x: Any) -> int: | ||
| 43 | 43 | |
| 44 | 44 | |
| 45 | 45 | def from_datetime(x: Any) -> datetime.datetime: |
| 46 | - return dateutil.parser.parse(x) | |
| 46 | + return dateutil.parser.isoparse(x) | |
| 47 | 47 | |
| 48 | 48 | |
| 49 | 49 | @dataclass |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -99,7 +99,7 @@ export class Results extends S.Class<Results>("Results")({ | ||
| 99 | 99 | |
| 100 | 100 | export class Query extends S.Class<Query>("Query")({ |
| 101 | 101 | "count": S.Int, |
| 102 | - "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 102 | + "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 103 | 103 | "lang": S.String, |
| 104 | 104 | "results": Results, |
| 105 | 105 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 196 | 196 | if (val === null) { |
| 197 | 197 | return null; |
| 198 | 198 | } |
| 199 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 200 | - return invalidValue(l("Date"), val, key, parent); | |
| 201 | 199 | const d = new Date(val); |
| 202 | 200 | if (isNaN(d.valueOf())) { |
| 203 | 201 | return invalidValue(l("Date"), val, key, parent); |
| 204 | 202 | } |
| 205 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 206 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 207 | - return invalidValue(l("Date"), val, key, parent); | |
| 208 | 203 | return d; |
| 209 | 204 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/e2a58.json
Mflowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/e324e.json
Mflowdefault / TopLevel.js+0 −5
| @@ -168,15 +168,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 168 | 168 | if (val === null) { |
| 169 | 169 | return null; |
| 170 | 170 | } |
| 171 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 172 | - return invalidValue(l("Date"), val, key, parent); | |
| 173 | 171 | const d = new Date(val); |
| 174 | 172 | if (isNaN(d.valueOf())) { |
| 175 | 173 | return invalidValue(l("Date"), val, key, parent); |
| 176 | 174 | } |
| 177 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 178 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 179 | - return invalidValue(l("Date"), val, key, parent); | |
| 180 | 175 | return d; |
| 181 | 176 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -167,15 +167,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 167 | 167 | if (val === null) { |
| 168 | 168 | return null; |
| 169 | 169 | } |
| 170 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 171 | - return invalidValue(l("Date"), val, key, parent); | |
| 172 | 170 | const d = new Date(val); |
| 173 | 171 | if (isNaN(d.valueOf())) { |
| 174 | 172 | return invalidValue(l("Date"), val, key, parent); |
| 175 | 173 | } |
| 176 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 177 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 178 | - return invalidValue(l("Date"), val, key, parent); | |
| 179 | 174 | return d; |
| 180 | 175 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/e53b5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 120 | 120 | if (val === null) { |
| 121 | 121 | return null; |
| 122 | 122 | } |
| 123 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 123 | const d = new Date(val); |
| 126 | 124 | if (isNaN(d.valueOf())) { |
| 127 | 125 | return invalidValue(l("Date"), val, key, parent); |
| 128 | 126 | } |
| 129 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 130 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 127 | return d; |
| 133 | 128 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/e64a0.json
Mflowdefault / TopLevel.js+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/e8a0b.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/e8b04.json
Mflowdefault / TopLevel.js+0 −5
| @@ -366,15 +366,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 366 | 366 | if (val === null) { |
| 367 | 367 | return null; |
| 368 | 368 | } |
| 369 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 370 | - return invalidValue(l("Date"), val, key, parent); | |
| 371 | 369 | const d = new Date(val); |
| 372 | 370 | if (isNaN(d.valueOf())) { |
| 373 | 371 | return invalidValue(l("Date"), val, key, parent); |
| 374 | 372 | } |
| 375 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 376 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 377 | - return invalidValue(l("Date"), val, key, parent); | |
| 378 | 373 | return d; |
| 379 | 374 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -327,15 +327,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 327 | 327 | if (val === null) { |
| 328 | 328 | return null; |
| 329 | 329 | } |
| 330 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 331 | - return invalidValue(l("Date"), val, key, parent); | |
| 332 | 330 | const d = new Date(val); |
| 333 | 331 | if (isNaN(d.valueOf())) { |
| 334 | 332 | return invalidValue(l("Date"), val, key, parent); |
| 335 | 333 | } |
| 336 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 337 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 338 | - return invalidValue(l("Date"), val, key, parent); | |
| 339 | 334 | return d; |
| 340 | 335 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/ed095.json
Mflowdefault / TopLevel.js+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/f22f5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -190,15 +190,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 190 | 190 | if (val === null) { |
| 191 | 191 | return null; |
| 192 | 192 | } |
| 193 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 194 | - return invalidValue(l("Date"), val, key, parent); | |
| 195 | 193 | const d = new Date(val); |
| 196 | 194 | if (isNaN(d.valueOf())) { |
| 197 | 195 | return invalidValue(l("Date"), val, key, parent); |
| 198 | 196 | } |
| 199 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 200 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 201 | - return invalidValue(l("Date"), val, key, parent); | |
| 202 | 197 | return d; |
| 203 | 198 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -182,15 +182,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 182 | 182 | if (val === null) { |
| 183 | 183 | return null; |
| 184 | 184 | } |
| 185 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 186 | - return invalidValue(l("Date"), val, key, parent); | |
| 187 | 185 | const d = new Date(val); |
| 188 | 186 | if (isNaN(d.valueOf())) { |
| 189 | 187 | return invalidValue(l("Date"), val, key, parent); |
| 190 | 188 | } |
| 191 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 192 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 193 | - return invalidValue(l("Date"), val, key, parent); | |
| 194 | 189 | return d; |
| 195 | 190 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/f3139.json
Mflowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/f3edf.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/f466a.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/f6a65.json
Mflowdefault / TopLevel.js+0 −5
| @@ -213,15 +213,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 213 | 213 | if (val === null) { |
| 214 | 214 | return null; |
| 215 | 215 | } |
| 216 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 217 | - return invalidValue(l("Date"), val, key, parent); | |
| 218 | 216 | const d = new Date(val); |
| 219 | 217 | if (isNaN(d.valueOf())) { |
| 220 | 218 | return invalidValue(l("Date"), val, key, parent); |
| 221 | 219 | } |
| 222 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 223 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 224 | - return invalidValue(l("Date"), val, key, parent); | |
| 225 | 220 | return d; |
| 226 | 221 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 204 | 204 | if (val === null) { |
| 205 | 205 | return null; |
| 206 | 206 | } |
| 207 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 208 | - return invalidValue(l("Date"), val, key, parent); | |
| 209 | 207 | const d = new Date(val); |
| 210 | 208 | if (isNaN(d.valueOf())) { |
| 211 | 209 | return invalidValue(l("Date"), val, key, parent); |
| 212 | 210 | } |
| 213 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 214 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 215 | - return invalidValue(l("Date"), val, key, parent); | |
| 216 | 211 | return d; |
| 217 | 212 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/f74d5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -212,15 +212,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 212 | 212 | if (val === null) { |
| 213 | 213 | return null; |
| 214 | 214 | } |
| 215 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 216 | - return invalidValue(l("Date"), val, key, parent); | |
| 217 | 215 | const d = new Date(val); |
| 218 | 216 | if (isNaN(d.valueOf())) { |
| 219 | 217 | return invalidValue(l("Date"), val, key, parent); |
| 220 | 218 | } |
| 221 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 222 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 223 | - return invalidValue(l("Date"), val, key, parent); | |
| 224 | 219 | return d; |
| 225 | 220 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -206,15 +206,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 206 | 206 | if (val === null) { |
| 207 | 207 | return null; |
| 208 | 208 | } |
| 209 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 210 | - return invalidValue(l("Date"), val, key, parent); | |
| 211 | 209 | const d = new Date(val); |
| 212 | 210 | if (isNaN(d.valueOf())) { |
| 213 | 211 | return invalidValue(l("Date"), val, key, parent); |
| 214 | 212 | } |
| 215 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 216 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 217 | - return invalidValue(l("Date"), val, key, parent); | |
| 218 | 213 | return d; |
| 219 | 214 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/f82d9.json
Mflowdefault / TopLevel.js+0 −5
| @@ -181,15 +181,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 181 | 181 | if (val === null) { |
| 182 | 182 | return null; |
| 183 | 183 | } |
| 184 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 185 | - return invalidValue(l("Date"), val, key, parent); | |
| 186 | 184 | const d = new Date(val); |
| 187 | 185 | if (isNaN(d.valueOf())) { |
| 188 | 186 | return invalidValue(l("Date"), val, key, parent); |
| 189 | 187 | } |
| 190 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 191 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 192 | - return invalidValue(l("Date"), val, key, parent); | |
| 193 | 188 | return d; |
| 194 | 189 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -180,15 +180,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 180 | 180 | if (val === null) { |
| 181 | 181 | return null; |
| 182 | 182 | } |
| 183 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 184 | - return invalidValue(l("Date"), val, key, parent); | |
| 185 | 183 | const d = new Date(val); |
| 186 | 184 | if (isNaN(d.valueOf())) { |
| 187 | 185 | return invalidValue(l("Date"), val, key, parent); |
| 188 | 186 | } |
| 189 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 190 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 191 | - return invalidValue(l("Date"), val, key, parent); | |
| 192 | 187 | return d; |
| 193 | 188 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/f974d.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/faff5.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/fcca3.json
Mflowdefault / TopLevel.js+0 −5
| @@ -309,15 +309,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 309 | 309 | if (val === null) { |
| 310 | 310 | return null; |
| 311 | 311 | } |
| 312 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 313 | - return invalidValue(l("Date"), val, key, parent); | |
| 314 | 312 | const d = new Date(val); |
| 315 | 313 | if (isNaN(d.valueOf())) { |
| 316 | 314 | return invalidValue(l("Date"), val, key, parent); |
| 317 | 315 | } |
| 318 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 319 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 320 | - return invalidValue(l("Date"), val, key, parent); | |
| 321 | 316 | return d; |
| 322 | 317 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -306,15 +306,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 306 | 306 | if (val === null) { |
| 307 | 307 | return null; |
| 308 | 308 | } |
| 309 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 310 | - return invalidValue(l("Date"), val, key, parent); | |
| 311 | 309 | const d = new Date(val); |
| 312 | 310 | if (isNaN(d.valueOf())) { |
| 313 | 311 | return invalidValue(l("Date"), val, key, parent); |
| 314 | 312 | } |
| 315 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 316 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 317 | - return invalidValue(l("Date"), val, key, parent); | |
| 318 | 313 | return d; |
| 319 | 314 | } |
Test case
3 generated files · +0 −15test/inputs/json/misc/fd329.json
Mflowdefault / TopLevel.js+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/blns-object.json
Mflowdefault / TopLevel.js+0 −5
| @@ -691,15 +691,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 691 | 691 | if (val === null) { |
| 692 | 692 | return null; |
| 693 | 693 | } |
| 694 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 695 | - return invalidValue(l("Date"), val, key, parent); | |
| 696 | 694 | const d = new Date(val); |
| 697 | 695 | if (isNaN(d.valueOf())) { |
| 698 | 696 | return invalidValue(l("Date"), val, key, parent); |
| 699 | 697 | } |
| 700 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 701 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 702 | - return invalidValue(l("Date"), val, key, parent); | |
| 703 | 698 | return d; |
| 704 | 699 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -691,15 +691,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 691 | 691 | if (val === null) { |
| 692 | 692 | return null; |
| 693 | 693 | } |
| 694 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 695 | - return invalidValue(l("Date"), val, key, parent); | |
| 696 | 694 | const d = new Date(val); |
| 697 | 695 | if (isNaN(d.valueOf())) { |
| 698 | 696 | return invalidValue(l("Date"), val, key, parent); |
| 699 | 697 | } |
| 700 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 701 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 702 | - return invalidValue(l("Date"), val, key, parent); | |
| 703 | 698 | return d; |
| 704 | 699 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/bug2037.json
Mflowdefault / TopLevel.js+0 −5
| @@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 107 | 107 | if (val === null) { |
| 108 | 108 | return null; |
| 109 | 109 | } |
| 110 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 110 | const d = new Date(val); |
| 113 | 111 | if (isNaN(d.valueOf())) { |
| 114 | 112 | return invalidValue(l("Date"), val, key, parent); |
| 115 | 113 | } |
| 116 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 117 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 114 | return d; |
| 120 | 115 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/bug2521.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
6 generated files · +5 −20test/inputs/json/priority/bug2590.json
Mflowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -15,8 +15,8 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | let _Invoice; |
| 17 | 17 | _Invoice = PropTypes.shape({ |
| 18 | - "createdAt": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 19 | - "dueDate": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 18 | + "createdAt": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 19 | + "dueDate": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 20 | 20 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 21 | 21 | }); |
| 22 | 22 | _TopLevel = PropTypes.shape({ |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -14,7 +14,7 @@ def from_str(x: Any) -> str: | ||
| 14 | 14 | |
| 15 | 15 | |
| 16 | 16 | def from_datetime(x: Any) -> datetime.datetime: |
| 17 | - return dateutil.parser.parse(x) | |
| 17 | + return dateutil.parser.isoparse(x) | |
| 18 | 18 | |
| 19 | 19 | |
| 20 | 20 | def from_none(x: Any) -> Any: |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -2,8 +2,8 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class Invoice extends S.Class<Invoice>("Invoice")({ |
| 5 | - "createdAt": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))), | |
| 6 | - "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))), | |
| 5 | + "createdAt": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))), | |
| 6 | + "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value))), | |
| 7 | 7 | "name": S.String, |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
6 generated files · +5 −20test/inputs/json/priority/bug2663.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascript-prop-typesdefault / toplevel.js+2 −2
| @@ -14,8 +14,8 @@ import PropTypes from "prop-types"; | ||
| 14 | 14 | |
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | - "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | - "lastSeen": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 17 | + "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 18 | + "lastSeen": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | 19 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 20 | 20 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -14,7 +14,7 @@ def from_date(x: Any) -> datetime.date: | ||
| 14 | 14 | |
| 15 | 15 | |
| 16 | 16 | def from_datetime(x: Any) -> datetime.datetime: |
| 17 | - return dateutil.parser.parse(x) | |
| 17 | + return dateutil.parser.isoparse(x) | |
| 18 | 18 | |
| 19 | 19 | |
| 20 | 20 | def from_str(x: Any) -> str: |
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
| @@ -2,7 +2,7 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | - "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 6 | - "lastSeen": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 5 | + "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 6 | + "lastSeen": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 7 | 7 | "name": S.String, |
| 8 | 8 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/bug2793.json
Mflowdefault / TopLevel.js+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/bug427.json
Mflowdefault / TopLevel.js+0 −5
| @@ -707,15 +707,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 707 | 707 | if (val === null) { |
| 708 | 708 | return null; |
| 709 | 709 | } |
| 710 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 711 | - return invalidValue(l("Date"), val, key, parent); | |
| 712 | 710 | const d = new Date(val); |
| 713 | 711 | if (isNaN(d.valueOf())) { |
| 714 | 712 | return invalidValue(l("Date"), val, key, parent); |
| 715 | 713 | } |
| 716 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 717 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 718 | - return invalidValue(l("Date"), val, key, parent); | |
| 719 | 714 | return d; |
| 720 | 715 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -653,15 +653,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 653 | 653 | if (val === null) { |
| 654 | 654 | return null; |
| 655 | 655 | } |
| 656 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 657 | - return invalidValue(l("Date"), val, key, parent); | |
| 658 | 656 | const d = new Date(val); |
| 659 | 657 | if (isNaN(d.valueOf())) { |
| 660 | 658 | return invalidValue(l("Date"), val, key, parent); |
| 661 | 659 | } |
| 662 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 663 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 664 | - return invalidValue(l("Date"), val, key, parent); | |
| 665 | 660 | return d; |
| 666 | 661 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/bug790.json
Mflowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/bug855-short.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/bug863.json
Mflowdefault / TopLevel.js+0 −5
| @@ -182,15 +182,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 182 | 182 | if (val === null) { |
| 183 | 183 | return null; |
| 184 | 184 | } |
| 185 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 186 | - return invalidValue(l("Date"), val, key, parent); | |
| 187 | 185 | const d = new Date(val); |
| 188 | 186 | if (isNaN(d.valueOf())) { |
| 189 | 187 | return invalidValue(l("Date"), val, key, parent); |
| 190 | 188 | } |
| 191 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 192 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 193 | - return invalidValue(l("Date"), val, key, parent); | |
| 194 | 189 | return d; |
| 195 | 190 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -166,15 +166,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 166 | 166 | if (val === null) { |
| 167 | 167 | return null; |
| 168 | 168 | } |
| 169 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 170 | - return invalidValue(l("Date"), val, key, parent); | |
| 171 | 169 | const d = new Date(val); |
| 172 | 170 | if (isNaN(d.valueOf())) { |
| 173 | 171 | return invalidValue(l("Date"), val, key, parent); |
| 174 | 172 | } |
| 175 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 176 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 177 | - return invalidValue(l("Date"), val, key, parent); | |
| 178 | 173 | return d; |
| 179 | 174 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/coin-pairs.json
Mflowdefault / TopLevel.js+0 −5
| @@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 108 | 108 | if (val === null) { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 111 | const d = new Date(val); |
| 114 | 112 | if (isNaN(d.valueOf())) { |
| 115 | 113 | return invalidValue(l("Date"), val, key, parent); |
| 116 | 114 | } |
| 117 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 118 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 115 | return d; |
| 121 | 116 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 108 | 108 | if (val === null) { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 111 | const d = new Date(val); |
| 114 | 112 | if (isNaN(d.valueOf())) { |
| 115 | 113 | return invalidValue(l("Date"), val, key, parent); |
| 116 | 114 | } |
| 117 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 118 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 115 | return d; |
| 121 | 116 | } |
Test case
20 generated files · +0 −100test/inputs/json/priority/combinations1.json
Mflowdefault / TopLevel.js+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mflownice-property-names-true--f4d7920ee2ce / TopLevel.js+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mflowprefer-unions-false--a5053c0a486d / TopLevel.js+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mflowprefer-unknown-false--f1ab9e45d823 / TopLevel.js+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mflowruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.js+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mjavascriptconverters-top-level--67aa452ed509 / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptraw-type-any--474b307c39db / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptacronym-style-pascal--d9e0c1bd777a / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptconverters-all-objects--3a443babd1cb / TopLevel.ts+0 −5
| @@ -592,15 +592,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 592 | 592 | if (val === null) { |
| 593 | 593 | return null; |
| 594 | 594 | } |
| 595 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 596 | - return invalidValue(l("Date"), val, key, parent); | |
| 597 | 595 | const d = new Date(val); |
| 598 | 596 | if (isNaN(d.valueOf())) { |
| 599 | 597 | return invalidValue(l("Date"), val, key, parent); |
| 600 | 598 | } |
| 601 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 602 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 603 | - return invalidValue(l("Date"), val, key, parent); | |
| 604 | 599 | return d; |
| 605 | 600 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptnice-property-names-true--f4d7920ee2ce / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptprefer-const-values-true--6b26e4d1265c / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptprefer-types-true--df33e18681f9 / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptprefer-unions-false--a5053c0a486d / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptprefer-unknown-false--f1ab9e45d823 / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptraw-type-any--474b307c39db / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptreadonly-true--24da4fc107df / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Mtypescriptruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.ts+0 −5
| @@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 488 | 488 | if (val === null) { |
| 489 | 489 | return null; |
| 490 | 490 | } |
| 491 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 492 | - return invalidValue(l("Date"), val, key, parent); | |
| 493 | 491 | const d = new Date(val); |
| 494 | 492 | if (isNaN(d.valueOf())) { |
| 495 | 493 | return invalidValue(l("Date"), val, key, parent); |
| 496 | 494 | } |
| 497 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 498 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 499 | - return invalidValue(l("Date"), val, key, parent); | |
| 500 | 495 | return d; |
| 501 | 496 | } |
Test case
20 generated files · +0 −100test/inputs/json/priority/combinations2.json
Mflowdefault / TopLevel.js+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mflownice-property-names-true--f4d7920ee2ce / TopLevel.js+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mflowprefer-unions-false--a5053c0a486d / TopLevel.js+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mflowprefer-unknown-false--f1ab9e45d823 / TopLevel.js+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mflowruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.js+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mjavascriptconverters-top-level--67aa452ed509 / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptraw-type-any--474b307c39db / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptacronym-style-pascal--d9e0c1bd777a / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptconverters-all-objects--3a443babd1cb / TopLevel.ts+0 −5
| @@ -520,15 +520,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 520 | 520 | if (val === null) { |
| 521 | 521 | return null; |
| 522 | 522 | } |
| 523 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 524 | - return invalidValue(l("Date"), val, key, parent); | |
| 525 | 523 | const d = new Date(val); |
| 526 | 524 | if (isNaN(d.valueOf())) { |
| 527 | 525 | return invalidValue(l("Date"), val, key, parent); |
| 528 | 526 | } |
| 529 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 530 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 531 | - return invalidValue(l("Date"), val, key, parent); | |
| 532 | 527 | return d; |
| 533 | 528 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptnice-property-names-true--f4d7920ee2ce / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptprefer-const-values-true--6b26e4d1265c / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptprefer-types-true--df33e18681f9 / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptprefer-unions-false--a5053c0a486d / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptprefer-unknown-false--f1ab9e45d823 / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptraw-type-any--474b307c39db / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptreadonly-true--24da4fc107df / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Mtypescriptruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.ts+0 −5
| @@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 440 | 440 | if (val === null) { |
| 441 | 441 | return null; |
| 442 | 442 | } |
| 443 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 444 | - return invalidValue(l("Date"), val, key, parent); | |
| 445 | 443 | const d = new Date(val); |
| 446 | 444 | if (isNaN(d.valueOf())) { |
| 447 | 445 | return invalidValue(l("Date"), val, key, parent); |
| 448 | 446 | } |
| 449 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 450 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 451 | - return invalidValue(l("Date"), val, key, parent); | |
| 452 | 447 | return d; |
| 453 | 448 | } |
Test case
20 generated files · +0 −100test/inputs/json/priority/combinations3.json
Mflowdefault / TopLevel.js+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mflownice-property-names-true--f4d7920ee2ce / TopLevel.js+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mflowprefer-unions-false--a5053c0a486d / TopLevel.js+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mflowprefer-unknown-false--f1ab9e45d823 / TopLevel.js+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mflowruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.js+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mjavascriptconverters-top-level--67aa452ed509 / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptraw-type-any--474b307c39db / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptacronym-style-pascal--d9e0c1bd777a / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptconverters-all-objects--3a443babd1cb / TopLevel.ts+0 −5
| @@ -656,15 +656,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 656 | 656 | if (val === null) { |
| 657 | 657 | return null; |
| 658 | 658 | } |
| 659 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 660 | - return invalidValue(l("Date"), val, key, parent); | |
| 661 | 659 | const d = new Date(val); |
| 662 | 660 | if (isNaN(d.valueOf())) { |
| 663 | 661 | return invalidValue(l("Date"), val, key, parent); |
| 664 | 662 | } |
| 665 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 666 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 667 | - return invalidValue(l("Date"), val, key, parent); | |
| 668 | 663 | return d; |
| 669 | 664 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptnice-property-names-true--f4d7920ee2ce / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptprefer-const-values-true--6b26e4d1265c / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptprefer-types-true--df33e18681f9 / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptprefer-unions-false--a5053c0a486d / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptprefer-unknown-false--f1ab9e45d823 / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptraw-type-any--474b307c39db / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptreadonly-true--24da4fc107df / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Mtypescriptruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.ts+0 −5
| @@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 544 | 544 | if (val === null) { |
| 545 | 545 | return null; |
| 546 | 546 | } |
| 547 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 548 | - return invalidValue(l("Date"), val, key, parent); | |
| 549 | 547 | const d = new Date(val); |
| 550 | 548 | if (isNaN(d.valueOf())) { |
| 551 | 549 | return invalidValue(l("Date"), val, key, parent); |
| 552 | 550 | } |
| 553 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 554 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 555 | - return invalidValue(l("Date"), val, key, parent); | |
| 556 | 551 | return d; |
| 557 | 552 | } |
Test case
20 generated files · +0 −100test/inputs/json/priority/combinations4.json
Mflowdefault / TopLevel.js+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mflownice-property-names-true--f4d7920ee2ce / TopLevel.js+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mflowprefer-unions-false--a5053c0a486d / TopLevel.js+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mflowprefer-unknown-false--f1ab9e45d823 / TopLevel.js+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mflowruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.js+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mjavascriptconverters-top-level--67aa452ed509 / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptraw-type-any--474b307c39db / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptacronym-style-pascal--d9e0c1bd777a / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptconverters-all-objects--3a443babd1cb / TopLevel.ts+0 −5
| @@ -742,15 +742,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 742 | 742 | if (val === null) { |
| 743 | 743 | return null; |
| 744 | 744 | } |
| 745 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 746 | - return invalidValue(l("Date"), val, key, parent); | |
| 747 | 745 | const d = new Date(val); |
| 748 | 746 | if (isNaN(d.valueOf())) { |
| 749 | 747 | return invalidValue(l("Date"), val, key, parent); |
| 750 | 748 | } |
| 751 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 752 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 753 | - return invalidValue(l("Date"), val, key, parent); | |
| 754 | 749 | return d; |
| 755 | 750 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptnice-property-names-true--f4d7920ee2ce / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptprefer-const-values-true--6b26e4d1265c / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptprefer-types-true--df33e18681f9 / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptprefer-unions-false--a5053c0a486d / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptprefer-unknown-false--f1ab9e45d823 / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptraw-type-any--474b307c39db / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptreadonly-true--24da4fc107df / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Mtypescriptruntime-typecheck-ignore-unknown-properties-true--d792c40f022e / TopLevel.ts+0 −5
| @@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 614 | 614 | if (val === null) { |
| 615 | 615 | return null; |
| 616 | 616 | } |
| 617 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 618 | - return invalidValue(l("Date"), val, key, parent); | |
| 619 | 617 | const d = new Date(val); |
| 620 | 618 | if (isNaN(d.valueOf())) { |
| 621 | 619 | return invalidValue(l("Date"), val, key, parent); |
| 622 | 620 | } |
| 623 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 624 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 625 | - return invalidValue(l("Date"), val, key, parent); | |
| 626 | 621 | return d; |
| 627 | 622 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/combined-enum.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/direct-recursive.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/empty-enum.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
4 generated files · +129 −15test/inputs/json/priority/identifiers.json
Adartuse-json-annotation-true--1579285f69e0 / TopLevel.dart+129 −0
| @@ -0,0 +1,129 @@ | ||
| 1 | +// To parse this JSON data, do | |
| 2 | +// | |
| 3 | +// final topLevel = topLevelFromJson(jsonString); | |
| 4 | + | |
| 5 | +import 'package:json_annotation/json_annotation.dart'; | |
| 6 | +import 'dart:convert'; | |
| 7 | + | |
| 8 | +part 'top_level.g.dart'; | |
| 9 | + | |
| 10 | +TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str)); | |
| 11 | + | |
| 12 | +String topLevelToJson(TopLevel data) => json.encode(data.toJson()); | |
| 13 | + | |
| 14 | +@JsonSerializable() | |
| 15 | +class TopLevel { | |
| 16 | + @JsonKey(name: "bla") | |
| 17 | + final TopLevelBla bla; | |
| 18 | + @JsonKey(name: "") | |
| 19 | + final Empty empty; | |
| 20 | + @JsonKey(name: "foo") | |
| 21 | + final Foo foo; | |
| 22 | + @JsonKey(name: "ThisIsA\ud83d\ude1cTough\"\n\nOne") | |
| 23 | + final ThisIsAToughOne thisIsAToughOne; | |
| 24 | + @JsonKey(name: "!") | |
| 25 | + final int topLevel; | |
| 26 | + @JsonKey(name: "Empty") | |
| 27 | + final EmptyClass topLevelEmpty; | |
| 28 | + | |
| 29 | + TopLevel({ | |
| 30 | + required this.bla, | |
| 31 | + required this.empty, | |
| 32 | + required this.foo, | |
| 33 | + required this.thisIsAToughOne, | |
| 34 | + required this.topLevel, | |
| 35 | + required this.topLevelEmpty, | |
| 36 | + }); | |
| 37 | + | |
| 38 | + factory TopLevel.fromJson(Map<String, dynamic> json) => _$TopLevelFromJson(json); | |
| 39 | + | |
| 40 | + Map<String, dynamic> toJson() => _$TopLevelToJson(this); | |
| 41 | +} | |
| 42 | + | |
| 43 | +@JsonSerializable() | |
| 44 | +class TopLevelBla { | |
| 45 | + @JsonKey(name: "bar") | |
| 46 | + final int bar; | |
| 47 | + | |
| 48 | + TopLevelBla({ | |
| 49 | + required this.bar, | |
| 50 | + }); | |
| 51 | + | |
| 52 | + factory TopLevelBla.fromJson(Map<String, dynamic> json) => _$TopLevelBlaFromJson(json); | |
| 53 | + | |
| 54 | + Map<String, dynamic> toJson() => _$TopLevelBlaToJson(this); | |
| 55 | +} | |
| 56 | + | |
| 57 | +@JsonSerializable() | |
| 58 | +class Empty { | |
| 59 | + @JsonKey(name: "x") | |
| 60 | + final int x; | |
| 61 | + | |
| 62 | + Empty({ | |
| 63 | + required this.x, | |
| 64 | + }); | |
| 65 | + | |
| 66 | + factory Empty.fromJson(Map<String, dynamic> json) => _$EmptyFromJson(json); | |
| 67 | + | |
| 68 | + Map<String, dynamic> toJson() => _$EmptyToJson(this); | |
| 69 | +} | |
| 70 | + | |
| 71 | +@JsonSerializable() | |
| 72 | +class Foo { | |
| 73 | + @JsonKey(name: "bla") | |
| 74 | + final FooBla bla; | |
| 75 | + @JsonKey(name: "_") | |
| 76 | + final int empty; | |
| 77 | + @JsonKey(name: "__") | |
| 78 | + final int foo; | |
| 79 | + | |
| 80 | + Foo({ | |
| 81 | + required this.bla, | |
| 82 | + required this.empty, | |
| 83 | + required this.foo, | |
| 84 | + }); | |
| 85 | + | |
| 86 | + factory Foo.fromJson(Map<String, dynamic> json) => _$FooFromJson(json); | |
| 87 | + | |
| 88 | + Map<String, dynamic> toJson() => _$FooToJson(this); | |
| 89 | +} | |
| 90 | + | |
| 91 | +@JsonSerializable() | |
| 92 | +class FooBla { | |
| 93 | + FooBla(); | |
| 94 | + | |
| 95 | + factory FooBla.fromJson(Map<String, dynamic> json) => _$FooBlaFromJson(json); | |
| 96 | + | |
| 97 | + Map<String, dynamic> toJson() => _$FooBlaToJson(this); | |
| 98 | +} | |
| 99 | + | |
| 100 | +@JsonSerializable() | |
| 101 | +class ThisIsAToughOne { | |
| 102 | + @JsonKey(name: "\n\n\n") | |
| 103 | + final int empty; | |
| 104 | + @JsonKey(name: "\"") | |
| 105 | + final int thisIsAToughOne; | |
| 106 | + | |
| 107 | + ThisIsAToughOne({ | |
| 108 | + required this.empty, | |
| 109 | + required this.thisIsAToughOne, | |
| 110 | + }); | |
| 111 | + | |
| 112 | + factory ThisIsAToughOne.fromJson(Map<String, dynamic> json) => _$ThisIsAToughOneFromJson(json); | |
| 113 | + | |
| 114 | + Map<String, dynamic> toJson() => _$ThisIsAToughOneToJson(this); | |
| 115 | +} | |
| 116 | + | |
| 117 | +@JsonSerializable() | |
| 118 | +class EmptyClass { | |
| 119 | + @JsonKey(name: "y") | |
| 120 | + final int y; | |
| 121 | + | |
| 122 | + EmptyClass({ | |
| 123 | + required this.y, | |
| 124 | + }); | |
| 125 | + | |
| 126 | + factory EmptyClass.fromJson(Map<String, dynamic> json) => _$EmptyClassFromJson(json); | |
| 127 | + | |
| 128 | + Map<String, dynamic> toJson() => _$EmptyClassToJson(this); | |
| 129 | +} |
Mflowdefault / TopLevel.js+0 −5
| @@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 127 | 127 | if (val === null) { |
| 128 | 128 | return null; |
| 129 | 129 | } |
| 130 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 131 | - return invalidValue(l("Date"), val, key, parent); | |
| 132 | 130 | const d = new Date(val); |
| 133 | 131 | if (isNaN(d.valueOf())) { |
| 134 | 132 | return invalidValue(l("Date"), val, key, parent); |
| 135 | 133 | } |
| 136 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 137 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 138 | - return invalidValue(l("Date"), val, key, parent); | |
| 139 | 134 | return d; |
| 140 | 135 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 124 | 124 | if (val === null) { |
| 125 | 125 | return null; |
| 126 | 126 | } |
| 127 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 127 | const d = new Date(val); |
| 130 | 128 | if (isNaN(d.valueOf())) { |
| 131 | 129 | return invalidValue(l("Date"), val, key, parent); |
| 132 | 130 | } |
| 133 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 134 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 135 | - return invalidValue(l("Date"), val, key, parent); | |
| 136 | 131 | return d; |
| 137 | 132 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/issue2680-object-array.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/issue2680-scalar-array.json
Mflowdefault / TopLevel.js+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Test case
7 generated files · +3 −23test/inputs/json/priority/keywords.json
Mflowdefault / TopLevel.js+0 −5
| @@ -1790,15 +1790,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 1790 | 1790 | if (val === null) { |
| 1791 | 1791 | return null; |
| 1792 | 1792 | } |
| 1793 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 1794 | - return invalidValue(l("Date"), val, key, parent); | |
| 1795 | 1793 | const d = new Date(val); |
| 1796 | 1794 | if (isNaN(d.valueOf())) { |
| 1797 | 1795 | return invalidValue(l("Date"), val, key, parent); |
| 1798 | 1796 | } |
| 1799 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 1800 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 1801 | - return invalidValue(l("Date"), val, key, parent); | |
| 1802 | 1797 | return d; |
| 1803 | 1798 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -622,7 +622,7 @@ _DateOnlyConverter = PropTypes.shape({ | ||
| 622 | 622 | "DateOnlyConverter": PropTypes.oneOfType([Integer]).isRequired, |
| 623 | 623 | }); |
| 624 | 624 | _DateTime = PropTypes.shape({ |
| 625 | - "DateTime": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 625 | + "DateTime": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 626 | 626 | }); |
| 627 | 627 | _DateTimeStyles = PropTypes.shape({ |
| 628 | 628 | "DateTimeStyles": PropTypes.oneOfType([Integer]).isRequired, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -21,7 +21,7 @@ def to_class(c: Type[T], x: Any) -> dict: | ||
| 21 | 21 | |
| 22 | 22 | |
| 23 | 23 | def from_datetime(x: Any) -> datetime.datetime: |
| 24 | - return dateutil.parser.parse(x) | |
| 24 | + return dateutil.parser.isoparse(x) | |
| 25 | 25 | |
| 26 | 26 | |
| 27 | 27 | def from_list(f: Callable[[Any], T], x: Any) -> list[T]: |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -1282,7 +1282,7 @@ export class DateTimeStyles extends S.Class<DateTimeStyles>("DateTimeStyles")({ | ||
| 1282 | 1282 | }) {} |
| 1283 | 1283 | |
| 1284 | 1284 | export class DateTime extends S.Class<DateTime>("DateTime")({ |
| 1285 | - "DateTime": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 1285 | + "DateTime": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 1286 | 1286 | }) {} |
| 1287 | 1287 | |
| 1288 | 1288 | export class DateParseHandling extends S.Class<DateParseHandling>("DateParseHandling")({ |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -1788,15 +1788,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 1788 | 1788 | if (val === null) { |
| 1789 | 1789 | return null; |
| 1790 | 1790 | } |
| 1791 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 1792 | - return invalidValue(l("Date"), val, key, parent); | |
| 1793 | 1791 | const d = new Date(val); |
| 1794 | 1792 | if (isNaN(d.valueOf())) { |
| 1795 | 1793 | return invalidValue(l("Date"), val, key, parent); |
| 1796 | 1794 | } |
| 1797 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 1798 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 1799 | - return invalidValue(l("Date"), val, key, parent); | |
| 1800 | 1795 | return d; |
| 1801 | 1796 | } |
Mtypescriptprefer-types-true--df33e18681f9 / TopLevel.ts+0 −5
| @@ -1788,15 +1788,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 1788 | 1788 | if (val === null) { |
| 1789 | 1789 | return null; |
| 1790 | 1790 | } |
| 1791 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 1792 | - return invalidValue(l("Date"), val, key, parent); | |
| 1793 | 1791 | const d = new Date(val); |
| 1794 | 1792 | if (isNaN(d.valueOf())) { |
| 1795 | 1793 | return invalidValue(l("Date"), val, key, parent); |
| 1796 | 1794 | } |
| 1797 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 1798 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 1799 | - return invalidValue(l("Date"), val, key, parent); | |
| 1800 | 1795 | return d; |
| 1801 | 1796 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/kotlin-enum-class-case-collision.json
Mflowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/list.json
Mflowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/name-style.json
Mflowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/nbl-stats.json
Mflowdefault / TopLevel.js+0 −5
| @@ -428,15 +428,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 428 | 428 | if (val === null) { |
| 429 | 429 | return null; |
| 430 | 430 | } |
| 431 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 432 | - return invalidValue(l("Date"), val, key, parent); | |
| 433 | 431 | const d = new Date(val); |
| 434 | 432 | if (isNaN(d.valueOf())) { |
| 435 | 433 | return invalidValue(l("Date"), val, key, parent); |
| 436 | 434 | } |
| 437 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 438 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 439 | - return invalidValue(l("Date"), val, key, parent); | |
| 440 | 435 | return d; |
| 441 | 436 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -373,15 +373,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 373 | 373 | if (val === null) { |
| 374 | 374 | return null; |
| 375 | 375 | } |
| 376 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 377 | - return invalidValue(l("Date"), val, key, parent); | |
| 378 | 376 | const d = new Date(val); |
| 379 | 377 | if (isNaN(d.valueOf())) { |
| 380 | 378 | return invalidValue(l("Date"), val, key, parent); |
| 381 | 379 | } |
| 382 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 383 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 384 | - return invalidValue(l("Date"), val, key, parent); | |
| 385 | 380 | return d; |
| 386 | 381 | } |
Test case
4 generated files · +0 −20test/inputs/json/priority/nested-objects.json
Mflowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mjavascriptconverters-all-objects--3a443babd1cb / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/no-classes.json
Mflowdefault / TopLevel.js+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/nst-test-suite.json
Mflowdefault / TopLevel.js+0 −5
| @@ -236,15 +236,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 236 | 236 | if (val === null) { |
| 237 | 237 | return null; |
| 238 | 238 | } |
| 239 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 240 | - return invalidValue(l("Date"), val, key, parent); | |
| 241 | 239 | const d = new Date(val); |
| 242 | 240 | if (isNaN(d.valueOf())) { |
| 243 | 241 | return invalidValue(l("Date"), val, key, parent); |
| 244 | 242 | } |
| 245 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 246 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 247 | - return invalidValue(l("Date"), val, key, parent); | |
| 248 | 243 | return d; |
| 249 | 244 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -233,15 +233,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 233 | 233 | if (val === null) { |
| 234 | 234 | return null; |
| 235 | 235 | } |
| 236 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 237 | - return invalidValue(l("Date"), val, key, parent); | |
| 238 | 236 | const d = new Date(val); |
| 239 | 237 | if (isNaN(d.valueOf())) { |
| 240 | 238 | return invalidValue(l("Date"), val, key, parent); |
| 241 | 239 | } |
| 242 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 243 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 244 | - return invalidValue(l("Date"), val, key, parent); | |
| 245 | 240 | return d; |
| 246 | 241 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/number-map.json
Mflowdefault / TopLevel.js+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/omit-empty.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/optional-union.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/php-mixed-union.json
Mflowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/php-validation.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/recursive.json
Mflowdefault / TopLevel.js+0 −5
| @@ -215,15 +215,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 215 | 215 | if (val === null) { |
| 216 | 216 | return null; |
| 217 | 217 | } |
| 218 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 219 | - return invalidValue(l("Date"), val, key, parent); | |
| 220 | 218 | const d = new Date(val); |
| 221 | 219 | if (isNaN(d.valueOf())) { |
| 222 | 220 | return invalidValue(l("Date"), val, key, parent); |
| 223 | 221 | } |
| 224 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 225 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 226 | - return invalidValue(l("Date"), val, key, parent); | |
| 227 | 222 | return d; |
| 228 | 223 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -215,15 +215,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 215 | 215 | if (val === null) { |
| 216 | 216 | return null; |
| 217 | 217 | } |
| 218 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 219 | - return invalidValue(l("Date"), val, key, parent); | |
| 220 | 218 | const d = new Date(val); |
| 221 | 219 | if (isNaN(d.valueOf())) { |
| 222 | 220 | return invalidValue(l("Date"), val, key, parent); |
| 223 | 221 | } |
| 224 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 225 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 226 | - return invalidValue(l("Date"), val, key, parent); | |
| 227 | 222 | return d; |
| 228 | 223 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/simple-identifiers.json
Mflowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/union-constructor-clash.json
Mflowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/unions.json
Mflowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/url.json
Mflowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/json/priority/uuids.json
Mflowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/bitcoin-block.json
Mflowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/copy-with-property.json
Mflowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/getting-started.json
Mflowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
6 generated files · +33 −48test/inputs/json/samples/github-events.json
Mflowdefault / TopLevel.js+0 −5
| @@ -384,15 +384,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 384 | 384 | if (val === null) { |
| 385 | 385 | return null; |
| 386 | 386 | } |
| 387 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 388 | - return invalidValue(l("Date"), val, key, parent); | |
| 389 | 387 | const d = new Date(val); |
| 390 | 388 | if (isNaN(d.valueOf())) { |
| 391 | 389 | return invalidValue(l("Date"), val, key, parent); |
| 392 | 390 | } |
| 393 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 394 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 395 | - return invalidValue(l("Date"), val, key, parent); | |
| 396 | 391 | return d; |
| 397 | 392 | } |
Mjavascript-prop-typesdefault / toplevel.js+16 −16
| @@ -60,11 +60,11 @@ _User = PropTypes.shape({ | ||
| 60 | 60 | }); |
| 61 | 61 | _Comment = PropTypes.shape({ |
| 62 | 62 | "body": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 63 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 63 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 64 | 64 | "html_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 65 | 65 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| 66 | 66 | "issue_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 67 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 67 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 68 | 68 | "url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 69 | 69 | "user": _User, |
| 70 | 70 | }); |
| @@ -89,10 +89,10 @@ _Label = PropTypes.shape({ | ||
| 89 | 89 | _Milestone = PropTypes.shape({ |
| 90 | 90 | "closed_at": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 91 | 91 | "closed_issues": PropTypes.oneOfType([Integer]).isRequired, |
| 92 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 92 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 93 | 93 | "creator": _User, |
| 94 | 94 | "description": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 95 | - "due_on": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 95 | + "due_on": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 96 | 96 | "html_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 97 | 97 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| 98 | 98 | "labels_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| @@ -100,7 +100,7 @@ _Milestone = PropTypes.shape({ | ||
| 100 | 100 | "open_issues": PropTypes.oneOfType([Integer]).isRequired, |
| 101 | 101 | "state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 102 | 102 | "title": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 103 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 103 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 104 | 104 | "url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 105 | 105 | }); |
| 106 | 106 | _IssuePullRequest = PropTypes.shape({ |
| @@ -113,10 +113,10 @@ _Issue = PropTypes.shape({ | ||
| 113 | 113 | "assignee": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 114 | 114 | "assignees": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.any)]).isRequired, |
| 115 | 115 | "body": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 116 | - "closed_at": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 116 | + "closed_at": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args), | |
| 117 | 117 | "comments": PropTypes.oneOfType([Integer]).isRequired, |
| 118 | 118 | "comments_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 119 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 119 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 120 | 120 | "events_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 121 | 121 | "html_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 122 | 122 | "id": PropTypes.oneOfType([Integer]).isRequired, |
| @@ -129,7 +129,7 @@ _Issue = PropTypes.shape({ | ||
| 129 | 129 | "repository_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 130 | 130 | "state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 131 | 131 | "title": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 132 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 132 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 133 | 133 | "url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 134 | 134 | "user": _User, |
| 135 | 135 | }); |
| @@ -158,7 +158,7 @@ _BaseRepo = PropTypes.shape({ | ||
| 158 | 158 | "compare_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 159 | 159 | "contents_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 160 | 160 | "contributors_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 161 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 161 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 162 | 162 | "default_branch": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 163 | 163 | "deployments_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 164 | 164 | "description": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| @@ -199,7 +199,7 @@ _BaseRepo = PropTypes.shape({ | ||
| 199 | 199 | "owner": _User, |
| 200 | 200 | "private": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 201 | 201 | "pulls_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 202 | - "pushed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 202 | + "pushed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 203 | 203 | "releases_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 204 | 204 | "size": PropTypes.oneOfType([Integer]).isRequired, |
| 205 | 205 | "ssh_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| @@ -212,7 +212,7 @@ _BaseRepo = PropTypes.shape({ | ||
| 212 | 212 | "tags_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 213 | 213 | "teams_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 214 | 214 | "trees_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 215 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 215 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 216 | 216 | "url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 217 | 217 | "watchers": PropTypes.oneOfType([Integer]).isRequired, |
| 218 | 218 | "watchers_count": PropTypes.oneOfType([Integer]).isRequired, |
| @@ -232,12 +232,12 @@ _PayloadPullRequest = PropTypes.shape({ | ||
| 232 | 232 | "base": _Base, |
| 233 | 233 | "body": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 234 | 234 | "changed_files": PropTypes.oneOfType([Integer]).isRequired, |
| 235 | - "closed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 235 | + "closed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 236 | 236 | "comments": PropTypes.oneOfType([Integer]).isRequired, |
| 237 | 237 | "comments_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 238 | 238 | "commits": PropTypes.oneOfType([Integer]).isRequired, |
| 239 | 239 | "commits_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 240 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 240 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 241 | 241 | "deletions": PropTypes.oneOfType([Integer]).isRequired, |
| 242 | 242 | "diff_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 243 | 243 | "head": _Base, |
| @@ -250,7 +250,7 @@ _PayloadPullRequest = PropTypes.shape({ | ||
| 250 | 250 | "mergeable": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 251 | 251 | "mergeable_state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 252 | 252 | "merged": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 253 | - "merged_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 253 | + "merged_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 254 | 254 | "merged_by": _User, |
| 255 | 255 | "milestone": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 256 | 256 | "number": PropTypes.oneOfType([Integer]).isRequired, |
| @@ -263,7 +263,7 @@ _PayloadPullRequest = PropTypes.shape({ | ||
| 263 | 263 | "state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 264 | 264 | "statuses_url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 265 | 265 | "title": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 266 | - "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 266 | + "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 267 | 267 | "url": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 268 | 268 | "user": _User, |
| 269 | 269 | }); |
| @@ -292,7 +292,7 @@ _TopLevelRepo = PropTypes.shape({ | ||
| 292 | 292 | }); |
| 293 | 293 | _TopLevel = PropTypes.shape({ |
| 294 | 294 | "actor": _Actor, |
| 295 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 295 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 296 | 296 | "id": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 297 | 297 | "org": PropTypes.oneOfType([_Actor, PropTypes.oneOf([null])]), |
| 298 | 298 | "payload": _Payload, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -44,7 +44,7 @@ def to_enum(c: Type[EnumT], x: Any) -> EnumT: | ||
| 44 | 44 | |
| 45 | 45 | |
| 46 | 46 | def from_datetime(x: Any) -> datetime.datetime: |
| 47 | - return dateutil.parser.parse(x) | |
| 47 | + return dateutil.parser.isoparse(x) | |
| 48 | 48 | |
| 49 | 49 | |
| 50 | 50 | def to_class(c: Type[T], x: Any) -> dict: |
Mtypescript-effect-schemadefault / TopLevel.ts+16 −16
| @@ -88,7 +88,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({ | ||
| 88 | 88 | "compare_url": S.String, |
| 89 | 89 | "contents_url": S.String, |
| 90 | 90 | "contributors_url": S.String, |
| 91 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 91 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 92 | 92 | "default_branch": S.String, |
| 93 | 93 | "deployments_url": S.String, |
| 94 | 94 | "description": S.String, |
| @@ -129,7 +129,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({ | ||
| 129 | 129 | "owner": User, |
| 130 | 130 | "private": S.Boolean, |
| 131 | 131 | "pulls_url": S.String, |
| 132 | - "pushed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 132 | + "pushed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 133 | 133 | "releases_url": S.String, |
| 134 | 134 | "size": S.Int, |
| 135 | 135 | "ssh_url": S.String, |
| @@ -142,7 +142,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({ | ||
| 142 | 142 | "tags_url": S.String, |
| 143 | 143 | "teams_url": S.String, |
| 144 | 144 | "trees_url": S.String, |
| 145 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 145 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 146 | 146 | "url": S.String, |
| 147 | 147 | "watchers": S.Int, |
| 148 | 148 | "watchers_count": S.Int, |
| @@ -163,12 +163,12 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull | ||
| 163 | 163 | "base": Base, |
| 164 | 164 | "body": S.String, |
| 165 | 165 | "changed_files": S.Int, |
| 166 | - "closed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 166 | + "closed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 167 | 167 | "comments": S.Int, |
| 168 | 168 | "comments_url": S.String, |
| 169 | 169 | "commits": S.Int, |
| 170 | 170 | "commits_url": S.String, |
| 171 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 171 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 172 | 172 | "deletions": S.Int, |
| 173 | 173 | "diff_url": S.String, |
| 174 | 174 | "head": Base, |
| @@ -182,7 +182,7 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull | ||
| 182 | 182 | "mergeable": S.Null, |
| 183 | 183 | "mergeable_state": S.String, |
| 184 | 184 | "merged": S.Boolean, |
| 185 | - "merged_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 185 | + "merged_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 186 | 186 | "merged_by": User, |
| 187 | 187 | "milestone": S.Null, |
| 188 | 188 | "number": S.Int, |
| @@ -195,18 +195,18 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull | ||
| 195 | 195 | "state": S.String, |
| 196 | 196 | "statuses_url": S.String, |
| 197 | 197 | "title": S.String, |
| 198 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 198 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 199 | 199 | "url": S.String, |
| 200 | 200 | "user": User, |
| 201 | 201 | }) {} |
| 202 | 202 | |
| 203 | 203 | export class Comment extends S.Class<Comment>("Comment")({ |
| 204 | 204 | "body": S.String, |
| 205 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 205 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 206 | 206 | "html_url": S.String, |
| 207 | 207 | "id": S.Int, |
| 208 | 208 | "issue_url": S.String, |
| 209 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 209 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 210 | 210 | "url": S.String, |
| 211 | 211 | "user": User, |
| 212 | 212 | }) {} |
| @@ -214,10 +214,10 @@ export class Comment extends S.Class<Comment>("Comment")({ | ||
| 214 | 214 | export class Milestone extends S.Class<Milestone>("Milestone")({ |
| 215 | 215 | "closed_at": S.Null, |
| 216 | 216 | "closed_issues": S.Int, |
| 217 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 217 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 218 | 218 | "creator": User, |
| 219 | 219 | "description": S.String, |
| 220 | - "due_on": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))), | |
| 220 | + "due_on": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))), | |
| 221 | 221 | "html_url": S.String, |
| 222 | 222 | "id": S.Int, |
| 223 | 223 | "labels_url": S.String, |
| @@ -225,7 +225,7 @@ export class Milestone extends S.Class<Milestone>("Milestone")({ | ||
| 225 | 225 | "open_issues": S.Int, |
| 226 | 226 | "state": S.String, |
| 227 | 227 | "title": S.String, |
| 228 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 228 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 229 | 229 | "url": S.String, |
| 230 | 230 | }) {} |
| 231 | 231 | |
| @@ -252,10 +252,10 @@ export class Issue extends S.Class<Issue>("Issue")({ | ||
| 252 | 252 | "assignee": S.Null, |
| 253 | 253 | "assignees": S.Array(S.Any), |
| 254 | 254 | "body": S.String, |
| 255 | - "closed_at": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))), | |
| 255 | + "closed_at": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))), | |
| 256 | 256 | "comments": S.Int, |
| 257 | 257 | "comments_url": S.String, |
| 258 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 258 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 259 | 259 | "events_url": S.String, |
| 260 | 260 | "html_url": S.String, |
| 261 | 261 | "id": S.Int, |
| @@ -268,7 +268,7 @@ export class Issue extends S.Class<Issue>("Issue")({ | ||
| 268 | 268 | "repository_url": S.String, |
| 269 | 269 | "state": S.String, |
| 270 | 270 | "title": S.String, |
| 271 | - "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 271 | + "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 272 | 272 | "url": S.String, |
| 273 | 273 | "user": User, |
| 274 | 274 | }) {} |
| @@ -284,7 +284,7 @@ export class Actor extends S.Class<Actor>("Actor")({ | ||
| 284 | 284 | |
| 285 | 285 | export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({ |
| 286 | 286 | "actor": Actor, |
| 287 | - "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 287 | + "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 288 | 288 | "id": S.String, |
| 289 | 289 | "org": S.optional(Actor), |
| 290 | 290 | "payload": Payload, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -382,15 +382,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 382 | 382 | if (val === null) { |
| 383 | 383 | return null; |
| 384 | 384 | } |
| 385 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 386 | - return invalidValue(l("Date"), val, key, parent); | |
| 387 | 385 | const d = new Date(val); |
| 388 | 386 | if (isNaN(d.valueOf())) { |
| 389 | 387 | return invalidValue(l("Date"), val, key, parent); |
| 390 | 388 | } |
| 391 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 392 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 393 | - return invalidValue(l("Date"), val, key, parent); | |
| 394 | 389 | return d; |
| 395 | 390 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/kitchen-sink.json
Mflowdefault / TopLevel.js+0 −5
| @@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 128 | 128 | if (val === null) { |
| 129 | 129 | return null; |
| 130 | 130 | } |
| 131 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 131 | const d = new Date(val); |
| 134 | 132 | if (isNaN(d.valueOf())) { |
| 135 | 133 | return invalidValue(l("Date"), val, key, parent); |
| 136 | 134 | } |
| 137 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 138 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 139 | - return invalidValue(l("Date"), val, key, parent); | |
| 140 | 135 | return d; |
| 141 | 136 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 128 | 128 | if (val === null) { |
| 129 | 129 | return null; |
| 130 | 130 | } |
| 131 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 132 | - return invalidValue(l("Date"), val, key, parent); | |
| 133 | 131 | const d = new Date(val); |
| 134 | 132 | if (isNaN(d.valueOf())) { |
| 135 | 133 | return invalidValue(l("Date"), val, key, parent); |
| 136 | 134 | } |
| 137 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 138 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 139 | - return invalidValue(l("Date"), val, key, parent); | |
| 140 | 135 | return d; |
| 141 | 136 | } |
Test case
6 generated files · +3 −18test/inputs/json/samples/null-safe.json
Mflowdefault / TopLevel.js+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Mjavascript-prop-typesdefault / toplevel.js+1 −1
| @@ -23,7 +23,7 @@ _Address = PropTypes.shape({ | ||
| 23 | 23 | }); |
| 24 | 24 | _Item = PropTypes.shape({ |
| 25 | 25 | "address": PropTypes.oneOfType([_Address, PropTypes.oneOf([null])]), |
| 26 | - "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]), | |
| 26 | + "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]), | |
| 27 | 27 | "name": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 28 | 28 | "sex": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args), |
| 29 | 29 | }); |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mpythondefault / quicktype.py+1 −1
| @@ -27,7 +27,7 @@ def from_union(fs, x): | ||
| 27 | 27 | |
| 28 | 28 | |
| 29 | 29 | def from_datetime(x: Any) -> datetime.datetime: |
| 30 | - return dateutil.parser.parse(x) | |
| 30 | + return dateutil.parser.isoparse(x) | |
| 31 | 31 | |
| 32 | 32 | |
| 33 | 33 | def from_int(x: Any) -> int: |
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -9,7 +9,7 @@ export class Address extends S.Class<Address>("Address")({ | ||
| 9 | 9 | |
| 10 | 10 | export class Item extends S.Class<Item>("Item")({ |
| 11 | 11 | "address": S.optional(Address), |
| 12 | - "created_at": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))), | |
| 12 | + "created_at": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))), | |
| 13 | 13 | "name": S.String, |
| 14 | 14 | "sex": S.NullOr(S.Int), |
| 15 | 15 | }) {} |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/objc-control-characters.json
Mflowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
4 generated files · +0 −20test/inputs/json/samples/pokedex.json
Mflowdefault / TopLevel.js+0 −5
| @@ -148,15 +148,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 148 | 148 | if (val === null) { |
| 149 | 149 | return null; |
| 150 | 150 | } |
| 151 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 152 | - return invalidValue(l("Date"), val, key, parent); | |
| 153 | 151 | const d = new Date(val); |
| 154 | 152 | if (isNaN(d.valueOf())) { |
| 155 | 153 | return invalidValue(l("Date"), val, key, parent); |
| 156 | 154 | } |
| 157 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 158 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 159 | - return invalidValue(l("Date"), val, key, parent); | |
| 160 | 155 | return d; |
| 161 | 156 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 125 | 125 | if (val === null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| 128 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 128 | const d = new Date(val); |
| 131 | 129 | if (isNaN(d.valueOf())) { |
| 132 | 130 | return invalidValue(l("Date"), val, key, parent); |
| 133 | 131 | } |
| 134 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 135 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 132 | return d; |
| 138 | 133 | } |
Mtypescriptprefer-types-true--df33e18681f9 / TopLevel.ts+0 −5
| @@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 125 | 125 | if (val === null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| 128 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 128 | const d = new Date(val); |
| 131 | 129 | if (isNaN(d.valueOf())) { |
| 132 | 130 | return invalidValue(l("Date"), val, key, parent); |
| 133 | 131 | } |
| 134 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 135 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 132 | return d; |
| 138 | 133 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/reddit.json
Mflowdefault / TopLevel.js+0 −5
| @@ -237,15 +237,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 237 | 237 | if (val === null) { |
| 238 | 238 | return null; |
| 239 | 239 | } |
| 240 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 241 | - return invalidValue(l("Date"), val, key, parent); | |
| 242 | 240 | const d = new Date(val); |
| 243 | 241 | if (isNaN(d.valueOf())) { |
| 244 | 242 | return invalidValue(l("Date"), val, key, parent); |
| 245 | 243 | } |
| 246 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 247 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 248 | - return invalidValue(l("Date"), val, key, parent); | |
| 249 | 244 | return d; |
| 250 | 245 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -222,15 +222,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 222 | 222 | if (val === null) { |
| 223 | 223 | return null; |
| 224 | 224 | } |
| 225 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 226 | - return invalidValue(l("Date"), val, key, parent); | |
| 227 | 225 | const d = new Date(val); |
| 228 | 226 | if (isNaN(d.valueOf())) { |
| 229 | 227 | return invalidValue(l("Date"), val, key, parent); |
| 230 | 228 | } |
| 231 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 232 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 233 | - return invalidValue(l("Date"), val, key, parent); | |
| 234 | 229 | return d; |
| 235 | 230 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/simple-object.json
Mflowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/spotify-album.json
Mflowdefault / TopLevel.js+0 −5
| @@ -166,15 +166,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 166 | 166 | if (val === null) { |
| 167 | 167 | return null; |
| 168 | 168 | } |
| 169 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 170 | - return invalidValue(l("Date"), val, key, parent); | |
| 171 | 169 | const d = new Date(val); |
| 172 | 170 | if (isNaN(d.valueOf())) { |
| 173 | 171 | return invalidValue(l("Date"), val, key, parent); |
| 174 | 172 | } |
| 175 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 176 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 177 | - return invalidValue(l("Date"), val, key, parent); | |
| 178 | 173 | return d; |
| 179 | 174 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -166,15 +166,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 166 | 166 | if (val === null) { |
| 167 | 167 | return null; |
| 168 | 168 | } |
| 169 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 170 | - return invalidValue(l("Date"), val, key, parent); | |
| 171 | 169 | const d = new Date(val); |
| 172 | 170 | if (isNaN(d.valueOf())) { |
| 173 | 171 | return invalidValue(l("Date"), val, key, parent); |
| 174 | 172 | } |
| 175 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 176 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 177 | - return invalidValue(l("Date"), val, key, parent); | |
| 178 | 173 | return d; |
| 179 | 174 | } |
Test case
3 generated files · +0 −15test/inputs/json/samples/us-avg-temperatures.json
Mflowdefault / TopLevel.js+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Test case
5 generated files · +6 −21test/inputs/json/samples/us-senators.json
Mflowdefault / TopLevel.js+0 −5
| @@ -201,15 +201,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 201 | 201 | if (val === null) { |
| 202 | 202 | return null; |
| 203 | 203 | } |
| 204 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 205 | - return invalidValue(l("Date"), val, key, parent); | |
| 206 | 204 | const d = new Date(val); |
| 207 | 205 | if (isNaN(d.valueOf())) { |
| 208 | 206 | return invalidValue(l("Date"), val, key, parent); |
| 209 | 207 | } |
| 210 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 211 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 212 | - return invalidValue(l("Date"), val, key, parent); | |
| 213 | 208 | return d; |
| 214 | 209 | } |
Mjavascript-prop-typesdefault / toplevel.js+3 −3
| @@ -43,7 +43,7 @@ _Extra = PropTypes.shape({ | ||
| 43 | 43 | }); |
| 44 | 44 | _Person = PropTypes.shape({ |
| 45 | 45 | "bioguideid": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 46 | - "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 46 | + "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 47 | 47 | "cspanid": PropTypes.oneOfType([Integer]).isRequired, |
| 48 | 48 | "firstname": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 49 | 49 | "gender": _Gender, |
| @@ -66,7 +66,7 @@ _Object = PropTypes.shape({ | ||
| 66 | 66 | "current": PropTypes.oneOfType([PropTypes.bool]).isRequired, |
| 67 | 67 | "description": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 68 | 68 | "district": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args), |
| 69 | - "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 69 | + "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 70 | 70 | "extra": _Extra, |
| 71 | 71 | "leadership_title": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args), |
| 72 | 72 | "party": _Party, |
| @@ -78,7 +78,7 @@ _Object = PropTypes.shape({ | ||
| 78 | 78 | "senator_class_label": _SenatorClassLabel, |
| 79 | 79 | "senator_rank": _SenatorRank, |
| 80 | 80 | "senator_rank_label": _SenatorRankLabel, |
| 81 | - "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 81 | + "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 82 | 82 | "state": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 83 | 83 | "title": _Title, |
| 84 | 84 | "title_long": _RoleTypeLabel, |
Mjavascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mtypescript-effect-schemadefault / TopLevel.ts+3 −3
| @@ -80,7 +80,7 @@ export type Title = S.Schema.Type<typeof Title>; | ||
| 80 | 80 | |
| 81 | 81 | export class Person extends S.Class<Person>("Person")({ |
| 82 | 82 | "bioguideid": S.String, |
| 83 | - "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 83 | + "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 84 | 84 | "cspanid": S.Int, |
| 85 | 85 | "firstname": S.String, |
| 86 | 86 | "gender": Gender, |
| @@ -112,7 +112,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({ | ||
| 112 | 112 | "current": S.Boolean, |
| 113 | 113 | "description": S.String, |
| 114 | 114 | "district": S.Null, |
| 115 | - "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 115 | + "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 116 | 116 | "extra": Extra, |
| 117 | 117 | "leadership_title": S.NullOr(S.String), |
| 118 | 118 | "party": Party, |
| @@ -124,7 +124,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({ | ||
| 124 | 124 | "senator_class_label": SenatorClassLabel, |
| 125 | 125 | "senator_rank": SenatorRank, |
| 126 | 126 | "senator_rank_label": SenatorRankLabel, |
| 127 | - "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 127 | + "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 128 | 128 | "state": S.String, |
| 129 | 129 | "title": Title, |
| 130 | 130 | "title_long": RoleTypeLabel, |
Mtypescriptdefault / TopLevel.ts+0 −5
| @@ -178,15 +178,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 178 | 178 | if (val === null) { |
| 179 | 179 | return null; |
| 180 | 180 | } |
| 181 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 182 | - return invalidValue(l("Date"), val, key, parent); | |
| 183 | 181 | const d = new Date(val); |
| 184 | 182 | if (isNaN(d.valueOf())) { |
| 185 | 183 | return invalidValue(l("Date"), val, key, parent); |
| 186 | 184 | } |
| 187 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 188 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 189 | - return invalidValue(l("Date"), val, key, parent); | |
| 190 | 185 | return d; |
| 191 | 186 | } |
Test case
3 generated files · +0 −15test/inputs/schema/accessors.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/schema/all-of-additional-properties-false.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 108 | 108 | if (val === null) { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 111 | const d = new Date(val); |
| 114 | 112 | if (isNaN(d.valueOf())) { |
| 115 | 113 | return invalidValue(l("Date"), val, key, parent); |
| 116 | 114 | } |
| 117 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 118 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 115 | return d; |
| 121 | 116 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/schema/any.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/schema/bool-string.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
3 generated files · +0 −15test/inputs/schema/boolean-subschema.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/camelCase.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/schema/class-map-union.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -113,15 +113,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 113 | 113 | if (val === null) { |
| 114 | 114 | return null; |
| 115 | 115 | } |
| 116 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 116 | const d = new Date(val); |
| 119 | 117 | if (isNaN(d.valueOf())) { |
| 120 | 118 | return invalidValue(l("Date"), val, key, parent); |
| 121 | 119 | } |
| 122 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 123 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 120 | return d; |
| 126 | 121 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -113,15 +113,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 113 | 113 | if (val === null) { |
| 114 | 114 | return null; |
| 115 | 115 | } |
| 116 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 116 | const d = new Date(val); |
| 119 | 117 | if (isNaN(d.valueOf())) { |
| 120 | 118 | return invalidValue(l("Date"), val, key, parent); |
| 121 | 119 | } |
| 122 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 123 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 124 | - return invalidValue(l("Date"), val, key, parent); | |
| 125 | 120 | return d; |
| 126 | 121 | } |
Test case
3 generated files · +0 −15test/inputs/schema/class-with-additional.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
4 generated files · +0 −20test/inputs/schema/comment-injection-enum-nested-comment.schema
Mcomment-injection-typescriptdefault / TopLevel.ts+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -111,15 +111,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 111 | 111 | if (val === null) { |
| 112 | 112 | return null; |
| 113 | 113 | } |
| 114 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 114 | const d = new Date(val); |
| 117 | 115 | if (isNaN(d.valueOf())) { |
| 118 | 116 | return invalidValue(l("Date"), val, key, parent); |
| 119 | 117 | } |
| 120 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 121 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 122 | - return invalidValue(l("Date"), val, key, parent); | |
| 123 | 118 | return d; |
| 124 | 119 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Test case
4 generated files · +0 −20test/inputs/schema/comment-injection-enum.schema
Mcomment-injection-typescriptdefault / TopLevel.ts+0 −5
| @@ -116,15 +116,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 116 | 116 | if (val === null) { |
| 117 | 117 | return null; |
| 118 | 118 | } |
| 119 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 119 | const d = new Date(val); |
| 122 | 120 | if (isNaN(d.valueOf())) { |
| 123 | 121 | return invalidValue(l("Date"), val, key, parent); |
| 124 | 122 | } |
| 125 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 126 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 127 | - return invalidValue(l("Date"), val, key, parent); | |
| 128 | 123 | return d; |
| 129 | 124 | } |
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -117,15 +117,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 117 | 117 | if (val === null) { |
| 118 | 118 | return null; |
| 119 | 119 | } |
| 120 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 120 | const d = new Date(val); |
| 123 | 121 | if (isNaN(d.valueOf())) { |
| 124 | 122 | return invalidValue(l("Date"), val, key, parent); |
| 125 | 123 | } |
| 126 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 127 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 128 | - return invalidValue(l("Date"), val, key, parent); | |
| 129 | 124 | return d; |
| 130 | 125 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -116,15 +116,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 116 | 116 | if (val === null) { |
| 117 | 117 | return null; |
| 118 | 118 | } |
| 119 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 119 | const d = new Date(val); |
| 122 | 120 | if (isNaN(d.valueOf())) { |
| 123 | 121 | return invalidValue(l("Date"), val, key, parent); |
| 124 | 122 | } |
| 125 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 126 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 127 | - return invalidValue(l("Date"), val, key, parent); | |
| 128 | 123 | return d; |
| 129 | 124 | } |
Test case
4 generated files · +0 −20test/inputs/schema/comment-injection-nested-comment.schema
Mcomment-injection-typescriptdefault / TopLevel.ts+0 −5
| @@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 108 | 108 | if (val === null) { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 111 | const d = new Date(val); |
| 114 | 112 | if (isNaN(d.valueOf())) { |
| 115 | 113 | return invalidValue(l("Date"), val, key, parent); |
| 116 | 114 | } |
| 117 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 118 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 115 | return d; |
| 121 | 116 | } |
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 108 | 108 | if (val === null) { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 111 | const d = new Date(val); |
| 114 | 112 | if (isNaN(d.valueOf())) { |
| 115 | 113 | return invalidValue(l("Date"), val, key, parent); |
| 116 | 114 | } |
| 117 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 118 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 115 | return d; |
| 121 | 116 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 108 | 108 | if (val === null) { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 111 | const d = new Date(val); |
| 114 | 112 | if (isNaN(d.valueOf())) { |
| 115 | 113 | return invalidValue(l("Date"), val, key, parent); |
| 116 | 114 | } |
| 117 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 118 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 115 | return d; |
| 121 | 116 | } |
Test case
4 generated files · +0 −20test/inputs/schema/comment-injection.schema
Mcomment-injection-typescriptdefault / TopLevel.ts+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 136 | 136 | if (val === null) { |
| 137 | 137 | return null; |
| 138 | 138 | } |
| 139 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 140 | - return invalidValue(l("Date"), val, key, parent); | |
| 141 | 139 | const d = new Date(val); |
| 142 | 140 | if (isNaN(d.valueOf())) { |
| 143 | 141 | return invalidValue(l("Date"), val, key, parent); |
| 144 | 142 | } |
| 145 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 146 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 147 | - return invalidValue(l("Date"), val, key, parent); | |
| 148 | 143 | return d; |
| 149 | 144 | } |
Test case
3 generated files · +0 −15test/inputs/schema/const-non-string.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/schema/constructor.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/cut-enum.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
6 generated files · +3 −18test/inputs/schema/date-time-or-string.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mschema-javascript-prop-typesdefault / toplevel.js+1 −1
| @@ -15,7 +15,7 @@ import PropTypes from "prop-types"; | ||
| 15 | 15 | let _TopLevel; |
| 16 | 16 | const _BarEnum = PropTypes.oneOf(['quux']); |
| 17 | 17 | _TopLevel = PropTypes.shape({ |
| 18 | - "bar": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _BarEnum])]).isRequired, | |
| 18 | + "bar": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _BarEnum])]).isRequired, | |
| 19 | 19 | "foo": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 20 | 20 | }); |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-pythondefault / quicktype.py+1 −1
| @@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum) | ||
| 10 | 10 | |
| 11 | 11 | |
| 12 | 12 | def from_datetime(x: Any) -> datetime.datetime: |
| 13 | - return dateutil.parser.parse(x) | |
| 13 | + return dateutil.parser.isoparse(x) | |
| 14 | 14 | |
| 15 | 15 | |
| 16 | 16 | def from_union(fs, x): |
Mschema-typescript-effect-schemadefault / TopLevel.ts+1 −1
| @@ -7,6 +7,6 @@ export const BarEnum = S.Literal( | ||
| 7 | 7 | export type BarEnum = S.Schema.Type<typeof BarEnum>; |
| 8 | 8 | |
| 9 | 9 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 10 | - "bar": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), BarEnum), | |
| 10 | + "bar": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), BarEnum), | |
| 11 | 11 | "foo": S.String, |
| 12 | 12 | }) {} |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
6 generated files · +10 −25test/inputs/schema/date-time.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mschema-javascript-prop-typesdefault / toplevel.js+3 −3
| @@ -16,9 +16,9 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n | ||
| 16 | 16 | let _TopLevel; |
| 17 | 17 | const _ComplexUnionArrayEnum = PropTypes.oneOf(['foo', 'bar']); |
| 18 | 18 | _TopLevel = PropTypes.shape({ |
| 19 | - "complex-union-array": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _ComplexUnionArrayEnum, Integer]))]).isRequired, | |
| 20 | - "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 21 | - "date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 19 | + "complex-union-array": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _ComplexUnionArrayEnum, Integer]))]).isRequired, | |
| 20 | + "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 21 | + "date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 22 | 22 | "time": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 23 | 23 | "union-array": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string)]).isRequired, |
| 24 | 24 | }); |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-pythondefault / quicktype.py+2 −2
| @@ -21,7 +21,7 @@ def from_int(x: Any) -> int: | ||
| 21 | 21 | |
| 22 | 22 | |
| 23 | 23 | def from_datetime(x: Any) -> datetime.datetime: |
| 24 | - return dateutil.parser.parse(x) | |
| 24 | + return dateutil.parser.isoparse(x) | |
| 25 | 25 | |
| 26 | 26 | |
| 27 | 27 | def from_union(fs, x): |
| @@ -39,7 +39,7 @@ def from_date(x: Any) -> datetime.date: | ||
| 39 | 39 | |
| 40 | 40 | |
| 41 | 41 | def from_time(x: Any) -> datetime.time: |
| 42 | - assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$", x) | |
| 42 | + assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})?$", x) | |
| 43 | 43 | return dateutil.parser.parse(x).timetz() |
Mschema-typescript-effect-schemadefault / TopLevel.ts+5 −5
| @@ -8,9 +8,9 @@ export const ComplexUnionArrayEnum = S.Literal( | ||
| 8 | 8 | export type ComplexUnionArrayEnum = S.Schema.Type<typeof ComplexUnionArrayEnum>; |
| 9 | 9 | |
| 10 | 10 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 11 | - "complex-union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), ComplexUnionArrayEnum, S.Int)), | |
| 12 | - "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 13 | - "date-time": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 14 | - "time": S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 15 | - "union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)))), | |
| 11 | + "complex-union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), ComplexUnionArrayEnum, S.Int)), | |
| 12 | + "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 13 | + "date-time": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 14 | + "time": S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)), | |
| 15 | + "union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)))), | |
| 16 | 16 | }) {} |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/schema/default-value.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/description-with-double-quotes.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/schema/description.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -135,15 +135,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 135 | 135 | if (val === null) { |
| 136 | 136 | return null; |
| 137 | 137 | } |
| 138 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 139 | - return invalidValue(l("Date"), val, key, parent); | |
| 140 | 138 | const d = new Date(val); |
| 141 | 139 | if (isNaN(d.valueOf())) { |
| 142 | 140 | return invalidValue(l("Date"), val, key, parent); |
| 143 | 141 | } |
| 144 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 145 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 146 | - return invalidValue(l("Date"), val, key, parent); | |
| 147 | 142 | return d; |
| 148 | 143 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -133,15 +133,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 133 | 133 | if (val === null) { |
| 134 | 134 | return null; |
| 135 | 135 | } |
| 136 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 137 | - return invalidValue(l("Date"), val, key, parent); | |
| 138 | 136 | const d = new Date(val); |
| 139 | 137 | if (isNaN(d.valueOf())) { |
| 140 | 138 | return invalidValue(l("Date"), val, key, parent); |
| 141 | 139 | } |
| 142 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 143 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 144 | - return invalidValue(l("Date"), val, key, parent); | |
| 145 | 140 | return d; |
| 146 | 141 | } |
Test case
3 generated files · +0 −15test/inputs/schema/direct-union.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/schema/empty-object.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Test case
3 generated files · +0 −15test/inputs/schema/enum-large.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 125 | 125 | if (val === null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| 128 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 128 | const d = new Date(val); |
| 131 | 129 | if (isNaN(d.valueOf())) { |
| 132 | 130 | return invalidValue(l("Date"), val, key, parent); |
| 133 | 131 | } |
| 134 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 135 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 136 | - return invalidValue(l("Date"), val, key, parent); | |
| 137 | 132 | return d; |
| 138 | 133 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
3 generated files · +0 −15test/inputs/schema/enum-with-null.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/schema/enum-with-values.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/enum.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -118,15 +118,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 118 | 118 | if (val === null) { |
| 119 | 119 | return null; |
| 120 | 120 | } |
| 121 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 122 | - return invalidValue(l("Date"), val, key, parent); | |
| 123 | 121 | const d = new Date(val); |
| 124 | 122 | if (isNaN(d.valueOf())) { |
| 125 | 123 | return invalidValue(l("Date"), val, key, parent); |
| 126 | 124 | } |
| 127 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 128 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 129 | - return invalidValue(l("Date"), val, key, parent); | |
| 130 | 125 | return d; |
| 131 | 126 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 109 | 109 | if (val === null) { |
| 110 | 110 | return null; |
| 111 | 111 | } |
| 112 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 112 | const d = new Date(val); |
| 115 | 113 | if (isNaN(d.valueOf())) { |
| 116 | 114 | return invalidValue(l("Date"), val, key, parent); |
| 117 | 115 | } |
| 118 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 119 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 120 | - return invalidValue(l("Date"), val, key, parent); | |
| 121 | 116 | return d; |
| 122 | 117 | } |
Test case
3 generated files · +0 −15test/inputs/schema/fractional-bounds.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/go-schema-pattern-properties.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/haskell-enum-forbidden.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/id-no-address.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/id-root.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/ie-suffix-singularization.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/schema/implicit-all-of.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/implicit-class-array-union.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/schema/implicit-one-of.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/integer-before-number.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/integer-float-union.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/integer-string.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
3 generated files · +0 −15test/inputs/schema/integer-type.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 105 | 105 | if (val === null) { |
| 106 | 106 | return null; |
| 107 | 107 | } |
| 108 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 108 | const d = new Date(val); |
| 111 | 109 | if (isNaN(d.valueOf())) { |
| 112 | 110 | return invalidValue(l("Date"), val, key, parent); |
| 113 | 111 | } |
| 114 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 115 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 112 | return d; |
| 118 | 113 | } |
Test case
3 generated files · +0 −15test/inputs/schema/intersection-nested.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Test case
3 generated files · +0 −15test/inputs/schema/intersection.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
3 generated files · +0 −15test/inputs/schema/issue2680-top-level-array.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Test case
3 generated files · +0 −15test/inputs/schema/keyword-enum.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -432,15 +432,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 432 | 432 | if (val === null) { |
| 433 | 433 | return null; |
| 434 | 434 | } |
| 435 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 436 | - return invalidValue(l("Date"), val, key, parent); | |
| 437 | 435 | const d = new Date(val); |
| 438 | 436 | if (isNaN(d.valueOf())) { |
| 439 | 437 | return invalidValue(l("Date"), val, key, parent); |
| 440 | 438 | } |
| 441 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 442 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 443 | - return invalidValue(l("Date"), val, key, parent); | |
| 444 | 439 | return d; |
| 445 | 440 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/keyword-unions.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -2089,15 +2089,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 2089 | 2089 | if (val === null) { |
| 2090 | 2090 | return null; |
| 2091 | 2091 | } |
| 2092 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 2093 | - return invalidValue(l("Date"), val, key, parent); | |
| 2094 | 2092 | const d = new Date(val); |
| 2095 | 2093 | if (isNaN(d.valueOf())) { |
| 2096 | 2094 | return invalidValue(l("Date"), val, key, parent); |
| 2097 | 2095 | } |
| 2098 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 2099 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 2100 | - return invalidValue(l("Date"), val, key, parent); | |
| 2101 | 2096 | return d; |
| 2102 | 2097 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -1093,15 +1093,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 1093 | 1093 | if (val === null) { |
| 1094 | 1094 | return null; |
| 1095 | 1095 | } |
| 1096 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 1097 | - return invalidValue(l("Date"), val, key, parent); | |
| 1098 | 1096 | const d = new Date(val); |
| 1099 | 1097 | if (isNaN(d.valueOf())) { |
| 1100 | 1098 | return invalidValue(l("Date"), val, key, parent); |
| 1101 | 1099 | } |
| 1102 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 1103 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 1104 | - return invalidValue(l("Date"), val, key, parent); | |
| 1105 | 1100 | return d; |
| 1106 | 1101 | } |
Test case
3 generated files · +0 −15test/inputs/schema/light.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
3 generated files · +0 −15test/inputs/schema/list.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/schema/min-max-items.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 103 | 103 | if (val === null) { |
| 104 | 104 | return null; |
| 105 | 105 | } |
| 106 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 106 | const d = new Date(val); |
| 109 | 107 | if (isNaN(d.valueOf())) { |
| 110 | 108 | return invalidValue(l("Date"), val, key, parent); |
| 111 | 109 | } |
| 112 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 113 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 110 | return d; |
| 116 | 111 | } |
Test case
3 generated files · +0 −15test/inputs/schema/minmax-integer.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/schema/minmax.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/schema/minmaxlength.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Test case
3 generated files · +0 −15test/inputs/schema/multi-type-enum.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/schema/mutually-recursive.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/schema/nested-intersection-union.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/schema/non-standard-ref.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/nullable-optional-one-of.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/schema/object-type-required.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/optional-any.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/optional-const-ref.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 107 | 107 | if (val === null) { |
| 108 | 108 | return null; |
| 109 | 109 | } |
| 110 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 110 | const d = new Date(val); |
| 113 | 111 | if (isNaN(d.valueOf())) { |
| 114 | 112 | return invalidValue(l("Date"), val, key, parent); |
| 115 | 113 | } |
| 116 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 117 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 114 | return d; |
| 120 | 115 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 107 | 107 | if (val === null) { |
| 108 | 108 | return null; |
| 109 | 109 | } |
| 110 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 110 | const d = new Date(val); |
| 113 | 111 | if (isNaN(d.valueOf())) { |
| 114 | 112 | return invalidValue(l("Date"), val, key, parent); |
| 115 | 113 | } |
| 116 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 117 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 114 | return d; |
| 120 | 115 | } |
Test case
3 generated files · +0 −15test/inputs/schema/optional-constraints.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
6 generated files · +12 −27test/inputs/schema/optional-date-time.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mschema-javascript-prop-typesdefault / toplevel.js+4 −4
| @@ -14,11 +14,11 @@ import PropTypes from "prop-types"; | ||
| 14 | 14 | |
| 15 | 15 | let _TopLevel; |
| 16 | 16 | _TopLevel = PropTypes.shape({ |
| 17 | - "optional-date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]), | |
| 18 | - "optional-date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]), | |
| 17 | + "optional-date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]), | |
| 18 | + "optional-date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]), | |
| 19 | 19 | "optional-time": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]), |
| 20 | - "required-date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 21 | - "required-date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired, | |
| 20 | + "required-date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 21 | + "required-date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired, | |
| 22 | 22 | "required-time": PropTypes.oneOfType([PropTypes.string]).isRequired, |
| 23 | 23 | }); |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-pythondefault / quicktype.py+2 −2
| @@ -14,11 +14,11 @@ def from_date(x: Any) -> datetime.date: | ||
| 14 | 14 | |
| 15 | 15 | |
| 16 | 16 | def from_datetime(x: Any) -> datetime.datetime: |
| 17 | - return dateutil.parser.parse(x) | |
| 17 | + return dateutil.parser.isoparse(x) | |
| 18 | 18 | |
| 19 | 19 | |
| 20 | 20 | def from_time(x: Any) -> datetime.time: |
| 21 | - assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$", x) | |
| 21 | + assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})?$", x) | |
| 22 | 22 | return dateutil.parser.parse(x).timetz() |
Mschema-typescript-effect-schemadefault / TopLevel.ts+6 −6
| @@ -2,10 +2,10 @@ import * as S from "effect/Schema"; | ||
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | export class TopLevel extends S.Class<TopLevel>("TopLevel")({ |
| 5 | - "optional-date": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))), | |
| 6 | - "optional-date-time": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))), | |
| 7 | - "optional-time": S.optional(S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))), | |
| 8 | - "required-date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), | |
| 9 | - "required-date-time": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 10 | - "required-time": S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), | |
| 5 | + "optional-date": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value))), | |
| 6 | + "optional-date-time": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))), | |
| 7 | + "optional-time": S.optional(S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i))), | |
| 8 | + "required-date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), | |
| 9 | + "required-date-time": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), | |
| 10 | + "required-time": S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)), | |
| 11 | 11 | }) {} |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/schema/optional-enum.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/optional-property.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 96 | 96 | if (val === null) { |
| 97 | 97 | return null; |
| 98 | 98 | } |
| 99 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 100 | - return invalidValue(l("Date"), val, key, parent); | |
| 101 | 99 | const d = new Date(val); |
| 102 | 100 | if (isNaN(d.valueOf())) { |
| 103 | 101 | return invalidValue(l("Date"), val, key, parent); |
| 104 | 102 | } |
| 105 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 106 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 107 | - return invalidValue(l("Date"), val, key, parent); | |
| 108 | 103 | return d; |
| 109 | 104 | } |
Test case
3 generated files · +0 −15test/inputs/schema/pattern.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 104 | 104 | if (val === null) { |
| 105 | 105 | return null; |
| 106 | 106 | } |
| 107 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 107 | const d = new Date(val); |
| 110 | 108 | if (isNaN(d.valueOf())) { |
| 111 | 109 | return invalidValue(l("Date"), val, key, parent); |
| 112 | 110 | } |
| 113 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 114 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 115 | - return invalidValue(l("Date"), val, key, parent); | |
| 116 | 111 | return d; |
| 117 | 112 | } |
Test case
3 generated files · +0 −15test/inputs/schema/postman-collection.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 107 | 107 | if (val === null) { |
| 108 | 108 | return null; |
| 109 | 109 | } |
| 110 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 110 | const d = new Date(val); |
| 113 | 111 | if (isNaN(d.valueOf())) { |
| 114 | 112 | return invalidValue(l("Date"), val, key, parent); |
| 115 | 113 | } |
| 116 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 117 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 114 | return d; |
| 120 | 115 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 107 | 107 | if (val === null) { |
| 108 | 108 | return null; |
| 109 | 109 | } |
| 110 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 110 | const d = new Date(val); |
| 113 | 111 | if (isNaN(d.valueOf())) { |
| 114 | 112 | return invalidValue(l("Date"), val, key, parent); |
| 115 | 113 | } |
| 116 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 117 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 114 | return d; |
| 120 | 115 | } |
Test case
3 generated files · +0 −15test/inputs/schema/prefix-items.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/schema/recursive-union-flattening.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 110 | 110 | if (val === null) { |
| 111 | 111 | return null; |
| 112 | 112 | } |
| 113 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 114 | - return invalidValue(l("Date"), val, key, parent); | |
| 115 | 113 | const d = new Date(val); |
| 116 | 114 | if (isNaN(d.valueOf())) { |
| 117 | 115 | return invalidValue(l("Date"), val, key, parent); |
| 118 | 116 | } |
| 119 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 120 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 121 | - return invalidValue(l("Date"), val, key, parent); | |
| 122 | 117 | return d; |
| 123 | 118 | } |
Test case
3 generated files · +0 −15test/inputs/schema/ref-id-files.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/ref-remote.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/schema/renaming-bug.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -199,15 +199,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 199 | 199 | if (val === null) { |
| 200 | 200 | return null; |
| 201 | 201 | } |
| 202 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 203 | - return invalidValue(l("Date"), val, key, parent); | |
| 204 | 202 | const d = new Date(val); |
| 205 | 203 | if (isNaN(d.valueOf())) { |
| 206 | 204 | return invalidValue(l("Date"), val, key, parent); |
| 207 | 205 | } |
| 208 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 209 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 210 | - return invalidValue(l("Date"), val, key, parent); | |
| 211 | 206 | return d; |
| 212 | 207 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -184,15 +184,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 184 | 184 | if (val === null) { |
| 185 | 185 | return null; |
| 186 | 186 | } |
| 187 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 188 | - return invalidValue(l("Date"), val, key, parent); | |
| 189 | 187 | const d = new Date(val); |
| 190 | 188 | if (isNaN(d.valueOf())) { |
| 191 | 189 | return invalidValue(l("Date"), val, key, parent); |
| 192 | 190 | } |
| 193 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 194 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 195 | - return invalidValue(l("Date"), val, key, parent); | |
| 196 | 191 | return d; |
| 197 | 192 | } |
Test case
3 generated files · +0 −15test/inputs/schema/required-draft3.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/required-non-properties.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/schema/required.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/rust-cycle-breaker-union.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Test case
3 generated files · +0 −15test/inputs/schema/schema-constraints.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 98 | 98 | if (val === null) { |
| 99 | 99 | return null; |
| 100 | 100 | } |
| 101 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 102 | - return invalidValue(l("Date"), val, key, parent); | |
| 103 | 101 | const d = new Date(val); |
| 104 | 102 | if (isNaN(d.valueOf())) { |
| 105 | 103 | return invalidValue(l("Date"), val, key, parent); |
| 106 | 104 | } |
| 107 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 108 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 109 | - return invalidValue(l("Date"), val, key, parent); | |
| 110 | 105 | return d; |
| 111 | 106 | } |
Test case
3 generated files · +0 −15test/inputs/schema/simple-ref.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/schema/strict-optional.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/top-level-array.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 100 | 100 | if (val === null) { |
| 101 | 101 | return null; |
| 102 | 102 | } |
| 103 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 104 | - return invalidValue(l("Date"), val, key, parent); | |
| 105 | 103 | const d = new Date(val); |
| 106 | 104 | if (isNaN(d.valueOf())) { |
| 107 | 105 | return invalidValue(l("Date"), val, key, parent); |
| 108 | 106 | } |
| 109 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 110 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 107 | return d; |
| 113 | 108 | } |
Test case
3 generated files · +0 −15test/inputs/schema/top-level-enum.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Test case
3 generated files · +0 −15test/inputs/schema/top-level-primitive-array.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 94 | 94 | if (val === null) { |
| 95 | 95 | return null; |
| 96 | 96 | } |
| 97 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 98 | - return invalidValue(l("Date"), val, key, parent); | |
| 99 | 97 | const d = new Date(val); |
| 100 | 98 | if (isNaN(d.valueOf())) { |
| 101 | 99 | return invalidValue(l("Date"), val, key, parent); |
| 102 | 100 | } |
| 103 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 104 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 101 | return d; |
| 107 | 102 | } |
Test case
3 generated files · +0 −15test/inputs/schema/top-level-primitive.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 97 | 97 | if (val === null) { |
| 98 | 98 | return null; |
| 99 | 99 | } |
| 100 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 100 | const d = new Date(val); |
| 103 | 101 | if (isNaN(d.valueOf())) { |
| 104 | 102 | return invalidValue(l("Date"), val, key, parent); |
| 105 | 103 | } |
| 106 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 107 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 108 | - return invalidValue(l("Date"), val, key, parent); | |
| 109 | 104 | return d; |
| 110 | 105 | } |
Test case
3 generated files · +0 −15test/inputs/schema/tuple.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/unevaluated-properties.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -115,15 +115,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 115 | 115 | if (val === null) { |
| 116 | 116 | return null; |
| 117 | 117 | } |
| 118 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 119 | - return invalidValue(l("Date"), val, key, parent); | |
| 120 | 118 | const d = new Date(val); |
| 121 | 119 | if (isNaN(d.valueOf())) { |
| 122 | 120 | return invalidValue(l("Date"), val, key, parent); |
| 123 | 121 | } |
| 124 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 125 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 126 | - return invalidValue(l("Date"), val, key, parent); | |
| 127 | 122 | return d; |
| 128 | 123 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -112,15 +112,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 112 | 112 | if (val === null) { |
| 113 | 113 | return null; |
| 114 | 114 | } |
| 115 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 116 | - return invalidValue(l("Date"), val, key, parent); | |
| 117 | 115 | const d = new Date(val); |
| 118 | 116 | if (isNaN(d.valueOf())) { |
| 119 | 117 | return invalidValue(l("Date"), val, key, parent); |
| 120 | 118 | } |
| 121 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 122 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 123 | - return invalidValue(l("Date"), val, key, parent); | |
| 124 | 119 | return d; |
| 125 | 120 | } |
Test case
3 generated files · +0 −15test/inputs/schema/unicode-codepoint-length.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/union-int-double.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 99 | 99 | if (val === null) { |
| 100 | 100 | return null; |
| 101 | 101 | } |
| 102 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 103 | - return invalidValue(l("Date"), val, key, parent); | |
| 104 | 102 | const d = new Date(val); |
| 105 | 103 | if (isNaN(d.valueOf())) { |
| 106 | 104 | return invalidValue(l("Date"), val, key, parent); |
| 107 | 105 | } |
| 108 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 109 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 106 | return d; |
| 112 | 107 | } |
Test case
3 generated files · +0 −15test/inputs/schema/union-list.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 102 | 102 | if (val === null) { |
| 103 | 103 | return null; |
| 104 | 104 | } |
| 105 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 106 | - return invalidValue(l("Date"), val, key, parent); | |
| 107 | 105 | const d = new Date(val); |
| 108 | 106 | if (isNaN(d.valueOf())) { |
| 109 | 107 | return invalidValue(l("Date"), val, key, parent); |
| 110 | 108 | } |
| 111 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 112 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 113 | - return invalidValue(l("Date"), val, key, parent); | |
| 114 | 109 | return d; |
| 115 | 110 | } |
Test case
3 generated files · +0 −15test/inputs/schema/union.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 101 | 101 | if (val === null) { |
| 102 | 102 | return null; |
| 103 | 103 | } |
| 104 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 105 | - return invalidValue(l("Date"), val, key, parent); | |
| 106 | 104 | const d = new Date(val); |
| 107 | 105 | if (isNaN(d.valueOf())) { |
| 108 | 106 | return invalidValue(l("Date"), val, key, parent); |
| 109 | 107 | } |
| 110 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 111 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 112 | - return invalidValue(l("Date"), val, key, parent); | |
| 113 | 108 | return d; |
| 114 | 109 | } |
Test case
3 generated files · +0 −15test/inputs/schema/uuid.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 107 | 107 | if (val === null) { |
| 108 | 108 | return null; |
| 109 | 109 | } |
| 110 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 111 | - return invalidValue(l("Date"), val, key, parent); | |
| 112 | 110 | const d = new Date(val); |
| 113 | 111 | if (isNaN(d.valueOf())) { |
| 114 | 112 | return invalidValue(l("Date"), val, key, parent); |
| 115 | 113 | } |
| 116 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 117 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 118 | - return invalidValue(l("Date"), val, key, parent); | |
| 119 | 114 | return d; |
| 120 | 115 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 106 | 106 | if (val === null) { |
| 107 | 107 | return null; |
| 108 | 108 | } |
| 109 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 110 | - return invalidValue(l("Date"), val, key, parent); | |
| 111 | 109 | const d = new Date(val); |
| 112 | 110 | if (isNaN(d.valueOf())) { |
| 113 | 111 | return invalidValue(l("Date"), val, key, parent); |
| 114 | 112 | } |
| 115 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 116 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 117 | - return invalidValue(l("Date"), val, key, parent); | |
| 118 | 113 | return d; |
| 119 | 114 | } |
Test case
3 generated files · +0 −15test/inputs/schema/vega-lite.schema
Mschema-flowdefault / TopLevel.js+0 −5
| @@ -6188,15 +6188,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 6188 | 6188 | if (val === null) { |
| 6189 | 6189 | return null; |
| 6190 | 6190 | } |
| 6191 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 6192 | - return invalidValue(l("Date"), val, key, parent); | |
| 6193 | 6191 | const d = new Date(val); |
| 6194 | 6192 | if (isNaN(d.valueOf())) { |
| 6195 | 6193 | return invalidValue(l("Date"), val, key, parent); |
| 6196 | 6194 | } |
| 6197 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 6198 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 6199 | - return invalidValue(l("Date"), val, key, parent); | |
| 6200 | 6195 | return d; |
| 6201 | 6196 | } |
Mschema-javascriptdefault / TopLevel.js+0 −5
| @@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') { | ||
| 90 | 90 | if (val === null) { |
| 91 | 91 | return null; |
| 92 | 92 | } |
| 93 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 94 | - return invalidValue(l("Date"), val, key, parent); | |
| 95 | 93 | const d = new Date(val); |
| 96 | 94 | if (isNaN(d.valueOf())) { |
| 97 | 95 | return invalidValue(l("Date"), val, key, parent); |
| 98 | 96 | } |
| 99 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 100 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 101 | - return invalidValue(l("Date"), val, key, parent); | |
| 102 | 97 | return d; |
| 103 | 98 | } |
Mschema-typescriptdefault / TopLevel.ts+0 −5
| @@ -5945,15 +5945,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any | ||
| 5945 | 5945 | if (val === null) { |
| 5946 | 5946 | return null; |
| 5947 | 5947 | } |
| 5948 | - if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val))) | |
| 5949 | - return invalidValue(l("Date"), val, key, parent); | |
| 5950 | 5948 | const d = new Date(val); |
| 5951 | 5949 | if (isNaN(d.valueOf())) { |
| 5952 | 5950 | return invalidValue(l("Date"), val, key, parent); |
| 5953 | 5951 | } |
| 5954 | - const date = typeof val === "string" ? val.slice(0, 10) : null; | |
| 5955 | - if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date) | |
| 5956 | - return invalidValue(l("Date"), val, key, parent); | |
| 5957 | 5952 | return d; |
| 5958 | 5953 | } |
No generated files match these filters.