@0xtorch/csv 0.0.60 → 0.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,45 +30,144 @@ export const unixtimeMsSchema = z
30
30
  .regex(/^\d{13}$/)
31
31
  .transform(Number)
32
32
 
33
- export const iso8601TextSchema = z
33
+ export const iso8601RawSchema = z
34
34
  .string()
35
- .regex(/^[\d:\. ]*\d{2,4}(\-|\/)?\d{1,2}(\-|\/)?\d{1,2}T?[\d:\. ]*Z?$/)
36
- .transform((v) =>
37
- new Date(
38
- v.replace(/^(\d{2}(\-|\/)\d{1,2}(\-|\/)\d{1,2})/, '20$1'),
39
- ).getTime(),
40
- )
35
+ .regex(/^[\d:\. ]*\d{2,4}(\-|\/|\.)?\d{1,2}(\-|\/|\.)?\d{1,2}T?[\d:\. ]*Z?$/)
36
+
37
+ const replaceYear = (v: string) =>
38
+ v.replace(/^(\d{2}(\-|\/|\.)\d{1,2}(\-|\/|\.)\d{1,2})/, '20$1')
39
+
40
+ export const iso8601TextSchema = iso8601RawSchema.transform((v) =>
41
+ new Date(replaceYear(v)).getTime(),
42
+ )
43
+
44
+ export const iso8601P1TextSchema = iso8601RawSchema.transform((v) =>
45
+ new Date(new Date(`${replaceYear(v)}+01:00`).getTime()).getTime(),
46
+ )
47
+
48
+ export const iso8601P2TextSchema = iso8601RawSchema.transform((v) =>
49
+ new Date(new Date(`${replaceYear(v)}+02:00`).getTime()).getTime(),
50
+ )
51
+
52
+ export const iso8601P3TextSchema = iso8601RawSchema.transform((v) =>
53
+ new Date(new Date(`${replaceYear(v)}+03:00`).getTime()).getTime(),
54
+ )
55
+
56
+ export const iso8601P4TextSchema = iso8601RawSchema.transform((v) =>
57
+ new Date(new Date(`${replaceYear(v)}+04:00`).getTime()).getTime(),
58
+ )
59
+
60
+ export const iso8601P5TextSchema = iso8601RawSchema.transform((v) =>
61
+ new Date(new Date(`${replaceYear(v)}+05:00`).getTime()).getTime(),
62
+ )
63
+
64
+ export const iso8601P6TextSchema = iso8601RawSchema.transform((v) =>
65
+ new Date(new Date(`${replaceYear(v)}+06:00`).getTime()).getTime(),
66
+ )
67
+
68
+ export const iso8601P7TextSchema = iso8601RawSchema.transform((v) =>
69
+ new Date(new Date(`${replaceYear(v)}+07:00`).getTime()).getTime(),
70
+ )
71
+
72
+ export const iso8601P8TextSchema = iso8601RawSchema.transform((v) =>
73
+ new Date(new Date(`${replaceYear(v)}+08:00`).getTime()).getTime(),
74
+ )
75
+
76
+ export const iso8601P9TextSchema = iso8601RawSchema.transform((v) =>
77
+ new Date(new Date(`${replaceYear(v)}+09:00`).getTime()).getTime(),
78
+ )
79
+
80
+ export const iso8601P10TextSchema = iso8601RawSchema.transform((v) =>
81
+ new Date(new Date(`${replaceYear(v)}+10:00`).getTime()).getTime(),
82
+ )
83
+
84
+ export const iso8601P11TextSchema = iso8601RawSchema.transform((v) =>
85
+ new Date(new Date(`${replaceYear(v)}+11:00`).getTime()).getTime(),
86
+ )
87
+
88
+ export const iso8601P12TextSchema = iso8601RawSchema.transform((v) =>
89
+ new Date(new Date(`${replaceYear(v)}+12:00`).getTime()).getTime(),
90
+ )
91
+
92
+ export const iso8601M1TextSchema = iso8601RawSchema.transform((v) =>
93
+ new Date(new Date(`${replaceYear(v)}-01:00`).getTime()).getTime(),
94
+ )
95
+
96
+ export const iso8601M2TextSchema = iso8601RawSchema.transform((v) =>
97
+ new Date(new Date(`${replaceYear(v)}-02:00`).getTime()).getTime(),
98
+ )
99
+
100
+ export const iso8601M3TextSchema = iso8601RawSchema.transform((v) =>
101
+ new Date(new Date(`${replaceYear(v)}-03:00`).getTime()).getTime(),
102
+ )
103
+
104
+ export const iso8601M4TextSchema = iso8601RawSchema.transform((v) =>
105
+ new Date(new Date(`${replaceYear(v)}-04:00`).getTime()).getTime(),
106
+ )
107
+
108
+ export const iso8601M5TextSchema = iso8601RawSchema.transform((v) =>
109
+ new Date(new Date(`${replaceYear(v)}-05:00`).getTime()).getTime(),
110
+ )
111
+
112
+ export const iso8601M6TextSchema = iso8601RawSchema.transform((v) =>
113
+ new Date(new Date(`${replaceYear(v)}-06:00`).getTime()).getTime(),
114
+ )
115
+
116
+ export const iso8601M7TextSchema = iso8601RawSchema.transform((v) =>
117
+ new Date(new Date(`${replaceYear(v)}-07:00`).getTime()).getTime(),
118
+ )
119
+
120
+ export const iso8601M8TextSchema = iso8601RawSchema.transform((v) =>
121
+ new Date(new Date(`${replaceYear(v)}-08:00`).getTime()).getTime(),
122
+ )
123
+
124
+ export const iso8601M9TextSchema = iso8601RawSchema.transform((v) =>
125
+ new Date(new Date(`${replaceYear(v)}-09:00`).getTime()).getTime(),
126
+ )
127
+
128
+ export const iso8601M10TextSchema = iso8601RawSchema.transform((v) =>
129
+ new Date(new Date(`${replaceYear(v)}-10:00`).getTime()).getTime(),
130
+ )
131
+
132
+ export const iso8601M11TextSchema = iso8601RawSchema.transform((v) =>
133
+ new Date(new Date(`${replaceYear(v)}-11:00`).getTime()).getTime(),
134
+ )
135
+
136
+ export const iso8601M12TextSchema = iso8601RawSchema.transform((v) =>
137
+ new Date(new Date(`${replaceYear(v)}-12:00`).getTime()).getTime(),
138
+ )
41
139
 
