dtg-js 1.0.0 → 1.1.1

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
@@ -11,7 +11,7 @@ npm install dtg-js
11
11
  ### Usage
12
12
 
13
13
  ```js
14
- const { toBase60, toJSDate } = require("dtg-js");
14
+ import { toBase60, toJSDate } = from "dtg-js";
15
15
 
16
16
  console.log(toBase60(new Date()));
17
17
 
package/index.js CHANGED
@@ -1,52 +1,38 @@
1
- const toJSDate = (base60) => {
2
- if (!/^[0-9A-Za-x]{7}$/.test(base60)) {
3
- throw new Error("It\'s not a valid base 60 string");
4
- }
5
-
6
- // prettier-ignore
7
- const table = [
1
+ // prettier-ignore
2
+ const TABLE = Array.of(
8
3
  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
9
4
  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
10
5
  'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
11
6
  'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
12
7
  'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
13
8
  'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x'
14
- ];
9
+ );
15
10
 
16
- const mem = [];
17
- for (let char of base60) {
18
- mem.push(table.indexOf(char));
11
+ export const toJSDate = (base60) => {
12
+ if (!/^[0-9A-Za-x]{7}$/.test(base60)) {
13
+ throw new Error("It\'s not a valid base 60 string");
19
14
  }
20
15
 
16
+ const mem = base60.split("").map((char) => TABLE.indexOf(char));
21
17
  return new Date(
22
18
  Date.UTC(mem[0] * 60 + mem[1], mem[2], mem[3] + 1, mem[4], mem[5], mem[6]),
23
19
  );
24
20
  };
25
21
 
26
- const toBase60 = (datetime) => {
27
- if ((!datetime) instanceof Date) {
22
+ export const toBase60 = (datetime) => {
23
+ if (!(datetime instanceof Date)) {
28
24
  throw new Error('"datetime" is not a valid Date object');
29
25
  }
30
26
 
31
- // prettier-ignore
32
- const table = [
33
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
34
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
35
- 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
36
- 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
37
- 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
38
- 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x'
39
- ];
40
-
41
- return (
42
- table[Math.floor(datetime.getUTCFullYear() / 60)] +
43
- table[datetime.getUTCFullYear() % 60] +
44
- table[datetime.getUTCMonth()] +
45
- table[datetime.getUTCDate() - 1] +
46
- table[datetime.getUTCHours()] +
47
- table[datetime.getUTCMinutes()] +
48
- table[datetime.getUTCSeconds()]
49
- );
27
+ return [
28
+ Math.floor(datetime.getUTCFullYear() / 60),
29
+ datetime.getUTCFullYear() % 60,
30
+ datetime.getUTCMonth(),
31
+ datetime.getUTCDate() - 1,
32
+ datetime.getUTCHours(),
33
+ datetime.getUTCMinutes(),
34
+ datetime.getUTCSeconds(),
35
+ ]
36
+ .map((num) => TABLE[num])
37
+ .join("");
50
38
  };
51
-
52
- module.exports = { toBase60, toJSDate };
package/package.json CHANGED
@@ -1,9 +1,15 @@
1
1
  {
2
2
  "name": "dtg-js",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "main": "index.js",
5
+ "type": "module",
6
+ "engines": {
7
+ "node": ">= 20.0.0"
8
+ },
5
9
  "scripts": {
6
- "test": "jest"
10
+ "prettier:check": "prettier --check .",
11
+ "prettier:fix": "prettier --write .",
12
+ "test": "vitest run"
7
13
  },
8
14
  "keywords": [
9
15
  "datetime"
@@ -12,7 +18,7 @@
12
18
  "license": "MIT",
13
19
  "description": "This library implements a date representation in base 60",
14
20
  "devDependencies": {
15
- "jest": "29.7.0",
16
- "prettier": "3.5.3"
21
+ "prettier": "3.8.1",
22
+ "vitest": "4.0.18"
17
23
  }
18
24
  }
@@ -1,13 +0,0 @@
1
- const { toBase60, toJSDate } = require("../index");
2
-
3
- test("convert datetime to base 60", () => {
4
- const datetime = new Date(Date.UTC(2025, 4, 22, 10, 15, 13));
5
- expect(toBase60(datetime)).toBe("Xj4LAFD");
6
- });
7
-
8
- test("convert base 60 to datetime", () => {
9
- const base60 = "Xj4LAFD";
10
- expect(toJSDate(base60).toString()).toBe(
11
- new Date(Date.UTC(2025, 4, 22, 10, 15, 13)).toString(),
12
- );
13
- });