date-and-time 3.1.0 → 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,16 +25,17 @@ 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
+
31
+ - 3.1.1
32
+ - Fixed an issue where `format()` could output incorrect UTC times in locales with daylight savings time.
33
+ - Refactored `formatTZ()` of `timezone` plugin.
34
+
28
35
  - 3.1.0
29
36
  - Improved accuracy of `parseTZ()` in `timezone` plugin.
30
37
  - Organized some test modules.
31
38
 
32
- - 3.0.3
33
- - Fixed TypeScript types exports in `package.json`.
34
-
35
- - 3.0.2
36
- - Dropped the use of the logical OR assignment operator to support older environments.
37
-
38
39
  ## Usage
39
40
 
40
41
  - ES Modules:
@@ -188,7 +189,7 @@ You can also use the following tokens by importing plugins. See [PLUGINS.md](./P
188
189
 
189
190
  #### Note 1. Comments
190
191
 
191
- 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.
192
193
 
193
194
  ```javascript
194
195
  date.format(new Date(), 'DD-[MM]-YYYY'); // => '02-MM-2015'
@@ -197,7 +198,7 @@ date.format(new Date(), '[DD-[MM]-YYYY]'); // => 'DD-[MM]-YYYY'
197
198
 
198
199
  #### Note 2. Output as UTC
199
200
 
200
- 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).
201
202
 
202
203
  ```javascript
203
204
  date.format(new Date(), 'hh:mm A [GMT]Z'); // => '11:14 PM GMT-0800'
@@ -269,7 +270,7 @@ You can also use the following tokens by importing plugins. See [PLUGINS.md](./P
269
270
 
270
271
  #### Note 1. Invalid Date
271
272
 
272
- 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:
273
274
 
274
275
  ```javascript
275
276
  const today = date.parse('Jam 1 2017', 'MMM D YYYY');
@@ -281,7 +282,7 @@ if (isNaN(today.getTime())) {
281
282
 
282
283
  #### Note 2. Input as UTC
283
284
 
284
- 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).
285
286
 
286
287
  ```javascript
287
288
  date.parse('11:14:05 PM', 'hh:mm:ss A'); // => Jan 1 1970 23:14:05 GMT-0800
@@ -318,9 +319,9 @@ date.parse('11:14:05', 'hh:mm:ss'); // => Jan 1 1970 11:14:05 GMT-0800
318
319
  date.parse('11:14:05 PM', 'hh:mm:ss A'); // => Jan 1 1970 23:14:05 GMT-0800
319
320
  ```
320
321
 
321
- #### Note 6. Token disablement
322
+ #### Note 6. Token invalidation
322
323
 
323
- 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.
324
325
 
325
326
  ```javascript
326
327
  date.parse('12 hours 34 minutes', 'HH hours mm minutes'); // => Invalid Date
@@ -329,7 +330,7 @@ date.parse('12 hours 34 minutes', 'HH [hours] mm [minutes]'); // => Jan 1 1970
329
330
 
330
331
  #### Note 7. Wildcard
331
332
 
332
- 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.
333
334
 
334
335
  ```javascript
335
336
  // This will be an error.
@@ -340,7 +341,7 @@ date.parse('2015/01/02 11:14:05', 'YYYY/MM/DD '); // => Jan 2 2015 00:
340
341
 
341
342
  #### Note 8. Ellipsis
342
343
 
343
- 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:
344
345
 
345
346
  ```javascript
346
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,14 +163,29 @@
168
163
  */
169
164
  proto.format = function (dateObj, arg, utc) {
170
165
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
171
- offset = dateObj.getTimezoneOffset(),
172
- d = ctx.addMinutes(dateObj, utc ? offset : 0),
173
- formatter = ctx._formatter, str = '';
166
+ formatter = ctx._formatter,
167
+ d = (function () {
168
+ if (utc) {
169
+ var u = new Date(dateObj.getTime());
170
+
171
+ u.getFullYear = u.getUTCFullYear;
172
+ u.getMonth = u.getUTCMonth;
173
+ u.getDate = u.getUTCDate;
174
+ u.getHours = u.getUTCHours;
175
+ u.getMinutes = u.getUTCMinutes;
176
+ u.getSeconds = u.getUTCSeconds;
177
+ u.getMilliseconds = u.getUTCMilliseconds;
178
+ u.getDay = u.getUTCDay;
179
+ u.getTimezoneOffset = function () { return 0; };
180
+ return u;
181
+ }
182
+ return dateObj;
183
+ }()),
184
+ comment = /^\[(.*)\]$/, str = '';
174
185
 
175
- d.getTimezoneOffset = function () { return utc ? 0 : offset; };
176
186
  for (var i = 1, len = pattern.length, token; i < len; i++) {
177
187
  token = pattern[i];
178
- 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');
179
189
  }
180
190
  return str;
181
191
  };
@@ -189,33 +199,35 @@
189
199
  */
190
200
  proto.preparse = function (dateString, arg) {
191
201
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
202
+ parser = ctx._parser,
192
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 },
193
- comment = /\[(.*)]/, parser = ctx._parser, offset = 0;
204
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
194
205
 
195
206
  dateString = parser.pre(dateString);
196
- 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++) {
197
208
  token = pattern[i];
209
+ str = dateString.slice(dt._index);
210
+
198
211
  if (parser[token]) {
199
- result = parser[token](dateString.slice(offset), pattern[0]);
212
+ result = parser[token](str, pattern[0]);
200
213
  if (!result.length) {
201
- break;
214
+ break;
202
215
  }
203
- offset += result.length;
204
216
  dt[result.token || token.charAt(0)] = result.value;
217
+ dt._index += result.length;
205
218
  dt._match++;
206
- } else if (token === dateString.charAt(offset) || token === ' ') {
207
- offset++;
208
- } else if (comment.test(token) && !dateString.slice(offset).indexOf(comment.exec(token)[1])) {
209
- offset += token.length - 2;
210
- } else if (token === '...') {
211
- 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;
212
225
  break;
213
226
  } else {
214
227
  break;
215
228
  }
216
229
  }
217
230
  dt.H = dt.H || parser.h12(dt.h, dt.A);
218
- dt._index = offset;
219
231
  dt._length = dateString.length;
220
232
  return dt;
221
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){var i=this||t,u="string"==typeof n?i.compile(n):n,s=e.getTimezoneOffset(),o=i.addMinutes(e,r?s:0),c=i._formatter,a="";o.getTimezoneOffset=function(){return r?0:s};for(var f,d=1,l=u.length;d<l;d++)a+=c[f=u[d]]?c.post(c[f](o,u[0])):f.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,f,d=1,l=i.length;d<l;d++)if(o[a=i[d]]){if(!(f=o[a](e.slice(c),i[0])).length)break;c+=f.length,u[f.token||a.charAt(0)]=f.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(f){var d="function"==typeof f?f:t.locale[f];if(!d)return i;i=d(a);var l=n[i]||{},h=c(u,l.res,!0),M=c(s,l.formatter,!0,h),g=c(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=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,14 +157,29 @@ 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,
165
- offset = dateObj.getTimezoneOffset(),
166
- d = ctx.addMinutes(dateObj, utc ? offset : 0),
167
- formatter = ctx._formatter, str = '';
160
+ formatter = ctx._formatter,
161
+ d = (function () {
162
+ if (utc) {
163
+ var u = new Date(dateObj.getTime());
164
+
165
+ u.getFullYear = u.getUTCFullYear;
166
+ u.getMonth = u.getUTCMonth;
167
+ u.getDate = u.getUTCDate;
168
+ u.getHours = u.getUTCHours;
169
+ u.getMinutes = u.getUTCMinutes;
170
+ u.getSeconds = u.getUTCSeconds;
171
+ u.getMilliseconds = u.getUTCMilliseconds;
172
+ u.getDay = u.getUTCDay;
173
+ u.getTimezoneOffset = function () { return 0; };
174
+ return u;
175
+ }
176
+ return dateObj;
177
+ }()),
178
+ comment = /^\[(.*)\]$/, str = '';
168
179
 
169
- d.getTimezoneOffset = function () { return utc ? 0 : offset; };
170
180
  for (var i = 1, len = pattern.length, token; i < len; i++) {
171
181
  token = pattern[i];
172
- 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');
173
183
  }
174
184
  return str;
175
185
  };
@@ -183,33 +193,35 @@ proto.format = function (dateObj, arg, utc) {
183
193
  */
184
194
  proto.preparse = function (dateString, arg) {
185
195
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
196
+ parser = ctx._parser,
186
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 },
187
- comment = /\[(.*)]/, parser = ctx._parser, offset = 0;
198
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
188
199
 
189
200
  dateString = parser.pre(dateString);
190
- 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++) {
191
202
  token = pattern[i];
203
+ str = dateString.slice(dt._index);
204
+
192
205
  if (parser[token]) {
193
- result = parser[token](dateString.slice(offset), pattern[0]);
206
+ result = parser[token](str, pattern[0]);
194
207
  if (!result.length) {
195
- break;
208
+ break;
196
209
  }
197
- offset += result.length;
198
210
  dt[result.token || token.charAt(0)] = result.value;
211
+ dt._index += result.length;
199
212
  dt._match++;
200
- } else if (token === dateString.charAt(offset) || token === ' ') {
201
- offset++;
202
- } else if (comment.test(token) && !dateString.slice(offset).indexOf(comment.exec(token)[1])) {
203
- offset += token.length - 2;
204
- } else if (token === '...') {
205
- 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;
206
219
  break;
207
220
  } else {
208
221
  break;
209
222
  }
210
223
  }
211
224
  dt.H = dt.H || parser.h12(dt.h, dt.A);
212
- dt._index = offset;
213
225
  dt._length = dateString.length;
214
226
  return dt;
215
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){var i=this||t,u="string"==typeof n?i.compile(n):n,s=e.getTimezoneOffset(),o=i.addMinutes(e,r?s:0),a=i._formatter,c="";o.getTimezoneOffset=function(){return r?0:s};for(var d,f=1,l=u.length;f<l;f++)c+=a[d=u[f]]?a.post(a[d](o,u[0])):d.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),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};
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,14 +157,29 @@ 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,
165
- offset = dateObj.getTimezoneOffset(),
166
- d = ctx.addMinutes(dateObj, utc ? offset : 0),
167
- formatter = ctx._formatter, str = '';
160
+ formatter = ctx._formatter,
161
+ d = (function () {
162
+ if (utc) {
163
+ var u = new Date(dateObj.getTime());
164
+
165
+ u.getFullYear = u.getUTCFullYear;
166
+ u.getMonth = u.getUTCMonth;
167
+ u.getDate = u.getUTCDate;
168
+ u.getHours = u.getUTCHours;
169
+ u.getMinutes = u.getUTCMinutes;
170
+ u.getSeconds = u.getUTCSeconds;
171
+ u.getMilliseconds = u.getUTCMilliseconds;
172
+ u.getDay = u.getUTCDay;
173
+ u.getTimezoneOffset = function () { return 0; };
174
+ return u;
175
+ }
176
+ return dateObj;
177
+ }()),
178
+ comment = /^\[(.*)\]$/, str = '';
168
179
 
