date-and-time 3.1.1 → 3.3.0

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.
package/README.md CHANGED
@@ -25,17 +25,16 @@ npm i date-and-time
25
25
 
26
26
  ## Recent Changes
27
27
 
28
+ - 3.3.0
29
+ - Refactored `format()`, `isValid()`, and `preparse()`, further improved performance.
30
+
31
+ - 3.2.0
32
+ - Refactored `compile()`, `format()`, and `preparse()`, slightly improved performance.
33
+
28
34
  - 3.1.1
29
35
  - Fixed an issue where `format()` could output incorrect UTC times in locales with daylight savings time.
30
36
  - Refactored `formatTZ()` of `timezone` plugin.
31
37
 
32
- - 3.1.0
33
- - Improved accuracy of `parseTZ()` in `timezone` plugin.
34
- - Organized some test modules.
35
-
36
- - 3.0.3
37
- - Fixed TypeScript types exports in `package.json`.
38
-
39
38
  ## Usage
40
39
 
41
40
  - ES Modules:
@@ -189,7 +188,7 @@ You can also use the following tokens by importing plugins. See [PLUGINS.md](./P
189
188
 
190
189
  #### Note 1. Comments
191
190
 
192
- String in parenthese `[...]` in the `formatString` will be ignored as comments:
191
+ Parts of the given format string enclosed in square brackets are considered comments and are output as is, regardless of whether they are tokens or not.
193
192
 
194
193
  ```javascript
195
194
  date.format(new Date(), 'DD-[MM]-YYYY'); // => '02-MM-2015'
@@ -198,7 +197,7 @@ date.format(new Date(), '[DD-[MM]-YYYY]'); // => 'DD-[MM]-YYYY'
198
197
 
199
198
  #### Note 2. Output as UTC
200
199
 
201
- This function usually outputs a local date and time string. Set to true the `utc` option (the 3rd parameter) if you would like to get a UTC date and time string.
200
+ This function outputs the date and time in the local time zone of the execution environment by default. If you want to output in UTC, set the UTC option (the third argument) to true. To output in any other time zone, you will need [a plugin](./PLUGINS.md).
202
201
 
203
202
  ```javascript
204
203
  date.format(new Date(), 'hh:mm A [GMT]Z'); // => '11:14 PM GMT-0800'
@@ -270,7 +269,7 @@ You can also use the following tokens by importing plugins. See [PLUGINS.md](./P
270
269
 
271
270
  #### Note 1. Invalid Date
272
271
 
273
- If the function fails to parse, it will return `Invalid Date`. Notice that the `Invalid Date` is a Date object, not `NaN` or `null`. You can tell whether the Date object is invalid as follows:
272
+ If this function fails to parse, it will return `Invalid Date`. Notice that the `Invalid Date` is a Date object, not `NaN` or `null`. You can tell whether the Date object is invalid as follows:
274
273
 
275
274
  ```javascript
276
275
  const today = date.parse('Jam 1 2017', 'MMM D YYYY');
@@ -282,7 +281,7 @@ if (isNaN(today.getTime())) {
282
281
 
283
282
  #### Note 2. Input as UTC
284
283
 
285
- This function assumes the `dateString` is a local datea and time unless it contains a time zone offset value. Set to true the `utc` option (the 3rd parameter) if it is a UTC date and time.
284
+ This function uses the local time zone offset value of the execution environment by default if the given string does not contain a time zone offset value. To make it use UTC instead, set the UTC option (the third argument) to true. If you want it to use any other time zone, you will need [a plugin](./PLUGINS.md).
286
285
 
287
286
  ```javascript
288
287
  date.parse('11:14:05 PM', 'hh:mm:ss A'); // => Jan 1 1970 23:14:05 GMT-0800
@@ -319,9 +318,9 @@ date.parse('11:14:05', 'hh:mm:ss'); // => Jan 1 1970 11:14:05 GMT-0800
319
318
  date.parse('11:14:05 PM', 'hh:mm:ss A'); // => Jan 1 1970 23:14:05 GMT-0800
320
319
  ```
321
320
 
322
- #### Note 6. Token disablement
321
+ #### Note 6. Token invalidation
323
322
 
324
- Use square brackets `[]` if a datea and time string includes some token characters. Tokens inside square brackets in the `formatString` will be interpreted as normal characters:
323
+ Any part of the given format string that you do not want to be recognized as a token should be enclosed in square brackets. They are considered comments and will not be parsed.
325
324
 
326
325
  ```javascript
327
326
  date.parse('12 hours 34 minutes', 'HH hours mm minutes'); // => Invalid Date
@@ -330,7 +329,7 @@ date.parse('12 hours 34 minutes', 'HH [hours] mm [minutes]'); // => Jan 1 1970
330
329
 
331
330
  #### Note 7. Wildcard
332
331
 
333
- A white space works as a wildcard token. This token is not interpreted into anything. This means it can be ignored a specific variable string. For example, when you would like to ignore a time part from a date string, you can write as follows:
332
+ Whitespace acts as a wildcard token. This token will not parse the corresponding parts of the date and time strings. This behavior is similar to enclosing part of a format string in square brackets (Token invalidation), but with the flexibility that the contents do not have to match, as long as the number of characters in the corresponding parts match.
334
333
 
335
334
  ```javascript
336
335
  // This will be an error.
@@ -341,7 +340,7 @@ date.parse('2015/01/02 11:14:05', 'YYYY/MM/DD '); // => Jan 2 2015 00:
341
340
 
342
341
  #### Note 8. Ellipsis
343
342
 
344
- The parser supports `...` (ellipsis) token. The above example can be also written like this:
343
+ `...` token ignores subsequent corresponding date and time strings. Use this token only at the end of a format string. The above example can be also written like this:
345
344
 
346
345
  ```javascript
347
346
  date.parse('2015/01/02 11:14:05', 'YYYY/MM/DD...'); // => Jan 2 2015 00:00:00 GMT-0800
package/date-and-time.js CHANGED
@@ -151,12 +151,7 @@
151
151
  * @returns {Array.<string>} A compiled object
152
152
  */
153
153
  proto.compile = function (formatString) {
154
- var re = /\[([^[\]]|\[[^[\]]*])*]|([A-Za-z])\2+|\.{3}|./g, keys, pattern = [formatString];
155
-
156
- while ((keys = re.exec(formatString))) {
157
- pattern[pattern.length] = keys[0];
158
- }
159
- return pattern;
154
+ return [formatString].concat(formatString.match(/\[(?:[^[\]]|\[[^[\]]*])*]|([A-Za-z])\1*|\.{3}|./g) || []);
160
155
  };
161
156
 
162
157
  /**
@@ -168,6 +163,7 @@
168
163
  */
169
164
  proto.format = function (dateObj, arg, utc) {
170
165
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
166
+ formatter = ctx._formatter,
171
167
  d = (function () {
172
168
  if (utc) {
173
169
  var u = new Date(dateObj.getTime());
@@ -185,11 +181,13 @@
185
181
  }
186
182
  return dateObj;
187
183
  }()),
188
- formatter = ctx._formatter, str = '';
184
+ comment = /^\[(.*)\]$/, str = '';
189
185
 
190
186
  for (var i = 1, len = pattern.length, token; i < len; i++) {
191
187
  token = pattern[i];
192
- str += formatter[token] ? formatter.post(formatter[token](d, pattern[0])) : token.replace(/\[(.*)]/, '$1');
188
+ str += formatter[token]
189
+ ? formatter.post(formatter[token](d, pattern[0]))
190
+ : comment.test(token) ? token.replace(comment, '$1') : token;
193
191
  }
194
192
  return str;
195
193
  };
@@ -203,33 +201,35 @@
203
201
  */
204
202
  proto.preparse = function (dateString, arg) {
205
203
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
204
+ parser = ctx._parser,
206
205
  dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 0, _length: 0, _match: 0 },
207
- comment = /\[(.*)]/, parser = ctx._parser, offset = 0;
206
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
208
207
 
209
208
  dateString = parser.pre(dateString);
210
- for (var i = 1, len = pattern.length, token, result; i < len; i++) {
209
+ for (var i = 1, len = pattern.length, token, str, result; i < len; i++) {
211
210
  token = pattern[i];
211
+ str = dateString.substring(dt._index);
212
+
212
213
  if (parser[token]) {
213
- result = parser[token](dateString.slice(offset), pattern[0]);
214
+ result = parser[token](str, pattern[0]);
214
215
  if (!result.length) {
215
- break;
216
+ break;
216
217
  }
217
- offset += result.length;
218
218
  dt[result.token || token.charAt(0)] = result.value;
219
+ dt._index += result.length;
219
220
  dt._match++;
220
- } else if (token === dateString.charAt(offset) || token === ' ') {
221
- offset++;
222
- } else if (comment.test(token) && !dateString.slice(offset).indexOf(comment.exec(token)[1])) {
223
- offset += token.length - 2;
224
- } else if (token === '...') {
225
- offset = dateString.length;
221
+ } else if (token === str.charAt(0) || token === wildcard) {
222
+ dt._index++;
223
+ } else if (comment.test(token) && !str.indexOf(token.replace(comment, '$1'))) {
224
+ dt._index += token.length - 2;
225
+ } else if (token === ellipsis) {
226
+ dt._index = dateString.length;
226
227
  break;
227
228
  } else {
228
229
  break;
229
230
  }
230
231
  }
231
- dt.H = dt.H || parser.h12(dt.h, dt.A); // eslint-disable-line logical-assignment-operators
232
- dt._index = offset;
232
+ dt.H = dt.H || parser.h12(dt.h, dt.A);
233
233
  dt._length = dateString.length;
234
234
  return dt;
235
235
  };
@@ -262,14 +262,13 @@
262
262
  * @returns {boolean} Whether the date and time string is a valid date and time
263
263
  */
264
264
  proto.isValid = function (arg1, arg2) {
265
- var ctx = this || date, dt = typeof arg1 === 'string' ? ctx.preparse(arg1, arg2) : arg1,
266
- last = [31, 28 + ctx.isLeapYear(dt.Y) | 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][dt.M - 1];
265
+ var ctx = this || date, dt = typeof arg1 === 'string' ? ctx.preparse(arg1, arg2) : arg1;
267
266
 
268
267
  return !(
269
- dt._index < 1 || dt._length < 1 || dt._index - dt._length || dt._match < 1 ||
270
- dt.Y < 1 || dt.Y > 9999 || dt.M < 1 || dt.M > 12 || dt.D < 1 || dt.D > last ||
271
- dt.H < 0 || dt.H > 23 || dt.m < 0 || dt.m > 59 || dt.s < 0 || dt.s > 59 || dt.S < 0 || dt.S > 999 ||
272
- dt.Z < -840 || dt.Z > 720
268
+ dt._index < 1 || dt._length < 1 || dt._index - dt._length || dt._match < 1
269
+ || dt.Y < 1 || dt.Y > 9999 || dt.M < 1 || dt.M > 12 || dt.D < 1 || dt.D > new Date(dt.Y, dt.M, 0).getDate()
270
+ || dt.H < 0 || dt.H > 23 || dt.m < 0 || dt.m > 59 || dt.s < 0 || dt.s > 59 || dt.S < 0 || dt.S > 999
271
+ || dt.Z < -840 || dt.Z > 720
273
272
  );
274
273
  };
275
274
 
@@ -1,4 +1,4 @@
1
1
  !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).date=t()}(this,(function(){"use strict";
2
2
  /**
3
3
  * @preserve date-and-time (c) KNOWLEDGECODE | MIT
4
- */var e,t,n={},r={},i="en",u={MMMM:["January","February","March","April","May","June","July","August","September","October","November","December"],MMM:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dddd:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ddd:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dd:["Su","Mo","Tu","We","Th","Fr","Sa"],A:["AM","PM"]},s={YYYY:function(e){return("000"+e.getFullYear()).slice(-4)},YY:function(e){return("0"+e.getFullYear()).slice(-2)},Y:function(e){return""+e.getFullYear()},MMMM:function(e){return this.res.MMMM[e.getMonth()]},MMM:function(e){return this.res.MMM[e.getMonth()]},MM:function(e){return("0"+(e.getMonth()+1)).slice(-2)},M:function(e){return""+(e.getMonth()+1)},DD:function(e){return("0"+e.getDate()).slice(-2)},D:function(e){return""+e.getDate()},HH:function(e){return("0"+e.getHours()).slice(-2)},H:function(e){return""+e.getHours()},A:function(e){return this.res.A[e.getHours()>11|0]},hh:function(e){return("0"+(e.getHours()%12||12)).slice(-2)},h:function(e){return""+(e.getHours()%12||12)},mm:function(e){return("0"+e.getMinutes()).slice(-2)},m:function(e){return""+e.getMinutes()},ss:function(e){return("0"+e.getSeconds()).slice(-2)},s:function(e){return""+e.getSeconds()},SSS:function(e){return("00"+e.getMilliseconds()).slice(-3)},SS:function(e){return("0"+(e.getMilliseconds()/10|0)).slice(-2)},S:function(e){return""+(e.getMilliseconds()/100|0)},dddd:function(e){return this.res.dddd[e.getDay()]},ddd:function(e){return this.res.ddd[e.getDay()]},dd:function(e){return this.res.dd[e.getDay()]},Z:function(e){var t=e.getTimezoneOffset()/.6|0;return(t>0?"-":"+")+("000"+Math.abs(t-(t%100*.4|0))).slice(-4)},ZZ:function(e){var t=e.getTimezoneOffset(),n=Math.abs(t);return(t>0?"-":"+")+("0"+(n/60|0)).slice(-2)+":"+("0"+n%60).slice(-2)},post:function(e){return e},res:u},o={YYYY:function(e){return this.exec(/^\d{4}/,e)},Y:function(e){return this.exec(/^\d{1,4}/,e)},MMMM:function(e){var t=this.find(this.res.MMMM,e);return t.value++,t},MMM:function(e){var t=this.find(this.res.MMM,e);return t.value++,t},MM:function(e){return this.exec(/^\d\d/,e)},M:function(e){return this.exec(/^\d\d?/,e)},DD:function(e){return this.exec(/^\d\d/,e)},D:function(e){return this.exec(/^\d\d?/,e)},HH:function(e){return this.exec(/^\d\d/,e)},H:function(e){return this.exec(/^\d\d?/,e)},A:function(e){return this.find(this.res.A,e)},hh:function(e){return this.exec(/^\d\d/,e)},h:function(e){return this.exec(/^\d\d?/,e)},mm:function(e){return this.exec(/^\d\d/,e)},m:function(e){return this.exec(/^\d\d?/,e)},ss:function(e){return this.exec(/^\d\d/,e)},s:function(e){return this.exec(/^\d\d?/,e)},SSS:function(e){return this.exec(/^\d{1,3}/,e)},SS:function(e){var t=this.exec(/^\d\d?/,e);return t.value*=10,t},S:function(e){var t=this.exec(/^\d/,e);return t.value*=100,t},Z:function(e){var t=this.exec(/^[+-]\d{2}[0-5]\d/,e);return t.value=-60*(t.value/100|0)-t.value%100,t},ZZ:function(e){var t=/^([+-])(\d{2}):([0-5]\d)/.exec(e)||["","","",""];return{value:0-(60*(t[1]+t[2]|0)+(t[1]+t[3]|0)),length:t[0].length}},h12:function(e,t){return(12===e?0:e)+12*t},exec:function(e,t){var n=(e.exec(t)||[""])[0];return{value:0|n,length:n.length}},find:function(e,t){for(var n,r=-1,i=0,u=0,s=e.length;u<s;u++)n=e[u],!t.indexOf(n)&&n.length>i&&(r=u,i=n.length);return{value:r,length:i}},pre:function(e){return e},res:u},c=function(e,t,n,r){var i,u={};for(i in e)u[i]=e[i];for(i in t||{})!!n^!!u[i]||(u[i]=t[i]);return r&&(u.res=r),u},a={_formatter:s,_parser:o};return a.compile=function(e){for(var t,n=/\[([^[\]]|\[[^[\]]*])*]|([A-Za-z])\2+|\.{3}|./g,r=[e];t=n.exec(e);)r[r.length]=t[0];return r},a.format=function(e,n,r){for(var i,u=this||t,s="string"==typeof n?u.compile(n):n,o=function(){if(r){var t=new Date(e.getTime());return t.getFullYear=t.getUTCFullYear,t.getMonth=t.getUTCMonth,t.getDate=t.getUTCDate,t.getHours=t.getUTCHours,t.getMinutes=t.getUTCMinutes,t.getSeconds=t.getUTCSeconds,t.getMilliseconds=t.getUTCMilliseconds,t.getDay=t.getUTCDay,t.getTimezoneOffset=function(){return 0},t}return e}(),c=u._formatter,a="",d=1,f=s.length;d<f;d++)a+=c[i=s[d]]?c.post(c[i](o,s[0])):i.replace(/\[(.*)]/,"$1");return a},a.preparse=function(e,n){var r=this||t,i="string"==typeof n?r.compile(n):n,u={Y:1970,M:1,D:1,H:0,A:0,h:0,m:0,s:0,S:0,Z:0,_index:0,_length:0,_match:0},s=/\[(.*)]/,o=r._parser,c=0;e=o.pre(e);for(var a,d,f=1,l=i.length;f<l;f++)if(o[a=i[f]]){if(!(d=o[a](e.slice(c),i[0])).length)break;c+=d.length,u[d.token||a.charAt(0)]=d.value,u._match++}else if(a===e.charAt(c)||" "===a)c++;else{if(!s.test(a)||e.slice(c).indexOf(s.exec(a)[1])){if("..."===a){c=e.length;break}break}c+=a.length-2}return u.H=u.H||o.h12(u.h,u.A),u._index=c,u._length=e.length,u},a.parse=function(e,n,r){var i=this||t,u="string"==typeof n?i.compile(n):n,s=i.preparse(e,u);return i.isValid(s)?(s.M-=s.Y<100?22801:1,r||~i._parser.find(u,"ZZ").value?new Date(Date.UTC(s.Y,s.M,s.D,s.H,s.m+s.Z,s.s,s.S)):new Date(s.Y,s.M,s.D,s.H,s.m,s.s,s.S)):new Date(NaN)},a.isValid=function(e,n){var r=this||t,i="string"==typeof e?r.preparse(e,n):e,u=[31,28+r.isLeapYear(i.Y)|0,31,30,31,30,31,31,30,31,30,31][i.M-1];return!(i._index<1||i._length<1||i._index-i._length||i._match<1||i.Y<1||i.Y>9999||i.M<1||i.M>12||i.D<1||i.D>u||i.H<0||i.H>23||i.m<0||i.m>59||i.s<0||i.s>59||i.S<0||i.S>999||i.Z<-840||i.Z>720)},a.transform=function(e,n,r,i){const u=this||t;return u.format(u.parse(e,n),r,i)},a.addYears=function(e,n,r){return(this||t).addMonths(e,12*n,r)},a.addMonths=function(e,n,r){var i=new Date(e.getTime());if(r){if(i.setUTCMonth(i.getUTCMonth()+n),i.getUTCDate()<e.getUTCDate())return(this||t).addDays(i,-i.getUTCDate(),r)}else if(i.setMonth(i.getMonth()+n),i.getDate()<e.getDate())return(this||t).addDays(i,-i.getDate(),r);return i},a.addDays=function(e,n,r){return(this||t).addHours(e,24*n,r)},a.addHours=function(e,n,r){return(this||t).addMinutes(e,60*n,r)},a.addMinutes=function(e,n,r){return(this||t).addSeconds(e,60*n,r)},a.addSeconds=function(e,n,r){return(this||t).addMilliseconds(e,1e3*n,r)},a.addMilliseconds=function(e,t,n){var r=new Date(e.getTime());return n?r.setUTCMilliseconds(r.getUTCMilliseconds()+t):r.setMilliseconds(r.getMilliseconds()+t),r},a.subtract=function(e,t){var n=e.getTime()-t.getTime();return{toMilliseconds:function(){return n},toSeconds:function(){return n/1e3},toMinutes:function(){return n/6e4},toHours:function(){return n/36e5},toDays:function(){return n/864e5}}},a.isLeapYear=function(e){return!((e%4||!(e%100))&&e%400)},a.isSameDay=function(e,t){return e.toDateString()===t.toDateString()},a.locale=function(e,t){n[e]||(n[e]=t)},a.plugin=function(e,t){r[e]||(r[e]=t)},e=c(a),(t=c(a)).locale=function(d){var f="function"==typeof d?d:t.locale[d];if(!f)return i;i=f(a);var l=n[i]||{},h=c(u,l.res,!0),g=c(s,l.formatter,!0,h),M=c(o,l.parser,!0,h);for(var p in t._formatter=e._formatter=g,t._parser=e._parser=M,r)t.extend(r[p]);return i},t.extend=function(e){var n=c(t._parser.res,e.res),r=e.extender||{};for(var i in t._formatter=c(t._formatter,e.formatter,!1,n),t._parser=c(t._parser,e.parser,!1,n),r)t[i]||(t[i]=r[i])},t.plugin=function(n){var i="function"==typeof n?n:t.plugin[n];i&&t.extend(r[i(a,e)]||{})},t}));
4
+ */var e,t,n={},r={},i="en",u={MMMM:["January","February","March","April","May","June","July","August","September","October","November","December"],MMM:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dddd:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ddd:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dd:["Su","Mo","Tu","We","Th","Fr","Sa"],A:["AM","PM"]},s={YYYY:function(e){return("000"+e.getFullYear()).slice(-4)},YY:function(e){return("0"+e.getFullYear()).slice(-2)},Y:function(e){return""+e.getFullYear()},MMMM:function(e){return this.res.MMMM[e.getMonth()]},MMM:function(e){return this.res.MMM[e.getMonth()]},MM:function(e){return("0"+(e.getMonth()+1)).slice(-2)},M:function(e){return""+(e.getMonth()+1)},DD:function(e){return("0"+e.getDate()).slice(-2)},D:function(e){return""+e.getDate()},HH:function(e){return("0"+e.getHours()).slice(-2)},H:function(e){return""+e.getHours()},A:function(e){return this.res.A[e.getHours()>11|0]},hh:function(e){return("0"+(e.getHours()%12||12)).slice(-2)},h:function(e){return""+(e.getHours()%12||12)},mm:function(e){return("0"+e.getMinutes()).slice(-2)},m:function(e){return""+e.getMinutes()},ss:function(e){return("0"+e.getSeconds()).slice(-2)},s:function(e){return""+e.getSeconds()},SSS:function(e){return("00"+e.getMilliseconds()).slice(-3)},SS:function(e){return("0"+(e.getMilliseconds()/10|0)).slice(-2)},S:function(e){return""+(e.getMilliseconds()/100|0)},dddd:function(e){return this.res.dddd[e.getDay()]},ddd:function(e){return this.res.ddd[e.getDay()]},dd:function(e){return this.res.dd[e.getDay()]},Z:function(e){var t=e.getTimezoneOffset()/.6|0;return(t>0?"-":"+")+("000"+Math.abs(t-(t%100*.4|0))).slice(-4)},ZZ:function(e){var t=e.getTimezoneOffset(),n=Math.abs(t);return(t>0?"-":"+")+("0"+(n/60|0)).slice(-2)+":"+("0"+n%60).slice(-2)},post:function(e){return e},res:u},o={YYYY:function(e){return this.exec(/^\d{4}/,e)},Y:function(e){return this.exec(/^\d{1,4}/,e)},MMMM:function(e){var t=this.find(this.res.MMMM,e);return t.value++,t},MMM:function(e){var t=this.find(this.res.MMM,e);return t.value++,t},MM:function(e){return this.exec(/^\d\d/,e)},M:function(e){return this.exec(/^\d\d?/,e)},DD:function(e){return this.exec(/^\d\d/,e)},D:function(e){return this.exec(/^\d\d?/,e)},HH:function(e){return this.exec(/^\d\d/,e)},H:function(e){return this.exec(/^\d\d?/,e)},A:function(e){return this.find(this.res.A,e)},hh:function(e){return this.exec(/^\d\d/,e)},h:function(e){return this.exec(/^\d\d?/,e)},mm:function(e){return this.exec(/^\d\d/,e)},m:function(e){return this.exec(/^\d\d?/,e)},ss:function(e){return this.exec(/^\d\d/,e)},s:function(e){return this.exec(/^\d\d?/,e)},SSS:function(e){return this.exec(/^\d{1,3}/,e)},SS:function(e){var t=this.exec(/^\d\d?/,e);return t.value*=10,t},S:function(e){var t=this.exec(/^\d/,e);return t.value*=100,t},Z:function(e){var t=this.exec(/^[+-]\d{2}[0-5]\d/,e);return t.value=-60*(t.value/100|0)-t.value%100,t},ZZ:function(e){var t=/^([+-])(\d{2}):([0-5]\d)/.exec(e)||["","","",""];return{value:0-(60*(t[1]+t[2]|0)+(t[1]+t[3]|0)),length:t[0].length}},h12:function(e,t){return(12===e?0:e)+12*t},exec:function(e,t){var n=(e.exec(t)||[""])[0];return{value:0|n,length:n.length}},find:function(e,t){for(var n,r=-1,i=0,u=0,s=e.length;u<s;u++)n=e[u],!t.indexOf(n)&&n.length>i&&(r=u,i=n.length);return{value:r,length:i}},pre:function(e){return e},res:u},c=function(e,t,n,r){var i,u={};for(i in e)u[i]=e[i];for(i in t||{})!!n^!!u[i]||(u[i]=t[i]);return r&&(u.res=r),u},a={_formatter:s,_parser:o};return a.compile=function(e){return[e].concat(e.match(/\[(?:[^[\]]|\[[^[\]]*])*]|([A-Za-z])\1*|\.{3}|./g)||[])},a.format=function(e,n,r){for(var i,u=this||t,s="string"==typeof n?u.compile(n):n,o=u._formatter,c=function(){if(r){var t=new Date(e.getTime());return t.getFullYear=t.getUTCFullYear,t.getMonth=t.getUTCMonth,t.getDate=t.getUTCDate,t.getHours=t.getUTCHours,t.getMinutes=t.getUTCMinutes,t.getSeconds=t.getUTCSeconds,t.getMilliseconds=t.getUTCMilliseconds,t.getDay=t.getUTCDay,t.getTimezoneOffset=function(){return 0},t}return e}(),a=/^\[(.*)\]$/,d="",f=1,l=s.length;f<l;f++)d+=o[i=s[f]]?o.post(o[i](c,s[0])):a.test(i)?i.replace(a,"$1"):i;return d},a.preparse=function(e,n){var r=this||t,i="string"==typeof n?r.compile(n):n,u=r._parser,s={Y:1970,M:1,D:1,H:0,A:0,h:0,m:0,s:0,S:0,Z:0,_index:0,_length:0,_match:0},o=/^\[(.*)\]$/;e=u.pre(e);for(var c,a,d,f=1,l=i.length;f<l;f++)if(c=i[f],a=e.substring(s._index),u[c]){if(!(d=u[c](a,i[0])).length)break;s[d.token||c.charAt(0)]=d.value,s._index+=d.length,s._match++}else if(c===a.charAt(0)||" "===c)s._index++;else{if(!o.test(c)||a.indexOf(c.replace(o,"$1"))){if("..."===c){s._index=e.length;break}break}s._index+=c.length-2}return s.H=s.H||u.h12(s.h,s.A),s._length=e.length,s},a.parse=function(e,n,r){var i=this||t,u="string"==typeof n?i.compile(n):n,s=i.preparse(e,u);return i.isValid(s)?(s.M-=s.Y<100?22801:1,r||~i._parser.find(u,"ZZ").value?new Date(Date.UTC(s.Y,s.M,s.D,s.H,s.m+s.Z,s.s,s.S)):new Date(s.Y,s.M,s.D,s.H,s.m,s.s,s.S)):new Date(NaN)},a.isValid=function(e,n){var r="string"==typeof e?(this||t).preparse(e,n):e;return!(r._index<1||r._length<1||r._index-r._length||r._match<1||r.Y<1||r.Y>9999||r.M<1||r.M>12||r.D<1||r.D>new Date(r.Y,r.M,0).getDate()||r.H<0||r.H>23||r.m<0||r.m>59||r.s<0||r.s>59||r.S<0||r.S>999||r.Z<-840||r.Z>720)},a.transform=function(e,n,r,i){const u=this||t;return u.format(u.parse(e,n),r,i)},a.addYears=function(e,n,r){return(this||t).addMonths(e,12*n,r)},a.addMonths=function(e,n,r){var i=new Date(e.getTime());if(r){if(i.setUTCMonth(i.getUTCMonth()+n),i.getUTCDate()<e.getUTCDate())return(this||t).addDays(i,-i.getUTCDate(),r)}else if(i.setMonth(i.getMonth()+n),i.getDate()<e.getDate())return(this||t).addDays(i,-i.getDate(),r);return i},a.addDays=function(e,n,r){return(this||t).addHours(e,24*n,r)},a.addHours=function(e,n,r){return(this||t).addMinutes(e,60*n,r)},a.addMinutes=function(e,n,r){return(this||t).addSeconds(e,60*n,r)},a.addSeconds=function(e,n,r){return(this||t).addMilliseconds(e,1e3*n,r)},a.addMilliseconds=function(e,t,n){var r=new Date(e.getTime());return n?r.setUTCMilliseconds(r.getUTCMilliseconds()+t):r.setMilliseconds(r.getMilliseconds()+t),r},a.subtract=function(e,t){var n=e.getTime()-t.getTime();return{toMilliseconds:function(){return n},toSeconds:function(){return n/1e3},toMinutes:function(){return n/6e4},toHours:function(){return n/36e5},toDays:function(){return n/864e5}}},a.isLeapYear=function(e){return!((e%4||!(e%100))&&e%400)},a.isSameDay=function(e,t){return e.toDateString()===t.toDateString()},a.locale=function(e,t){n[e]||(n[e]=t)},a.plugin=function(e,t){r[e]||(r[e]=t)},e=c(a),(t=c(a)).locale=function(d){var f="function"==typeof d?d:t.locale[d];if(!f)return i;i=f(a);var l=n[i]||{},h=c(u,l.res,!0),g=c(s,l.formatter,!0,h),M=c(o,l.parser,!0,h);for(var p in t._formatter=e._formatter=g,t._parser=e._parser=M,r)t.extend(r[p]);return i},t.extend=function(e){var n=c(t._parser.res,e.res),r=e.extender||{};for(var i in t._formatter=c(t._formatter,e.formatter,!1,n),t._parser=c(t._parser,e.parser,!1,n),r)t[i]||(t[i]=r[i])},t.plugin=function(n){var i="function"==typeof n?n:t.plugin[n];i&&t.extend(r[i(a,e)]||{})},t}));
@@ -145,12 +145,7 @@ var locales = {},
145
145
  * @returns {Array.<string>} A compiled object
