diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 29180f2..67d76f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,5 +34,5 @@ jobs: # cannot run this on branches because it doesn't keep the canary version from auto shipit, can only secondarily publish to npm for main branch - name: Publish secondarily to npm - run: npm publish --access=public --ignore-scripts --@alienfast:registry='https://registry.npmjs.org' + run: lerna exec --stream --parallel -- npm publish --access=public --ignore-scripts --@alienfast:registry='https://registry.npmjs.org' if: github.ref == 'refs/heads/main' diff --git a/package.json b/package.json index 1130c64..3d4db83 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "clean:yarn": "node ./scripts/clean-yarn.js", "reset": "node ./scripts/reset.js", "lint:fix": "eslint . --cache --fix", - "test": "lerna exec --stream --parallel -- yarn test", + "test": "yarn build:ide && lerna exec --stream --parallel -- yarn test", "release": "yarn auto shipit", "build:finalize": "lerna exec --stream --parallel -- buildFinalize" }, diff --git a/packages/logger-node/package.json b/packages/logger-node/package.json index 46543d9..9f8e3eb 100644 --- a/packages/logger-node/package.json +++ b/packages/logger-node/package.json @@ -19,8 +19,7 @@ "postpack": "clean-package restore -c ../../.clean-package.json" }, "dependencies": { - "chalk": "^5.4.1", - "time-stamp": "^2.2.0" + "chalk": "^5.4.1" }, "devDependencies": { "@alienfast/logger": "^11.0.31", diff --git a/packages/logger-node/src/NodeLogWriter.ts b/packages/logger-node/src/NodeLogWriter.ts index 649eb87..25bfb76 100644 --- a/packages/logger-node/src/NodeLogWriter.ts +++ b/packages/logger-node/src/NodeLogWriter.ts @@ -4,7 +4,8 @@ /* eslint-disable no-console */ import { Level, LogWriter } from '@alienfast/logger' import chalk, { ChalkInstance } from 'chalk' -import timestamp from 'time-stamp' + +import { timestamp } from './timestamp.js' // chalk.enabled = true diff --git a/packages/logger-node/src/__tests__/timestamp.test.ts b/packages/logger-node/src/__tests__/timestamp.test.ts new file mode 100644 index 0000000..b576a13 --- /dev/null +++ b/packages/logger-node/src/__tests__/timestamp.test.ts @@ -0,0 +1,16 @@ +import { describe, expect, it } from 'vitest' + +import { timestamp } from '../timestamp.js' + +describe('timestamp', () => { + // const date = new Date('2025-01-02T03:04:05.006Z') + const date = new Date(Date.UTC(2025, 0, 2, 3, 4, 5, 6)) + it('should format date', () => { + // CI gives me grief on these values when using non-utc, so just test utc + + // expect(timestamp('YYYY-MM-DD HH:mm:ss.ms', false, date)).toEqual('2025-01-01 21:04:05.006') + expect(timestamp('YYYY-MM-DD HH:mm:ss.ms', true, date)).toEqual('2025-01-02 03:04:05.006') + // expect(timestamp('HH:mm:ss', false, date)).toEqual('21:04:05') + expect(timestamp('HH:mm:ss', true, date)).toEqual('03:04:05') + }) +}) diff --git a/packages/logger-node/src/timestamp.ts b/packages/logger-node/src/timestamp.ts new file mode 100644 index 0000000..6731f84 --- /dev/null +++ b/packages/logger-node/src/timestamp.ts @@ -0,0 +1,40 @@ +/*! + * time-stamp + * + * Copyright (c) 2015-2018, Jon Schlinkert. + * Released under the MIT License. + */ +const dateRegex = /(?=(YYYY|YY|MM|DD|HH|mm|ss|ms))\1([:/]*)/g +const timespan = { + YYYY: ['getFullYear', 4], + YY: ['getFullYear', 2], + MM: ['getMonth', 2, 1], // getMonth is zero-based, thus the extra increment field + DD: ['getDate', 2], + HH: ['getHours', 2], + mm: ['getMinutes', 2], + ss: ['getSeconds', 2], + ms: ['getMilliseconds', 3], +} as const + +type timespanKeys = keyof typeof timespan + +export const timestamp = function (format: string, utc: boolean = false, date?: Date) { + // if (typeof format !== 'string') { + // date = format + // format = 'YYYY-MM-DD' + // } + if (!date) date = new Date() + return format.replace(dateRegex, function (match: string, key: timespanKeys, rest) { + const args = timespan[key] + let name = args[0] + const chars = args[1] + if (utc === true) name = 'getUTC' + name.slice(3) + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + const val = '00' + String((date as any)[name]() + (args[2] || 0)) + return val.slice(-chars) + (rest || '') + }) +} + +// timestamp.utc = function (str, date) { +// return timestamp(str, date, true) +// } diff --git a/yarn.lock b/yarn.lock index 2ccac9c..d57d8cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,7 +115,7 @@ __metadata: version: 0.0.0-use.local resolution: "@alienfast/logger-browser@workspace:packages/logger-browser" dependencies: - "@alienfast/logger": "npm:^11.0.30" + "@alienfast/logger": "npm:^11.0.31" clean-package: "npm:^2.2.0" vite: "npm:^6.0.11" vitest: "npm:^3.0.3" @@ -128,10 +128,9 @@ __metadata: version: 0.0.0-use.local resolution: "@alienfast/logger-node@workspace:packages/logger-node" dependencies: - "@alienfast/logger": "npm:^11.0.30" + "@alienfast/logger": "npm:^11.0.31" chalk: "npm:^5.4.1" clean-package: "npm:^2.2.0" - time-stamp: "npm:^2.2.0" vite: "npm:^6.0.11" vitest: "npm:^3.0.3" peerDependencies: @@ -139,7 +138,7 @@ __metadata: languageName: unknown linkType: soft -"@alienfast/logger@npm:^11.0.30, @alienfast/logger@workspace:*, @alienfast/logger@workspace:packages/logger": +"@alienfast/logger@npm:^11.0.31, @alienfast/logger@workspace:*, @alienfast/logger@workspace:packages/logger": version: 0.0.0-use.local resolution: "@alienfast/logger@workspace:packages/logger" dependencies: @@ -9789,13 +9788,6 @@ __metadata: languageName: node linkType: hard -"time-stamp@npm:^2.2.0": - version: 2.2.0 - resolution: "time-stamp@npm:2.2.0" - checksum: 10/b602ea7c86793989fb22cf5aec35307e78af3e3c4f9ef7efdf0dabe296def23684985a55fb56a37143d80256f07f17768916d80995cd197aa3a811470d2e6f54 - languageName: node - linkType: hard - "tinybench@npm:^2.9.0": version: 2.9.0 resolution: "tinybench@npm:2.9.0"