date-and-time 3.1.1 → 3.2.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,6 +25,9 @@ npm i date-and-time
25
25
 
26
26
  ## Recent Changes
27
27
 
28
+ - 3.2.0
29
+ - Refactored `compile()`, `format()`, and `preparse()` slightly improved performance.
30
+
28
31
  - 3.1.1
29
32
  - Fixed an issue where `format()` could output incorrect UTC times in locales with daylight savings time.
30
33
  - Refactored `formatTZ()` of `timezone` plugin.
@@ -33,9 +36,6 @@ npm i date-and-time
33
36
  - Improved accuracy of `parseTZ()` in `timezone` plugin.
34
37
  - Organized some test modules.
35
38
 
36
- - 3.0.3
37
- - Fixed TypeScript types exports in `package.json`.
38
-
39
39
  ## Usage
40
40
 
41
41
  - ES Modules:
@@ -189,7 +189,7 @@ You can also use the following tokens by importing plugins. See [PLUGINS.md](./P
189
189
 
190
190
  #### Note 1. Comments
191
191
 
192
- String in parenthese `[...]` in the `formatString` will be ignored as comments:
192
+ 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
193
 
194
194
  ```javascript
195
195
  date.format(new Date(), 'DD-[MM]-YYYY'); // => '02-MM-2015'
@@ -198,7 +198,7 @@ date.format(new Date(), '[DD-[MM]-YYYY]'); // => 'DD-[MM]-YYYY'
198
198
 
199
199
  #### Note 2. Output as UTC
200
200
 
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.
201
+ 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
202
 
203
203
  ```javascript
204
204
  date.format(new Date(), 'hh:mm A [GMT]Z'); // => '11:14 PM GMT-0800'
@@ -270,7 +270,7 @@ You can also use the following tokens by importing plugins. See [PLUGINS.md](./P
270
270
 
271
271
  #### Note 1. Invalid Date
272
272
 
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:
273
+ 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
274
 
275
275
  ```javascript
276
276
  const today = date.parse('Jam 1 2017', 'MMM D YYYY');
@@ -282,7 +282,7 @@ if (isNaN(today.getTime())) {
282
282
 
283
283
  #### Note 2. Input as UTC
284
284
 
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.
285
+ 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
286
 
287
287
  ```javascript
288
288
  date.parse('11:14:05 PM', 'hh:mm:ss A'); // => Jan 1 1970 23:14:05 GMT-0800
@@ -319,9 +319,9 @@ date.parse('11:14:05', 'hh:mm:ss'); // => Jan 1 1970 11:14:05 GMT-0800
319
319
  date.parse('11:14:05 PM', 'hh:mm:ss A'); // => Jan 1 1970 23:14:05 GMT-0800
320
320
  ```
321
321
 
322
- #### Note 6. Token disablement
322
+ #### Note 6. Token invalidation
323
323
 
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:
324
+ 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
325
 
326
326
  ```javascript
327
327
  date.parse('12 hours 34 minutes', 'HH hours mm minutes'); // => Invalid Date
@@ -330,7 +330,7 @@ date.parse('12 hours 34 minutes', 'HH [hours] mm [minutes]'); // => Jan 1 1970
330
330
 
331
331
  #### Note 7. Wildcard
332
332
 
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:
333
+ 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
334
 
335
335
  ```javascript
336
336
  // This will be an error.
@@ -341,7 +341,7 @@ date.parse('2015/01/02 11:14:05', 'YYYY/MM/DD '); // => Jan 2 2015 00:
341
341
 
342
342
  #### Note 8. Ellipsis
343
343
 
344
- The parser supports `...` (ellipsis) token. The above example can be also written like this:
344
+ `...` 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
345
 
346
346
  ```javascript
347
347
  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,11 @@
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] ? formatter.post(formatter[token](d, pattern[0])) : token.replace(comment, '$1');
193
189
  }
194
190
  return str;
195
191
  };
@@ -203,33 +199,35 @@
203
199
  */
204
200
  proto.preparse = function (dateString, arg) {
205
201
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
202
+ parser = ctx._parser,
206
203
  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;
204
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
208
205
 
209
206
  dateString = parser.pre(dateString);
210
- for (var i = 1, len = pattern.length, token, result; i < len; i++) {
207
+ for (var i = 1, len = pattern.length, token, str, result; i < len; i++) {
211
208
  token = pattern[i];
209
+ str = dateString.slice(dt._index);
210
+
212
211
  if (parser[token]) {
213
- result = parser[token](dateString.slice(offset), pattern[0]);
212
+ result = parser[token](str, pattern[0]);
214
213
  if (!result.length) {
215
- break;
214
+ break;
216
215
  }
217
- offset += result.length;
218
216
  dt[result.token || token.charAt(0)] = result.value;
217
+ dt._index += result.length;
219
218
  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;
219
+ } else if (token === str.charAt(0) || token === wildcard) {
220
+ dt._index++;
221
+ } else if (comment.test(token) && !str.indexOf(token.replace(comment, '$1'))) {
222
+ dt._index += token.length - 2;
223
+ } else if (token === ellipsis) {
224
+ dt._index = dateString.length;
226
225
  break;
227
226
  } else {
228
227
  break;
229
228
  }
230
229
  }
231
- dt.H = dt.H || parser.h12(dt.h, dt.A); // eslint-disable-line logical-assignment-operators
232
- dt._index = offset;
230
+ dt.H = dt.H || parser.h12(dt.h, dt.A);
233
231
  dt._length = dateString.length;
234
232
  return dt;
235
233
  };
@@ -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"]},o={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},s={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,o=e.length;u<o;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:o,_parser:s};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,o="string"==typeof n?u.compile(n):n,s=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=o.length;f<l;f++)d+=s[i=o[f]]?s.post(s[i](c,o[0])):i.replace(a,"$1");return d},a.preparse=function(e,n){var r=this||t,i="string"==typeof n?r.compile(n):n,u=r._parser,o={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=/^\[(.*)\]$/;e=u.pre(e);for(var c,a,d,f=1,l=i.length;f<l;f++)if(c=i[f],a=e.slice(o._index),u[c]){if(!(d=u[c](a,i[0])).length)break;o[d.token||c.charAt(0)]=d.value,o._index+=d.length,o._match++}else if(c===a.charAt(0)||" "===c)o._index++;else{if(!s.test(c)||a.indexOf(c.replace(s,"$1"))){if("..."===c){o._index=e.length;break}break}o._index+=c.length-2}return o.H=o.H||u.h12(o.h,o.A),o._length=e.length,o},a.parse=function(e,n,r){var i=this||t,u="string"==typeof n?i.compile(n):n,o=i.preparse(e,u);return i.isValid(o)?(o.M-=o.Y<100?22801:1,r||~i._parser.find(u,"ZZ").value?new Date(Date.UTC(o.Y,o.M,o.D,o.H,o.m+o.Z,o.s,o.S)):new Date(o.Y,o.M,o.D,o.H,o.m,o.s,o.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(o,l.formatter,!0,h),M=c(s,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,11 @@ 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] ? formatter.post(formatter[token](d, pattern[0])) : token.replace(comment, '$1');
187
183
  }
