From 35a4ae7b689ca165bc81e9ce2cb487f32b458e08 Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis Date: Fri, 21 Apr 2023 09:57:09 +0200 Subject: [PATCH] Upgrade (#1) --- .github/workflows/publish.yml | 18 ++ .github/workflows/test.yml | 21 ++ .gitignore | 12 +- .npmignore | 3 - .npmrc | 2 + .vscode/launch.json | 18 ++ .vscode/settings.json | 12 +- .vscode/tasks.json | 8 +- LICENSE.md | 7 + readme.markdown => README.md | 4 +- package-lock.json | 364 ++++------------------------------ package.json | 35 ++-- src/main.ts | 2 +- src/msecs.spec.ts | 30 +++ test.sh | 6 - tsconfig.json | 13 +- tsconfig.module.json | 11 - tslint.json | 9 - 18 files changed, 184 insertions(+), 391 deletions(-) create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/test.yml delete mode 100644 .npmignore create mode 100644 .npmrc create mode 100644 .vscode/launch.json create mode 100644 LICENSE.md rename readme.markdown => README.md (79%) create mode 100644 src/msecs.spec.ts delete mode 100755 test.sh delete mode 100644 tsconfig.module.json delete mode 100644 tslint.json diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..5a6c022 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,18 @@ +on: + push: + tags: + - v* + +jobs: + + publish-npm: + runs-on: ubuntu-latest + container: node:18 + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + steps: + - uses: actions/checkout@v3 + - run: echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' >> .npmrc + - run: npm ci + - run: npm version $GITHUB_REF_NAME + - run: npm publish diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..a514c1d --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,21 @@ +on: + - push + - pull_request + +jobs: + + test-unit: + runs-on: ubuntu-latest + container: node:18 + steps: + - uses: actions/checkout@v3 + - run: npm ci + - run: npm test + + test-audit: + runs-on: ubuntu-latest + container: node:18 + steps: + - uses: actions/checkout@v3 + - run: npm ci + - run: npm audit diff --git a/.gitignore b/.gitignore index afde15a..d15eef3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ .* -*.log + /node_modules/ -/node/ -/module/ -/types/ +/out/ + +!.gitignore +!.npmrc + +!.vscode/ +!.github/ diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 1317eca..0000000 --- a/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -.* -*.log -/node_modules/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..6d1b75b --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +commit-hooks=false +git-tag-version=false diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..3426df7 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "run file", + "program": "${file}", + "args": [], + "cwd": "${workspaceFolder}", + "sourceMaps": true, + "outFiles": [ + "${workspaceFolder}/out/**/*.js" + ], + "preLaunchTask": "watch" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 0f9cbed..038487a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,9 +2,13 @@ { "typescript.tsdk": "node_modules/typescript/lib", "editor.formatOnSave": true, - "tslint.autoFixOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll": true, + "source.organizeImports": true + }, "editor.rulers": [ - 80, - 120 - ] + 100, + ], + "javascript.preferences.quoteStyle": "double", + "typescript.preferences.quoteStyle": "double", } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index e159c7d..e8cd4c6 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,10 +2,12 @@ "version": "2.0.0", "tasks": [ { - "type": "npm", - "script": "compile", + "type": "typescript", + "label": "watch", + "tsconfig": "tsconfig.json", + "option": "watch", "problemMatcher": [ - "$tsc" + "$tsc-watch" ], "group": { "kind": "build", diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..3c80c05 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,7 @@ +ISC License + +Copyright 2018 LuvDaSun Software B.V. + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/readme.markdown b/README.md similarity index 79% rename from readme.markdown rename to README.md index a6db390..78ef796 100644 --- a/readme.markdown +++ b/README.md @@ -8,12 +8,12 @@ This "library" provides the following constants: - day = 24 * hour; - week = 7 * day; -So you can do things like +So you can easy to read math on your dates! ```javascript import {day, week} from "msecs"; const now = new Date(); const tomorrow = new Date(now + day); -const midnight = new Date(Math.floor(now / day) + 1 * day); const inTwoWeeks = new Date(now + 2 * week); +const midnight = new Date(now - now % day + 1 * day); ``` \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ec93945..a258420 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,337 +1,49 @@ { "name": "msecs", - "version": "1.0.0", - "lockfileVersion": 1, + "version": "0.0.0", + "lockfileVersion": 2, "requires": true, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "packages": { + "": { + "name": "msecs", + "version": "0.0.0", + "license": "ISC", + "devDependencies": { + "@types/node": "^18.15.13", + "typescript": "^5.0.4" + } + }, + "node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - } - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" + "engines": { + "node": ">=12.20" } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + } + }, + "dependencies": { + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", "dev": true }, - "tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" - }, - "tslint": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", - "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.3.0", - "commander": "2.13.0", - "diff": "3.4.0", - "glob": "7.1.2", - "js-yaml": "3.10.0", - "minimatch": "3.0.4", - "resolve": "1.5.0", - "semver": "5.5.0", - "tslib": "1.9.0", - "tsutils": "2.21.0" - } - }, - "tsutils": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.21.0.tgz", - "integrity": "sha512-zlOHTYtTwvTiKxUyAU8wiKzPpAgwZrGjb7AY18VUlxuCgBiTMVorIl5HjrCT8V64Hm34RI1BZITJMVQpBLMxVg==", - "dev": true, - "requires": { - "tslib": "1.9.0" - } - }, "typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.1.tgz", - "integrity": "sha512-bqB1yS6o9TNA9ZC/MJxM0FZzPnZdtHj0xWK/IZ5khzVqdpGul/R/EIiHRgFXlwTD7PSIaYVnGKq1QgMCu2mnqw==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true } } diff --git a/package.json b/package.json index a234d9e..68cdf24 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,26 @@ { "name": "msecs", - "version": "1.0.0", - "description": "", - "main": "./node/main.js", - "module": "./module/main.js", - "types": "./types/main.d.ts", + "version": "0.0.0", + "sideEffects": false, + "type": "module", + "main": "out/main.js", + "types": "out/main.d.ts", + "files": [ + "out/*" + ], "scripts": { - "prepare": "npm run compile", - "compile": "tsc; tsc --project tsconfig.module.json", - "clean": "rm -rf node types module", - "lint": "tslint \"src/**/*.ts\"" + "prepare": "npm run tsc", + "clean": "rm -rf out", + "test": "npm run spec-all", + "lint": "eslint \"src/**/*.ts\"", + "spec-all": "node --test ./out/**.spec.js", + "tsc": "tsc", + "tsc-watch": "npm run tsc -- --watch" }, - "author": "", + "author": "LuvDaSun Software B.V.", "license": "ISC", "devDependencies": { - "tslint": "^5.9.1", - "typescript": "^2.7.1" - }, - "dependencies": { - "tslib": "^1.9.0" + "@types/node": "^18.15.13", + "typescript": "^5.0.4" } -} +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 8f81fd9..1266bcf 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1 +1 @@ -export * from "./msecs"; +export * from "./msecs.js"; diff --git a/src/msecs.spec.ts b/src/msecs.spec.ts new file mode 100644 index 0000000..2ac2ebc --- /dev/null +++ b/src/msecs.spec.ts @@ -0,0 +1,30 @@ +import * as assert from "node:assert/strict"; +import test from "node:test"; +import { day, week } from "./msecs.js"; + +test("date time math", () => { + const now = new Date("2023-04-21T08:14:25Z").valueOf(); + + const tomorrow = now + day; + assert.equal( + new Date(tomorrow).toISOString(), + new Date("2023-04-22T08:14:25Z").toISOString(), + ) + + const inTwoWeeks = now + 2 * week; + assert.equal( + new Date(inTwoWeeks).toISOString(), + new Date("2023-05-05T08:14:25Z").toISOString(), + ) + + /* + This is the UTC midnight, not the local! + */ + const utcMidnight = now - now % day + 1 * day; + assert.equal( + new Date(utcMidnight).toISOString(), + new Date("2023-04-22T00:00:00Z").toISOString(), + ) + +}); + diff --git a/test.sh b/test.sh deleted file mode 100755 index 5732d31..0000000 --- a/test.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -set -e - -npm run compile -npm run lint diff --git a/tsconfig.json b/tsconfig.json index cc90573..f45de8b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,15 @@ { "compilerOptions": { - "target": "es2017", - "module": "commonjs", + "target": "ES2020", + "module": "ES2020", + "moduleResolution": "node16", + "declaration": true, "sourceMap": true, - "outDir": "./node", - "rootDir": "./src", - "importHelpers": true, + "rootDir": "src", + "outDir": "out", "strict": true }, "include": [ - "src/**/*" + "src" ] } \ No newline at end of file diff --git a/tsconfig.module.json b/tsconfig.module.json deleted file mode 100644 index 39e45c5..0000000 --- a/tsconfig.module.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "es2017", - "module": "es2015", - "declaration": true, - "outDir": "./module", - "declarationDir": "./types", - "moduleResolution": "node" - } -} \ No newline at end of file diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 32fa6e5..0000000 --- a/tslint.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "defaultSeverity": "error", - "extends": [ - "tslint:recommended" - ], - "jsRules": {}, - "rules": {}, - "rulesDirectory": [] -} \ No newline at end of file