169
- d.getTimezoneOffset = function () { return utc ? 0 : offset; };
170
180
  for (var i = 1, len = pattern.length, token; i < len; i++) {
171
181
  token = pattern[i];
172
- 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');
173
183
  }
174
184
  return str;
175
185
  };
@@ -183,33 +193,35 @@ proto.format = function (dateObj, arg, utc) {
183
193
  */
184
194
  proto.preparse = function (dateString, arg) {
185
195
  var ctx = this || date, pattern = typeof arg === 'string' ? ctx.compile(arg) : arg,
196
+ parser = ctx._parser,
186
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 },
187
- comment = /\[(.*)]/, parser = ctx._parser, offset = 0;
198
+ wildcard = ' ', comment = /^\[(.*)\]$/, ellipsis = '...';
188
199
 
189
200
  dateString = parser.pre(dateString);
190
- 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++) {
191
202
  token = pattern[i];
203
+ str = dateString.slice(dt._index);
204
+
192
205
  if (parser[token]) {
193
- result = parser[token](dateString.slice(offset), pattern[0]);
206
+ result = parser[token](str, pattern[0]);
194
207
  if (!result.length) {
195
- break;
208
+ break;
196
209
  }
197
- offset += result.length;
198
210
  dt[result.token || token.charAt(0)] = result.value;
211
+ dt._index += result.length;
199
212
  dt._match++;
200
- } else if (token === dateString.charAt(offset) || token === ' ') {
201
- offset++;
202
- } else if (comment.test(token) && !dateString.slice(offset).indexOf(comment.exec(token)[1])) {
203
- offset += token.length - 2;
204
- } else if (token === '...') {
205
- 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;
206
219
  break;
207
220
  } else {
208
221
  break;
209
222
  }
210
223
  }
