@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 +0 -1
- package/dist/cjs/index.cjs +9 -19
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.mjs +9 -19
- package/dist/esm/index.mjs.map +1 -1
- package/dist/iife/index.global.js +9 -19
- package/dist/iife/index.global.js.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
**Timestamp utilities for JavaScript.**
|
|
8
8
|
|
|
9
9
|
[](https://github.com/sapphiredev/utilities/blob/main/LICENSE.md)
|
|
10
|
-
[](https://codecov.io/gh/sapphiredev/utilities)
|
|
11
10
|
[](https://bundlephobia.com/result?p=@sapphire/timestamp)
|
|
12
11
|
[](https://www.npmjs.com/package/@sapphire/timestamp)
|
|
13
12
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -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
|
-
|
|
71
|
-
if (day !== "
|
|
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=
|
|
278
|
+
//# sourceMappingURL=index.cjs.map
|
|
289
279
|
//# sourceMappingURL=index.cjs.map
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/constants.ts","../../src/lib/Timestamp.ts"],"names":["Time"],"mappings":";;;;;;;;;AAAO,IAAK,OAAL,kBAAKA,UAAL;AACN,EAAAA,YAAA,gBAAa,QAAb;AACA,EAAAA,YAAA,iBAAc,QAAd;AACA,EAAAA,YAAA,iBAAc,KAAd;AACA,EAAAA,YAAA,YAAS,OAAT;AACA,EAAAA,YAAA,YAAS,OAAT;AACA,EAAAA,YAAA,UAAO,QAAP;AACA,EAAAA,YAAA,SAAM,SAAN;AACA,EAAAA,YAAA,UAAO,UAAP;AACA,EAAAA,YAAA,WAAQ,UAAR;AACA,EAAAA,YAAA,UAAO,WAAP;AAVW,SAAAA;AAAA,GAAA;AAaL,IAAM,OAAO,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAE1F,IAAM,SAAS,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AAExI,IAAM,SAAS,oBAAI,IAAoB;AAAA,EAC7C,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AAAA,EACP,CAAC,KAAK,CAAC;AACR,CAAC;;;AC/BD,IAAM,iBAAiB,oBAAI,IAA2B;AAAA;AAAA,EAErD,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;AAAA,EACnD,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;AAAA,EACpD,CAAC,OAAO,CAAC,SAAS,OAAO,KAAK,YAAY,CAAC,CAAC;AAAA,EAC5C,CAAC,QAAQ,CAAC,SAAS,OAAO,KAAK,YAAY,CAAC,CAAC;AAAA,EAC7C,CAAC,KAAK,CAAC,SAAS,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC;AAAA,EACjD,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC;AAAA,EAC3C,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EAC7D,CAAC,OAAO,CAAC,SAAS,OAAO,KAAK,SAAS,CAAC,CAAC;AAAA,EACzC,CAAC,QAAQ,CAAC,SAAS,OAAO,KAAK,SAAS,CAAC,CAAC;AAAA,EAC1C,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,QAAQ,CAAC,CAAC;AAAA,EACtC,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EACxD,CAAC,OAAO,CAAC,SAAS,OAAO,KAAK,OAAO,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,YAAY,GAAG,GAAG,CAAC,EAAE,QAAQ,oBAAa,CAAC,CAAC;AAAA,EAChH,CAAC,QAAQ,CAAC,SAAS,OAAO,KAAK,OAAO,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,YAAY,GAAG,GAAG,CAAC,EAAE,QAAQ,oBAAa,CAAC,CAAC;AAAA,EACjH;AAAA,IACC;AAAA,IACA,CAAC,SAAS;AACT,YAAM,MAAM,OAAO,KAAK,QAAQ,CAAC;AACjC,UAAI,QAAQ,QAAQ,IAAI,SAAS,GAAG;AAAG,eAAO,GAAG,GAAG;AACpD,UAAI,QAAQ,QAAQ,IAAI,SAAS,GAAG;AAAG,eAAO,GAAG,GAAG;AACpD,UAAI,QAAQ,QAAQ,IAAI,SAAS,GAAG;AAAG,eAAO,GAAG,GAAG;AACpD,aAAO,GAAG,GAAG;AAAA,IACd;AAAA,EACD;AAAA,EACA,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EAChD,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EACjD,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK,OAAO,CAAC,CAAC;AAAA,EACtC,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,QAAQ,oBAAe,CAAC;AAAA,EACpD,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,QAAQ,CAAC,CAAC;AAAA;AAAA,EAGtC,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,SAAS,CAAC,CAAC;AAAA,EACvC,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EACzD,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,SAAS,IAAI,MAAM,EAAE,CAAC;AAAA,EAClD,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,SAAS,IAAI,MAAM,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EACpE,CAAC,KAAK,CAAC,SAAU,KAAK,SAAS,IAAI,KAAK,OAAO,IAAK;AAAA,EACpD,CAAC,KAAK,CAAC,SAAU,KAAK,SAAS,IAAI,KAAK,OAAO,IAAK;AAAA,EACpD,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,EACzC,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EAC3D,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,EACzC,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EAC3D,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,gBAAgB,CAAC,CAAC;AAAA,EAC9C,CAAC,MAAM,CAAC,SAAS,OAAO,KAAK,gBAAgB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EAChE,CAAC,OAAO,CAAC,SAAS,OAAO,KAAK,gBAAgB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,EACjE,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,MAAM,EAAE,CAAC,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,OAAO,IAAI,EAAE;AAAA,EAC3I;AAAA,IACC;AAAA,IACA,CAAC,SACA,GAAG,OAAO,KAAK,SAAS,IAAI,MAAM,EAAE,CAAC,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAChI,KAAK,SAAS,IAAI,KAAK,OAAO,IAC/B;AAAA,EACF;AAAA,EACA,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,KAAK,YAAY,CAAC,CAAC,EAAE;AAAA,EAC1I,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,KAAK,YAAY,CAAC,CAAC,EAAE;AAAA,EACzH,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK,OAAO,KAAK,YAAY,CAAC,CAAC,EAAE;AAAA,EACvH,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,KAAK,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK,OAAO,KAAK,YAAY,CAAC,CAAC,EAAE;AAAA,EACnI;AAAA,IACC;AAAA,IACA,CAAC,SACA,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK,OAAO,KAAK,YAAY,CAAC,CAAC,IAAI;AAAA,MACvG,KAAK,SAAS,IAAI,MAAM;AAAA,IACzB,CAAC,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,OAAO,IAAI;AAAA,EACvF;AAAA,EACA;AAAA,IACC;AAAA,IACA,CAAC,SACA,GAAG,OAAO,KAAK,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK,OAAO,KAAK,YAAY,CAAC,CAAC,IAAI;AAAA,MACnH,KAAK,SAAS,IAAI,MAAM;AAAA,IACzB,CAAC,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,OAAO,IAAI;AAAA,EACvF;AAAA,EACA;AAAA,IACC;AAAA,IACA,CAAC,SACA,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,KAAK,OAAO,KAAK,SAAS,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK,OAAO,KAAK,YAAY,CAAC,CAAC,IAAI;AAAA,MAC/H,KAAK,SAAS,IAAI,MAAM;AAAA,IACzB,CAAC,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,OAAO,IAAI;AAAA,EACvF;AAAA,EACA;AAAA,IACC;AAAA,IACA,CAAC,SACA,GAAG,KAAK,KAAK,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,KAAK,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK;AAAA,MACxH,KAAK,YAAY;AAAA,IAClB,CAAC,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,EAAE,CAAC,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,OAAO,IAAI;AAAA,EAC7H;AAAA,EACA;AAAA,IACC;AAAA,IACA,CAAC,SAAS;AACT,YAAM,SAAS,KAAK,kBAAkB;AACtC,YAAM,WAAW,UAAU;AAC3B,YAAM,WAAW,KAAK,IAAI,MAAM;AAEhC,aAAO,GAAG,WAAW,MAAM,GAAG,GAAG,OAAO,KAAK,MAAM,WAAW,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,WAAW,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,IAC9H;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA,CAAC,SAAS;AACT,YAAM,SAAS,KAAK,kBAAkB;AACtC,YAAM,WAAW,UAAU;AAC3B,YAAM,WAAW,KAAK,IAAI,MAAM;AAEhC,aAAO,GAAG,WAAW,MAAM,GAAG,GAAG,OAAO,KAAK,MAAM,WAAW,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,WAAW,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,IAC9H;AAAA,EACD;AACD,CAAC;AAaM,IAAM,aAAN,MAAM,WAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBf,YAAY,SAAiB;AAZpC;AAAA;AAAA;AAAA;AAAA,wBAAO;AAKP;AAAA;AAAA;AAAA,wBAAQ;AAQP,SAAK,UAAU;AACf,SAAK,WAAW,WAAU,MAAM,OAAO;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,QAAQ,OAAuB,oBAAI,KAAK,GAAW;AACzD,WAAO,WAAU,QAAQ,KAAK,UAAU,IAAI;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,WAAW,MAA+B;AAChD,WAAO,WAAU,QAAQ,KAAK,UAAU,WAAU,IAAI,IAAI,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,KAAK,SAAuB;AAClC,SAAK,UAAU;AACf,SAAK,WAAW,WAAU,MAAM,OAAO;AACvC,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKO,WAAmB;AACzB,WAAO,KAAK,QAAQ;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,iBAAiB,SAAiB,OAAuB,oBAAI,KAAK,GAAW;AAC1F,WAAO,WAAU,QAAQ,WAAU,MAAM,OAAO,GAAG,IAAI;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,oBAAoB,SAAiB,OAAuB,oBAAI,KAAK,GAAW;AAC7F,WAAO,WAAU,QAAQ,WAAU,MAAM,OAAO,GAAG,WAAU,IAAI,IAAI,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAc,IAAI,OAA+B,oBAAI,KAAK,GAAS;AAClE,WAAO,WAAU,YAAY,IAAI;AACjC,WAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,kBAAkB,IAAI,GAAK;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAe,QAAQ,UAAoC,MAAsC;AAChG,QAAI,SAAS;AACb,UAAM,aAAa,WAAU,YAAY,IAAI;AAC7C,eAAW,EAAE,SAAS,KAAK,KAAK;AAAU,gBAAU,WAAW,eAAe,IAAI,IAAI,EAAG,UAAU;AACnG,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAe,MAAM,SAA2C;AAC/D,UAAM,WAAqC,CAAC;AAC5C,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACxC,UAAI,UAAU;AACd,YAAM,cAAc,QAAQ,CAAC;AAC7B,YAAM,WAAW,OAAO,IAAI,WAAW;AACvC,UAAI,OAAO,aAAa,UAAU;AACjC,mBAAW;AACX,eAAO,QAAQ,IAAI,CAAC,MAAM,eAAe,QAAQ,SAAS;AAAU,qBAAW,QAAQ,EAAE,CAAC;AAC1F,iBAAS,KAAK,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,MAC/C,WAAW,gBAAgB,KAAK;AAC/B,eAAO,IAAI,IAAI,QAAQ,UAAU,QAAQ,IAAI,CAAC,MAAM;AAAK,qBAAW,QAAQ,EAAE,CAAC;AAC/E;AACA,iBAAS,KAAK,EAAE,MAAM,WAAW,SAAS,WAAW,IAAI,CAAC;AAAA,MAC3D,OAAO;AACN,mBAAW;AACX,eAAO,IAAI,IAAI,QAAQ,UAAU,CAAC,OAAO,IAAI,QAAQ,IAAI,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM;AAAK,qBAAW,QAAQ,EAAE,CAAC;AAC9G,iBAAS,KAAK,EAAE,MAAM,WAAW,SAAS,QAAQ,CAAC;AAAA,MACpD;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAe,YAAY,MAA4B;AACtD,WAAO,gBAAgB,OAAO,OAAO,IAAI,KAAK,IAAI;AAAA,EACnD;AACD;AA3IuB;AAAhB,IAAM,YAAN","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"]}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -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
|
-
|
|
69
|
-
if (day !== "
|
|
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=
|
|
272
|
+
//# sourceMappingURL=index.mjs.map
|
|
283
273
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -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
|
-
|
|
72
|
-
if (day !== "
|
|
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=
|
|
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.
|
|
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
|
|
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": "^
|
|
67
|
-
"@vitest/coverage-v8": "^1.
|
|
68
|
-
"tsup": "^8.0
|
|
69
|
-
"tsx": "^4.
|
|
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": "
|
|
73
|
-
"vitest": "^1.
|
|
72
|
+
"typescript": "~5.4.5",
|
|
73
|
+
"vitest": "^2.1.3"
|
|
74
74
|
}
|
|
75
75
|
}
|