146
146
  */
147
147
  proto.compile = function (formatString) {
148
- var re = /\[([^[\]]|\[[^[\]]*])*]|([A-Za-z])\2+|\.{3}|./g, keys, pattern = [formatString];
149
-
150
- while ((keys = re.exec(formatString))) {
151
- pattern[pattern.length] = keys[0];
152
- }
153
- return pattern;
148
+ return [formatString].concat(formatString.match(/\[(?:[^[\]]|\[[^[\]]*])*]|([A-Za-z])\1*|\.{3}|./g) || []);
154
149
  };
155
150
 
156
151
  /**
@@ -162,6 +157,7 @@ proto.compile = function (formatString) {
162
157
  */
163
158
  proto.format = function (dateObj, arg, utc) {
164
159
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
160
+ formatter = ctx._formatter,
165
161
  d = (function () {
166
162
  if (utc) {
167
163
  var u = new Date(dateObj.getTime());
@@ -179,11 +175,13 @@ proto.format = function (dateObj, arg, utc) {
179
175
  }
180
176
  return dateObj;
181
177
  }()),
182
- formatter = ctx._formatter, str = '';
178
+ comment = /^\[(.*)\]$/, str = '';
183
179
 
184
180
  for (var i = 1, len = pattern.length, token; i < len; i++) {
185
181
  token = pattern[i];
186
- str += formatter[token] ? formatter.post(formatter[token](d, pattern[0])) : token.replace(/\[(.*)]/, '$1');
182
+ str += formatter[token]
183
+ ? formatter.post(formatter[token](d, pattern[0]))
184
+ : comment.test(token) ? token.replace(comment, '$1') : token;
187
185
  }
188
186
  return str;
189
187
  };
@@ -197,33 +195,35 @@ proto.format = function (dateObj, arg, utc) {
197
195
  */
198
196
  proto.preparse = function (dateString, arg) {
199
197
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
198
+ parser = ctx._parser,
200
199
  dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 0, _length: 0, _match: 0 },
201
- comment = /\[(.*)]/, parser = ctx._parser, offset = 0;
200
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
202
201
 
203
202
  dateString = parser.pre(dateString);
204
- for (var i = 1, len = pattern.length, token, result; i < len; i++) {
203
+ for (var i = 1, len = pattern.length, token, str, result; i < len; i++) {
205
204
  token = pattern[i];
205
+ str = dateString.substring(dt._index);
206
+
206
207
  if (parser[token]) {
207
- result = parser[token](dateString.slice(offset), pattern[0]);
208
+ result = parser[token](str, pattern[0]);
208
209
  if (!result.length) {
209
- break;
210
+ break;
210
211
  }
211
- offset += result.length;
212
212
  dt[result.token || token.charAt(0)] = result.value;
213
+ dt._index += result.length;
213
214
  dt._match++;
214
- } else if (token === dateString.charAt(offset) || token === ' ') {
215
- offset++;
216
- } else if (comment.test(token) && !dateString.slice(offset).indexOf(comment.exec(token)[1])) {
217
- offset += token.length - 2;
218
- } else if (token === '...') {
219
- offset = dateString.length;
215
+ } else if (token === str.charAt(0) || token === wildcard) {
216
+ dt._index++;
217
+ } else if (comment.test(token) && !str.indexOf(token.replace(comment, '$1'))) {
218
+ dt._index += token.length - 2;
219
+ } else if (token === ellipsis) {
220
+ dt._index = dateString.length;
220
221
  break;
221
222
  } else {
222
223
  break;
223
224
  }
224
225
  }
225
- dt.H = dt.H || parser.h12(dt.h, dt.A); // eslint-disable-line logical-assignment-operators
226
- dt._index = offset;
226
+ dt.H = dt.H || parser.h12(dt.h, dt.A);
227
227
  dt._length = dateString.length;
228
228
  return dt;
229
229
  };
@@ -256,14 +256,13 @@ proto.parse = function (dateString, arg, utc) {
256
256
  * @returns {boolean} Whether the date and time string is a valid date and time
257
257
  */
258
258
  proto.isValid = function (arg1, arg2) {
259
- var ctx = this || date, dt = typeof arg1 === 'string' ? ctx.preparse(arg1, arg2) : arg1,
260
- last = [31, 28 + ctx.isLeapYear(dt.Y) | 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][dt.M - 1];
259
+ var ctx = this || date, dt = typeof arg1 === 'string' ? ctx.preparse(arg1, arg2) : arg1;
261
260
 
262
261
  return !(
263
- dt._index < 1 || dt._length < 1 || dt._index - dt._length || dt._match < 1 ||
264
- dt.Y < 1 || dt.Y > 9999 || dt.M < 1 || dt.M > 12 || dt.D < 1 || dt.D > last ||
265
- dt.H < 0 || dt.H > 23 || dt.m < 0 || dt.m > 59 || dt.s < 0 || dt.s > 59 || dt.S < 0 || dt.S > 999 ||
266
- dt.Z < -840 || dt.Z > 720
262
+ dt._index < 1 || dt._length < 1 || dt._index - dt._length || dt._match < 1
263
+ || dt.Y < 1 || dt.Y > 9999 || dt.M < 1 || dt.M > 12 || dt.D < 1 || dt.D > new Date(dt.Y, dt.M, 0).getDate()
264
+ || dt.H < 0 || dt.H > 23 || dt.m < 0 || dt.m > 59 || dt.s < 0 || dt.s > 59 || dt.S < 0 || dt.S > 999
265
+ || dt.Z < -840 || dt.Z > 720
267
266
  );
268
267
  };
269
268
 
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * @preserve date-and-time (c) KNOWLEDGECODE | MIT
3
3
  */
4
- var e,t,n={},r={},i="en",u={MMMM:["January","February","March","April","May","June","July","August","September","October","November","December"],MMM:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dddd:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ddd:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dd:["Su","Mo","Tu","We","Th","Fr","Sa"],A:["AM","PM"]},s={YYYY:function(e){return("000"+e.getFullYear()).slice(-4)},YY:function(e){return("0"+e.getFullYear()).slice(-2)},Y:function(e){return""+e.getFullYear()},MMMM:function(e){return this.res.MMMM[e.getMonth()]},MMM:function(e){return this.res.MMM[e.getMonth()]},MM:function(e){return("0"+(e.getMonth()+1)).slice(-2)},M:function(e){return""+(e.getMonth()+1)},DD:function(e){return("0"+e.getDate()).slice(-2)},D:function(e){return""+e.getDate()},HH:function(e){return("0"+e.getHours()).slice(-2)},H:function(e){return""+e.getHours()},A:function(e){return this.res.A[e.getHours()>11|0]},hh:function(e){return("0"+(e.getHours()%12||12)).slice(-2)},h:function(e){return""+(e.getHours()%12||12)},mm:function(e){return("0"+e.getMinutes()).slice(-2)},m:function(e){return""+e.getMinutes()},ss:function(e){return("0"+e.getSeconds()).slice(-2)},s:function(e){return""+e.getSeconds()},SSS:function(e){return("00"+e.getMilliseconds()).slice(-3)},SS:function(e){return("0"+(e.getMilliseconds()/10|0)).slice(-2)},S:function(e){return""+(e.getMilliseconds()/100|0)},dddd:function(e){return this.res.dddd[e.getDay()]},ddd:function(e){return this.res.ddd[e.getDay()]},dd:function(e){return this.res.dd[e.getDay()]},Z:function(e){var t=e.getTimezoneOffset()/.6|0;return(t>0?"-":"+")+("000"+Math.abs(t-(t%100*.4|0))).slice(-4)},ZZ:function(e){var t=e.getTimezoneOffset(),n=Math.abs(t);return(t>0?"-":"+")+("0"+(n/60|0)).slice(-2)+":"+("0"+n%60).slice(-2)},post:function(e){return e},res:u},o={YYYY:function(e){return this.exec(/^\d{4}/,e)},Y:function(e){return this.exec(/^\d{1,4}/,e)},MMMM:function(e){var t=this.find(this.res.MMMM,e);return t.value++,t},MMM:function(e){var t=this.find(this.res.MMM,e);return t.value++,t},MM:function(e){return this.exec(/^\d\d/,e)},M:function(e){return this.exec(/^\d\d?/,e)},DD:function(e){return this.exec(/^\d\d/,e)},D:function(e){return this.exec(/^\d\d?/,e)},HH:function(e){return this.exec(/^\d\d/,e)},H:function(e){return this.exec(/^\d\d?/,e)},A:function(e){return this.find(this.res.A,e)},hh:function(e){return this.exec(/^\d\d/,e)},h:function(e){return this.exec(/^\d\d?/,e)},mm:function(e){return this.exec(/^\d\d/,e)},m:function(e){return this.exec(/^\d\d?/,e)},ss:function(e){return this.exec(/^\d\d/,e)},s:function(e){return this.exec(/^\d\d?/,e)},SSS:function(e){return this.exec(/^\d{1,3}/,e)},SS:function(e){var t=this.exec(/^\d\d?/,e);return t.value*=10,t},S:function(e){var t=this.exec(/^\d/,e);return t.value*=100,t},Z:function(e){var t=this.exec(/^[+-]\d{2}[0-5]\d/,e);return t.value=-60*(t.value/100|0)-t.value%100,t},ZZ:function(e){var t=/^([+-])(\d{2}):([0-5]\d)/.exec(e)||["","","",""];return{value:0-(60*(t[1]+t[2]|0)+(t[1]+t[3]|0)),length:t[0].length}},h12:function(e,t){return(12===e?0:e)+12*t},exec:function(e,t){var n=(e.exec(t)||[""])[0];return{value:0|n,length:n.length}},find:function(e,t){for(var n,r=-1,i=0,u=0,s=e.length;u<s;u++)n=e[u],!t.indexOf(n)&&n.length>i&&(r=u,i=n.length);return{value:r,length:i}},pre:function(e){return e},res:u},a=function(e,t,n,r){var i,u={};for(i in e)u[i]=e[i];for(i in t||{})!!n^!!u[i]||(u[i]=t[i]);return r&&(u.res=r),u},c={_formatter:s,_parser:o};c.compile=function(e){for(var t,n=/\[([^[\]]|\[[^[\]]*])*]|([A-Za-z])\2+|\.{3}|./g,r=[e];t=n.exec(e);)r[r.length]=t[0];return r},c.format=function(e,n,r){for(var i,u=this||t,s="string"==typeof n?u.compile(n):n,o=function(){if(r){var t=new Date(e.getTime());return t.getFullYear=t.getUTCFullYear,t.getMonth=t.getUTCMonth,t.getDate=t.getUTCDate,t.getHours=t.getUTCHours,t.getMinutes=t.getUTCMinutes,t.getSeconds=t.getUTCSeconds,t.getMilliseconds=t.getUTCMilliseconds,t.getDay=t.getUTCDay,t.getTimezoneOffset=function(){return 0},t}return e}(),a=u._formatter,c="",d=1,f=s.length;d<f;d++)c+=a[i=s[d]]?a.post(a[i](o,s[0])):i.replace(/\[(.*)]/,"$1");return c},c.preparse=function(e,n){var r=this||t,i="string"==typeof n?r.compile(n):n,u={Y:1970,M:1,D:1,H:0,A:0,h:0,m:0,s:0,S:0,Z:0,_index:0,_length:0,_match:0},s=/\[(.*)]/,o=r._parser,a=0;e=o.pre(e);for(var c,d,f=1,l=i.length;f<l;f++)if(o[c=i[f]]){if(!(d=o[c](e.slice(a),i[0])).length)break;a+=d.length,u[d.token||c.charAt(0)]=d.value,u._match++}else if(c===e.charAt(a)||" "===c)a++;else{if(!s.test(c)||e.slice(a).indexOf(s.exec(c)[1])){if("..."===c){a=e.length;break}break}a+=c.length-2}return u.H=u.H||o.h12(u.h,u.A),u._index=a,u._length=e.length,u},c.parse=function(e,n,r){var i=this||t,u="string"==typeof n?i.compile(n):n,s=i.preparse(e,u);return i.isValid(s)?(s.M-=s.Y<100?22801:1,r||~i._parser.find(u,"ZZ").value?new Date(Date.UTC(s.Y,s.M,s.D,s.H,s.m+s.Z,s.s,s.S)):new Date(s.Y,s.M,s.D,s.H,s.m,s.s,s.S)):new Date(NaN)},c.isValid=function(e,n){var r=this||t,i="string"==typeof e?r.preparse(e,n):e,u=[31,28+r.isLeapYear(i.Y)|0,31,30,31,30,31,31,30,31,30,31][i.M-1];return!(i._index<1||i._length<1||i._index-i._length||i._match<1||i.Y<1||i.Y>9999||i.M<1||i.M>12||i.D<1||i.D>u||i.H<0||i.H>23||i.m<0||i.m>59||i.s<0||i.s>59||i.S<0||i.S>999||i.Z<-840||i.Z>720)},c.transform=function(e,n,r,i){const u=this||t;return u.format(u.parse(e,n),r,i)},c.addYears=function(e,n,r){return(this||t).addMonths(e,12*n,r)},c.addMonths=function(e,n,r){var i=new Date(e.getTime());if(r){if(i.setUTCMonth(i.getUTCMonth()+n),i.getUTCDate()<e.getUTCDate())return(this||t).addDays(i,-i.getUTCDate(),r)}else if(i.setMonth(i.getMonth()+n),i.getDate()<e.getDate())return(this||t).addDays(i,-i.getDate(),r);return i},c.addDays=function(e,n,r){return(this||t).addHours(e,24*n,r)},c.addHours=function(e,n,r){return(this||t).addMinutes(e,60*n,r)},c.addMinutes=function(e,n,r){return(this||t).addSeconds(e,60*n,r)},c.addSeconds=function(e,n,r){return(this||t).addMilliseconds(e,1e3*n,r)},c.addMilliseconds=function(e,t,n){var r=new Date(e.getTime());return n?r.setUTCMilliseconds(r.getUTCMilliseconds()+t):r.setMilliseconds(r.getMilliseconds()+t),r},c.subtract=function(e,t){var n=e.getTime()-t.getTime();return{toMilliseconds:function(){return n},toSeconds:function(){return n/1e3},toMinutes:function(){return n/6e4},toHours:function(){return n/36e5},toDays:function(){return n/864e5}}},c.isLeapYear=function(e){return!((e%4||!(e%100))&&e%400)},c.isSameDay=function(e,t){return e.toDateString()===t.toDateString()},c.locale=function(e,t){n[e]||(n[e]=t)},c.plugin=function(e,t){r[e]||(r[e]=t)},e=a(c),(t=a(c)).locale=function(d){var f="function"==typeof d?d:t.locale[d];if(!f)return i;i=f(c);var l=n[i]||{},h=a(u,l.res,!0),g=a(s,l.formatter,!0,h),M=a(o,l.parser,!0,h);for(var p in t._formatter=e._formatter=g,t._parser=e._parser=M,r)t.extend(r[p]);return i},t.extend=function(e){var n=a(t._parser.res,e.res),r=e.extender||{};for(var i in t._formatter=a(t._formatter,e.formatter,!1,n),t._parser=a(t._parser,e.parser,!1,n),r)t[i]||(t[i]=r[i])},t.plugin=function(n){var i="function"==typeof n?n:t.plugin[n];i&&t.extend(r[i(c,e)]||{})};var d=t;export{d as default};
4
+ var e,t,n={},r={},i="en",u={MMMM:["January","February","March","April","May","June","July","August","September","October","November","December"],MMM:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dddd:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ddd:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dd:["Su","Mo","Tu","We","Th","Fr","Sa"],A:["AM","PM"]},s={YYYY:function(e){return("000"+e.getFullYear()).slice(-4)},YY:function(e){return("0"+e.getFullYear()).slice(-2)},Y:function(e){return""+e.getFullYear()},MMMM:function(e){return this.res.MMMM[e.getMonth()]},MMM:function(e){return this.res.MMM[e.getMonth()]},MM:function(e){return("0"+(e.getMonth()+1)).slice(-2)},M:function(e){return""+(e.getMonth()+1)},DD:function(e){return("0"+e.getDate()).slice(-2)},D:function(e){return""+e.getDate()},HH:function(e){return("0"+e.getHours()).slice(-2)},H:function(e){return""+e.getHours()},A:function(e){return this.res.A[e.getHours()>11|0]},hh:function(e){return("0"+(e.getHours()%12||12)).slice(-2)},h:function(e){return""+(e.getHours()%12||12)},mm:function(e){return("0"+e.getMinutes()).slice(-2)},m:function(e){return""+e.getMinutes()},ss:function(e){return("0"+e.getSeconds()).slice(-2)},s:function(e){return""+e.getSeconds()},SSS:function(e){return("00"+e.getMilliseconds()).slice(-3)},SS:function(e){return("0"+(e.getMilliseconds()/10|0)).slice(-2)},S:function(e){return""+(e.getMilliseconds()/100|0)},dddd:function(e){return this.res.dddd[e.getDay()]},ddd:function(e){return this.res.ddd[e.getDay()]},dd:function(e){return this.res.dd[e.getDay()]},Z:function(e){var t=e.getTimezoneOffset()/.6|0;return(t>0?"-":"+")+("000"+Math.abs(t-(t%100*.4|0))).slice(-4)},ZZ:function(e){var t=e.getTimezoneOffset(),n=Math.abs(t);return(t>0?"-":"+")+("0"+(n/60|0)).slice(-2)+":"+("0"+n%60).slice(-2)},post:function(e){return e},res:u},o={YYYY:function(e){return this.exec(/^\d{4}/,e)},Y:function(e){return this.exec(/^\d{1,4}/,e)},MMMM:function(e){var t=this.find(this.res.MMMM,e);return t.value++,t},MMM:function(e){var t=this.find(this.res.MMM,e);return t.value++,t},MM:function(e){return this.exec(/^\d\d/,e)},M:function(e){return this.exec(/^\d\d?/,e)},DD:function(e){return this.exec(/^\d\d/,e)},D:function(e){return this.exec(/^\d\d?/,e)},HH:function(e){return this.exec(/^\d\d/,e)},H:function(e){return this.exec(/^\d\d?/,e)},A:function(e){return this.find(this.res.A,e)},hh:function(e){return this.exec(/^\d\d/,e)},h:function(e){return this.exec(/^\d\d?/,e)},mm:function(e){return this.exec(/^\d\d/,e)},m:function(e){return this.exec(/^\d\d?/,e)},ss:function(e){return this.exec(/^\d\d/,e)},s:function(e){return this.exec(/^\d\d?/,e)},SSS:function(e){return this.exec(/^\d{1,3}/,e)},SS:function(e){var t=this.exec(/^\d\d?/,e);return t.value*=10,t},S:function(e){var t=this.exec(/^\d/,e);return t.value*=100,t},Z:function(e){var t=this.exec(/^[+-]\d{2}[0-5]\d/,e);return t.value=-60*(t.value/100|0)-t.value%100,t},ZZ:function(e){var t=/^([+-])(\d{2}):([0-5]\d)/.exec(e)||["","","",""];return{value:0-(60*(t[1]+t[2]|0)+(t[1]+t[3]|0)),length:t[0].length}},h12:function(e,t){return(12===e?0:e)+12*t},exec:function(e,t){var n=(e.exec(t)||[""])[0];return{value:0|n,length:n.length}},find:function(e,t){for(var n,r=-1,i=0,u=0,s=e.length;u<s;u++)n=e[u],!t.indexOf(n)&&n.length>i&&(r=u,i=n.length);return{value:r,length:i}},pre:function(e){return e},res:u},a=function(e,t,n,r){var i,u={};for(i in e)u[i]=e[i];for(i in t||{})!!n^!!u[i]||(u[i]=t[i]);return r&&(u.res=r),u},c={_formatter:s,_parser:o};c.compile=function(e){return[e].concat(e.match(/\[(?:[^[\]]|\[[^[\]]*])*]|([A-Za-z])\1*|\.{3}|./g)||[])},c.format=function(e,n,r){for(var i,u=this||t,s="string"==typeof n?u.compile(n):n,o=u._formatter,a=function(){if(r){var t=new Date(e.getTime());return t.getFullYear=t.getUTCFullYear,t.getMonth=t.getUTCMonth,t.getDate=t.getUTCDate,t.getHours=t.getUTCHours,t.getMinutes=t.getUTCMinutes,t.getSeconds=t.getUTCSeconds,t.getMilliseconds=t.getUTCMilliseconds,t.getDay=t.getUTCDay,t.getTimezoneOffset=function(){return 0},t}return e}(),c=/^\[(.*)\]$/,d="",f=1,l=s.length;f<l;f++)d+=o[i=s[f]]?o.post(o[i](a,s[0])):c.test(i)?i.replace(c,"$1"):i;return d},c.preparse=function(e,n){var r=this||t,i="string"==typeof n?r.compile(n):n,u=r._parser,s={Y:1970,M:1,D:1,H:0,A:0,h:0,m:0,s:0,S:0,Z:0,_index:0,_length:0,_match:0},o=/^\[(.*)\]$/;e=u.pre(e);for(var a,c,d,f=1,l=i.length;f<l;f++)if(a=i[f],c=e.substring(s._index),u[a]){if(!(d=u[a](c,i[0])).length)break;s[d.token||a.charAt(0)]=d.value,s._index+=d.length,s._match++}else if(a===c.charAt(0)||" "===a)s._index++;else{if(!o.test(a)||c.indexOf(a.replace(o,"$1"))){if("..."===a){s._index=e.length;break}break}s._index+=a.length-2}return s.H=s.H||u.h12(s.h,s.A),s._length=e.length,s},c.parse=function(e,n,r){var i=this||t,u="string"==typeof n?i.compile(n):n,s=i.preparse(e,u);return i.isValid(s)?(s.M-=s.Y<100?22801:1,r||~i._parser.find(u,"ZZ").value?new Date(Date.UTC(s.Y,s.M,s.D,s.H,s.m+s.Z,s.s,s.S)):new Date(s.Y,s.M,s.D,s.H,s.m,s.s,s.S)):new Date(NaN)},c.isValid=function(e,n){var r="string"==typeof e?(this||t).preparse(e,n):e;return!(r._index<1||r._length<1||r._index-r._length||r._match<1||r.Y<1||r.Y>9999||r.M<1||r.M>12||r.D<1||r.D>new Date(r.Y,r.M,0).getDate()||r.H<0||r.H>23||r.m<0||r.m>59||r.s<0||r.s>59||r.S<0||r.S>999||r.Z<-840||r.Z>720)},c.transform=function(e,n,r,i){const u=this||t;return u.format(u.parse(e,n),r,i)},c.addYears=function(e,n,r){return(this||t).addMonths(e,12*n,r)},c.addMonths=function(e,n,r){var i=new Date(e.getTime());if(r){if(i.setUTCMonth(i.getUTCMonth()+n),i.getUTCDate()<e.getUTCDate())return(this||t).addDays(i,-i.getUTCDate(),r)}else if(i.setMonth(i.getMonth()+n),i.getDate()<e.getDate())return(this||t).addDays(i,-i.getDate(),r);return i},c.addDays=function(e,n,r){return(this||t).addHours(e,24*n,r)},c.addHours=function(e,n,r){return(this||t).addMinutes(e,60*n,r)},c.addMinutes=function(e,n,r){return(this||t).addSeconds(e,60*n,r)},c.addSeconds=function(e,n,r){return(this||t).addMilliseconds(e,1e3*n,r)},c.addMilliseconds=function(e,t,n){var r=new Date(e.getTime());return n?r.setUTCMilliseconds(r.getUTCMilliseconds()+t):r.setMilliseconds(r.getMilliseconds()+t),r},c.subtract=function(e,t){var n=e.getTime()-t.getTime();return{toMilliseconds:function(){return n},toSeconds:function(){return n/1e3},toMinutes:function(){return n/6e4},toHours:function(){return n/36e5},toDays:function(){return n/864e5}}},c.isLeapYear=function(e){return!((e%4||!(e%100))&&e%400)},c.isSameDay=function(e,t){return e.toDateString()===t.toDateString()},c.locale=function(e,t){n[e]||(n[e]=t)},c.plugin=function(e,t){r[e]||(r[e]=t)},e=a(c),(t=a(c)).locale=function(d){var f="function"==typeof d?d:t.locale[d];if(!f)return i;i=f(c);var l=n[i]||{},h=a(u,l.res,!0),g=a(s,l.formatter,!0,h),M=a(o,l.parser,!0,h);for(var D in t._formatter=e._formatter=g,t._parser=e._parser=M,r)t.extend(r[D]);return i},t.extend=function(e){var n=a(t._parser.res,e.res),r=e.extender||{};for(var i in t._formatter=a(t._formatter,e.formatter,!1,n),t._parser=a(t._parser,e.parser,!1,n),r)t[i]||(t[i]=r[i])},t.plugin=function(n){var i="function"==typeof n?n:t.plugin[n];i&&t.extend(r[i(c,e)]||{})};var d=t;export{d as default};
@@ -145,12 +145,7 @@ var locales = {},
145
145
  * @returns {Array.<string>} A compiled object
146
146
  */
147
147
  proto.compile = function (formatString) {
148
- var re = /\[([^[\]]|\[[^[\]]*])*]|([A-Za-z])\2+|\.{3}|./g, keys, pattern = [formatString];
149
-
150
- while ((keys = re.exec(formatString))) {
151
- pattern[pattern.length] = keys[0];
152
- }
153
- return pattern;
148
+ return [formatString].concat(formatString.match(/\[(?:[^[\]]|\[[^[\]]*])*]|([A-Za-z])\1*|\.{3}|./g) || []);
154
149
  };
155
150
 
156
151
  /**
@@ -162,6 +157,7 @@ proto.compile = function (formatString) {
162
157
  */
163
158
  proto.format = function (dateObj, arg, utc) {
164
159
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
160
+ formatter = ctx._formatter,
165
161
  d = (function () {
166
162
  if (utc) {
167
163
  var u = new Date(dateObj.getTime());
@@ -179,11 +175,13 @@ proto.format = function (dateObj, arg, utc) {
179
175
  }
180
176
  return dateObj;
181
177
  }()),
182
- formatter = ctx._formatter, str = '';
178
+ comment = /^\[(.*)\]$/, str = '';
183
179
 
184
180
  for (var i = 1, len = pattern.length, token; i < len; i++) {
185
181
  token = pattern[i];
186
- str += formatter[token] ? formatter.post(formatter[token](d, pattern[0])) : token.replace(/\[(.*)]/, '$1');
182
+ str += formatter[token]
183
+ ? formatter.post(formatter[token](d, pattern[0]))
184
+ : comment.test(token) ? token.replace(comment, '$1') : token;
187
185
  }
188
186
  return str;
189
187
  };
@@ -197,33 +195,35 @@ proto.format = function (dateObj, arg, utc) {
197
195
  */
198
196
  proto.preparse = function (dateString, arg) {
199
197
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
198
+ parser = ctx._parser,
200
199
  dt = { Y: 1970, M: 1, D: 1, H: 0, A: 0, h: 0, m: 0, s: 0, S: 0, Z: 0, _index: 0, _length: 0, _match: 0 },
201
- comment = /\[(.*)]/, parser = ctx._parser, offset = 0;
200
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
202
201
 
203
202
  dateString = parser.pre(dateString);
204
- for (var i = 1, len = pattern.length, token, result; i < len; i++) {
203
+ for (var i = 1, len = pattern.length, token, str, result; i < len; i++) {
205
204
  token = pattern[i];
205
+ str = dateString.substring(dt._index);
206
+
206
207
  if (parser[token]) {
207
- result = parser[token](dateString.slice(offset), pattern[0]);
208
+ result = parser[token](str, pattern[0]);
208
209
  if (!result.length) {
209
- break;
210
+ break;
210
211
  }
211
- offset += result.length;
212
212
  dt[result.token || token.charAt(0)] = result.value;
213
+ dt._index += result.length;
213
214
  dt._match++;
214
- } else if (token === dateString.charAt(offset) || token === ' ') {
215
- offset++;
216
- } else if (comment.test(token) && !dateString.slice(offset).indexOf(comment.exec(token)[1])) {
217
- offset += token.length - 2;
218
- } else if (token === '...') {
219
- offset = dateString.length;
215
+ } else if (token === str.charAt(0) || token === wildcard) {
216
+ dt._index++;
217
+ } else if (comment.test(token) && !str.indexOf(token.replace(comment, '$1'))) {
218
+ dt._index += token.length - 2;
219
+ } else if (token === ellipsis) {
220
+ dt._index = dateString.length;
220
221
  break;
221
222
  } else {
222
223
  break;
223
224
  }
224
225
  }
225
- dt.H = dt.H || parser.h12(dt.h, dt.A); // eslint-disable-line logical-assignment-operators
226
- dt._index = offset;
226
+ dt.H = dt.H || parser.h12(dt.h, dt.A);
227
227
  dt._length = dateString.length;
228
228
  return dt;
229
229
  };
@@ -256,14 +256,13 @@ proto.parse = function (dateString, arg, utc) {
256
256
  * @returns {boolean} Whether the date and time string is a valid date and time
257
257
  */
258
258
  proto.isValid = function (arg1, arg2) {
259
- var ctx = this || date, dt = typeof arg1 === 'string' ? ctx.preparse(arg1, arg2) : arg1,
260
- last = [31, 28 + ctx.isLeapYear(dt.Y) | 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][dt.M - 1];
259
+ var ctx = this || date, dt = typeof arg1 === 'string' ? ctx.preparse(arg1, arg2) : arg1;
261
260
 
262
261
  return !(
263
- dt._index < 1 || dt._length < 1 || dt._index - dt._length || dt._match < 1 ||
264
- dt.Y < 1 || dt.Y > 9999 || dt.M < 1 || dt.M > 12 || dt.D < 1 || dt.D > last ||
265
- dt.H < 0 || dt.H > 23 || dt.m < 0 || dt.m > 59 || dt.s < 0 || dt.s > 59 || dt.S < 0 || dt.S > 999 ||
266
- dt.Z < -840 || dt.Z > 720
262
+ dt._index < 1 || dt._length < 1 || dt._index - dt._length || dt._match < 1
263
+ || dt.Y < 1 || dt.Y > 9999 || dt.M < 1 || dt.M > 12 || dt.D < 1 || dt.D > new Date(dt.Y, dt.M, 0).getDate()
264
+ || dt.H < 0 || dt.H > 23 || dt.m < 0 || dt.m > 59 || dt.s < 0 || dt.s > 59 || dt.S < 0 || dt.S > 999
265
+ || dt.Z < -840 || dt.Z > 720
267
266
  );
268
267
  };
269
268
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "date-and-time",
3
- "version": "3.1.1",
3
+ "version": "3.3.0",
4
4
  "description": "A Minimalist DateTime utility for Node.js and the browser",
5
5
  "main": "date-and-time.js",
6
6
  "module": "esm/date-and-time.es.js",
@@ -51,8 +51,8 @@
51
51
  "devDependencies": {
52
52
  "@rollup/plugin-terser": "^0.4.4",
53
53
  "expect.js": "^0.3.1",
54
- "mocha": "^10.2.0",
55
- "rollup": "^4.9.5",
56
- "tsd": "^0.30.3"
54
+ "mocha": "^10.4.0",
55
+ "rollup": "^4.17.2",
56
+ "tsd": "^0.31.0"
57
57
  }
58
58
  }
package/rollup.config.mjs DELETED
@@ -1,356 +0,0 @@
1
- import terser from '@rollup/plugin-terser';
2
-
3
- export default [
4
- {
5
- input: 'src/index.js',
6
- output: [
7
- { file: 'esm/date-and-time.es.js', format: 'es' },
8
- { file: 'esm/date-and-time.mjs', format: 'es' },
9
- { file: 'date-and-time.js', format: 'umd', name: 'date', esModule: false }
10
- ]
11
- },
12
- {
13
- input: 'src/locale/ar.js',
14
- output: [
15
- { file: 'esm/locale/ar.es.js', format: 'es' },
16
- { file: 'esm/locale/ar.mjs', format: 'es' },
17
- { file: 'locale/ar.js', format: 'umd', name: 'date.locale.ar', esModule: false }
18
- ]
19
- },
20
- {
21
- input: 'src/locale/az.js',
22
- output: [
23
- { file: 'esm/locale/az.es.js', format: 'es' },
24
- { file: 'esm/locale/az.mjs', format: 'es' },
25
- { file: 'locale/az.js', format: 'umd', name: 'date.locale.az', esModule: false }
26
- ]
27
- },
28
- {
29
- input: 'src/locale/bn.js',
30
- output: [
31
- { file: 'esm/locale/bn.es.js', format: 'es' },
32
- { file: 'esm/locale/bn.mjs', format: 'es' },
33
- { file: 'locale/bn.js', format: 'umd', name: 'date.locale.bn', esModule: false }
34
- ]
35
- },
36
- {
37
- input: 'src/locale/cs.js',
38
- output: [
39
- { file: 'esm/locale/cs.es.js', format: 'es' },
40
- { file: 'esm/locale/cs.mjs', format: 'es' },
41
- { file: 'locale/cs.js', format: 'umd', name: 'date.locale.cs', esModule: false }
42
- ]
43
- },
44
- {
45
- input: 'src/locale/de.js',
46
- output: [
47
- { file: 'esm/locale/de.es.js', format: 'es' },
48
- { file: 'esm/locale/de.mjs', format: 'es' },
49
- { file: 'locale/de.js', format: 'umd', name: 'date.locale.de', esModule: false }
50
- ]
51
- },
52
- {
53
- input: 'src/locale/dk.js',
54
- output: [
55
- { file: 'esm/locale/dk.es.js', format: 'es' },
56
- { file: 'esm/locale/dk.mjs', format: 'es' },
57
- { file: 'locale/dk.js', format: 'umd', name: 'date.locale.dk', esModule: false }
58
- ]
59
- },
60
- {
61
- input: 'src/locale/el.js',
62
- output: [
63
- { file: 'esm/locale/el.es.js', format: 'es' },
64
- { file: 'esm/locale/el.mjs', format: 'es' },
65
- { file: 'locale/el.js', format: 'umd', name: 'date.locale.el', esModule: false }
66
- ]
67
- },
68
- {
69
- input: 'src/locale/en.js',
70
- output: [
71
- { file: 'esm/locale/en.es.js', format: 'es' },
72
- { file: 'esm/locale/en.mjs', format: 'es' },
73
- { file: 'locale/en.js', format: 'umd', name: 'date.locale.en', esModule: false }
74
- ]
75
- },
76
- {
77
- input: 'src/locale/es.js',
78
- output: [
79
- { file: 'esm/locale/es.es.js', format: 'es' },
80
- { file: 'esm/locale/es.mjs', format: 'es' },
81
- { file: 'locale/es.js', format: 'umd', name: 'date.locale.es', esModule: false }
82
- ]
83
- },
84
- {
85
- input: 'src/locale/fa.js',
86
- output: [
87
- { file: 'esm/locale/fa.es.js', format: 'es' },
88
- { file: 'esm/locale/fa.mjs', format: 'es' },
89
- { file: 'locale/fa.js', format: 'umd', name: 'date.locale.fa', esModule: false }
90
- ]
91
- },
92
- {
93
- input: 'src/locale/fr.js',
94
- output: [
95
- { file: 'esm/locale/fr.es.js', format: 'es' },
96
- { file: 'esm/locale/fr.mjs', format: 'es' },
97
- { file: 'locale/fr.js', format: 'umd', name: 'date.locale.fr', esModule: false }
98
- ]
99
- },
100
- {
101
- input: 'src/locale/hi.js',
102
- output: [
103
- { file: 'esm/locale/hi.es.js', format: 'es' },
104
- { file: 'esm/locale/hi.mjs', format: 'es' },
105
- { file: 'locale/hi.js', format: 'umd', name: 'date.locale.hi', esModule: false }
106
- ]
107
- },
108
- {
109
- input: 'src/locale/hu.js',
110
- output: [
111
- { file: 'esm/locale/hu.es.js', format: 'es' },
112
- { file: 'esm/locale/hu.mjs', format: 'es' },
113
- { file: 'locale/hu.js', format: 'umd', name: 'date.locale.hu', esModule: false }
114
- ]
115
- },
116
- {
117
- input: 'src/locale/id.js',
118
- output: [
119
- { file: 'esm/locale/id.es.js', format: 'es' },
120
- { file: 'esm/locale/id.mjs', format: 'es' },
121
- { file: 'locale/id.js', format: 'umd', name: 'date.locale.id', esModule: false }
122
- ]
123
- },
124
- {
125
- input: 'src/locale/it.js',
126
- output: [
127
- { file: 'esm/locale/it.es.js', format: 'es' },
128
- { file: 'esm/locale/it.mjs', format: 'es' },
129
- { file: 'locale/it.js', format: 'umd', name: 'date.locale.it', esModule: false }
130
- ]
131
- },
132
- {
133
- input: 'src/locale/ja.js',
134
- output: [
135
- { file: 'esm/locale/ja.es.js', format: 'es' },
136
- { file: 'esm/locale/ja.mjs', format: 'es' },
137
- { file: 'locale/ja.js', format: 'umd', name: 'date.locale.ja', esModule: false }
138
- ]
139
- },
140
- {
141
- input: 'src/locale/jv.js',
142
- output: [
143
- { file: 'esm/locale/jv.es.js', format: 'es' },
144
- { file: 'esm/locale/jv.mjs', format: 'es' },
145
- { file: 'locale/jv.js', format: 'umd', name: 'date.locale.jv', esModule: false }
146
- ]
147
- },
148
- {
149
- input: 'src/locale/ko.js',
150
- output: [
151
- { file: 'esm/locale/ko.es.js', format: 'es' },
152
- { file: 'esm/locale/ko.mjs', format: 'es' },
153
- { file: 'locale/ko.js', format: 'umd', name: 'date.locale.ko', esModule: false }
154
- ]
155
- },
156
- {
157
- input: 'src/locale/my.js',
158
- output: [
159
- { file: 'esm/locale/my.es.js', format: 'es' },
160
- { file: 'esm/locale/my.mjs', format: 'es' },
161
- { file: 'locale/my.js', format: 'umd', name: 'date.locale.my', esModule: false }
162
- ]
163
- },
164
- {
165
- input: 'src/locale/nl.js',
166
- output: [
167
- { file: 'esm/locale/nl.es.js', format: 'es' },
168
- { file: 'esm/locale/nl.mjs', format: 'es' },
169
- { file: 'locale/nl.js', format: 'umd', name: 'date.locale.nl', esModule: false }
170
- ]
171
- },
172
- {
173
- input: 'src/locale/pa-in.js',
174
- output: [
175
- { file: 'esm/locale/pa-in.es.js', format: 'es' },
176
- { file: 'esm/locale/pa-in.mjs', format: 'es' },
177
- { file: 'locale/pa-in.js', format: 'umd', name: 'date.locale.pa-in', esModule: false }
178
- ]
179
- },
180
- {
181
- input: 'src/locale/pl.js',
182
- output: [
183
- { file: 'esm/locale/pl.es.js', format: 'es' },
184
- { file: 'esm/locale/pl.mjs', format: 'es' },
185
- { file: 'locale/pl.js', format: 'umd', name: 'date.locale.pl', esModule: false }
186
- ]
187
- },
188
- {
189
- input: 'src/locale/pt.js',
190
- output: [
191
- { file: 'esm/locale/pt.es.js', format: 'es' },
192
- { file: 'esm/locale/pt.mjs', format: 'es' },
193
- { file: 'locale/pt.js', format: 'umd', name: 'date.locale.pt', esModule: false }
194
- ]
195
- },
196
- {
197
- input: 'src/locale/ro.js',
198
- output: [
199
- { file: 'esm/locale/ro.es.js', format: 'es' },
200
- { file: 'esm/locale/ro.mjs', format: 'es' },
201
- { file: 'locale/ro.js', format: 'umd', name: 'date.locale.ro', esModule: false }
202
- ]
203
- },
204
- {
205
- input: 'src/locale/ru.js',
206
- output: [
207
- { file: 'esm/locale/ru.es.js', format: 'es' },
208
- { file: 'esm/locale/ru.mjs', format: 'es' },
209
- { file: 'locale/ru.js', format: 'umd', name: 'date.locale.ru', esModule: false }
210
- ]
211
- },
212
- {
213
- input: 'src/locale/rw.js',
214
- output: [
215
- { file: 'esm/locale/rw.es.js', format: 'es' },
216
- { file: 'esm/locale/rw.mjs', format: 'es' },
217
- { file: 'locale/rw.js', format: 'umd', name: 'date.locale.rw', esModule: false }
218
- ]
219
- },
220
- {
221
- input: 'src/locale/sr.js',
222
- output: [
223
- { file: 'esm/locale/sr.es.js', format: 'es' },
224
- { file: 'esm/locale/sr.mjs', format: 'es' },
225
- { file: 'locale/sr.js', format: 'umd', name: 'date.locale.sr', esModule: false }
226
- ]
227
- },
228
- {
229
- input: 'src/locale/sv.js',
230
- output: [
231
- { file: 'esm/locale/sv.es.js', format: 'es' },
232
- { file: 'esm/locale/sv.mjs', format: 'es' },
233
- { file: 'locale/sv.js', format: 'umd', name: 'date.locale.sv', esModule: false }
234
- ]
235
- },
236
- {
237
- input: 'src/locale/th.js',
238
- output: [
239
- { file: 'esm/locale/th.es.js', format: 'es' },
240
- { file: 'esm/locale/th.mjs', format: 'es' },
241
- { file: 'locale/th.js', format: 'umd', name: 'date.locale.th', esModule: false }
242
- ]
243
- },
244
- {
245
- input: 'src/locale/tr.js',
246
- output: [
247
- { file: 'esm/locale/tr.es.js', format: 'es' },
248
- { file: 'esm/locale/tr.mjs', format: 'es' },
249
- { file: 'locale/tr.js', format: 'umd', name: 'date.locale.tr', esModule: false }
250
- ]
251
- },
252
- {
253
- input: 'src/locale/uk.js',
254
- output: [
255
- { file: 'esm/locale/uk.es.js', format: 'es' },
256
- { file: 'esm/locale/uk.mjs', format: 'es' },
257
- { file: 'locale/uk.js', format: 'umd', name: 'date.locale.uk', esModule: false }
258
- ]
259
- },
260
- {
261
- input: 'src/locale/uz.js',
262
- output: [
263
- { file: 'esm/locale/uz.es.js', format: 'es' },
264
- { file: 'esm/locale/uz.mjs', format: 'es' },
265
- { file: 'locale/uz.js', format: 'umd', name: 'date.locale.uz', esModule: false }
266
- ]
267
- },
268
- {
269
- input: 'src/locale/vi.js',
270
- output: [
271
- { file: 'esm/locale/vi.es.js', format: 'es' },
272
- { file: 'esm/locale/vi.mjs', format: 'es' },
273
- { file: 'locale/vi.js', format: 'umd', name: 'date.locale.vi', esModule: false }
274
- ]
275
- },
276
- {
277
- input: 'src/locale/zh-cn.js',
278
- output: [
279
- { file: 'esm/locale/zh-cn.es.js', format: 'es' },
280
- { file: 'esm/locale/zh-cn.mjs', format: 'es' },
281
- { file: 'locale/zh-cn.js', format: 'umd', name: 'date.locale.zh-cn', esModule: false }
282
- ]
283
- },
284
- {
285
- input: 'src/locale/zh-tw.js',
286
- output: [
287
- { file: 'esm/locale/zh-tw.es.js', format: 'es' },
288
- { file: 'esm/locale/zh-tw.mjs', format: 'es' },
289
- { file: 'locale/zh-tw.js', format: 'umd', name: 'date.locale.zh-tw', esModule: false }
290
- ]
291
- },
292
- {
293
- input: 'src/plugin/day-of-week.js',
294
- output: [
295
- { file: 'esm/plugin/day-of-week.es.js', format: 'es' },
296
- { file: 'esm/plugin/day-of-week.mjs', format: 'es' },
297
- { file: 'plugin/day-of-week.js', format: 'umd', name: 'date.plugin.day-of-week', esModule: false }
298
- ]
299
- },
300
- {
301
- input: 'src/plugin/meridiem.js',
302
- output: [
303
- { file: 'esm/plugin/meridiem.es.js', format: 'es' },
304
- { file: 'esm/plugin/meridiem.mjs', format: 'es' },
305
- { file: 'plugin/meridiem.js', format: 'umd', name: 'date.plugin.meridiem', esModule: false }
306
- ]
307
- },
308
- {
309
- input: 'src/plugin/microsecond.js',
310
- output: [
311
- { file: 'esm/plugin/microsecond.es.js', format: 'es' },
312
- { file: 'esm/plugin/microsecond.mjs', format: 'es' },
313
- { file: 'plugin/microsecond.js', format: 'umd', name: 'date.plugin.microsecond', esModule: false }
314
- ]
315
- },
316
- {
317
- input: 'src/plugin/ordinal.js',
318
- output: [
319
- { file: 'esm/plugin/ordinal.es.js', format: 'es' },
320
- { file: 'esm/plugin/ordinal.mjs', format: 'es' },
321
- { file: 'plugin/ordinal.js', format: 'umd', name: 'date.plugin.ordinal', esModule: false }
322
- ]
323
- },
324
- {
325
- input: 'src/plugin/timespan.js',
326
- output: [
327
- { file: 'esm/plugin/timespan.es.js', format: 'es' },
328
- { file: 'esm/plugin/timespan.mjs', format: 'es' },
329
- { file: 'plugin/timespan.js', format: 'umd', name: 'date.plugin.timespan', esModule: false }
330
- ]
331
- },
332
- {
333
- input: 'src/plugin/timezone.js',
334
- output: [
335
- { file: 'esm/plugin/timezone.es.js', format: 'es' },
336
- { file: 'esm/plugin/timezone.mjs', format: 'es' },
337
- { file: 'plugin/timezone.js', format: 'umd', name: 'date.plugin.timezone', esModule: false }
338
- ]
339
- },
340
- {
341
- input: 'src/plugin/two-digit-year.js',
342
- output: [
343
- { file: 'esm/plugin/two-digit-year.es.js', format: 'es' },
344
- { file: 'esm/plugin/two-digit-year.mjs', format: 'es' },
345
- { file: 'plugin/two-digit-year.js', format: 'umd', name: 'date.plugin.two-digit-year', esModule: false }
346
- ]
347
- },
348
- {
349
- input: 'src/index.js',
350
- output: [
351
- { file: 'esm/date-and-time.es.min.js', format: 'es' },
352
- { file: 'date-and-time.min.js', format: 'umd', name: 'date', esModule: false }
353
- ],
354
- plugins: [terser()]
355
- }
356
- ];