211
224
  dt.H = dt.H || parser.h12(dt.h, dt.A);
212
- dt._index = offset;
213
225
  dt._length = dateString.length;
214
226
  return dt;
215
227
  };
@@ -458,14 +458,15 @@ var plugin = function (date, localized_date) {
458
458
  var formatTZ = function (dateObj, arg, timeZone) {
459
459
  options.timeZone = 'UTC';
460
460
  var utcObj = date.parse(new Intl.DateTimeFormat('en-US', options).format(dateObj), pattern);
461
+ utcObj.setMilliseconds(dateObj.getMilliseconds());
461
462
 
462
463
  options.timeZone = timeZone;
463
464
  var dateObj2 = date.parse(new Intl.DateTimeFormat('en-US', options).format(dateObj), pattern);
465
+ dateObj2.setMilliseconds(dateObj.getMilliseconds());
464
466
 
465
- var dateObj3 = date.addMilliseconds(dateObj2, dateObj.getMilliseconds());
467
+ dateObj2.getTimezoneOffset = function () { return (utcObj.getTime() - dateObj2.getTime()) / 60000 | 0; };
466
468
 
467
- dateObj3.getTimezoneOffset = function () { return (utcObj.getTime() - dateObj2.getTime()) / 60000 | 0; };
468
- return localized_date.format(dateObj3, arg);
469
+ return localized_date.format(dateObj2, arg);
469
470
  };
470
471
  var parseTZ = function (dateString, arg, timeZone) {
471
472
  var pattern2 = typeof arg === 'string' ? date.compile(arg) : arg;
@@ -458,14 +458,15 @@ var plugin = function (date, localized_date) {
458
458
  var formatTZ = function (dateObj, arg, timeZone) {
459
459
  options.timeZone = 'UTC';
460
460
  var utcObj = date.parse(new Intl.DateTimeFormat('en-US', options).format(dateObj), pattern);
461
+ utcObj.setMilliseconds(dateObj.getMilliseconds());
461
462
 
462
463
  options.timeZone = timeZone;
463
464
  var dateObj2 = date.parse(new Intl.DateTimeFormat('en-US', options).format(dateObj), pattern);
465
+ dateObj2.setMilliseconds(dateObj.getMilliseconds());
464
466
 
465
- var dateObj3 = date.addMilliseconds(dateObj2, dateObj.getMilliseconds());
467
+ dateObj2.getTimezoneOffset = function () { return (utcObj.getTime() - dateObj2.getTime()) / 60000 | 0; };
466
468
 
467
- dateObj3.getTimezoneOffset = function () { return (utcObj.getTime() - dateObj2.getTime()) / 60000 | 0; };
468
- return localized_date.format(dateObj3, arg);
469
+ return localized_date.format(dateObj2, arg);
469
470
  };
470
471
  var parseTZ = function (dateString, arg, timeZone) {
471
472
  var pattern2 = typeof arg === 'string' ? date.compile(arg) : arg;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "date-and-time",
3
- "version": "3.1.0",
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.4",
56
- "tsd": "^0.30.3"
54
+ "mocha": "^10.4.0",
55
+ "rollup": "^4.17.2",
56
+ "tsd": "^0.31.0"
57
57
  }
58
58
  }
@@ -464,14 +464,15 @@
464
464
  var formatTZ = function (dateObj, arg, timeZone) {
465
465
  options.timeZone = 'UTC';
466
466
  var utcObj = date.parse(new Intl.DateTimeFormat('en-US', options).format(dateObj), pattern);
467
+ utcObj.setMilliseconds(dateObj.getMilliseconds());
467
468
 
468
469
  options.timeZone = timeZone;
469
470
  var dateObj2 = date.parse(new Intl.DateTimeFormat('en-US', options).format(dateObj), pattern);
471
+ dateObj2.setMilliseconds(dateObj.getMilliseconds());
470
472
 
471
- var dateObj3 = date.addMilliseconds(dateObj2, dateObj.getMilliseconds());
473
+ dateObj2.getTimezoneOffset = function () { return (utcObj.getTime() - dateObj2.getTime()) / 60000 | 0; };
472
474
 
473
- dateObj3.getTimezoneOffset = function () { return (utcObj.getTime() - dateObj2.getTime()) / 60000 | 0; };
474
- return localized_date.format(dateObj3, arg);
475
+ return localized_date.format(dateObj2, arg);
475
476
  };
476
477
  var parseTZ = function (dateString, arg, timeZone) {
477
478
  var pattern2 = typeof arg === 'string' ? date.compile(arg) : arg;
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
- ];