42
140
  export const iso8601JpTextSchema = z
43
141
  .string()
44
- .regex(/^[\d:\. ]*\d{2,4}(\-|\/)\d{1,2}(\-|\/)\d{1,2}T?[\dJST:\. ]*$/)
142
+ .regex(/^[\d:\. ]*\d{2,4}(\-|\/|\.)\d{1,2}(\-|\/|\.)\d{1,2}T?[\dJST:\. ]*$/)
45
143
  .transform((v) =>
46
- new Date(
47
- `${v.replace(/^(\d{2}(\-|\/)\d{1,2}(\-|\/)\d{1,2})/, '20$1').replace(' JST', '')}+09:00`,
48
- ).getTime(),
144
+ new Date(`${replaceYear(v).replace(' JST', '')}+09:00`).getTime(),
49
145
  )
50
146
 
51
147
  // TODO timezone 追加型 date を導入する
52
148
  export const datetimeJpTextSchema = z
53
149
  .string()
54
150
  .regex(
55
- /^\d{1,4}\/\d{1,2}\/\d{1,4}( \d{1,2}:\d{1,2}(:\d{1,2})?(\.\d{1,3})?)?$/,
151
+ /^\d{1,4}\/\d{1,2}\/\d{1,4}( \d{1,2}:\d{1,2}(:\d{1,2})?(\.\d{1,3})?)?( JST)?$/,
56
152
  )
57
153
  .transform((v) => {
58
- const [datePart, timePart] = v.split(' ')
154
+ const [datePart, ...otherParts] = v.split(' ')
155
+ const otherPart = otherParts.join(' ')
59
156
 
60
157
  // Only date
61
- if (timePart === undefined) {
158
+ if (otherPart === '') {
62
159
  return new Date(`${datePart} 00:00+09:00`).getTime()
63
160
  }
64
161
 
65
162
  const [a, b, c] = datePart.split('/')
66
163
  // Rakuten wallet date format
67
164
  if (a.length === 2 && c.length === 2 && Number(a) > 12) {
68
- return new Date(`20${a}/${b}/${c} ${timePart}+09:00`).getTime()
165
+ return new Date(
166
+ `20${a}/${b}/${c} ${otherPart.replace(' JST', '')}+09:00`,
167
+ ).getTime()
69
168
  }
70
169
 
71
- return new Date(`${v}+09:00`).getTime()
170
+ return new Date(`${v.replace(' JST', '')}+09:00`).getTime()
72
171
  })
73
172
 
74
173
  export const formatterValueSchema = z.union([
@@ -80,6 +179,30 @@ export const formatterValueSchema = z.union([
80
179
  unixtimeSchema,
81
180
  unixtimeMsSchema,
82
181
  iso8601TextSchema,
182
+ iso8601P1TextSchema,
183
+ iso8601P2TextSchema,
184
+ iso8601P3TextSchema,
185
+ iso8601P4TextSchema,
186
+ iso8601P5TextSchema,
187
+ iso8601P6TextSchema,
188
+ iso8601P7TextSchema,
189
+ iso8601P8TextSchema,
190
+ iso8601P9TextSchema,
191
+ iso8601P10TextSchema,
192
+ iso8601P11TextSchema,
193
+ iso8601P12TextSchema,
194
+ iso8601M1TextSchema,
195
+ iso8601M2TextSchema,
196
+ iso8601M3TextSchema,
197
+ iso8601M4TextSchema,
198
+ iso8601M5TextSchema,
199
+ iso8601M6TextSchema,
200
+ iso8601M7TextSchema,
201
+ iso8601M8TextSchema,
202
+ iso8601M9TextSchema,
203
+ iso8601M10TextSchema,
204
+ iso8601M11TextSchema,
205
+ iso8601M12TextSchema,
83
206
  iso8601JpTextSchema,
84
207
  datetimeJpTextSchema,
85
208
  ])
package/tests/.DS_Store DELETED
Binary file