@sapphire/timestamp 1.0.4-next.a3da0ab0 → 1.0.4-next.a6c8ccda

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
@@ -7,7 +7,6 @@
7
7
  **Timestamp utilities for JavaScript.**
8
8
 
9
9
  [![GitHub](https://img.shields.io/github/license/sapphiredev/utilities)](https://github.com/sapphiredev/utilities/blob/main/LICENSE.md)
10
- [![codecov](https://codecov.io/gh/sapphiredev/utilities/branch/main/graph/badge.svg?token=OEGIV6RFDO)](https://codecov.io/gh/sapphiredev/utilities)
11
10
  [![npm bundle size](https://img.shields.io/bundlephobia/min/@sapphire/timestamp?logo=webpack&style=flat-square)](https://bundlephobia.com/result?p=@sapphire/timestamp)
12
11
  [![npm](https://img.shields.io/npm/v/@sapphire/timestamp?color=crimson&logo=npm&style=flat-square)](https://www.npmjs.com/package/@sapphire/timestamp)
13
12
 
@@ -3,10 +3,7 @@
3
3
  var __defProp = Object.defineProperty;
4
4
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
5
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
- var __publicField = (obj, key, value) => {
7
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
- return value;
9
- };
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
7
 
11
8
  // src/lib/constants.ts
12
9
  var Time = /* @__PURE__ */ ((Time2) => {
@@ -66,12 +63,9 @@ var tokenResolvers = /* @__PURE__ */ new Map([
66
63
  "d",
67
64
  (time) => {
68
65
  const day = String(time.getDate());
69
- if (day !== "11" && day.endsWith("1"))
70
- return `${day}st`;
71
- if (day !== "12" && day.endsWith("2"))
72
- return `${day}nd`;
73
- if (day !== "13" && day.endsWith("3"))
74
- return `${day}rd`;
66
+ if (day !== "11" && day.endsWith("1")) return `${day}st`;
67
+ if (day !== "12" && day.endsWith("2")) return `${day}nd`;
68
+ if (day !== "13" && day.endsWith("3")) return `${day}rd`;
75
69
  return `${day}th`;
76
70
  }
77
71
  ],
@@ -234,8 +228,7 @@ var _Timestamp = class _Timestamp {
234
228
  static display(template, time) {
235
229
  let output = "";
236
230
  const parsedTime = _Timestamp.resolveDate(time);
237
- for (const { content, type } of template)
238
- output += content || tokenResolvers.get(type)(parsedTime);
231
+ for (const { content, type } of template) output += content || tokenResolvers.get(type)(parsedTime);
239
232
  return output;
240
233
  }
241
234
  /**
@@ -251,18 +244,15 @@ var _Timestamp = class _Timestamp {
251
244
  const tokenMax = tokens.get(currentChar);
252
245
  if (typeof tokenMax === "number") {
253
246
  current += currentChar;
254
- while (pattern[i + 1] === currentChar && current.length < tokenMax)
255
- current += pattern[++i];
247
+ while (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];
256
248
  template.push({ type: current, content: null });
257
249
  } else if (currentChar === "[") {
258
- while (i + 1 < pattern.length && pattern[i + 1] !== "]")
259
- current += pattern[++i];
250
+ while (i + 1 < pattern.length && pattern[i + 1] !== "]") current += pattern[++i];
260
251
  i++;
261
252
  template.push({ type: "literal", content: current || "[" });
262
253
  } else {
263
254
  current += currentChar;
264
- while (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== "[")
265
- current += pattern[++i];
255
+ while (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== "[") current += pattern[++i];
266
256
  template.push({ type: "literal", content: current });
267
257
  }
268
258
  }
@@ -285,5 +275,5 @@ exports.Timestamp = Timestamp;
285
275
  exports.days = days;
286
276
  exports.months = months;
287
277
  exports.tokens = tokens;
288
- //# sourceMappingURL=out.js.map
278
+ //# sourceMappingURL=index.cjs.map
289
279
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/constants.ts","../../src/lib/Timestamp.ts"],"names":["Time"],"mappings":"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","sourcesContent":["export enum Time {\n\tNanosecond = 1 / 1_000_000,\n\tMicrosecond = 1 / 1000,\n\tMillisecond = 1,\n\tSecond = 1000,\n\tMinute = Second * 60,\n\tHour = Minute * 60,\n\tDay = Hour * 24,\n\tWeek = Day * 7,\n\tMonth = Day * (365 / 12),\n\tYear = Day * 365\n}\n\nexport const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport const tokens = new Map<string, number>([\n\t['Y', 4],\n\t['Q', 1],\n\t['M', 4],\n\t['D', 4],\n\t['d', 4],\n\t['X', 1],\n\t['x', 1],\n\t['H', 2],\n\t['h', 2],\n\t['a', 1],\n\t['A', 1],\n\t['m', 2],\n\t['s', 2],\n\t['S', 3],\n\t['Z', 2],\n\t['l', 4],\n\t['L', 4],\n\t['T', 1],\n\t['t', 1]\n]);\n","import { days, months, Time, tokens } from './constants';\n\ninterface TokenResolver {\n\t(time: Date): string;\n}\n\nconst tokenResolvers = new Map<string, TokenResolver>([\n\t// Dates\n\t['Y', (time) => String(time.getFullYear()).slice(2)],\n\t['YY', (time) => String(time.getFullYear()).slice(2)],\n\t['YYY', (time) => String(time.getFullYear())],\n\t['YYYY', (time) => String(time.getFullYear())],\n\t['Q', (time) => String((time.getMonth() + 1) / 3)],\n\t['M', (time) => String(time.getMonth() + 1)],\n\t['MM', (time) => String(time.getMonth() + 1).padStart(2, '0')],\n\t['MMM', (time) => months[time.getMonth()]],\n\t['MMMM', (time) => months[time.getMonth()]],\n\t['D', (time) => String(time.getDate())],\n\t['DD', (time) => String(time.getDate()).padStart(2, '0')],\n\t['DDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t['DDDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t[\n\t\t'd',\n\t\t(time) => {\n\t\t\tconst day = String(time.getDate());\n\t\t\tif (day !== '11' && day.endsWith('1')) return `${day}st`;\n\t\t\tif (day !== '12' && day.endsWith('2')) return `${day}nd`;\n\t\t\tif (day !== '13' && day.endsWith('3')) return `${day}rd`;\n\t\t\treturn `${day}th`;\n\t\t}\n\t],\n\t['dd', (time) => days[time.getDay()].slice(0, 2)],\n\t['ddd', (time) => days[time.getDay()].slice(0, 3)],\n\t['dddd', (time) => days[time.getDay()]],\n\t['X', (time) => String(time.valueOf() / Time.Second)],\n\t['x', (time) => String(time.valueOf())],\n\n\t// Locales\n\t['H', (time) => String(time.getHours())],\n\t['HH', (time) => String(time.getHours()).padStart(2, '0')],\n\t['h', (time) => String(time.getHours() % 12 || 12)],\n\t['hh', (time) => String(time.getHours() % 12 || 12).padStart(2, '0')],\n\t['a', (time) => (time.getHours() < 12 ? 'am' : 'pm')],\n\t['A', (time) => (time.getHours() < 12 ? 'AM' : 'PM')],\n\t['m', (time) => String(time.getMinutes())],\n\t['mm', (time) => String(time.getMinutes()).padStart(2, '0')],\n\t['s', (time) => String(time.getSeconds())],\n\t['ss', (time) => String(time.getSeconds()).padStart(2, '0')],\n\t['S', (time) => String(time.getMilliseconds())],\n\t['SS', (time) => String(time.getMilliseconds()).padStart(2, '0')],\n\t['SSS', (time) => String(time.getMilliseconds()).padStart(3, '0')],\n\t['T', (time) => `${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`],\n\t[\n\t\t't',\n\t\t(time) =>\n\t\t\t`${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')}:${String(time.getSeconds()).padStart(2, '0')} ${\n\t\t\t\ttime.getHours() < 12 ? 'am' : 'pm'\n\t\t\t}`\n\t],\n\t['L', (time) => `${String(time.getMonth() + 1).padStart(2, '0')}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['l', (time) => `${String(time.getMonth() + 1)}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['LL', (time) => `${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t['ll', (time) => `${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t[\n\t\t'LLL',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'lll',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'LLLL',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()]}, ${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'llll',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()].slice(0, 3)} ${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(\n\t\t\t\ttime.getFullYear()\n\t\t\t)} ${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'Z',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t],\n\t[\n\t\t'ZZ',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t]\n]);\n/* eslint-enable max-len */\n\nexport type TimeResolvable = Date | number | string;\n\nexport interface TimestampTemplateEntry {\n\ttype: string;\n\tcontent: string | null;\n}\n\n/**\n * Timestamp class, parses the pattern once, displays the desired Date or UNIX timestamp with the selected pattern.\n */\nexport class Timestamp {\n\t/**\n\t * The raw pattern\n\t * @since 1.0.0\n\t */\n\tpublic pattern: string;\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tprivate template: TimestampTemplateEntry[];\n\n\t/**\n\t * Starts a new Timestamp and parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tpublic constructor(pattern: string) {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display\n\t */\n\tpublic display(time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(this.template, time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display in utc\n\t */\n\tpublic displayUTC(time?: TimeResolvable): string {\n\t\treturn Timestamp.display(this.template, Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Edits the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The new pattern for this instance\n\t * @chainable\n\t */\n\tpublic edit(pattern: string): this {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Defines the toString behavior of Timestamp.\n\t */\n\tpublic toString(): string {\n\t\treturn this.display();\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayUTCArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Creates a UTC Date object to work with.\n\t * @since 1.0.0\n\t * @param time The date to convert to utc\n\t */\n\tpublic static utc(time: Date | number | string = new Date()): Date {\n\t\ttime = Timestamp.resolveDate(time);\n\t\treturn new Date(time.valueOf() + time.getTimezoneOffset() * 60000);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param template The pattern to parse\n\t * @param time The time to display\n\t */\n\tprivate static display(template: TimestampTemplateEntry[], time: Date | number | string): string {\n\t\tlet output = '';\n\t\tconst parsedTime = Timestamp.resolveDate(time);\n\t\tfor (const { content, type } of template) output += content || tokenResolvers.get(type)!(parsedTime);\n\t\treturn output;\n\t}\n\n\t/**\n\t * Parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tprivate static parse(pattern: string): TimestampTemplateEntry[] {\n\t\tconst template: TimestampTemplateEntry[] = [];\n\t\tfor (let i = 0; i < pattern.length; i++) {\n\t\t\tlet current = '';\n\t\t\tconst currentChar = pattern[i];\n\t\t\tconst tokenMax = tokens.get(currentChar);\n\t\t\tif (typeof tokenMax === 'number') {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];\n\t\t\t\ttemplate.push({ type: current, content: null });\n\t\t\t} else if (currentChar === '[') {\n\t\t\t\twhile (i + 1 < pattern.length && pattern[i + 1] !== ']') current += pattern[++i];\n\t\t\t\ti++;\n\t\t\t\ttemplate.push({ type: 'literal', content: current || '[' });\n\t\t\t} else {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== '[') current += pattern[++i];\n\t\t\t\ttemplate.push({ type: 'literal', content: current });\n\t\t\t}\n\t\t}\n\n\t\treturn template;\n\t}\n\n\t/**\n\t * Resolves a date.\n\t * @since 1.0.0\n\t * @param time The time to parse\n\t */\n\tprivate static resolveDate(time: TimeResolvable): Date {\n\t\treturn time instanceof Date ? time : new Date(time);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/constants.ts","../../src/lib/Timestamp.ts"],"names":["Time"],"mappings":"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","file":"index.cjs","sourcesContent":["export enum Time {\n\tNanosecond = 1 / 1_000_000,\n\tMicrosecond = 1 / 1000,\n\tMillisecond = 1,\n\tSecond = 1000,\n\tMinute = Second * 60,\n\tHour = Minute * 60,\n\tDay = Hour * 24,\n\tWeek = Day * 7,\n\tMonth = Day * (365 / 12),\n\tYear = Day * 365\n}\n\nexport const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport const tokens = new Map<string, number>([\n\t['Y', 4],\n\t['Q', 1],\n\t['M', 4],\n\t['D', 4],\n\t['d', 4],\n\t['X', 1],\n\t['x', 1],\n\t['H', 2],\n\t['h', 2],\n\t['a', 1],\n\t['A', 1],\n\t['m', 2],\n\t['s', 2],\n\t['S', 3],\n\t['Z', 2],\n\t['l', 4],\n\t['L', 4],\n\t['T', 1],\n\t['t', 1]\n]);\n","import { days, months, Time, tokens } from './constants';\n\ninterface TokenResolver {\n\t(time: Date): string;\n}\n\nconst tokenResolvers = new Map<string, TokenResolver>([\n\t// Dates\n\t['Y', (time) => String(time.getFullYear()).slice(2)],\n\t['YY', (time) => String(time.getFullYear()).slice(2)],\n\t['YYY', (time) => String(time.getFullYear())],\n\t['YYYY', (time) => String(time.getFullYear())],\n\t['Q', (time) => String((time.getMonth() + 1) / 3)],\n\t['M', (time) => String(time.getMonth() + 1)],\n\t['MM', (time) => String(time.getMonth() + 1).padStart(2, '0')],\n\t['MMM', (time) => months[time.getMonth()]],\n\t['MMMM', (time) => months[time.getMonth()]],\n\t['D', (time) => String(time.getDate())],\n\t['DD', (time) => String(time.getDate()).padStart(2, '0')],\n\t['DDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t['DDDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t[\n\t\t'd',\n\t\t(time) => {\n\t\t\tconst day = String(time.getDate());\n\t\t\tif (day !== '11' && day.endsWith('1')) return `${day}st`;\n\t\t\tif (day !== '12' && day.endsWith('2')) return `${day}nd`;\n\t\t\tif (day !== '13' && day.endsWith('3')) return `${day}rd`;\n\t\t\treturn `${day}th`;\n\t\t}\n\t],\n\t['dd', (time) => days[time.getDay()].slice(0, 2)],\n\t['ddd', (time) => days[time.getDay()].slice(0, 3)],\n\t['dddd', (time) => days[time.getDay()]],\n\t['X', (time) => String(time.valueOf() / Time.Second)],\n\t['x', (time) => String(time.valueOf())],\n\n\t// Locales\n\t['H', (time) => String(time.getHours())],\n\t['HH', (time) => String(time.getHours()).padStart(2, '0')],\n\t['h', (time) => String(time.getHours() % 12 || 12)],\n\t['hh', (time) => String(time.getHours() % 12 || 12).padStart(2, '0')],\n\t['a', (time) => (time.getHours() < 12 ? 'am' : 'pm')],\n\t['A', (time) => (time.getHours() < 12 ? 'AM' : 'PM')],\n\t['m', (time) => String(time.getMinutes())],\n\t['mm', (time) => String(time.getMinutes()).padStart(2, '0')],\n\t['s', (time) => String(time.getSeconds())],\n\t['ss', (time) => String(time.getSeconds()).padStart(2, '0')],\n\t['S', (time) => String(time.getMilliseconds())],\n\t['SS', (time) => String(time.getMilliseconds()).padStart(2, '0')],\n\t['SSS', (time) => String(time.getMilliseconds()).padStart(3, '0')],\n\t['T', (time) => `${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`],\n\t[\n\t\t't',\n\t\t(time) =>\n\t\t\t`${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')}:${String(time.getSeconds()).padStart(2, '0')} ${\n\t\t\t\ttime.getHours() < 12 ? 'am' : 'pm'\n\t\t\t}`\n\t],\n\t['L', (time) => `${String(time.getMonth() + 1).padStart(2, '0')}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['l', (time) => `${String(time.getMonth() + 1)}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['LL', (time) => `${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t['ll', (time) => `${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t[\n\t\t'LLL',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'lll',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'LLLL',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()]}, ${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'llll',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()].slice(0, 3)} ${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(\n\t\t\t\ttime.getFullYear()\n\t\t\t)} ${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'Z',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t],\n\t[\n\t\t'ZZ',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t]\n]);\n/* eslint-enable max-len */\n\nexport type TimeResolvable = Date | number | string;\n\nexport interface TimestampTemplateEntry {\n\ttype: string;\n\tcontent: string | null;\n}\n\n/**\n * Timestamp class, parses the pattern once, displays the desired Date or UNIX timestamp with the selected pattern.\n */\nexport class Timestamp {\n\t/**\n\t * The raw pattern\n\t * @since 1.0.0\n\t */\n\tpublic pattern: string;\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tprivate template: TimestampTemplateEntry[];\n\n\t/**\n\t * Starts a new Timestamp and parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tpublic constructor(pattern: string) {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display\n\t */\n\tpublic display(time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(this.template, time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display in utc\n\t */\n\tpublic displayUTC(time?: TimeResolvable): string {\n\t\treturn Timestamp.display(this.template, Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Edits the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The new pattern for this instance\n\t * @chainable\n\t */\n\tpublic edit(pattern: string): this {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Defines the toString behavior of Timestamp.\n\t */\n\tpublic toString(): string {\n\t\treturn this.display();\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayUTCArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Creates a UTC Date object to work with.\n\t * @since 1.0.0\n\t * @param time The date to convert to utc\n\t */\n\tpublic static utc(time: Date | number | string = new Date()): Date {\n\t\ttime = Timestamp.resolveDate(time);\n\t\treturn new Date(time.valueOf() + time.getTimezoneOffset() * 60000);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param template The pattern to parse\n\t * @param time The time to display\n\t */\n\tprivate static display(template: TimestampTemplateEntry[], time: Date | number | string): string {\n\t\tlet output = '';\n\t\tconst parsedTime = Timestamp.resolveDate(time);\n\t\tfor (const { content, type } of template) output += content || tokenResolvers.get(type)!(parsedTime);\n\t\treturn output;\n\t}\n\n\t/**\n\t * Parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tprivate static parse(pattern: string): TimestampTemplateEntry[] {\n\t\tconst template: TimestampTemplateEntry[] = [];\n\t\tfor (let i = 0; i < pattern.length; i++) {\n\t\t\tlet current = '';\n\t\t\tconst currentChar = pattern[i];\n\t\t\tconst tokenMax = tokens.get(currentChar);\n\t\t\tif (typeof tokenMax === 'number') {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];\n\t\t\t\ttemplate.push({ type: current, content: null });\n\t\t\t} else if (currentChar === '[') {\n\t\t\t\twhile (i + 1 < pattern.length && pattern[i + 1] !== ']') current += pattern[++i];\n\t\t\t\ti++;\n\t\t\t\ttemplate.push({ type: 'literal', content: current || '[' });\n\t\t\t} else {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== '[') current += pattern[++i];\n\t\t\t\ttemplate.push({ type: 'literal', content: current });\n\t\t\t}\n\t\t}\n\n\t\treturn template;\n\t}\n\n\t/**\n\t * Resolves a date.\n\t * @since 1.0.0\n\t * @param time The time to parse\n\t */\n\tprivate static resolveDate(time: TimeResolvable): Date {\n\t\treturn time instanceof Date ? time : new Date(time);\n\t}\n}\n"]}
@@ -1,10 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
7
- };
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
5
 
9
6
  // src/lib/constants.ts
10
7
  var Time = /* @__PURE__ */ ((Time2) => {
@@ -64,12 +61,9 @@ var tokenResolvers = /* @__PURE__ */ new Map([
64
61
  "d",
65
62
  (time) => {
66
63
  const day = String(time.getDate());
67
- if (day !== "11" && day.endsWith("1"))
68
- return `${day}st`;
69
- if (day !== "12" && day.endsWith("2"))
70
- return `${day}nd`;
71
- if (day !== "13" && day.endsWith("3"))
72
- return `${day}rd`;
64
+ if (day !== "11" && day.endsWith("1")) return `${day}st`;
65
+ if (day !== "12" && day.endsWith("2")) return `${day}nd`;
66
+ if (day !== "13" && day.endsWith("3")) return `${day}rd`;
73
67
  return `${day}th`;
74
68
  }
75
69
  ],
@@ -232,8 +226,7 @@ var _Timestamp = class _Timestamp {
232
226
  static display(template, time) {
233
227
  let output = "";
234
228
  const parsedTime = _Timestamp.resolveDate(time);
235
- for (const { content, type } of template)
236
- output += content || tokenResolvers.get(type)(parsedTime);
229
+ for (const { content, type } of template) output += content || tokenResolvers.get(type)(parsedTime);
237
230
  return output;
238
231
  }
239
232
  /**
@@ -249,18 +242,15 @@ var _Timestamp = class _Timestamp {
249
242
  const tokenMax = tokens.get(currentChar);
250
243
  if (typeof tokenMax === "number") {
251
244
  current += currentChar;
252
- while (pattern[i + 1] === currentChar && current.length < tokenMax)
253
- current += pattern[++i];
245
+ while (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];
254
246
  template.push({ type: current, content: null });
255
247
  } else if (currentChar === "[") {
256
- while (i + 1 < pattern.length && pattern[i + 1] !== "]")
257
- current += pattern[++i];
248
+ while (i + 1 < pattern.length && pattern[i + 1] !== "]") current += pattern[++i];
258
249
  i++;
259
250
  template.push({ type: "literal", content: current || "[" });
260
251
  } else {
261
252
  current += currentChar;
262
- while (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== "[")
263
- current += pattern[++i];
253
+ while (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== "[") current += pattern[++i];
264
254
  template.push({ type: "literal", content: current });
265
255
  }
266
256
  }
@@ -279,5 +269,5 @@ __name(_Timestamp, "Timestamp");
279
269
  var Timestamp = _Timestamp;
280
270
 
281
271
  export { Time, Timestamp, days, months, tokens };
282
- //# sourceMappingURL=out.js.map
272
+ //# sourceMappingURL=index.mjs.map
283
273
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/constants.ts","../../src/lib/Timestamp.ts"],"names":["Time"],"mappings":"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","sourcesContent":["export enum Time {\n\tNanosecond = 1 / 1_000_000,\n\tMicrosecond = 1 / 1000,\n\tMillisecond = 1,\n\tSecond = 1000,\n\tMinute = Second * 60,\n\tHour = Minute * 60,\n\tDay = Hour * 24,\n\tWeek = Day * 7,\n\tMonth = Day * (365 / 12),\n\tYear = Day * 365\n}\n\nexport const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport const tokens = new Map<string, number>([\n\t['Y', 4],\n\t['Q', 1],\n\t['M', 4],\n\t['D', 4],\n\t['d', 4],\n\t['X', 1],\n\t['x', 1],\n\t['H', 2],\n\t['h', 2],\n\t['a', 1],\n\t['A', 1],\n\t['m', 2],\n\t['s', 2],\n\t['S', 3],\n\t['Z', 2],\n\t['l', 4],\n\t['L', 4],\n\t['T', 1],\n\t['t', 1]\n]);\n","import { days, months, Time, tokens } from './constants';\n\ninterface TokenResolver {\n\t(time: Date): string;\n}\n\nconst tokenResolvers = new Map<string, TokenResolver>([\n\t// Dates\n\t['Y', (time) => String(time.getFullYear()).slice(2)],\n\t['YY', (time) => String(time.getFullYear()).slice(2)],\n\t['YYY', (time) => String(time.getFullYear())],\n\t['YYYY', (time) => String(time.getFullYear())],\n\t['Q', (time) => String((time.getMonth() + 1) / 3)],\n\t['M', (time) => String(time.getMonth() + 1)],\n\t['MM', (time) => String(time.getMonth() + 1).padStart(2, '0')],\n\t['MMM', (time) => months[time.getMonth()]],\n\t['MMMM', (time) => months[time.getMonth()]],\n\t['D', (time) => String(time.getDate())],\n\t['DD', (time) => String(time.getDate()).padStart(2, '0')],\n\t['DDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t['DDDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t[\n\t\t'd',\n\t\t(time) => {\n\t\t\tconst day = String(time.getDate());\n\t\t\tif (day !== '11' && day.endsWith('1')) return `${day}st`;\n\t\t\tif (day !== '12' && day.endsWith('2')) return `${day}nd`;\n\t\t\tif (day !== '13' && day.endsWith('3')) return `${day}rd`;\n\t\t\treturn `${day}th`;\n\t\t}\n\t],\n\t['dd', (time) => days[time.getDay()].slice(0, 2)],\n\t['ddd', (time) => days[time.getDay()].slice(0, 3)],\n\t['dddd', (time) => days[time.getDay()]],\n\t['X', (time) => String(time.valueOf() / Time.Second)],\n\t['x', (time) => String(time.valueOf())],\n\n\t// Locales\n\t['H', (time) => String(time.getHours())],\n\t['HH', (time) => String(time.getHours()).padStart(2, '0')],\n\t['h', (time) => String(time.getHours() % 12 || 12)],\n\t['hh', (time) => String(time.getHours() % 12 || 12).padStart(2, '0')],\n\t['a', (time) => (time.getHours() < 12 ? 'am' : 'pm')],\n\t['A', (time) => (time.getHours() < 12 ? 'AM' : 'PM')],\n\t['m', (time) => String(time.getMinutes())],\n\t['mm', (time) => String(time.getMinutes()).padStart(2, '0')],\n\t['s', (time) => String(time.getSeconds())],\n\t['ss', (time) => String(time.getSeconds()).padStart(2, '0')],\n\t['S', (time) => String(time.getMilliseconds())],\n\t['SS', (time) => String(time.getMilliseconds()).padStart(2, '0')],\n\t['SSS', (time) => String(time.getMilliseconds()).padStart(3, '0')],\n\t['T', (time) => `${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`],\n\t[\n\t\t't',\n\t\t(time) =>\n\t\t\t`${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')}:${String(time.getSeconds()).padStart(2, '0')} ${\n\t\t\t\ttime.getHours() < 12 ? 'am' : 'pm'\n\t\t\t}`\n\t],\n\t['L', (time) => `${String(time.getMonth() + 1).padStart(2, '0')}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['l', (time) => `${String(time.getMonth() + 1)}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['LL', (time) => `${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t['ll', (time) => `${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t[\n\t\t'LLL',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'lll',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'LLLL',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()]}, ${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'llll',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()].slice(0, 3)} ${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(\n\t\t\t\ttime.getFullYear()\n\t\t\t)} ${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'Z',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t],\n\t[\n\t\t'ZZ',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t]\n]);\n/* eslint-enable max-len */\n\nexport type TimeResolvable = Date | number | string;\n\nexport interface TimestampTemplateEntry {\n\ttype: string;\n\tcontent: string | null;\n}\n\n/**\n * Timestamp class, parses the pattern once, displays the desired Date or UNIX timestamp with the selected pattern.\n */\nexport class Timestamp {\n\t/**\n\t * The raw pattern\n\t * @since 1.0.0\n\t */\n\tpublic pattern: string;\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tprivate template: TimestampTemplateEntry[];\n\n\t/**\n\t * Starts a new Timestamp and parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tpublic constructor(pattern: string) {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display\n\t */\n\tpublic display(time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(this.template, time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display in utc\n\t */\n\tpublic displayUTC(time?: TimeResolvable): string {\n\t\treturn Timestamp.display(this.template, Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Edits the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The new pattern for this instance\n\t * @chainable\n\t */\n\tpublic edit(pattern: string): this {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Defines the toString behavior of Timestamp.\n\t */\n\tpublic toString(): string {\n\t\treturn this.display();\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayUTCArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Creates a UTC Date object to work with.\n\t * @since 1.0.0\n\t * @param time The date to convert to utc\n\t */\n\tpublic static utc(time: Date | number | string = new Date()): Date {\n\t\ttime = Timestamp.resolveDate(time);\n\t\treturn new Date(time.valueOf() + time.getTimezoneOffset() * 60000);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param template The pattern to parse\n\t * @param time The time to display\n\t */\n\tprivate static display(template: TimestampTemplateEntry[], time: Date | number | string): string {\n\t\tlet output = '';\n\t\tconst parsedTime = Timestamp.resolveDate(time);\n\t\tfor (const { content, type } of template) output += content || tokenResolvers.get(type)!(parsedTime);\n\t\treturn output;\n\t}\n\n\t/**\n\t * Parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tprivate static parse(pattern: string): TimestampTemplateEntry[] {\n\t\tconst template: TimestampTemplateEntry[] = [];\n\t\tfor (let i = 0; i < pattern.length; i++) {\n\t\t\tlet current = '';\n\t\t\tconst currentChar = pattern[i];\n\t\t\tconst tokenMax = tokens.get(currentChar);\n\t\t\tif (typeof tokenMax === 'number') {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];\n\t\t\t\ttemplate.push({ type: current, content: null });\n\t\t\t} else if (currentChar === '[') {\n\t\t\t\twhile (i + 1 < pattern.length && pattern[i + 1] !== ']') current += pattern[++i];\n\t\t\t\ti++;\n\t\t\t\ttemplate.push({ type: 'literal', content: current || '[' });\n\t\t\t} else {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== '[') current += pattern[++i];\n\t\t\t\ttemplate.push({ type: 'literal', content: current });\n\t\t\t}\n\t\t}\n\n\t\treturn template;\n\t}\n\n\t/**\n\t * Resolves a date.\n\t * @since 1.0.0\n\t * @param time The time to parse\n\t */\n\tprivate static resolveDate(time: TimeResolvable): Date {\n\t\treturn time instanceof Date ? time : new Date(time);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/constants.ts","../../src/lib/Timestamp.ts"],"names":["Time"],"mappings":"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","file":"index.mjs","sourcesContent":["export enum Time {\n\tNanosecond = 1 / 1_000_000,\n\tMicrosecond = 1 / 1000,\n\tMillisecond = 1,\n\tSecond = 1000,\n\tMinute = Second * 60,\n\tHour = Minute * 60,\n\tDay = Hour * 24,\n\tWeek = Day * 7,\n\tMonth = Day * (365 / 12),\n\tYear = Day * 365\n}\n\nexport const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport const tokens = new Map<string, number>([\n\t['Y', 4],\n\t['Q', 1],\n\t['M', 4],\n\t['D', 4],\n\t['d', 4],\n\t['X', 1],\n\t['x', 1],\n\t['H', 2],\n\t['h', 2],\n\t['a', 1],\n\t['A', 1],\n\t['m', 2],\n\t['s', 2],\n\t['S', 3],\n\t['Z', 2],\n\t['l', 4],\n\t['L', 4],\n\t['T', 1],\n\t['t', 1]\n]);\n","import { days, months, Time, tokens } from './constants';\n\ninterface TokenResolver {\n\t(time: Date): string;\n}\n\nconst tokenResolvers = new Map<string, TokenResolver>([\n\t// Dates\n\t['Y', (time) => String(time.getFullYear()).slice(2)],\n\t['YY', (time) => String(time.getFullYear()).slice(2)],\n\t['YYY', (time) => String(time.getFullYear())],\n\t['YYYY', (time) => String(time.getFullYear())],\n\t['Q', (time) => String((time.getMonth() + 1) / 3)],\n\t['M', (time) => String(time.getMonth() + 1)],\n\t['MM', (time) => String(time.getMonth() + 1).padStart(2, '0')],\n\t['MMM', (time) => months[time.getMonth()]],\n\t['MMMM', (time) => months[time.getMonth()]],\n\t['D', (time) => String(time.getDate())],\n\t['DD', (time) => String(time.getDate()).padStart(2, '0')],\n\t['DDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t['DDDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t[\n\t\t'd',\n\t\t(time) => {\n\t\t\tconst day = String(time.getDate());\n\t\t\tif (day !== '11' && day.endsWith('1')) return `${day}st`;\n\t\t\tif (day !== '12' && day.endsWith('2')) return `${day}nd`;\n\t\t\tif (day !== '13' && day.endsWith('3')) return `${day}rd`;\n\t\t\treturn `${day}th`;\n\t\t}\n\t],\n\t['dd', (time) => days[time.getDay()].slice(0, 2)],\n\t['ddd', (time) => days[time.getDay()].slice(0, 3)],\n\t['dddd', (time) => days[time.getDay()]],\n\t['X', (time) => String(time.valueOf() / Time.Second)],\n\t['x', (time) => String(time.valueOf())],\n\n\t// Locales\n\t['H', (time) => String(time.getHours())],\n\t['HH', (time) => String(time.getHours()).padStart(2, '0')],\n\t['h', (time) => String(time.getHours() % 12 || 12)],\n\t['hh', (time) => String(time.getHours() % 12 || 12).padStart(2, '0')],\n\t['a', (time) => (time.getHours() < 12 ? 'am' : 'pm')],\n\t['A', (time) => (time.getHours() < 12 ? 'AM' : 'PM')],\n\t['m', (time) => String(time.getMinutes())],\n\t['mm', (time) => String(time.getMinutes()).padStart(2, '0')],\n\t['s', (time) => String(time.getSeconds())],\n\t['ss', (time) => String(time.getSeconds()).padStart(2, '0')],\n\t['S', (time) => String(time.getMilliseconds())],\n\t['SS', (time) => String(time.getMilliseconds()).padStart(2, '0')],\n\t['SSS', (time) => String(time.getMilliseconds()).padStart(3, '0')],\n\t['T', (time) => `${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`],\n\t[\n\t\t't',\n\t\t(time) =>\n\t\t\t`${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')}:${String(time.getSeconds()).padStart(2, '0')} ${\n\t\t\t\ttime.getHours() < 12 ? 'am' : 'pm'\n\t\t\t}`\n\t],\n\t['L', (time) => `${String(time.getMonth() + 1).padStart(2, '0')}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['l', (time) => `${String(time.getMonth() + 1)}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['LL', (time) => `${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t['ll', (time) => `${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t[\n\t\t'LLL',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'lll',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'LLLL',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()]}, ${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'llll',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()].slice(0, 3)} ${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(\n\t\t\t\ttime.getFullYear()\n\t\t\t)} ${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'Z',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t],\n\t[\n\t\t'ZZ',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t]\n]);\n/* eslint-enable max-len */\n\nexport type TimeResolvable = Date | number | string;\n\nexport interface TimestampTemplateEntry {\n\ttype: string;\n\tcontent: string | null;\n}\n\n/**\n * Timestamp class, parses the pattern once, displays the desired Date or UNIX timestamp with the selected pattern.\n */\nexport class Timestamp {\n\t/**\n\t * The raw pattern\n\t * @since 1.0.0\n\t */\n\tpublic pattern: string;\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tprivate template: TimestampTemplateEntry[];\n\n\t/**\n\t * Starts a new Timestamp and parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tpublic constructor(pattern: string) {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display\n\t */\n\tpublic display(time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(this.template, time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display in utc\n\t */\n\tpublic displayUTC(time?: TimeResolvable): string {\n\t\treturn Timestamp.display(this.template, Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Edits the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The new pattern for this instance\n\t * @chainable\n\t */\n\tpublic edit(pattern: string): this {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Defines the toString behavior of Timestamp.\n\t */\n\tpublic toString(): string {\n\t\treturn this.display();\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayUTCArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Creates a UTC Date object to work with.\n\t * @since 1.0.0\n\t * @param time The date to convert to utc\n\t */\n\tpublic static utc(time: Date | number | string = new Date()): Date {\n\t\ttime = Timestamp.resolveDate(time);\n\t\treturn new Date(time.valueOf() + time.getTimezoneOffset() * 60000);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param template The pattern to parse\n\t * @param time The time to display\n\t */\n\tprivate static display(template: TimestampTemplateEntry[], time: Date | number | string): string {\n\t\tlet output = '';\n\t\tconst parsedTime = Timestamp.resolveDate(time);\n\t\tfor (const { content, type } of template) output += content || tokenResolvers.get(type)!(parsedTime);\n\t\treturn output;\n\t}\n\n\t/**\n\t * Parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tprivate static parse(pattern: string): TimestampTemplateEntry[] {\n\t\tconst template: TimestampTemplateEntry[] = [];\n\t\tfor (let i = 0; i < pattern.length; i++) {\n\t\t\tlet current = '';\n\t\t\tconst currentChar = pattern[i];\n\t\t\tconst tokenMax = tokens.get(currentChar);\n\t\t\tif (typeof tokenMax === 'number') {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];\n\t\t\t\ttemplate.push({ type: current, content: null });\n\t\t\t} else if (currentChar === '[') {\n\t\t\t\twhile (i + 1 < pattern.length && pattern[i + 1] !== ']') current += pattern[++i];\n\t\t\t\ti++;\n\t\t\t\ttemplate.push({ type: 'literal', content: current || '[' });\n\t\t\t} else {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== '[') current += pattern[++i];\n\t\t\t\ttemplate.push({ type: 'literal', content: current });\n\t\t\t}\n\t\t}\n\n\t\treturn template;\n\t}\n\n\t/**\n\t * Resolves a date.\n\t * @since 1.0.0\n\t * @param time The time to parse\n\t */\n\tprivate static resolveDate(time: TimeResolvable): Date {\n\t\treturn time instanceof Date ? time : new Date(time);\n\t}\n}\n"]}
@@ -4,10 +4,7 @@ var SapphireTimestamp = (function (exports) {
4
4
  var __defProp = Object.defineProperty;
5
5
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
6
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
- var __publicField = (obj, key, value) => {
8
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
9
- return value;
10
- };
7
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
8
 
12
9
  // src/lib/constants.ts
13
10
  var Time = /* @__PURE__ */ ((Time2) => {
@@ -67,12 +64,9 @@ var SapphireTimestamp = (function (exports) {
67
64
  "d",
68
65
  (time) => {
69
66
  const day = String(time.getDate());
70
- if (day !== "11" && day.endsWith("1"))
71
- return `${day}st`;
72
- if (day !== "12" && day.endsWith("2"))
73
- return `${day}nd`;
74
- if (day !== "13" && day.endsWith("3"))
75
- return `${day}rd`;
67
+ if (day !== "11" && day.endsWith("1")) return `${day}st`;
68
+ if (day !== "12" && day.endsWith("2")) return `${day}nd`;
69
+ if (day !== "13" && day.endsWith("3")) return `${day}rd`;
76
70
  return `${day}th`;
77
71
  }
78
72
  ],
@@ -235,8 +229,7 @@ var SapphireTimestamp = (function (exports) {
235
229
  static display(template, time) {
236
230
  let output = "";
237
231
  const parsedTime = _Timestamp.resolveDate(time);
238
- for (const { content, type } of template)
239
- output += content || tokenResolvers.get(type)(parsedTime);
232
+ for (const { content, type } of template) output += content || tokenResolvers.get(type)(parsedTime);
240
233
  return output;
241
234
  }
242
235
  /**
@@ -252,18 +245,15 @@ var SapphireTimestamp = (function (exports) {
252
245
  const tokenMax = tokens.get(currentChar);
253
246
  if (typeof tokenMax === "number") {
254
247
  current += currentChar;
255
- while (pattern[i + 1] === currentChar && current.length < tokenMax)
256
- current += pattern[++i];
248
+ while (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];
257
249
  template.push({ type: current, content: null });
258
250
  } else if (currentChar === "[") {
259
- while (i + 1 < pattern.length && pattern[i + 1] !== "]")
260
- current += pattern[++i];
251
+ while (i + 1 < pattern.length && pattern[i + 1] !== "]") current += pattern[++i];
261
252
  i++;
262
253
  template.push({ type: "literal", content: current || "[" });
263
254
  } else {
264
255
  current += currentChar;
265
- while (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== "[")
266
- current += pattern[++i];
256
+ while (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== "[") current += pattern[++i];
267
257
  template.push({ type: "literal", content: current });
268
258
  }
269
259
  }
@@ -290,5 +280,5 @@ var SapphireTimestamp = (function (exports) {
290
280
  return exports;
291
281
 
292
282
  })({});
293
- //# sourceMappingURL=out.js.map
283
+ //# sourceMappingURL=index.global.js.map
294
284
  //# sourceMappingURL=index.global.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/constants.ts","../../src/lib/Timestamp.ts"],"names":["Time"],"mappings":"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","sourcesContent":["export enum Time {\n\tNanosecond = 1 / 1_000_000,\n\tMicrosecond = 1 / 1000,\n\tMillisecond = 1,\n\tSecond = 1000,\n\tMinute = Second * 60,\n\tHour = Minute * 60,\n\tDay = Hour * 24,\n\tWeek = Day * 7,\n\tMonth = Day * (365 / 12),\n\tYear = Day * 365\n}\n\nexport const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport const tokens = new Map<string, number>([\n\t['Y', 4],\n\t['Q', 1],\n\t['M', 4],\n\t['D', 4],\n\t['d', 4],\n\t['X', 1],\n\t['x', 1],\n\t['H', 2],\n\t['h', 2],\n\t['a', 1],\n\t['A', 1],\n\t['m', 2],\n\t['s', 2],\n\t['S', 3],\n\t['Z', 2],\n\t['l', 4],\n\t['L', 4],\n\t['T', 1],\n\t['t', 1]\n]);\n","import { days, months, Time, tokens } from './constants';\n\ninterface TokenResolver {\n\t(time: Date): string;\n}\n\nconst tokenResolvers = new Map<string, TokenResolver>([\n\t// Dates\n\t['Y', (time) => String(time.getFullYear()).slice(2)],\n\t['YY', (time) => String(time.getFullYear()).slice(2)],\n\t['YYY', (time) => String(time.getFullYear())],\n\t['YYYY', (time) => String(time.getFullYear())],\n\t['Q', (time) => String((time.getMonth() + 1) / 3)],\n\t['M', (time) => String(time.getMonth() + 1)],\n\t['MM', (time) => String(time.getMonth() + 1).padStart(2, '0')],\n\t['MMM', (time) => months[time.getMonth()]],\n\t['MMMM', (time) => months[time.getMonth()]],\n\t['D', (time) => String(time.getDate())],\n\t['DD', (time) => String(time.getDate()).padStart(2, '0')],\n\t['DDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t['DDDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t[\n\t\t'd',\n\t\t(time) => {\n\t\t\tconst day = String(time.getDate());\n\t\t\tif (day !== '11' && day.endsWith('1')) return `${day}st`;\n\t\t\tif (day !== '12' && day.endsWith('2')) return `${day}nd`;\n\t\t\tif (day !== '13' && day.endsWith('3')) return `${day}rd`;\n\t\t\treturn `${day}th`;\n\t\t}\n\t],\n\t['dd', (time) => days[time.getDay()].slice(0, 2)],\n\t['ddd', (time) => days[time.getDay()].slice(0, 3)],\n\t['dddd', (time) => days[time.getDay()]],\n\t['X', (time) => String(time.valueOf() / Time.Second)],\n\t['x', (time) => String(time.valueOf())],\n\n\t// Locales\n\t['H', (time) => String(time.getHours())],\n\t['HH', (time) => String(time.getHours()).padStart(2, '0')],\n\t['h', (time) => String(time.getHours() % 12 || 12)],\n\t['hh', (time) => String(time.getHours() % 12 || 12).padStart(2, '0')],\n\t['a', (time) => (time.getHours() < 12 ? 'am' : 'pm')],\n\t['A', (time) => (time.getHours() < 12 ? 'AM' : 'PM')],\n\t['m', (time) => String(time.getMinutes())],\n\t['mm', (time) => String(time.getMinutes()).padStart(2, '0')],\n\t['s', (time) => String(time.getSeconds())],\n\t['ss', (time) => String(time.getSeconds()).padStart(2, '0')],\n\t['S', (time) => String(time.getMilliseconds())],\n\t['SS', (time) => String(time.getMilliseconds()).padStart(2, '0')],\n\t['SSS', (time) => String(time.getMilliseconds()).padStart(3, '0')],\n\t['T', (time) => `${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`],\n\t[\n\t\t't',\n\t\t(time) =>\n\t\t\t`${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')}:${String(time.getSeconds()).padStart(2, '0')} ${\n\t\t\t\ttime.getHours() < 12 ? 'am' : 'pm'\n\t\t\t}`\n\t],\n\t['L', (time) => `${String(time.getMonth() + 1).padStart(2, '0')}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['l', (time) => `${String(time.getMonth() + 1)}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['LL', (time) => `${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t['ll', (time) => `${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t[\n\t\t'LLL',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'lll',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'LLLL',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()]}, ${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'llll',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()].slice(0, 3)} ${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(\n\t\t\t\ttime.getFullYear()\n\t\t\t)} ${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'Z',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t],\n\t[\n\t\t'ZZ',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t]\n]);\n/* eslint-enable max-len */\n\nexport type TimeResolvable = Date | number | string;\n\nexport interface TimestampTemplateEntry {\n\ttype: string;\n\tcontent: string | null;\n}\n\n/**\n * Timestamp class, parses the pattern once, displays the desired Date or UNIX timestamp with the selected pattern.\n */\nexport class Timestamp {\n\t/**\n\t * The raw pattern\n\t * @since 1.0.0\n\t */\n\tpublic pattern: string;\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tprivate template: TimestampTemplateEntry[];\n\n\t/**\n\t * Starts a new Timestamp and parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tpublic constructor(pattern: string) {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display\n\t */\n\tpublic display(time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(this.template, time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display in utc\n\t */\n\tpublic displayUTC(time?: TimeResolvable): string {\n\t\treturn Timestamp.display(this.template, Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Edits the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The new pattern for this instance\n\t * @chainable\n\t */\n\tpublic edit(pattern: string): this {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Defines the toString behavior of Timestamp.\n\t */\n\tpublic toString(): string {\n\t\treturn this.display();\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayUTCArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Creates a UTC Date object to work with.\n\t * @since 1.0.0\n\t * @param time The date to convert to utc\n\t */\n\tpublic static utc(time: Date | number | string = new Date()): Date {\n\t\ttime = Timestamp.resolveDate(time);\n\t\treturn new Date(time.valueOf() + time.getTimezoneOffset() * 60000);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param template The pattern to parse\n\t * @param time The time to display\n\t */\n\tprivate static display(template: TimestampTemplateEntry[], time: Date | number | string): string {\n\t\tlet output = '';\n\t\tconst parsedTime = Timestamp.resolveDate(time);\n\t\tfor (const { content, type } of template) output += content || tokenResolvers.get(type)!(parsedTime);\n\t\treturn output;\n\t}\n\n\t/**\n\t * Parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tprivate static parse(pattern: string): TimestampTemplateEntry[] {\n\t\tconst template: TimestampTemplateEntry[] = [];\n\t\tfor (let i = 0; i < pattern.length; i++) {\n\t\t\tlet current = '';\n\t\t\tconst currentChar = pattern[i];\n\t\t\tconst tokenMax = tokens.get(currentChar);\n\t\t\tif (typeof tokenMax === 'number') {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];\n\t\t\t\ttemplate.push({ type: current, content: null });\n\t\t\t} else if (currentChar === '[') {\n\t\t\t\twhile (i + 1 < pattern.length && pattern[i + 1] !== ']') current += pattern[++i];\n\t\t\t\ti++;\n\t\t\t\ttemplate.push({ type: 'literal', content: current || '[' });\n\t\t\t} else {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== '[') current += pattern[++i];\n\t\t\t\ttemplate.push({ type: 'literal', content: current });\n\t\t\t}\n\t\t}\n\n\t\treturn template;\n\t}\n\n\t/**\n\t * Resolves a date.\n\t * @since 1.0.0\n\t * @param time The time to parse\n\t */\n\tprivate static resolveDate(time: TimeResolvable): Date {\n\t\treturn time instanceof Date ? time : new Date(time);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/constants.ts","../../src/lib/Timestamp.ts"],"names":["Time"],"mappings":"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","file":"index.global.js","sourcesContent":["export enum Time {\n\tNanosecond = 1 / 1_000_000,\n\tMicrosecond = 1 / 1000,\n\tMillisecond = 1,\n\tSecond = 1000,\n\tMinute = Second * 60,\n\tHour = Minute * 60,\n\tDay = Hour * 24,\n\tWeek = Day * 7,\n\tMonth = Day * (365 / 12),\n\tYear = Day * 365\n}\n\nexport const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport const tokens = new Map<string, number>([\n\t['Y', 4],\n\t['Q', 1],\n\t['M', 4],\n\t['D', 4],\n\t['d', 4],\n\t['X', 1],\n\t['x', 1],\n\t['H', 2],\n\t['h', 2],\n\t['a', 1],\n\t['A', 1],\n\t['m', 2],\n\t['s', 2],\n\t['S', 3],\n\t['Z', 2],\n\t['l', 4],\n\t['L', 4],\n\t['T', 1],\n\t['t', 1]\n]);\n","import { days, months, Time, tokens } from './constants';\n\ninterface TokenResolver {\n\t(time: Date): string;\n}\n\nconst tokenResolvers = new Map<string, TokenResolver>([\n\t// Dates\n\t['Y', (time) => String(time.getFullYear()).slice(2)],\n\t['YY', (time) => String(time.getFullYear()).slice(2)],\n\t['YYY', (time) => String(time.getFullYear())],\n\t['YYYY', (time) => String(time.getFullYear())],\n\t['Q', (time) => String((time.getMonth() + 1) / 3)],\n\t['M', (time) => String(time.getMonth() + 1)],\n\t['MM', (time) => String(time.getMonth() + 1).padStart(2, '0')],\n\t['MMM', (time) => months[time.getMonth()]],\n\t['MMMM', (time) => months[time.getMonth()]],\n\t['D', (time) => String(time.getDate())],\n\t['DD', (time) => String(time.getDate()).padStart(2, '0')],\n\t['DDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t['DDDD', (time) => String(Math.floor((time.getTime() - new Date(time.getFullYear(), 0, 0).getTime()) / Time.Day))],\n\t[\n\t\t'd',\n\t\t(time) => {\n\t\t\tconst day = String(time.getDate());\n\t\t\tif (day !== '11' && day.endsWith('1')) return `${day}st`;\n\t\t\tif (day !== '12' && day.endsWith('2')) return `${day}nd`;\n\t\t\tif (day !== '13' && day.endsWith('3')) return `${day}rd`;\n\t\t\treturn `${day}th`;\n\t\t}\n\t],\n\t['dd', (time) => days[time.getDay()].slice(0, 2)],\n\t['ddd', (time) => days[time.getDay()].slice(0, 3)],\n\t['dddd', (time) => days[time.getDay()]],\n\t['X', (time) => String(time.valueOf() / Time.Second)],\n\t['x', (time) => String(time.valueOf())],\n\n\t// Locales\n\t['H', (time) => String(time.getHours())],\n\t['HH', (time) => String(time.getHours()).padStart(2, '0')],\n\t['h', (time) => String(time.getHours() % 12 || 12)],\n\t['hh', (time) => String(time.getHours() % 12 || 12).padStart(2, '0')],\n\t['a', (time) => (time.getHours() < 12 ? 'am' : 'pm')],\n\t['A', (time) => (time.getHours() < 12 ? 'AM' : 'PM')],\n\t['m', (time) => String(time.getMinutes())],\n\t['mm', (time) => String(time.getMinutes()).padStart(2, '0')],\n\t['s', (time) => String(time.getSeconds())],\n\t['ss', (time) => String(time.getSeconds()).padStart(2, '0')],\n\t['S', (time) => String(time.getMilliseconds())],\n\t['SS', (time) => String(time.getMilliseconds()).padStart(2, '0')],\n\t['SSS', (time) => String(time.getMilliseconds()).padStart(3, '0')],\n\t['T', (time) => `${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`],\n\t[\n\t\t't',\n\t\t(time) =>\n\t\t\t`${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')}:${String(time.getSeconds()).padStart(2, '0')} ${\n\t\t\t\ttime.getHours() < 12 ? 'am' : 'pm'\n\t\t\t}`\n\t],\n\t['L', (time) => `${String(time.getMonth() + 1).padStart(2, '0')}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['l', (time) => `${String(time.getMonth() + 1)}/${String(time.getDate()).padStart(2, '0')}/${String(time.getFullYear())}`],\n\t['LL', (time) => `${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t['ll', (time) => `${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())}`],\n\t[\n\t\t'LLL',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'lll',\n\t\t(time) =>\n\t\t\t`${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'LLLL',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()]}, ${months[time.getMonth()]} ${String(time.getDate()).padStart(2, '0')}, ${String(time.getFullYear())} ${String(\n\t\t\t\ttime.getHours() % 12 || 12\n\t\t\t)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'llll',\n\t\t(time) =>\n\t\t\t`${days[time.getDay()].slice(0, 3)} ${months[time.getMonth()].slice(0, 3)} ${String(time.getDate()).padStart(2, '0')}, ${String(\n\t\t\t\ttime.getFullYear()\n\t\t\t)} ${String(time.getHours() % 12 || 12)}:${String(time.getMinutes()).padStart(2, '0')} ${time.getHours() < 12 ? 'AM' : 'PM'}`\n\t],\n\t[\n\t\t'Z',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t],\n\t[\n\t\t'ZZ',\n\t\t(time) => {\n\t\t\tconst offset = time.getTimezoneOffset();\n\t\t\tconst unsigned = offset >= 0;\n\t\t\tconst absolute = Math.abs(offset);\n\t\t\t/* istanbul ignore next: whether it's signed or unsigned, depends on where the machine is, I cannot control this. */\n\t\t\treturn `${unsigned ? '+' : '-'}${String(Math.floor(absolute / 60)).padStart(2, '0')}:${String(absolute % 60).padStart(2, '0')}`;\n\t\t}\n\t]\n]);\n/* eslint-enable max-len */\n\nexport type TimeResolvable = Date | number | string;\n\nexport interface TimestampTemplateEntry {\n\ttype: string;\n\tcontent: string | null;\n}\n\n/**\n * Timestamp class, parses the pattern once, displays the desired Date or UNIX timestamp with the selected pattern.\n */\nexport class Timestamp {\n\t/**\n\t * The raw pattern\n\t * @since 1.0.0\n\t */\n\tpublic pattern: string;\n\n\t/**\n\t * @since 1.0.0\n\t */\n\tprivate template: TimestampTemplateEntry[];\n\n\t/**\n\t * Starts a new Timestamp and parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tpublic constructor(pattern: string) {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display\n\t */\n\tpublic display(time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(this.template, time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param time The time to display in utc\n\t */\n\tpublic displayUTC(time?: TimeResolvable): string {\n\t\treturn Timestamp.display(this.template, Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Edits the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The new pattern for this instance\n\t * @chainable\n\t */\n\tpublic edit(pattern: string): this {\n\t\tthis.pattern = pattern;\n\t\tthis.template = Timestamp.parse(pattern);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Defines the toString behavior of Timestamp.\n\t */\n\tpublic toString(): string {\n\t\treturn this.display();\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), time);\n\t}\n\n\t/**\n\t * Display the current date utc with the current pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t * @param time The time to display\n\t */\n\tpublic static displayUTCArbitrary(pattern: string, time: TimeResolvable = new Date()): string {\n\t\treturn Timestamp.display(Timestamp.parse(pattern), Timestamp.utc(time));\n\t}\n\n\t/**\n\t * Creates a UTC Date object to work with.\n\t * @since 1.0.0\n\t * @param time The date to convert to utc\n\t */\n\tpublic static utc(time: Date | number | string = new Date()): Date {\n\t\ttime = Timestamp.resolveDate(time);\n\t\treturn new Date(time.valueOf() + time.getTimezoneOffset() * 60000);\n\t}\n\n\t/**\n\t * Display the current date with the current pattern.\n\t * @since 1.0.0\n\t * @param template The pattern to parse\n\t * @param time The time to display\n\t */\n\tprivate static display(template: TimestampTemplateEntry[], time: Date | number | string): string {\n\t\tlet output = '';\n\t\tconst parsedTime = Timestamp.resolveDate(time);\n\t\tfor (const { content, type } of template) output += content || tokenResolvers.get(type)!(parsedTime);\n\t\treturn output;\n\t}\n\n\t/**\n\t * Parses the pattern.\n\t * @since 1.0.0\n\t * @param pattern The pattern to parse\n\t */\n\tprivate static parse(pattern: string): TimestampTemplateEntry[] {\n\t\tconst template: TimestampTemplateEntry[] = [];\n\t\tfor (let i = 0; i < pattern.length; i++) {\n\t\t\tlet current = '';\n\t\t\tconst currentChar = pattern[i];\n\t\t\tconst tokenMax = tokens.get(currentChar);\n\t\t\tif (typeof tokenMax === 'number') {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (pattern[i + 1] === currentChar && current.length < tokenMax) current += pattern[++i];\n\t\t\t\ttemplate.push({ type: current, content: null });\n\t\t\t} else if (currentChar === '[') {\n\t\t\t\twhile (i + 1 < pattern.length && pattern[i + 1] !== ']') current += pattern[++i];\n\t\t\t\ti++;\n\t\t\t\ttemplate.push({ type: 'literal', content: current || '[' });\n\t\t\t} else {\n\t\t\t\tcurrent += currentChar;\n\t\t\t\twhile (i + 1 < pattern.length && !tokens.has(pattern[i + 1]) && pattern[i + 1] !== '[') current += pattern[++i];\n\t\t\t\ttemplate.push({ type: 'literal', content: current });\n\t\t\t}\n\t\t}\n\n\t\treturn template;\n\t}\n\n\t/**\n\t * Resolves a date.\n\t * @since 1.0.0\n\t * @param time The time to parse\n\t */\n\tprivate static resolveDate(time: TimeResolvable): Date {\n\t\treturn time instanceof Date ? time : new Date(time);\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapphire/timestamp",
3
- "version": "1.0.4-next.a3da0ab0",
3
+ "version": "1.0.4-next.a6c8ccda",
4
4
  "description": "A timestamp utility library for JavaScript.",
5
5
  "author": "@sapphire",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "prepack": "yarn build",
32
32
  "bump": "cliff-jumper",
33
33
  "check-update": "cliff-jumper --dry-run",
34
- "gen-index": "tsx ../../scripts/gen-index.cts -w timestamp"
34
+ "gen-index": "tsx ../../scripts/gen-index.cts timestamp --write"
35
35
  },
36
36
  "repository": {
37
37
  "type": "git",
@@ -63,13 +63,13 @@
63
63
  "access": "public"
64
64
  },
65
65
  "devDependencies": {
66
- "@favware/cliff-jumper": "^4.0.2",
67
- "@vitest/coverage-v8": "^1.6.0",
68
- "tsup": "^8.0.2",
69
- "tsx": "^4.11.0",
66
+ "@favware/cliff-jumper": "^5.0.0",
67
+ "@vitest/coverage-v8": "^2.1.3",
68
+ "tsup": "^8.3.0",
69
+ "tsx": "^4.19.1",
70
70
  "typedoc": "^0.25.13",
71
71
  "typedoc-json-parser": "^10.0.0",
72
- "typescript": "^5.4.5",
73
- "vitest": "^1.6.0"
72
+ "typescript": "~5.4.5",
73
+ "vitest": "^2.1.3"
74
74
  }
75
75
  }