188
184
  return str;
189
185
  };
@@ -197,33 +193,35 @@ proto.format = function (dateObj, arg, utc) {
197
193
  */
198
194
  proto.preparse = function (dateString, arg) {
199
195
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
196
+ parser = ctx._parser,
200
197
  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;
198
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
202
199
 
203
200
  dateString = parser.pre(dateString);
204
- for (var i = 1, len = pattern.length, token, result; i < len; i++) {
201
+ for (var i = 1, len = pattern.length, token, str, result; i < len; i++) {
205
202
  token = pattern[i];
203
+ str = dateString.slice(dt._index);
204
+
206
205
  if (parser[token]) {
207
- result = parser[token](dateString.slice(offset), pattern[0]);
206
+ result = parser[token](str, pattern[0]);
208
207
  if (!result.length) {
209
- break;
208
+ break;
210
209
  }
211
- offset += result.length;
212
210
  dt[result.token || token.charAt(0)] = result.value;
211
+ dt._index += result.length;
213
212
  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;
213
+ } else if (token === str.charAt(0) || token === wildcard) {
214
+ dt._index++;
215
+ } else if (comment.test(token) && !str.indexOf(token.replace(comment, '$1'))) {
216
+ dt._index += token.length - 2;
217
+ } else if (token === ellipsis) {
218
+ dt._index = dateString.length;
220
219
  break;
221
220
  } else {
222
221
  break;
223
222
  }
224
223
  }
225
- dt.H = dt.H || parser.h12(dt.h, dt.A); // eslint-disable-line logical-assignment-operators
226
- dt._index = offset;
224
+ dt.H = dt.H || parser.h12(dt.h, dt.A);
227
225
  dt._length = dateString.length;
228
226
  return dt;
229
227
  };
@@ -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])):i.replace(c,"$1");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.slice(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=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),M=a(s,l.formatter,!0,h),g=a(o,l.parser,!0,h);for(var p in t._formatter=e._formatter=M,t._parser=e._parser=g,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};
@@ -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,11 @@ 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] ? formatter.post(formatter[token](d, pattern[0])) : token.replace(comment, '$1');
187
183
  }
188
184
  return str;
189
185
  };
@@ -197,33 +193,35 @@ proto.format = function (dateObj, arg, utc) {
197
193
  */
198
194
  proto.preparse = function (dateString, arg) {
199
195
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
196
+ parser = ctx._parser,
200
197
  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;
198
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
202
199
 
203
200
  dateString = parser.pre(dateString);
204
- for (var i = 1, len = pattern.length, token, result; i < len; i++) {
201
+ for (var i = 1, len = pattern.length, token, str, result; i < len; i++) {
205
202
  token = pattern[i];
203
+ str = dateString.slice(dt._index);
204
+
206
205
  if (parser[token]) {
207
- result = parser[token](dateString.slice(offset), pattern[0]);
206
+ result = parser[token](str, pattern[0]);
208
207
  if (!result.length) {
209
- break;
208
+ break;
210
209
  }
211
- offset += result.length;
212
210
  dt[result.token || token.charAt(0)] = result.value;
211
+ dt._index += result.length;
213
212
  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;
213
+ } else if (token === str.charAt(0) || token === wildcard) {
214
+ dt._index++;
215
+ } else if (comment.test(token) && !str.indexOf(token.replace(comment, '$1'))) {
216
+ dt._index += token.length - 2;
217
+ } else if (token === ellipsis) {
218
+ dt._index = dateString.length;
220
219
  break;
221
220
  } else {
222
221
  break;
223
222
  }
224
223
  }
225
- dt.H = dt.H || parser.h12(dt.h, dt.A); // eslint-disable-line logical-assignment-operators
226
- dt._index = offset;
224
+ dt.H = dt.H || parser.h12(dt.h, dt.A);
227
225
  dt._length = dateString.length;
228
226
  return dt;
229
227
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "date-and-time",
3
- "version": "3.1.1",
3
+ "version": "3.2.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
- ];