From d41180dc2f0c313eb86f05f60050e57e891897c3 Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 13:32:50 +0330 Subject: [PATCH 01/27] fix(wait): requestIdleCallback polyfill --- packages/wait/src/main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wait/src/main.ts b/packages/wait/src/main.ts index ba043130..5713d371 100644 --- a/packages/wait/src/main.ts +++ b/packages/wait/src/main.ts @@ -1,4 +1,4 @@ -import {requestAnimationFrame} from './polyfill'; +import {requestAnimationFrame, requestIdleCallback} from './polyfill'; import type {HasAddEventListener} from '@alwatr/type-helper'; From f75fccd7a3f0ae776b039c547a6f33ecbd7d4513 Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 13:35:42 +0330 Subject: [PATCH 02/27] chore(lerna): skipBumpOnlyReleases --- lerna.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lerna.json b/lerna.json index 9054cd86..2c3f5736 100644 --- a/lerna.json +++ b/lerna.json @@ -11,6 +11,7 @@ "changelogPreset": "conventional-changelog-angular", "changelogIncludeCommitsClientLogin": " by @%l", "ignoreChanges": ["*.md"], + "skipBumpOnlyReleases": true, "message": "release:", "private": false, "forceGitTag": true, From 75e40f97273e7cb474506a906fa8f8e164f5661c Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 13:41:21 +0330 Subject: [PATCH 03/27] feat(tsconfig): change verbatimModuleSyntax=true and moduleDetection=force --- packages/tsconfig-base/tsconfig.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/tsconfig-base/tsconfig.json b/packages/tsconfig-base/tsconfig.json index b5d54dc1..ff6801e9 100644 --- a/packages/tsconfig-base/tsconfig.json +++ b/packages/tsconfig-base/tsconfig.json @@ -7,6 +7,8 @@ "module": "ESNext", "moduleResolution": "Bundler", "lib": ["ES2023", "DOM"], + "verbatimModuleSyntax": true, + "moduleDetection": "force", // "allowJs": true, // "checkJs": true, // "jsx": "preserve", From 572eabb610b4e0b896bc0ecdca7300a18891ff60 Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 13:46:03 +0330 Subject: [PATCH 04/27] chore(wait): Update polyfill.ts with type annotations and prettier-ignore --- packages/wait/src/polyfill.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/wait/src/polyfill.ts b/packages/wait/src/polyfill.ts index c1d17409..9b82c944 100644 --- a/packages/wait/src/polyfill.ts +++ b/packages/wait/src/polyfill.ts @@ -1,20 +1,28 @@ import {globalScope} from '@alwatr/global-scope'; +import type {Dictionary} from '@alwatr/type-helper'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const win = globalScope as Record; +export const win = globalScope as Dictionary; -const requestAnimationFrameFallback = (callback: FrameRequestCallback): ReturnType => - setTimeout(() => callback(Date.now()), 1000 / 60); +// prettier-ignore +const requestAnimationFrameFallback = + (callback: FrameRequestCallback): ReturnType => + setTimeout(() => callback(Date.now()), 1000 / 60); +// prettier-ignore export const requestAnimationFrame: typeof globalScope.requestAnimationFrame = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || requestAnimationFrameFallback; -const requestIdleCallbackFallback = (callback: () => void, options?: IdleRequestOptions): ReturnType => - setTimeout(callback, options?.timeout ?? 2000); +// prettier-ignore +const requestIdleCallbackFallback = + (callback: () => void, options?: IdleRequestOptions): ReturnType => + setTimeout(callback, options?.timeout ?? 2000); +// prettier-ignore export const requestIdleCallback: typeof globalScope.requestIdleCallback = win.requestIdleCallback || win.webkitRequestIdleCallback || From 8abc6ab70ae4693bd27b82d39326e11137fcffb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 10:18:37 +0000 Subject: [PATCH 05/27] chore(deps): bump the production-dependencies group with 1 update Bumps the production-dependencies group with 1 update: [esbuild](https://github.com/evanw/esbuild). Updates `esbuild` from 0.19.10 to 0.19.11 - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.19.10...v0.19.11) --- updated-dependencies: - dependency-name: esbuild dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] --- packages/eslint-config/package.json | 2 +- packages/nano-build/package.json | 2 +- yarn.lock | 198 ++++++++++++++-------------- 3 files changed, 101 insertions(+), 101 deletions(-) diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 4f404133..012b2f73 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -45,7 +45,7 @@ }, "prettier": "@alwatr/prettier-config", "dependencies": { - "esbuild": "^0.19.10" + "esbuild": "^0.19.11" }, "devDependencies": { "@alwatr/prettier-config": "workspace:^", diff --git a/packages/nano-build/package.json b/packages/nano-build/package.json index f93e2a2d..b620aba4 100644 --- a/packages/nano-build/package.json +++ b/packages/nano-build/package.json @@ -43,7 +43,7 @@ }, "prettier": "@alwatr/prettier-config", "dependencies": { - "esbuild": "^0.19.10" + "esbuild": "^0.19.11" }, "devDependencies": { "@alwatr/prettier-config": "workspace:^", diff --git a/yarn.lock b/yarn.lock index 3a9b2d12..700f4429 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,7 +31,7 @@ __metadata: "@alwatr/tsconfig-base": "workspace:^" "@typescript-eslint/eslint-plugin": "npm:^6.16.0" "@typescript-eslint/parser": "npm:^6.16.0" - esbuild: "npm:^0.19.10" + esbuild: "npm:^0.19.11" eslint: "npm:^8.56.0" eslint-import-resolver-typescript: "npm:^3.6.1" eslint-plugin-import: "npm:^2.29.1" @@ -74,7 +74,7 @@ __metadata: dependencies: "@alwatr/prettier-config": "workspace:^" "@alwatr/tsconfig-base": "workspace:^" - esbuild: "npm:^0.19.10" + esbuild: "npm:^0.19.11" typescript: "npm:^5.3.3" bin: nano-build: ./nano-build.cjs @@ -161,163 +161,163 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/aix-ppc64@npm:0.19.10" +"@esbuild/aix-ppc64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/aix-ppc64@npm:0.19.11" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/android-arm64@npm:0.19.10" +"@esbuild/android-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/android-arm64@npm:0.19.11" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/android-arm@npm:0.19.10" +"@esbuild/android-arm@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/android-arm@npm:0.19.11" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/android-x64@npm:0.19.10" +"@esbuild/android-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/android-x64@npm:0.19.11" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/darwin-arm64@npm:0.19.10" +"@esbuild/darwin-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/darwin-arm64@npm:0.19.11" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/darwin-x64@npm:0.19.10" +"@esbuild/darwin-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/darwin-x64@npm:0.19.11" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/freebsd-arm64@npm:0.19.10" +"@esbuild/freebsd-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/freebsd-arm64@npm:0.19.11" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/freebsd-x64@npm:0.19.10" +"@esbuild/freebsd-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/freebsd-x64@npm:0.19.11" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-arm64@npm:0.19.10" +"@esbuild/linux-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-arm64@npm:0.19.11" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-arm@npm:0.19.10" +"@esbuild/linux-arm@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-arm@npm:0.19.11" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-ia32@npm:0.19.10" +"@esbuild/linux-ia32@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-ia32@npm:0.19.11" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-loong64@npm:0.19.10" +"@esbuild/linux-loong64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-loong64@npm:0.19.11" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-mips64el@npm:0.19.10" +"@esbuild/linux-mips64el@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-mips64el@npm:0.19.11" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-ppc64@npm:0.19.10" +"@esbuild/linux-ppc64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-ppc64@npm:0.19.11" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-riscv64@npm:0.19.10" +"@esbuild/linux-riscv64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-riscv64@npm:0.19.11" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-s390x@npm:0.19.10" +"@esbuild/linux-s390x@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-s390x@npm:0.19.11" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/linux-x64@npm:0.19.10" +"@esbuild/linux-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-x64@npm:0.19.11" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/netbsd-x64@npm:0.19.10" +"@esbuild/netbsd-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/netbsd-x64@npm:0.19.11" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/openbsd-x64@npm:0.19.10" +"@esbuild/openbsd-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/openbsd-x64@npm:0.19.11" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/sunos-x64@npm:0.19.10" +"@esbuild/sunos-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/sunos-x64@npm:0.19.11" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/win32-arm64@npm:0.19.10" +"@esbuild/win32-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/win32-arm64@npm:0.19.11" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/win32-ia32@npm:0.19.10" +"@esbuild/win32-ia32@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/win32-ia32@npm:0.19.11" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.19.10": - version: 0.19.10 - resolution: "@esbuild/win32-x64@npm:0.19.10" +"@esbuild/win32-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/win32-x64@npm:0.19.11" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2325,33 +2325,33 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.19.10": - version: 0.19.10 - resolution: "esbuild@npm:0.19.10" - dependencies: - "@esbuild/aix-ppc64": "npm:0.19.10" - "@esbuild/android-arm": "npm:0.19.10" - "@esbuild/android-arm64": "npm:0.19.10" - "@esbuild/android-x64": "npm:0.19.10" - "@esbuild/darwin-arm64": "npm:0.19.10" - "@esbuild/darwin-x64": "npm:0.19.10" - "@esbuild/freebsd-arm64": "npm:0.19.10" - "@esbuild/freebsd-x64": "npm:0.19.10" - "@esbuild/linux-arm": "npm:0.19.10" - "@esbuild/linux-arm64": "npm:0.19.10" - "@esbuild/linux-ia32": "npm:0.19.10" - "@esbuild/linux-loong64": "npm:0.19.10" - "@esbuild/linux-mips64el": "npm:0.19.10" - "@esbuild/linux-ppc64": "npm:0.19.10" - "@esbuild/linux-riscv64": "npm:0.19.10" - "@esbuild/linux-s390x": "npm:0.19.10" - "@esbuild/linux-x64": "npm:0.19.10" - "@esbuild/netbsd-x64": "npm:0.19.10" - "@esbuild/openbsd-x64": "npm:0.19.10" - "@esbuild/sunos-x64": "npm:0.19.10" - "@esbuild/win32-arm64": "npm:0.19.10" - "@esbuild/win32-ia32": "npm:0.19.10" - "@esbuild/win32-x64": "npm:0.19.10" +"esbuild@npm:^0.19.11": + version: 0.19.11 + resolution: "esbuild@npm:0.19.11" + dependencies: + "@esbuild/aix-ppc64": "npm:0.19.11" + "@esbuild/android-arm": "npm:0.19.11" + "@esbuild/android-arm64": "npm:0.19.11" + "@esbuild/android-x64": "npm:0.19.11" + "@esbuild/darwin-arm64": "npm:0.19.11" + "@esbuild/darwin-x64": "npm:0.19.11" + "@esbuild/freebsd-arm64": "npm:0.19.11" + "@esbuild/freebsd-x64": "npm:0.19.11" + "@esbuild/linux-arm": "npm:0.19.11" + "@esbuild/linux-arm64": "npm:0.19.11" + "@esbuild/linux-ia32": "npm:0.19.11" + "@esbuild/linux-loong64": "npm:0.19.11" + "@esbuild/linux-mips64el": "npm:0.19.11" + "@esbuild/linux-ppc64": "npm:0.19.11" + "@esbuild/linux-riscv64": "npm:0.19.11" + "@esbuild/linux-s390x": "npm:0.19.11" + "@esbuild/linux-x64": "npm:0.19.11" + "@esbuild/netbsd-x64": "npm:0.19.11" + "@esbuild/openbsd-x64": "npm:0.19.11" + "@esbuild/sunos-x64": "npm:0.19.11" + "@esbuild/win32-arm64": "npm:0.19.11" + "@esbuild/win32-ia32": "npm:0.19.11" + "@esbuild/win32-x64": "npm:0.19.11" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -2401,7 +2401,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: e2d9012e664f4c02add4c002548fda1d06434d5bdecbf1471c89c1b361e7f88f62ebf1187fae6940e5c58d60c3dd5b4c4972bbf2df95c30270bfcc77543b463e + checksum: 0fd913124089e26d30ec30f73b94d4ef9607935251df3253f869106980a5d4c78aa517738c8746abe6e933262e91a77d31427ce468ed8fc7fe498a20f7f92fbc languageName: node linkType: hard From e0cf373dbaef46318a3878f5e542e3e53ef65b22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 10:34:06 +0000 Subject: [PATCH 06/27] chore(deps-dev): bump the development-dependencies group with 3 updates Bumps the development-dependencies group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node). Updates `@typescript-eslint/eslint-plugin` from 6.16.0 to 6.17.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.17.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 6.16.0 to 6.17.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.17.0/packages/parser) Updates `@types/node` from 20.10.5 to 20.10.6 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies ... Signed-off-by: dependabot[bot] --- package.json | 4 +- packages/eslint-config/package.json | 4 +- packages/global-scope/package.json | 2 +- packages/platform-info/package.json | 2 +- packages/wait/package.json | 2 +- yarn.lock | 122 ++++++++++++++-------------- 6 files changed, 68 insertions(+), 68 deletions(-) diff --git a/package.json b/package.json index 8e7e9acd..d92e5a5f 100644 --- a/package.json +++ b/package.json @@ -42,8 +42,8 @@ "@lerna-lite/publish": "^3.1.0", "@lerna-lite/run": "^3.1.0", "@lerna-lite/version": "^3.1.0", - "@typescript-eslint/eslint-plugin": "^6.16.0", - "@typescript-eslint/parser": "^6.16.0", + "@typescript-eslint/eslint-plugin": "^6.17.0", + "@typescript-eslint/parser": "^6.17.0", "eslint": "^8.56.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 012b2f73..e8bbf50c 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -50,8 +50,8 @@ "devDependencies": { "@alwatr/prettier-config": "workspace:^", "@alwatr/tsconfig-base": "workspace:^", - "@typescript-eslint/eslint-plugin": "^6.16.0", - "@typescript-eslint/parser": "^6.16.0", + "@typescript-eslint/eslint-plugin": "^6.17.0", + "@typescript-eslint/parser": "^6.17.0", "eslint": "^8.56.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", diff --git a/packages/global-scope/package.json b/packages/global-scope/package.json index 6701ff51..6aa06f57 100644 --- a/packages/global-scope/package.json +++ b/packages/global-scope/package.json @@ -72,7 +72,7 @@ "@alwatr/nano-build": "workspace:^", "@alwatr/prettier-config": "workspace:^", "@alwatr/tsconfig-base": "workspace:^", - "@types/node": "^20.10.5", + "@types/node": "^20.10.6", "typescript": "^5.3.3" } } diff --git a/packages/platform-info/package.json b/packages/platform-info/package.json index c566c0c8..8bea4a26 100644 --- a/packages/platform-info/package.json +++ b/packages/platform-info/package.json @@ -78,7 +78,7 @@ "@alwatr/nano-build": "workspace:^", "@alwatr/prettier-config": "workspace:^", "@alwatr/tsconfig-base": "workspace:^", - "@types/node": "^20.10.5", + "@types/node": "^20.10.6", "typescript": "^5.3.3" } } diff --git a/packages/wait/package.json b/packages/wait/package.json index da2eaed9..9241edbf 100644 --- a/packages/wait/package.json +++ b/packages/wait/package.json @@ -73,7 +73,7 @@ "@alwatr/prettier-config": "workspace:^", "@alwatr/tsconfig-base": "workspace:^", "@alwatr/type-helper": "workspace:^", - "@types/node": "^20.10.5", + "@types/node": "^20.10.6", "typescript": "^5.3.3" } } diff --git a/yarn.lock b/yarn.lock index 700f4429..df8a8075 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,8 +29,8 @@ __metadata: dependencies: "@alwatr/prettier-config": "workspace:^" "@alwatr/tsconfig-base": "workspace:^" - "@typescript-eslint/eslint-plugin": "npm:^6.16.0" - "@typescript-eslint/parser": "npm:^6.16.0" + "@typescript-eslint/eslint-plugin": "npm:^6.17.0" + "@typescript-eslint/parser": "npm:^6.17.0" esbuild: "npm:^0.19.11" eslint: "npm:^8.56.0" eslint-import-resolver-typescript: "npm:^3.6.1" @@ -63,7 +63,7 @@ __metadata: "@alwatr/nano-build": "workspace:^" "@alwatr/prettier-config": "workspace:^" "@alwatr/tsconfig-base": "workspace:^" - "@types/node": "npm:^20.10.5" + "@types/node": "npm:^20.10.6" typescript: "npm:^5.3.3" languageName: unknown linkType: soft @@ -88,7 +88,7 @@ __metadata: "@alwatr/nano-build": "workspace:^" "@alwatr/prettier-config": "workspace:^" "@alwatr/tsconfig-base": "workspace:^" - "@types/node": "npm:^20.10.5" + "@types/node": "npm:^20.10.6" typescript: "npm:^5.3.3" languageName: unknown linkType: soft @@ -128,7 +128,7 @@ __metadata: "@alwatr/prettier-config": "workspace:^" "@alwatr/tsconfig-base": "workspace:^" "@alwatr/type-helper": "workspace:^" - "@types/node": "npm:^20.10.5" + "@types/node": "npm:^20.10.6" typescript: "npm:^5.3.3" languageName: unknown linkType: soft @@ -1095,12 +1095,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.10.5": - version: 20.10.5 - resolution: "@types/node@npm:20.10.5" +"@types/node@npm:^20.10.6": + version: 20.10.6 + resolution: "@types/node@npm:20.10.6" dependencies: undici-types: "npm:~5.26.4" - checksum: be30609aae0bfe492097815f166ccc07f465220cb604647fa4e5ec05a1d16c012a41b82b5f11ecfe2485cbb479d4d20384b95b809ca0bcff6d94d5bbafa645bb + checksum: 6692ccfa8552ef60c4069fda3c8de726c23e8d403cdf788e3c7efa769987e80fbda5f02723dd857f9de7df24a5fa40b3ed4580ec3c5cbac04eba44cf7b2ab1dc languageName: node linkType: hard @@ -1118,15 +1118,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^6.16.0": - version: 6.16.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.16.0" +"@typescript-eslint/eslint-plugin@npm:^6.17.0": + version: 6.17.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.17.0" dependencies: "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.16.0" - "@typescript-eslint/type-utils": "npm:6.16.0" - "@typescript-eslint/utils": "npm:6.16.0" - "@typescript-eslint/visitor-keys": "npm:6.16.0" + "@typescript-eslint/scope-manager": "npm:6.17.0" + "@typescript-eslint/type-utils": "npm:6.17.0" + "@typescript-eslint/utils": "npm:6.17.0" + "@typescript-eslint/visitor-keys": "npm:6.17.0" debug: "npm:^4.3.4" graphemer: "npm:^1.4.0" ignore: "npm:^5.2.4" @@ -1139,44 +1139,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: c8a68e0953d8b94f6b85d3a82090e61e670bcb0945cbee4d741321c56db727429ad47c48b8403ad1dab3b0842689bd2d4b85c99b76c51ac4f5be7f5f61c4c314 + checksum: 44a3c914b72607b12925d07c04be97d325f8795f5d7de8501054a4405accc35b35eaa2aa93983c602d13e842503d49bdbf1f5af5c0a69d700351c005681dcd52 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.16.0": - version: 6.16.0 - resolution: "@typescript-eslint/parser@npm:6.16.0" +"@typescript-eslint/parser@npm:^6.17.0": + version: 6.17.0 + resolution: "@typescript-eslint/parser@npm:6.17.0" dependencies: - "@typescript-eslint/scope-manager": "npm:6.16.0" - "@typescript-eslint/types": "npm:6.16.0" - "@typescript-eslint/typescript-estree": "npm:6.16.0" - "@typescript-eslint/visitor-keys": "npm:6.16.0" + "@typescript-eslint/scope-manager": "npm:6.17.0" + "@typescript-eslint/types": "npm:6.17.0" + "@typescript-eslint/typescript-estree": "npm:6.17.0" + "@typescript-eslint/visitor-keys": "npm:6.17.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 9d573d14df4ec661dccaca785223a8a330d64f50a9279ff9170b1da22198ff91b9afa3ee7d3d7127c0cbc148c86831e76b33fc5b47d630799e98940ef666bfe0 + checksum: 66b53159688083eb48259de5b4daf076f3de284ac3b4d2618bda3f7ab2d8ee27b01ae851b08e8487047e33ff3668424f17d677d66413164cb231f1519dcff82f languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.16.0": - version: 6.16.0 - resolution: "@typescript-eslint/scope-manager@npm:6.16.0" +"@typescript-eslint/scope-manager@npm:6.17.0": + version: 6.17.0 + resolution: "@typescript-eslint/scope-manager@npm:6.17.0" dependencies: - "@typescript-eslint/types": "npm:6.16.0" - "@typescript-eslint/visitor-keys": "npm:6.16.0" - checksum: 3b275e528d19f4f36c4acd6cb872b5f004175512dce30cef0ac7a9121bb23d21e5e0f4b62658dbfea2b15851e7fa930372696f25a6c87492f863171ab56f5364 + "@typescript-eslint/types": "npm:6.17.0" + "@typescript-eslint/visitor-keys": "npm:6.17.0" + checksum: b7ac7d9c39515c2a1b3844577fab967bf126ec25ccf28076240748b3f42d60ab3e64131bfffee61f66251bdf2d59e50e39f5cb0bee7987c85c49140c75d26b5f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.16.0": - version: 6.16.0 - resolution: "@typescript-eslint/type-utils@npm:6.16.0" +"@typescript-eslint/type-utils@npm:6.17.0": + version: 6.17.0 + resolution: "@typescript-eslint/type-utils@npm:6.17.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:6.16.0" - "@typescript-eslint/utils": "npm:6.16.0" + "@typescript-eslint/typescript-estree": "npm:6.17.0" + "@typescript-eslint/utils": "npm:6.17.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.0.1" peerDependencies: @@ -1184,23 +1184,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: a5339cc1375d12411fcb242249143b28401fb18890bb2a1cff5275ba946affb4a2066cd8203e83ac383bd9d791a79ea6ee1cbf7a30deed5c832ed002897bbf82 + checksum: 15bc9ba2d7f12c3825eced4e5c2283616496e4bca57914c98e895af23d920f94e47e2081fb4fd59da13d274809e08667ae43a76a2f1494a7043c75f980f21114 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.16.0": - version: 6.16.0 - resolution: "@typescript-eslint/types@npm:6.16.0" - checksum: 74d9a8b7fd1b85fd1824295c92bc2f506148e450c9897f65ddaa089091017df4e25676c5b098b75c8f00529b84492f303a6b1870bb0ffee83997081325891d53 +"@typescript-eslint/types@npm:6.17.0": + version: 6.17.0 + resolution: "@typescript-eslint/types@npm:6.17.0" + checksum: c458d985b9ab4f369018536bcb88f0aedafb0c8c4b22ffd376e0c0c768a44e3956475c85ebeef40ae44238841c8df268893477b85873aa2621995c37e738e37e languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.16.0": - version: 6.16.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.16.0" +"@typescript-eslint/typescript-estree@npm:6.17.0": + version: 6.17.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.17.0" dependencies: - "@typescript-eslint/types": "npm:6.16.0" - "@typescript-eslint/visitor-keys": "npm:6.16.0" + "@typescript-eslint/types": "npm:6.17.0" + "@typescript-eslint/visitor-keys": "npm:6.17.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -1210,34 +1210,34 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: c7109e90b40b3c8f1042beb7f1a7a97eeba3b6a903acd82df4947900d68bd31d04b530a190c099666c5ca4886efc162de7b42de754a44b189e41237210797d9e + checksum: 5a858288bb05f45a2a45b04394115826ff19f85555144bfb67dc281d4e75fc3a1e1aceb3dee68022e86b91f199d1310c15bda3100a4890004b8e474d86afad51 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.16.0": - version: 6.16.0 - resolution: "@typescript-eslint/utils@npm:6.16.0" +"@typescript-eslint/utils@npm:6.17.0": + version: 6.17.0 + resolution: "@typescript-eslint/utils@npm:6.17.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" "@types/json-schema": "npm:^7.0.12" "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.16.0" - "@typescript-eslint/types": "npm:6.16.0" - "@typescript-eslint/typescript-estree": "npm:6.16.0" + "@typescript-eslint/scope-manager": "npm:6.17.0" + "@typescript-eslint/types": "npm:6.17.0" + "@typescript-eslint/typescript-estree": "npm:6.17.0" semver: "npm:^7.5.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 586c4c0e1ca249daf9958f0d88df3af010a7592a19db1a7dc198754542b584314896536fe56ea9c93dd0ddd531154e7697002643d46e24a8d3a459721a626e91 + checksum: a85907c5fbe0a54944fff25df05bf5b8bbe524bb1907fb54c7c68135cf764aa45344e679965c17e235b328ad32e74b1357057c43035203ce874915c4687daa93 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.16.0": - version: 6.16.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.16.0" +"@typescript-eslint/visitor-keys@npm:6.17.0": + version: 6.17.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.17.0" dependencies: - "@typescript-eslint/types": "npm:6.16.0" + "@typescript-eslint/types": "npm:6.17.0" eslint-visitor-keys: "npm:^3.4.1" - checksum: 13c4d90355e288eac432d2845e37bb2acc03dab6d8568564558c1914a9aa44352f2a7ff29d0f50e0b3e68d66cca5f27b2732af5ff193b82571b4366309842880 + checksum: 75a48f5810c6a69bc1c082b07d2b840c40895807b1b4ecf9d3ab9eb783176eeb3e7b11eb89d652e8331da79d604f82300f315ffc21cd937819197a8601b48d1d languageName: node linkType: hard @@ -1345,8 +1345,8 @@ __metadata: "@lerna-lite/publish": "npm:^3.1.0" "@lerna-lite/run": "npm:^3.1.0" "@lerna-lite/version": "npm:^3.1.0" - "@typescript-eslint/eslint-plugin": "npm:^6.16.0" - "@typescript-eslint/parser": "npm:^6.16.0" + "@typescript-eslint/eslint-plugin": "npm:^6.17.0" + "@typescript-eslint/parser": "npm:^6.17.0" eslint: "npm:^8.56.0" eslint-import-resolver-typescript: "npm:^3.6.1" eslint-plugin-import: "npm:^2.29.1" From 98a6c35d7d5743fcecba50e82066ce2ba1c0e917 Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 14:04:11 +0330 Subject: [PATCH 07/27] docs(flat-string): fix import statement in README.md --- packages/flat-string/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flat-string/README.md b/packages/flat-string/README.md index d043309e..1a725828 100644 --- a/packages/flat-string/README.md +++ b/packages/flat-string/README.md @@ -15,7 +15,7 @@ yarn add @alwatr/flat-string ## Usage ```typescript -import flatString from '@alwatr/flat-string'; +import {flatString} from '@alwatr/flat-string'; myStr = flatString(myStr); ``` From e36e3fb409851ba01b1afdaa4a1100683707023d Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 14:15:14 +0330 Subject: [PATCH 08/27] chore(deps): update --- yarn.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index df8a8075..9b20a43e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1286,11 +1286,11 @@ __metadata: linkType: hard "acorn@npm:^8.9.0": - version: 8.11.2 - resolution: "acorn@npm:8.11.2" + version: 8.11.3 + resolution: "acorn@npm:8.11.3" bin: acorn: bin/acorn - checksum: a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 + checksum: 3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 languageName: node linkType: hard @@ -4782,12 +4782,12 @@ __metadata: linkType: hard "postcss-selector-parser@npm:^6.0.10": - version: 6.0.14 - resolution: "postcss-selector-parser@npm:6.0.14" + version: 6.0.15 + resolution: "postcss-selector-parser@npm:6.0.15" dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 3fd7d0d3346544ee0841c51c2447a4d39404fdc81e4cdebf2e9677f81c22ced293ca540ca821de18e17a3349058d8d40ff511cdc9e5a760e89a6a6e969d6863b + checksum: 48b425d6cef497bcf6b7d136f6fd95cfca43026955e07ec9290d3c15457de3a862dbf251dd36f42c07a0d5b5ab6f31e41acefeff02528995a989b955505e440b languageName: node linkType: hard @@ -4944,15 +4944,15 @@ __metadata: linkType: hard "readable-stream@npm:^4.1.0": - version: 4.5.1 - resolution: "readable-stream@npm:4.5.1" + version: 4.5.2 + resolution: "readable-stream@npm:4.5.2" dependencies: abort-controller: "npm:^3.0.0" buffer: "npm:^6.0.3" events: "npm:^3.3.0" process: "npm:^0.11.10" string_decoder: "npm:^1.3.0" - checksum: 10fb4c111f767b33c5e5930a036ec7f77a64cdfade36f694dfd523ab5df681edb4eb44b1cc0a789674aa58c46fe4b0fe76f2bc06b17244f679499d9c43542bcc + checksum: a2c80e0e53aabd91d7df0330929e32d0a73219f9477dbbb18472f6fdd6a11a699fc5d172a1beff98d50eae4f1496c950ffa85b7cc2c4c196963f289a5f39275d languageName: node linkType: hard @@ -5639,9 +5639,9 @@ __metadata: linkType: hard "type-fest@npm:^4.2.0, type-fest@npm:^4.6.0": - version: 4.8.3 - resolution: "type-fest@npm:4.8.3" - checksum: 978edf5d00651e944b8c4d50f765a4cc09126e7fb90b46ed157265012e2f8aeb178c0ca493a175213ffa1705a795e4b5579c2ef4bc27bdd3462cdceccbf386f7 + version: 4.9.0 + resolution: "type-fest@npm:4.9.0" + checksum: 7e6423f7337928a7323ce8a68cfbbaf30ecb70b9c635207899e58297d219c71be4a8c50b52afb9fe09c9f44b2c4276d0a44bb95acabab7bc942455f980aad267 languageName: node linkType: hard From 96633d3581bd3faba937ddc3997e32a8d69ce1e4 Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 14:16:26 +0330 Subject: [PATCH 09/27] release: - @alwatr/deep-clone@1.0.12 - @alwatr/eslint-config@1.0.7 - @alwatr/flat-string@1.0.11 - @alwatr/global-scope@1.1.7 - @alwatr/nano-build@1.2.3 - @alwatr/platform-info@1.0.7 - @alwatr/tsconfig-base@1.1.0 - @alwatr/type-helper@1.0.2 - @alwatr/wait@1.1.2 --- packages/deep-clone/CHANGELOG.md | 4 ++++ packages/deep-clone/package.json | 2 +- packages/eslint-config/CHANGELOG.md | 4 ++++ packages/eslint-config/package.json | 2 +- packages/flat-string/CHANGELOG.md | 4 ++++ packages/flat-string/package.json | 2 +- packages/global-scope/CHANGELOG.md | 4 ++++ packages/global-scope/package.json | 2 +- packages/nano-build/CHANGELOG.md | 4 ++++ packages/nano-build/package.json | 2 +- packages/platform-info/CHANGELOG.md | 4 ++++ packages/platform-info/package.json | 2 +- packages/tsconfig-base/CHANGELOG.md | 6 ++++++ packages/tsconfig-base/package.json | 2 +- packages/type-helper/CHANGELOG.md | 4 ++++ packages/type-helper/package.json | 2 +- packages/wait/CHANGELOG.md | 6 ++++++ packages/wait/package.json | 2 +- 18 files changed, 49 insertions(+), 9 deletions(-) diff --git a/packages/deep-clone/CHANGELOG.md b/packages/deep-clone/CHANGELOG.md index 7a5fe2bd..49a9033c 100644 --- a/packages/deep-clone/CHANGELOG.md +++ b/packages/deep-clone/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.12](https://github.com/Alwatr/nanolib/compare/@alwatr/deep-clone@1.0.11...@alwatr/deep-clone@1.0.12) (2024-01-03) + +**Note:** Version bump only for package @alwatr/deep-clone + ## [1.0.11](https://github.com/Alwatr/nanolib/compare/@alwatr/deep-clone@1.0.10...@alwatr/deep-clone@1.0.11) (2023-12-26) **Note:** Version bump only for package @alwatr/deep-clone diff --git a/packages/deep-clone/package.json b/packages/deep-clone/package.json index edacd301..915aaf71 100644 --- a/packages/deep-clone/package.json +++ b/packages/deep-clone/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/deep-clone", - "version": "1.0.11", + "version": "1.0.12", "description": "Clone deeply nested objects and arrays in JavaScript.", "author": "S. Ali Mihandoost ", "keywords": [ diff --git a/packages/eslint-config/CHANGELOG.md b/packages/eslint-config/CHANGELOG.md index 5e8058c8..89aeec0e 100644 --- a/packages/eslint-config/CHANGELOG.md +++ b/packages/eslint-config/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.7](https://github.com/Alwatr/nanolib/compare/@alwatr/eslint-config@1.0.6...@alwatr/eslint-config@1.0.7) (2024-01-03) + +**Note:** Version bump only for package @alwatr/eslint-config + ## [1.0.6](https://github.com/Alwatr/nanolib/compare/@alwatr/eslint-config@1.0.5...@alwatr/eslint-config@1.0.6) (2023-12-26) **Note:** Version bump only for package @alwatr/eslint-config diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index e8bbf50c..57bd6500 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/eslint-config", - "version": "1.0.6", + "version": "1.0.7", "description": "Alwatr ECMAScript Style Guide as a ESLint shareable configurations.", "author": "S. Ali Mihandoost ", "keywords": [ diff --git a/packages/flat-string/CHANGELOG.md b/packages/flat-string/CHANGELOG.md index 044a2b1a..28f88fdb 100644 --- a/packages/flat-string/CHANGELOG.md +++ b/packages/flat-string/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.11](https://github.com/Alwatr/nanolib/compare/@alwatr/flat-string@1.0.10...@alwatr/flat-string@1.0.11) (2024-01-03) + +**Note:** Version bump only for package @alwatr/flat-string + ## [1.0.10](https://github.com/Alwatr/nanolib/compare/@alwatr/flat-string@1.0.9...@alwatr/flat-string@1.0.10) (2023-12-26) **Note:** Version bump only for package @alwatr/flat-string diff --git a/packages/flat-string/package.json b/packages/flat-string/package.json index 60bd2242..f240afc4 100644 --- a/packages/flat-string/package.json +++ b/packages/flat-string/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/flat-string", - "version": "1.0.10", + "version": "1.0.11", "description": "The `flat-string` function flattens the underlying C structures of a concatenated JavaScript string.", "author": "S. Ali Mihandoost ", "keywords": [ diff --git a/packages/global-scope/CHANGELOG.md b/packages/global-scope/CHANGELOG.md index 3c85474a..a7168632 100644 --- a/packages/global-scope/CHANGELOG.md +++ b/packages/global-scope/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.7](https://github.com/Alwatr/nanolib/compare/@alwatr/global-scope@1.1.6...@alwatr/global-scope@1.1.7) (2024-01-03) + +**Note:** Version bump only for package @alwatr/global-scope + ## [1.1.6](https://github.com/Alwatr/nanolib/compare/@alwatr/global-scope@1.1.5...@alwatr/global-scope@1.1.6) (2023-12-26) **Note:** Version bump only for package @alwatr/global-scope diff --git a/packages/global-scope/package.json b/packages/global-scope/package.json index 6aa06f57..6030aa73 100644 --- a/packages/global-scope/package.json +++ b/packages/global-scope/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/global-scope", - "version": "1.1.6", + "version": "1.1.7", "description": "This TypeScript module provides a cross-platform alternative to `globalThis` named `globalScope`. This object works across different environments, including browsers (`window`), Node.js (`global`), and Web Workers (`self`).", "author": "S. Ali Mihandoost ", "keywords": [ diff --git a/packages/nano-build/CHANGELOG.md b/packages/nano-build/CHANGELOG.md index 238a9019..f8767271 100644 --- a/packages/nano-build/CHANGELOG.md +++ b/packages/nano-build/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.3](https://github.com/Alwatr/nanolib/compare/@alwatr/nano-build@1.2.2...@alwatr/nano-build@1.2.3) (2024-01-03) + +**Note:** Version bump only for package @alwatr/nano-build + ## [1.2.2](https://github.com/Alwatr/nanolib/compare/@alwatr/nano-build@1.2.1...@alwatr/nano-build@1.2.2) (2023-12-26) ### Bug Fixes diff --git a/packages/nano-build/package.json b/packages/nano-build/package.json index b620aba4..0647f43e 100644 --- a/packages/nano-build/package.json +++ b/packages/nano-build/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/nano-build", - "version": "1.2.2", + "version": "1.2.3", "description": "Build/bundle tools for ECMAScript, TypeScript, and JavaScript libraries. It's easy to use, doesn't require any setup, and adheres to best practices. It has no dependencies and uses esbuild for enhanced performance.", "author": "S. Ali Mihandoost ", "keywords": [ diff --git a/packages/platform-info/CHANGELOG.md b/packages/platform-info/CHANGELOG.md index 6353832d..18131536 100644 --- a/packages/platform-info/CHANGELOG.md +++ b/packages/platform-info/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.7](https://github.com/Alwatr/nanolib/compare/@alwatr/platform-info@1.0.6...@alwatr/platform-info@1.0.7) (2024-01-03) + +**Note:** Version bump only for package @alwatr/platform-info + ## [1.0.6](https://github.com/Alwatr/nanolib/compare/@alwatr/platform-info@1.0.5...@alwatr/platform-info@1.0.6) (2023-12-26) **Note:** Version bump only for package @alwatr/platform-info diff --git a/packages/platform-info/package.json b/packages/platform-info/package.json index 8bea4a26..4d2d4a20 100644 --- a/packages/platform-info/package.json +++ b/packages/platform-info/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/platform-info", - "version": "1.0.6", + "version": "1.0.7", "description": "This module provides a way to detect the current platform where the script is running. It defines a constant `platformInfo` which holds the information about the current platform.", "author": "S. Ali Mihandoost ", "keywords": [ diff --git a/packages/tsconfig-base/CHANGELOG.md b/packages/tsconfig-base/CHANGELOG.md index 2e37d1e3..c9f2b4e0 100644 --- a/packages/tsconfig-base/CHANGELOG.md +++ b/packages/tsconfig-base/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.1.0](https://github.com/Alwatr/nanolib/compare/@alwatr/tsconfig-base@1.0.5...@alwatr/tsconfig-base@1.1.0) (2024-01-03) + +### Features + +* **tsconfig:** change verbatimModuleSyntax=true and moduleDetection=force ([75e40f9](https://github.com/Alwatr/nanolib/commit/75e40f97273e7cb474506a906fa8f8e164f5661c)) by @AliMD + ## [1.0.5](https://github.com/Alwatr/nanolib/compare/@alwatr/tsconfig-base@1.0.4...@alwatr/tsconfig-base@1.0.5) (2023-12-23) ### Bug Fixes diff --git a/packages/tsconfig-base/package.json b/packages/tsconfig-base/package.json index 9a4fed53..5299c6d7 100644 --- a/packages/tsconfig-base/package.json +++ b/packages/tsconfig-base/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/tsconfig-base", - "version": "1.0.5", + "version": "1.1.0", "description": "This is a base TypeScript configuration for Alwatr projects.", "keywords": [ "typescript", diff --git a/packages/type-helper/CHANGELOG.md b/packages/type-helper/CHANGELOG.md index d8cfb06a..919e2503 100644 --- a/packages/type-helper/CHANGELOG.md +++ b/packages/type-helper/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.2](https://github.com/Alwatr/nanolib/compare/@alwatr/type-helper@1.0.1...@alwatr/type-helper@1.0.2) (2024-01-03) + +**Note:** Version bump only for package @alwatr/type-helper + ## [1.0.1](https://github.com/Alwatr/nanolib/compare/@alwatr/type-helper@1.0.0-beta.2...@alwatr/type-helper@1.0.1) (2023-12-27) **Note:** Version bump only for package @alwatr/type-helper diff --git a/packages/type-helper/package.json b/packages/type-helper/package.json index 3e3f7038..9d6fe949 100644 --- a/packages/type-helper/package.json +++ b/packages/type-helper/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/type-helper", - "version": "1.0.1", + "version": "1.0.2", "description": "Collection of useful typescript type helpers.", "author": "S. Ali Mihandoost ", "keywords": [ diff --git a/packages/wait/CHANGELOG.md b/packages/wait/CHANGELOG.md index b93dd6ce..cf6935f5 100644 --- a/packages/wait/CHANGELOG.md +++ b/packages/wait/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.2](https://github.com/Alwatr/nanolib/compare/@alwatr/wait@1.1.1...@alwatr/wait@1.1.2) (2024-01-03) + +### Bug Fixes + +* **wait:** requestIdleCallback polyfill ([d41180d](https://github.com/Alwatr/nanolib/commit/d41180dc2f0c313eb86f05f60050e57e891897c3)) by @AliMD + ## [1.1.1](https://github.com/Alwatr/nanolib/compare/@alwatr/wait@1.1.0...@alwatr/wait@1.1.1) (2023-12-27) **Note:** Version bump only for package @alwatr/wait diff --git a/packages/wait/package.json b/packages/wait/package.json index 9241edbf..27142d6a 100644 --- a/packages/wait/package.json +++ b/packages/wait/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/wait", - "version": "1.1.1", + "version": "1.1.2", "description": "Comprehensive toolkit for managing asynchronous operations.", "author": "S. Ali Mihandoost ", "keywords": [ From a41b3a01a4e6af595521e506326678eb96491a11 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 14:04:01 +0330 Subject: [PATCH 10/27] feat(exit-hook): new package --- README.md | 1 + packages/exit-hook/README.md | 21 +++++++++ packages/exit-hook/package.json | 74 ++++++++++++++++++++++++++++++++ packages/exit-hook/src/main.ts | 64 +++++++++++++++++++++++++++ packages/exit-hook/tsconfig.json | 10 +++++ yarn.lock | 12 ++++++ 6 files changed, 182 insertions(+) create mode 100644 packages/exit-hook/README.md create mode 100644 packages/exit-hook/package.json create mode 100644 packages/exit-hook/src/main.ts create mode 100644 packages/exit-hook/tsconfig.json diff --git a/README.md b/README.md index fdf9faf7..87e6ff6f 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Here is a brief overview of the included libraries: 8. [`nano-build`](./packages/nano-build/README.md): This is a tool for building/bundling ECMAScript, TypeScript, and JavaScript libraries. It's user-friendly, requires no setup, follows best practices, has no dependencies, and uses esbuild for improved performance. 9. [`type-helper`](./packages/type-helper/README.md): Collection of useful typescript type helpers. 10. [`wait`](./packages/wait/README.md): Comprehensive toolkit for managing asynchronous operations. +11. [`exit-hook`](./packages/exit-hook/README.md): A utility for registering exit handlers in Node.js. For more detailed information and guidelines on how to use each package, please refer to to each package's README. diff --git a/packages/exit-hook/README.md b/packages/exit-hook/README.md new file mode 100644 index 00000000..5f6453bb --- /dev/null +++ b/packages/exit-hook/README.md @@ -0,0 +1,21 @@ +# Exit Hook + +A utility for registering exit handlers in Node.js. + +## Installation + +```bash +yarn add @alwatr/exit-hook +``` + +## Usage + +```typescript +import {exitHook} from '@alwatr/exit-hook'; + +const saveAllData = () => { + // save all data +}; + +exitHook(saveAllData); +``` diff --git a/packages/exit-hook/package.json b/packages/exit-hook/package.json new file mode 100644 index 00000000..615f5909 --- /dev/null +++ b/packages/exit-hook/package.json @@ -0,0 +1,74 @@ +{ + "name": "@alwatr/exit-hook", + "version": "0.0.0", + "description": "A utility for registering exit handlers in Node.js.", + "author": "S. Ali Mihandoost ", + "keywords": [ + "exit-hook", + "hook", + "exit", + "cross-platform", + "ECMAScript", + "typescript", + "javascript", + "node", + "nodejs", + "esm", + "module", + "utility", + "util", + "utils", + "nanolib", + "alwatr" + ], + "type": "module", + "main": "./dist/main.cjs", + "module": "./dist/main.mjs", + "types": "./dist/main.d.ts", + "exports": { + ".": { + "import": "./dist/main.mjs", + "require": "./dist/main.cjs", + "types": "./dist/main.d.ts" + } + }, + "license": "MIT", + "files": [ + "**/*.{js,mjs,cjs,map,d.ts,html,md}", + "!demo/**/*" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/Alwatr/nanolib", + "directory": "packages/exit-hook" + }, + "homepage": "https://github.com/Alwatr/nanolib/tree/next/packages/exit-hook#readme", + "bugs": { + "url": "https://github.com/Alwatr/nanolib/issues" + }, + "prettier": "@alwatr/prettier-config", + "scripts": { + "b": "yarn run build", + "w": "yarn run watch", + "c": "yarn run clean", + "cb": "yarn run clean && yarn run build", + "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "build": "yarn run build:ts & yarn run build:es", + "build:es": "nano-build --preset=module", + "build:ts": "tsc --build", + "watch": "yarn run watch:ts & yarn run watch:es", + "watch:es": "yarn run build:es --watch", + "watch:ts": "yarn run build:ts --watch --preserveWatchOutput", + "clean": "rm -rfv dist *.tsbuildinfo" + }, + "devDependencies": { + "@alwatr/nano-build": "workspace:^", + "@alwatr/prettier-config": "workspace:^", + "@alwatr/tsconfig-base": "workspace:^", + "@types/node": "^20.10.5", + "typescript": "^5.3.3" + } +} diff --git a/packages/exit-hook/src/main.ts b/packages/exit-hook/src/main.ts new file mode 100644 index 00000000..4a6d86f6 --- /dev/null +++ b/packages/exit-hook/src/main.ts @@ -0,0 +1,64 @@ +/** + * Array of callback functions to be called when the process is exiting. + */ +const callbacks: (() => void)[] = []; + +/** + * True whether the process is exiting. + */ +let exiting = false; + +/** + * Add a callback function to be called when the process is exiting. + * + * @param callback The callback function to be called when the process is exiting. + * @returns void + * + * @example + * ```typescript + * const saveAllData = () => { + * // save all data + * }; + * + * existHook(saveAllData); + * ``` + */ +export function existHook(callback: () => void): void { + callbacks.push(callback); +} + +/** + * A once callback to be called on process exit event. + * + * @returns void + */ +function onExit_() { + if (exiting === true) return; + exiting = true; + + for (const callback of callbacks) { + try { + callback(); + } + catch (error) { + console.error('Error in exit hook callback:', error); + } + } +} + +/** + * + */ +process.once('beforeExit', onExit_); + +/** + */ +process.once('exit', onExit_); + +/** + */ +process.once('SIGTERM', onExit_); + +/** + */ +process.once('SIGINT', onExit_); diff --git a/packages/exit-hook/tsconfig.json b/packages/exit-hook/tsconfig.json new file mode 100644 index 00000000..58185341 --- /dev/null +++ b/packages/exit-hook/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@alwatr/tsconfig-base/tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "emitDeclarationOnly": true, + "composite": true, + }, + "include": ["src/**/*.ts"] +} diff --git a/yarn.lock b/yarn.lock index 9b20a43e..b8fade8d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,6 +45,18 @@ __metadata: languageName: unknown linkType: soft +"@alwatr/exit-hook@workspace:packages/exit-hook": + version: 0.0.0-use.local + resolution: "@alwatr/exit-hook@workspace:packages/exit-hook" + dependencies: + "@alwatr/nano-build": "workspace:^" + "@alwatr/prettier-config": "workspace:^" + "@alwatr/tsconfig-base": "workspace:^" + "@types/node": "npm:^20.10.5" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + "@alwatr/flat-string@workspace:packages/flat-string": version: 0.0.0-use.local resolution: "@alwatr/flat-string@workspace:packages/flat-string" From b53e24d87e87b16ff4052262ca6a8e4a499b463a Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 14:13:21 +0330 Subject: [PATCH 11/27] docs(exit-hook): events --- packages/exit-hook/src/main.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/exit-hook/src/main.ts b/packages/exit-hook/src/main.ts index 4a6d86f6..49c94c81 100644 --- a/packages/exit-hook/src/main.ts +++ b/packages/exit-hook/src/main.ts @@ -4,7 +4,7 @@ const callbacks: (() => void)[] = []; /** - * True whether the process is exiting. + * True whether the process is exiting to prevent calling the callbacks more than once. */ let exiting = false; @@ -12,7 +12,6 @@ let exiting = false; * Add a callback function to be called when the process is exiting. * * @param callback The callback function to be called when the process is exiting. - * @returns void * * @example * ```typescript @@ -29,8 +28,6 @@ export function existHook(callback: () => void): void { /** * A once callback to be called on process exit event. - * - * @returns void */ function onExit_() { if (exiting === true) return; @@ -47,18 +44,33 @@ function onExit_() { } /** + * This event emitted when Node.js empties its event loop and has no additional work to schedule. + * Normally, the Node.js process will exit when there is no work scheduled, + * but a listener registered on the 'beforeExit' event can make asynchronous calls, and thereby cause the Node.js process to continue. * + * @see https://nodejs.org/api/process.html#event-beforeexit */ process.once('beforeExit', onExit_); /** + * This event is emitted when the Node.js process is about to exit as a result of either: + * 1- The `process.exit()` method being called explicitly. + * 2- The Node.js event loop no longer having any additional work to perform. + * + * @see https://nodejs.org/api/process.html#event-exit */ process.once('exit', onExit_); /** + * This event is emitted in terminal mode before exiting with code 128 + signal number. + * + * @see https://nodejs.org/api/process.html#signal-events */ process.once('SIGTERM', onExit_); /** + * This event is emitted when `Ctrl+C` is pressed. + * + * @see https://nodejs.org/api/process.html#signal-events */ process.once('SIGINT', onExit_); From b6dd6dd8173d9788c179d57091402e693fa2024a Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 14:18:21 +0330 Subject: [PATCH 12/27] chore(deps): upd --- packages/exit-hook/package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/exit-hook/package.json b/packages/exit-hook/package.json index 615f5909..91cb15cd 100644 --- a/packages/exit-hook/package.json +++ b/packages/exit-hook/package.json @@ -68,7 +68,7 @@ "@alwatr/nano-build": "workspace:^", "@alwatr/prettier-config": "workspace:^", "@alwatr/tsconfig-base": "workspace:^", - "@types/node": "^20.10.5", + "@types/node": "^20.10.6", "typescript": "^5.3.3" } } diff --git a/yarn.lock b/yarn.lock index b8fade8d..e32bbb58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -52,7 +52,7 @@ __metadata: "@alwatr/nano-build": "workspace:^" "@alwatr/prettier-config": "workspace:^" "@alwatr/tsconfig-base": "workspace:^" - "@types/node": "npm:^20.10.5" + "@types/node": "npm:^20.10.6" typescript: "npm:^5.3.3" languageName: unknown linkType: soft From f78592294341aff359a6b67f703550d007056beb Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 14:21:26 +0330 Subject: [PATCH 13/27] release: - @alwatr/exit-hook@1.0.0 --- packages/exit-hook/CHANGELOG.md | 10 ++++++++++ packages/exit-hook/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 packages/exit-hook/CHANGELOG.md diff --git a/packages/exit-hook/CHANGELOG.md b/packages/exit-hook/CHANGELOG.md new file mode 100644 index 00000000..033af9a3 --- /dev/null +++ b/packages/exit-hook/CHANGELOG.md @@ -0,0 +1,10 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# 1.0.0 (2024-01-03) + +### Features + +* **exit-hook:** new package ([a41b3a0](https://github.com/Alwatr/nanolib/commit/a41b3a01a4e6af595521e506326678eb96491a11)) by @njfamirm diff --git a/packages/exit-hook/package.json b/packages/exit-hook/package.json index 91cb15cd..9e70c4cb 100644 --- a/packages/exit-hook/package.json +++ b/packages/exit-hook/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/exit-hook", - "version": "0.0.0", + "version": "1.0.0", "description": "A utility for registering exit handlers in Node.js.", "author": "S. Ali Mihandoost ", "keywords": [ From e8df52a8f527e653025abe6a8bc54719498db83e Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 14:29:17 +0330 Subject: [PATCH 14/27] fix(exit-hook): typo function name --- packages/exit-hook/src/main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/exit-hook/src/main.ts b/packages/exit-hook/src/main.ts index 49c94c81..45fac645 100644 --- a/packages/exit-hook/src/main.ts +++ b/packages/exit-hook/src/main.ts @@ -22,7 +22,7 @@ let exiting = false; * existHook(saveAllData); * ``` */ -export function existHook(callback: () => void): void { +export function exitHook(callback: () => void): void { callbacks.push(callback); } From 64fdf0a3a6f29b1fddb773cb30f6aa28d7d1c80a Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 14:31:46 +0330 Subject: [PATCH 15/27] release: - @alwatr/exit-hook@1.0.1 --- packages/exit-hook/CHANGELOG.md | 6 ++++++ packages/exit-hook/package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/exit-hook/CHANGELOG.md b/packages/exit-hook/CHANGELOG.md index 033af9a3..10d0a432 100644 --- a/packages/exit-hook/CHANGELOG.md +++ b/packages/exit-hook/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.1](https://github.com/Alwatr/nanolib/compare/@alwatr/exit-hook@1.0.0...@alwatr/exit-hook@1.0.1) (2024-01-03) + +### Bug Fixes + +* **exit-hook:** typo function name ([e8df52a](https://github.com/Alwatr/nanolib/commit/e8df52a8f527e653025abe6a8bc54719498db83e)) by @njfamirm + # 1.0.0 (2024-01-03) ### Features diff --git a/packages/exit-hook/package.json b/packages/exit-hook/package.json index 9e70c4cb..347c999a 100644 --- a/packages/exit-hook/package.json +++ b/packages/exit-hook/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/exit-hook", - "version": "1.0.0", + "version": "1.0.1", "description": "A utility for registering exit handlers in Node.js.", "author": "S. Ali Mihandoost ", "keywords": [ From e753ff29cf53e0e6bcdd9661666ee60300960db3 Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 17:12:23 +0330 Subject: [PATCH 16/27] feat(async-queue): A simple async queue like mutex and semaphore methodology for javascript and typescript. Co-authored-by: S. Amir Mohammad Najafi --- packages/async-queue/README.md | 53 ++++++++++++++ packages/async-queue/demo/simple-queue.mjs | 21 ++++++ packages/async-queue/package.json | 85 ++++++++++++++++++++++ packages/async-queue/src/main.ts | 62 ++++++++++++++++ packages/async-queue/tsconfig.json | 11 +++ yarn.lock | 26 +++++++ 6 files changed, 258 insertions(+) create mode 100644 packages/async-queue/README.md create mode 100644 packages/async-queue/demo/simple-queue.mjs create mode 100644 packages/async-queue/package.json create mode 100644 packages/async-queue/src/main.ts create mode 100644 packages/async-queue/tsconfig.json diff --git a/packages/async-queue/README.md b/packages/async-queue/README.md new file mode 100644 index 00000000..1071f5a0 --- /dev/null +++ b/packages/async-queue/README.md @@ -0,0 +1,53 @@ +# Async Queue + +A queue that executes async tasks in order like mutex and semaphore methodology for javascript and typescript. + +## Installation + +```bash +yarn add @alwatr/async-queue +``` + +## Usage + +```typescript +import {AsyncQueue} from '@alwatr/async-queue'; +import {waitForTimeout} from '@alwatr/wait'; + +const queue = new AsyncQueue(); + +async function longTask(n) { + console.log('longTask(%s)', n); + await queue.push('longTaskId', async () => { + console.log('longTask %s start', n); + // Simulate a long task + await waitForTimeout(1000); + }); + console.log('longTask %s end', n); +} + +// run the tasks parallel +longTask(1); +longTask(2); +longTask(3).then(() => console.log('longTask 3 resolved')); +longTask(4); + +/* +Output: + + longTask(1) + longTask(2) + longTask(3) + longTask(4) + longTask 1 start + longTask 1 end + longTask 2 start + longTask 2 end + longTask 3 start + longTask 3 end + longTask 3 resolved + longTask 4 start + longTask 4 end + +*/ +``` diff --git a/packages/async-queue/demo/simple-queue.mjs b/packages/async-queue/demo/simple-queue.mjs new file mode 100644 index 00000000..522f4335 --- /dev/null +++ b/packages/async-queue/demo/simple-queue.mjs @@ -0,0 +1,21 @@ +import {AsyncQueue} from '@alwatr/async-queue'; +import {waitForTimeout} from '@alwatr/wait'; + +const queue = new AsyncQueue(); + +async function longTask(n) { + console.log('longTask(%s)', n); + await queue.push('longTaskId', async () => { + console.log('longTask %s start', n); + // Simulate a long task + await waitForTimeout(2_000); + }); + console.log('longTask %s end', n); +} + +// run the tasks parallel +longTask(1); +longTask(2); +longTask(3).then(() => console.log('longTask 3 resolved')); +longTask(4) + diff --git a/packages/async-queue/package.json b/packages/async-queue/package.json new file mode 100644 index 00000000..ef171743 --- /dev/null +++ b/packages/async-queue/package.json @@ -0,0 +1,85 @@ +{ + "name": "@alwatr/async-queue", + "version": "1.0.0", + "description": "A queue that executes async tasks in order like mutex and semaphore methodology for javascript and typescript.", + "author": "S. Ali Mihandoost ", + "keywords": [ + "async-queue", + "async", + "queue", + "mutex", + "semaphore", + "lock", + "SpinLock", + "spin-lock", + "SemaphoreSlim", + "semaphore-slim", + "cross-platform", + "ECMAScript", + "typescript", + "javascript", + "node", + "nodejs", + "esm", + "module", + "utility", + "util", + "utils", + "nanolib", + "alwatr" + ], + "type": "module", + "main": "./dist/main.cjs", + "module": "./dist/main.mjs", + "types": "./dist/main.d.ts", + "exports": { + ".": { + "import": "./dist/main.mjs", + "require": "./dist/main.cjs", + "types": "./dist/main.d.ts" + } + }, + "license": "MIT", + "files": [ + "**/*.{js,mjs,cjs,map,d.ts,html,md}", + "!demo/**/*" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/Alwatr/nanolib", + "directory": "packages/async-queue" + }, + "homepage": "https://github.com/Alwatr/nanolib/tree/next/packages/async-queue#readme", + "bugs": { + "url": "https://github.com/Alwatr/nanolib/issues" + }, + "prettier": "@alwatr/prettier-config", + "scripts": { + "b": "yarn run build", + "w": "yarn run watch", + "c": "yarn run clean", + "cb": "yarn run clean && yarn run build", + "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "build": "yarn run build:ts & yarn run build:es", + "build:es": "nano-build --preset=module", + "build:ts": "tsc --build", + "watch": "yarn run watch:ts & yarn run watch:es", + "watch:es": "yarn run build:es --watch", + "watch:ts": "yarn run build:ts --watch --preserveWatchOutput", + "clean": "rm -rfv dist *.tsbuildinfo" + }, + "dependencies": { + "@alwatr/flatomise": "workspace:^" + }, + "devDependencies": { + "@alwatr/nano-build": "workspace:^", + "@alwatr/prettier-config": "workspace:^", + "@alwatr/tsconfig-base": "workspace:^", + "@alwatr/type-helper": "workspace:^", + "@types/node": "^20.10.6", + "typescript": "^5.3.3" + } +} diff --git a/packages/async-queue/src/main.ts b/packages/async-queue/src/main.ts new file mode 100644 index 00000000..6520c271 --- /dev/null +++ b/packages/async-queue/src/main.ts @@ -0,0 +1,62 @@ +import {newFlatomise} from '@alwatr/flatomise'; + +import type {Dictionary} from '@alwatr/type-helper'; + +/** + * A queue that executes async tasks in order like mutex and semaphore methodology + * + * @example + * ```ts + * const queue = new AsyncQueue(); + * + * function longTask() { + * queue.push('longTaskId', async () => { + * // ... + * }); + * } + * ``` + */ +export class AsyncQueue { + queue_: Dictionary> = {}; + + /** + * Push a async task to the queue. + * + * @param taskId task id + * @param task async task + * @returns A promise that resolves when the task is done. + * + * @example + * ```typescript + * const queue = new AsyncQueue(); + * + * function longTask() { + * queue.push('longTaskId', async () => { + * // ... + * }); + * ``` + */ + async push(taskId: string, task: () => Promise): Promise { + const flatomise = newFlatomise(); + + const previousTaskPromise = this.queue_[taskId]; + this.queue_[taskId] = flatomise.promise; + + try { + await previousTaskPromise; + } + catch (_e) { + // ignore + } + + setTimeout(() => { + task().then(flatomise.resolve, flatomise.reject).then(() => { + if (this.queue_[taskId] === flatomise.promise) { + delete this.queue_[taskId]; + } + }); + }, 0); + + return flatomise.promise; + } +} diff --git a/packages/async-queue/tsconfig.json b/packages/async-queue/tsconfig.json new file mode 100644 index 00000000..b37f2034 --- /dev/null +++ b/packages/async-queue/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "@alwatr/tsconfig-base/tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "emitDeclarationOnly": true, + "composite": true, + }, + "include": ["src/**/*.ts"], + "references": [{"path": "../flatomise"}] +} diff --git a/yarn.lock b/yarn.lock index e32bbb58..a73ee61f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,20 @@ __metadata: languageName: node linkType: hard +"@alwatr/async-queue@workspace:packages/async-queue": + version: 0.0.0-use.local + resolution: "@alwatr/async-queue@workspace:packages/async-queue" + dependencies: + "@alwatr/flatomise": "workspace:^" + "@alwatr/nano-build": "workspace:^" + "@alwatr/prettier-config": "workspace:^" + "@alwatr/tsconfig-base": "workspace:^" + "@alwatr/type-helper": "workspace:^" + "@types/node": "npm:^20.10.6" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + "@alwatr/deep-clone@workspace:packages/deep-clone": version: 0.0.0-use.local resolution: "@alwatr/deep-clone@workspace:packages/deep-clone" @@ -68,6 +82,18 @@ __metadata: languageName: unknown linkType: soft +"@alwatr/flatomise@workspace:^, @alwatr/flatomise@workspace:packages/flatomise": + version: 0.0.0-use.local + resolution: "@alwatr/flatomise@workspace:packages/flatomise" + dependencies: + "@alwatr/nano-build": "workspace:^" + "@alwatr/prettier-config": "workspace:^" + "@alwatr/tsconfig-base": "workspace:^" + "@types/node": "npm:^20.10.6" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + "@alwatr/global-scope@workspace:^, @alwatr/global-scope@workspace:packages/global-scope": version: 0.0.0-use.local resolution: "@alwatr/global-scope@workspace:packages/global-scope" From 1bc4478327f156b5e45650590aea013590443723 Mon Sep 17 00:00:00 2001 From: Ali Mihandoost Date: Wed, 3 Jan 2024 17:14:22 +0330 Subject: [PATCH 17/27] feat(flatomise): A utility for creating promises that can be externally resolved or rejected. Co-authored-by: S. Amir Mohammad Najafi --- packages/flatomise/README.md | 23 ++++++++++ packages/flatomise/demo/demo.mjs | 7 +++ packages/flatomise/package.json | 74 ++++++++++++++++++++++++++++++++ packages/flatomise/src/main.ts | 31 +++++++++++++ packages/flatomise/tsconfig.json | 10 +++++ 5 files changed, 145 insertions(+) create mode 100644 packages/flatomise/README.md create mode 100644 packages/flatomise/demo/demo.mjs create mode 100644 packages/flatomise/package.json create mode 100644 packages/flatomise/src/main.ts create mode 100644 packages/flatomise/tsconfig.json diff --git a/packages/flatomise/README.md b/packages/flatomise/README.md new file mode 100644 index 00000000..66262622 --- /dev/null +++ b/packages/flatomise/README.md @@ -0,0 +1,23 @@ +# Flatomise + +A utility for creating promises that can be externally resolved or rejected. + +## Installation + +```bash +yarn add @alwatr/flatomise +``` + +## Usage + +```typescript +import {newFlatomise} from '@alwatr/flatomise'; + +const flatomise = newFlatomise(); +flatomise.promise.then(() => { + console.log('flatomise resolved'); +}); +flatomise.resolve(); +``` + +For real usage, see [async-queue](https://github.com/Alwatr/nanolib/blob/next/packages/async-quque/src/main.ts). diff --git a/packages/flatomise/demo/demo.mjs b/packages/flatomise/demo/demo.mjs new file mode 100644 index 00000000..79543d0e --- /dev/null +++ b/packages/flatomise/demo/demo.mjs @@ -0,0 +1,7 @@ +import {newFlatomise} from '@alwatr/flatomise'; + +const flatomise = newFlatomise(); +flatomise.promise.then(() => { + console.log('flatomise resolved'); +}); +flatomise.resolve(); diff --git a/packages/flatomise/package.json b/packages/flatomise/package.json new file mode 100644 index 00000000..1325a66b --- /dev/null +++ b/packages/flatomise/package.json @@ -0,0 +1,74 @@ +{ + "name": "@alwatr/flatomise", + "version": "0.0.0", + "description": "A utility for creating promises that can be externally resolved or rejected.", + "author": "S. Ali Mihandoost ", + "keywords": [ + "flatomise", + "flat-promise", + "promise", + "cross-platform", + "ECMAScript", + "typescript", + "javascript", + "node", + "nodejs", + "esm", + "module", + "utility", + "util", + "utils", + "nanolib", + "alwatr" + ], + "type": "module", + "main": "./dist/main.cjs", + "module": "./dist/main.mjs", + "types": "./dist/main.d.ts", + "exports": { + ".": { + "import": "./dist/main.mjs", + "require": "./dist/main.cjs", + "types": "./dist/main.d.ts" + } + }, + "license": "MIT", + "files": [ + "**/*.{js,mjs,cjs,map,d.ts,html,md}", + "!demo/**/*" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/Alwatr/nanolib", + "directory": "packages/flatomise" + }, + "homepage": "https://github.com/Alwatr/nanolib/tree/next/packages/flatomise#readme", + "bugs": { + "url": "https://github.com/Alwatr/nanolib/issues" + }, + "prettier": "@alwatr/prettier-config", + "scripts": { + "b": "yarn run build", + "w": "yarn run watch", + "c": "yarn run clean", + "cb": "yarn run clean && yarn run build", + "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "build": "yarn run build:ts & yarn run build:es", + "build:es": "nano-build --preset=module", + "build:ts": "tsc --build", + "watch": "yarn run watch:ts & yarn run watch:es", + "watch:es": "yarn run build:es --watch", + "watch:ts": "yarn run build:ts --watch --preserveWatchOutput", + "clean": "rm -rfv dist *.tsbuildinfo" + }, + "devDependencies": { + "@alwatr/nano-build": "workspace:^", + "@alwatr/prettier-config": "workspace:^", + "@alwatr/tsconfig-base": "workspace:^", + "@types/node": "^20.10.6", + "typescript": "^5.3.3" + } +} diff --git a/packages/flatomise/src/main.ts b/packages/flatomise/src/main.ts new file mode 100644 index 00000000..6ec01231 --- /dev/null +++ b/packages/flatomise/src/main.ts @@ -0,0 +1,31 @@ +/** + * Flat promise that can be resolved or rejected from outside. + */ +export interface Flatomise { + promise: Promise; + resolve: () => void; + reject: () => void; +} + +/** + * Create a new Flatomise is a promise that can be resolved or rejected from outside. + * + * @returns A new Flatomise. + * + * @example + * ```typescript + * const flatomise = newFlatomise(); + * flatomise.promise.then(() => { + * console.log('flatomise resolved'); + * }); + * flatomise.resolve(); + * ``` + */ +export function newFlatomise(): Flatomise { + const flatomise: Partial = {}; + flatomise.promise = new Promise((resolve, reject) => { + flatomise.resolve = resolve; + flatomise.reject = reject; + }); + return flatomise as Flatomise; +} diff --git a/packages/flatomise/tsconfig.json b/packages/flatomise/tsconfig.json new file mode 100644 index 00000000..58185341 --- /dev/null +++ b/packages/flatomise/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@alwatr/tsconfig-base/tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "emitDeclarationOnly": true, + "composite": true, + }, + "include": ["src/**/*.ts"] +} From 83b2e115a939b90049c4af8d1cd6c4ebee282bf8 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 17:34:40 +0330 Subject: [PATCH 18/27] fix(async-queue): remove wait deps --- packages/async-queue/demo/simple-queue.mjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/async-queue/demo/simple-queue.mjs b/packages/async-queue/demo/simple-queue.mjs index 522f4335..9e397021 100644 --- a/packages/async-queue/demo/simple-queue.mjs +++ b/packages/async-queue/demo/simple-queue.mjs @@ -1,14 +1,15 @@ import {AsyncQueue} from '@alwatr/async-queue'; -import {waitForTimeout} from '@alwatr/wait'; const queue = new AsyncQueue(); async function longTask(n) { console.log('longTask(%s)', n); - await queue.push('longTaskId', async () => { - console.log('longTask %s start', n); - // Simulate a long task - await waitForTimeout(2_000); + await queue.push('longTaskId', () => { + return new Promise(resolve => { + console.log('longTask %s start', n); + // Simulate a long task + setTimeout(resolve, 1_000) + }); }); console.log('longTask %s end', n); } @@ -18,4 +19,3 @@ longTask(1); longTask(2); longTask(3).then(() => console.log('longTask 3 resolved')); longTask(4) - From 2e54a0a5200ccbfcc64e443728eb6d16513b4296 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 17:35:44 +0330 Subject: [PATCH 19/27] feat(async-queue): add isRunning --- packages/async-queue/src/main.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/async-queue/src/main.ts b/packages/async-queue/src/main.ts index 6520c271..667525b2 100644 --- a/packages/async-queue/src/main.ts +++ b/packages/async-queue/src/main.ts @@ -17,7 +17,7 @@ import type {Dictionary} from '@alwatr/type-helper'; * ``` */ export class AsyncQueue { - queue_: Dictionary> = {}; + private queue__: Dictionary> = {}; /** * Push a async task to the queue. @@ -39,8 +39,8 @@ export class AsyncQueue { async push(taskId: string, task: () => Promise): Promise { const flatomise = newFlatomise(); - const previousTaskPromise = this.queue_[taskId]; - this.queue_[taskId] = flatomise.promise; + const previousTaskPromise = this.queue__[taskId]; + this.queue__[taskId] = flatomise.promise; try { await previousTaskPromise; @@ -51,12 +51,22 @@ export class AsyncQueue { setTimeout(() => { task().then(flatomise.resolve, flatomise.reject).then(() => { - if (this.queue_[taskId] === flatomise.promise) { - delete this.queue_[taskId]; + if (this.queue__[taskId] === flatomise.promise) { + delete this.queue__[taskId]; } }); }, 0); return flatomise.promise; } + + /** + * Check if the task running in the queue. + * + * @param taskId task id + * @returns true if the task is running, otherwise false. + */ + isRunning(taskId: string): boolean { + return this.queue__[taskId] !== undefined; + } } From 2bbfe04288fd797d3c60f4b37c1014b11aa77796 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 18:06:21 +0330 Subject: [PATCH 20/27] docs(async-queue): jsdoc --- packages/async-queue/demo/simple-queue.mjs | 6 +++--- packages/async-queue/src/main.ts | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/async-queue/demo/simple-queue.mjs b/packages/async-queue/demo/simple-queue.mjs index 9e397021..e8c9dbf7 100644 --- a/packages/async-queue/demo/simple-queue.mjs +++ b/packages/async-queue/demo/simple-queue.mjs @@ -5,10 +5,10 @@ const queue = new AsyncQueue(); async function longTask(n) { console.log('longTask(%s)', n); await queue.push('longTaskId', () => { - return new Promise(resolve => { + return new Promise((resolve) => { console.log('longTask %s start', n); // Simulate a long task - setTimeout(resolve, 1_000) + setTimeout(resolve, 1_000); }); }); console.log('longTask %s end', n); @@ -18,4 +18,4 @@ async function longTask(n) { longTask(1); longTask(2); longTask(3).then(() => console.log('longTask 3 resolved')); -longTask(4) +longTask(4); diff --git a/packages/async-queue/src/main.ts b/packages/async-queue/src/main.ts index 667525b2..c3b9be2b 100644 --- a/packages/async-queue/src/main.ts +++ b/packages/async-queue/src/main.ts @@ -17,6 +17,9 @@ import type {Dictionary} from '@alwatr/type-helper'; * ``` */ export class AsyncQueue { + /** + * A record of task IDs and their corresponding last queued task promises. + */ private queue__: Dictionary> = {}; /** From 154de55566d7f39bba46d269585bae838499f0bf Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 18:08:54 +0330 Subject: [PATCH 21/27] release: - @alwatr/async-queue@1.0.0 - @alwatr/flatomise@1.0.0 --- packages/async-queue/CHANGELOG.md | 15 +++++++++++++++ packages/flatomise/CHANGELOG.md | 10 ++++++++++ packages/flatomise/package.json | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 packages/async-queue/CHANGELOG.md create mode 100644 packages/flatomise/CHANGELOG.md diff --git a/packages/async-queue/CHANGELOG.md b/packages/async-queue/CHANGELOG.md new file mode 100644 index 00000000..f9c0d3ab --- /dev/null +++ b/packages/async-queue/CHANGELOG.md @@ -0,0 +1,15 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# 1.0.0 (2024-01-03) + +### Bug Fixes + +* **async-queue:** remove wait deps ([83b2e11](https://github.com/Alwatr/nanolib/commit/83b2e115a939b90049c4af8d1cd6c4ebee282bf8)) by @njfamirm + +### Features + +* **async-queue:** A simple async queue like mutex and semaphore methodology for javascript and typescript. ([e753ff2](https://github.com/Alwatr/nanolib/commit/e753ff29cf53e0e6bcdd9661666ee60300960db3)) by @AliMD +* **async-queue:** add isRunning ([2e54a0a](https://github.com/Alwatr/nanolib/commit/2e54a0a5200ccbfcc64e443728eb6d16513b4296)) by @njfamirm diff --git a/packages/flatomise/CHANGELOG.md b/packages/flatomise/CHANGELOG.md new file mode 100644 index 00000000..9aa89ab6 --- /dev/null +++ b/packages/flatomise/CHANGELOG.md @@ -0,0 +1,10 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# 1.0.0 (2024-01-03) + +### Features + +* **flatomise:** A utility for creating promises that can be externally resolved or rejected. ([1bc4478](https://github.com/Alwatr/nanolib/commit/1bc4478327f156b5e45650590aea013590443723)) by @AliMD diff --git a/packages/flatomise/package.json b/packages/flatomise/package.json index 1325a66b..cbd71387 100644 --- a/packages/flatomise/package.json +++ b/packages/flatomise/package.json @@ -1,6 +1,6 @@ { "name": "@alwatr/flatomise", - "version": "0.0.0", + "version": "1.0.0", "description": "A utility for creating promises that can be externally resolved or rejected.", "author": "S. Ali Mihandoost ", "keywords": [ From a4802615997de6c8fa17a6954b9302f90dbb2661 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 18:14:28 +0330 Subject: [PATCH 22/27] docs: add new packages to readme --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 87e6ff6f..1dcea7eb 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Here is a brief overview of the included libraries: 9. [`type-helper`](./packages/type-helper/README.md): Collection of useful typescript type helpers. 10. [`wait`](./packages/wait/README.md): Comprehensive toolkit for managing asynchronous operations. 11. [`exit-hook`](./packages/exit-hook/README.md): A utility for registering exit handlers in Node.js. - +12. [`flatomise`](./packages/flatomise/README.md): A utility for creating promises that can be externally resolved or rejected. +13. [`async-queue`](./packages/async-queue/README.md): A queue that executes async tasks in order like mutex and semaphore methodology for javascript and typescript. For more detailed information and guidelines on how to use each package, please refer to to each package's README. From d693067b9d8de749d909600cfdc9587a7cd207f4 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 19:24:44 +0330 Subject: [PATCH 23/27] feat(platform-info): support bun and isCli --- packages/platform-info/src/main.ts | 46 +++++++++++++++++------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/packages/platform-info/src/main.ts b/packages/platform-info/src/main.ts index a086ce40..99ebb3d6 100644 --- a/packages/platform-info/src/main.ts +++ b/packages/platform-info/src/main.ts @@ -2,15 +2,6 @@ * Represents information about the current platform. */ interface PlatformInfo { - /** - * The current platform name. - * - `browser` for browsers. - * - `node` for node.js environments. - * - `semi-node` for node.js like environments such as nw.js, deno, etc. - * - `unknown` for unknown environments. - */ - name: 'browser' | 'node' | 'semi-node' | 'unknown'; - /** * Whether the NODE_ENV environment variable is not `production` or in browser location.hostname is `localhost`. */ @@ -26,6 +17,11 @@ interface PlatformInfo { */ isBrowser: boolean; + /** + * Whether the current platform is a not a browser. + */ + isCli: boolean; + /** * Whether the current platform is a web worker. */ @@ -36,6 +32,11 @@ interface PlatformInfo { */ isDeno: boolean; + /** + * Whether the current platform is bun. + */ + isBun: boolean; + /** * Whether the current platform is nw.js. */ @@ -50,31 +51,35 @@ interface PlatformInfo { /** * Represents information about the current platform. */ -const platformInfo: PlatformInfo = { - name: 'unknown', +export const platformInfo: PlatformInfo = { development: false, isNode: false, isBrowser: false, isWebWorker: false, isDeno: false, + isBun: false, + isCli: false, isNw: false, isElectron: false, }; if (typeof window === 'object' && typeof document === 'object' && document.nodeType === Node.DOCUMENT_NODE) { - platformInfo.name = 'browser'; platformInfo.isBrowser = true; // @ts-expect-error - Cannot find name 'WorkerGlobalScope' platformInfo.isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; } -else if (process.versions?.node != null) { - platformInfo.name = 'node'; - platformInfo.isNode = true; -} else if (typeof process === 'object') { - platformInfo.name = 'semi-node'; + platformInfo.isCli = true; - if (process.versions?.electron != null) { + if (process.versions?.node != null) { + platformInfo.isNode = true; + } + + // @ts-expect-error - Cannot find name 'Bun' + if (typeof Bun !== 'undefined') { + platformInfo.isBun = true; + } + else if (process.versions?.electron != null) { platformInfo.isElectron = true; } // @ts-expect-error - Cannot find name 'nw' @@ -86,13 +91,14 @@ else if (typeof process === 'object') { // other platforms // @ts-expect-error - Cannot find name 'Deno' if (typeof Deno !== 'undefined') { + platformInfo.isCli = true platformInfo.isDeno = true; } // development -if (platformInfo.isBrowser) { +if (platformInfo.isBrowser === true) { platformInfo.development = location.hostname === 'localhost' || location.hostname.indexOf('127.') === 0; } -else if (platformInfo.name === 'semi-node') { +else if (platformInfo.isCli === true) { platformInfo.development = process.env.NODE_ENV !== 'production'; } From ad549dc39e52242261c78939bd62ca10f69cea60 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 19:26:19 +0330 Subject: [PATCH 24/27] feat(logger): change devMode env name BREAKING CHANGE: use DEBUG in cli and debug in browser --- packages/logger/README.md | 53 ++++++++++++ packages/logger/demo/logger.mjs | 42 +++++++++ packages/logger/package.json | 80 +++++++++++++++++ packages/logger/src/main.ts | 123 ++++++++++++++++++++++++++ packages/logger/src/type.ts | 147 ++++++++++++++++++++++++++++++++ packages/logger/tsconfig.json | 11 +++ yarn.lock | 17 +++- 7 files changed, 472 insertions(+), 1 deletion(-) create mode 100644 packages/logger/README.md create mode 100644 packages/logger/demo/logger.mjs create mode 100644 packages/logger/package.json create mode 100644 packages/logger/src/main.ts create mode 100644 packages/logger/src/type.ts create mode 100644 packages/logger/tsconfig.json diff --git a/packages/logger/README.md b/packages/logger/README.md new file mode 100644 index 00000000..1071f5a0 --- /dev/null +++ b/packages/logger/README.md @@ -0,0 +1,53 @@ +# Async Queue + +A queue that executes async tasks in order like mutex and semaphore methodology for javascript and typescript. + +## Installation + +```bash +yarn add @alwatr/async-queue +``` + +## Usage + +```typescript +import {AsyncQueue} from '@alwatr/async-queue'; +import {waitForTimeout} from '@alwatr/wait'; + +const queue = new AsyncQueue(); + +async function longTask(n) { + console.log('longTask(%s)', n); + await queue.push('longTaskId', async () => { + console.log('longTask %s start', n); + // Simulate a long task + await waitForTimeout(1000); + }); + console.log('longTask %s end', n); +} + +// run the tasks parallel +longTask(1); +longTask(2); +longTask(3).then(() => console.log('longTask 3 resolved')); +longTask(4); + +/* +Output: + + longTask(1) + longTask(2) + longTask(3) + longTask(4) + longTask 1 start + longTask 1 end + longTask 2 start + longTask 2 end + longTask 3 start + longTask 3 end + longTask 3 resolved + longTask 4 start + longTask 4 end + +*/ +``` diff --git a/packages/logger/demo/logger.mjs b/packages/logger/demo/logger.mjs new file mode 100644 index 00000000..77206244 --- /dev/null +++ b/packages/logger/demo/logger.mjs @@ -0,0 +1,42 @@ +import {createLogger} from '@alwatr/logger'; + +const logger1 = createLogger('logger/demo1'); +const logger2 = createLogger('logger/demo2'); + +console.debug('--- logger.banner ---'); +logger1.banner('logger1'); +logger2.banner('logger2'); + +console.debug('--- logger.logProperty ---'); +logger1.logProperty?.('name', 'ali'); +logger2.logProperty?.('options', {a: 1, b: 2}); + +console.debug('--- logger.logMethod ---'); +logger1.logMethod?.('myMethod1'); +logger2.logMethod?.('myMethod2'); + +console.debug('--- logger.logMethodArgs ---'); +logger1.logMethodArgs?.('myMethod1', {a: 1, b: 2}); +logger2.logMethodArgs?.('myMethod2', {a: 1, b: 2}); + +console.debug('--- logger.logMethodFull ---'); +logger1.logMethodFull?.('add', {a: 1, b: 2}, 3); + +console.debug('--- logger.incident ---'); +logger1.incident?.('myMethod', 'abort_signal', {url: '/test.json'}); + +console.debug('--- logger.accident ---'); +logger2.accident('myMethod', 'file_not_found', { + url: '/test.json', +}); + +console.debug('--- logger.logOther ---'); +logger1.logOther?.('foo:', 'bar', {a: 1}); + +console.debug('--- logger.error ---'); +try { + throw new Error('my_error_message'); +} +catch (err) { + logger1.error('myMethod', 'error_code', err, {a: 1, b: 2}); +} diff --git a/packages/logger/package.json b/packages/logger/package.json new file mode 100644 index 00000000..4d857f78 --- /dev/null +++ b/packages/logger/package.json @@ -0,0 +1,80 @@ +{ + "name": "@alwatr/logger", + "version": "2.4.1", + "description": "Fancy colorful console debugger with custom scope written in tiny TypeScript, ES module.", + "author": "S. Ali Mihandoost ", + "keywords": [ + "logger", + "log", + "console", + "debug", + "cross-platform", + "ECMAScript", + "typescript", + "javascript", + "node", + "nodejs", + "esm", + "module", + "utility", + "util", + "utils", + "nanolib", + "alwatr" + ], + "type": "module", + "main": "./dist/main.cjs", + "module": "./dist/main.mjs", + "types": "./dist/main.d.ts", + "exports": { + ".": { + "import": "./dist/main.mjs", + "require": "./dist/main.cjs", + "types": "./dist/main.d.ts" + } + }, + "license": "MIT", + "files": [ + "**/*.{js,mjs,cjs,map,d.ts,html,md}", + "!demo/**/*" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/Alwatr/nanolib", + "directory": "packages/logger" + }, + "homepage": "https://github.com/Alwatr/nanolib/tree/next/packages/logger#readme", + "bugs": { + "url": "https://github.com/Alwatr/nanolib/issues" + }, + "prettier": "@alwatr/prettier-config", + "scripts": { + "b": "yarn run build", + "w": "yarn run watch", + "c": "yarn run clean", + "cb": "yarn run clean && yarn run build", + "d": "yarn run build:es && DEBUG=1 yarn node", + "build": "yarn run build:ts & yarn run build:es", + "build:es": "nano-build --preset=module", + "build:ts": "tsc --build", + "watch": "yarn run watch:ts & yarn run watch:es", + "watch:es": "yarn run build:es --watch", + "watch:ts": "yarn run build:ts --watch --preserveWatchOutput", + "clean": "rm -rfv dist *.tsbuildinfo" + }, + "devDependencies": { + "@alwatr/nano-build": "workspace:^", + "@alwatr/prettier-config": "workspace:^", + "@alwatr/tsconfig-base": "workspace:^", + "@alwatr/type-helper": "workspace:^", + "@types/node": "^20.10.6", + "typescript": "^5.3.3" + }, + "dependencies": { + "@alwatr/global-scope": "workspace:^", + "@alwatr/platform-info": "workspace:^" + } +} diff --git a/packages/logger/src/main.ts b/packages/logger/src/main.ts new file mode 100644 index 00000000..f8da2947 --- /dev/null +++ b/packages/logger/src/main.ts @@ -0,0 +1,123 @@ +import {platformInfo} from '@alwatr/platform-info'; + +import type {AlwatrLogger} from './type.js'; + +export const debugMode = platformInfo.isCli + ? process.env.DEBUG !== undefined && process.env.DEBUG !== '' + : typeof localStorage !== 'undefined' && localStorage.getItem('debug') === '1'; + +/** + * Color list storage for logger. + */ +const colorList = platformInfo.isCli + ? ['0;36', '0;35', '0;34', '0;33', '0;32'] // red and white omitted + : [ + '#35b997', + '#f05561', + '#ee224a', + '#91c13e', + '#22af4b', + '#f0e995', + '#0fe995', + '#0f89ca', + '#08b9a5', + '#fee851', + '#ee573d', + '#f9df30', + '#1da2dc', + '#f05123', + '#ee2524', + ]; + +let _colorIndex = 0; +const _getNextColor = (): string => { + const color = colorList[_colorIndex]; + _colorIndex++; + if (_colorIndex >= colorList.length) { + _colorIndex = 0; + } + return color; +}; + +const _style = { + scope: platformInfo.isCli ? '\x1b[{{color}}m' : 'color: {{color}};', + reset: platformInfo.isCli ? '\x1b[0m' : 'color: inherit;', +}; + +const _keySection = platformInfo.isCli ? '%s%s%s' : '%c%s%c'; + +const _sanitizeDomain = (domain: string): string => { + domain = domain.trim(); + const first = domain.charAt(0); + if (first !== '[' && first !== '{' && first !== '<') { + domain = '[' + domain + ']'; + } + return domain; +}; + +/** + * Create a logger function for fancy console debug with custom scope. + * + * - **color** is optional and automatically select from internal fancy color list. + * - **debug** is optional and automatically detect from localStorage `ALWATR_DEBUG` item or `process.env.ALWATR_DEBUG` + * + * Example: + * + * ```ts + * import {createLogger} from 'https://esm.run/@alwatr/logger'; + * const logger = createLogger('logger/demo'); + * ``` + */ +export const createLogger = (domain: string, debugMode_ = debugMode): AlwatrLogger => { + const color = _getNextColor(); + const styleScope = _style.scope.replace('{{color}}', color); + domain = _sanitizeDomain(domain); + + /** + * Required logger object, accident, error always reported even when the devMode is false. + */ + const requiredItems: AlwatrLogger = { + banner: platformInfo.isCli + ? console.log.bind(console, `\x1b[1;37;45m {{{ %s }}} ${_style.reset}`) + : console.log.bind( + console, + '%c%s', + 'font-size: 2rem; background-color: #5858e8; color: #fff; padding: 1rem 4rem; border-radius: 0.5rem;', + ), + + accident: platformInfo.isCli + ? console.warn.bind(console, `${styleScope}⚠️\n%s\x1b[33m.%s() Accident \`%s\`!${_style.reset}`, domain) + : console.warn.bind(console, '%c%s%c.%s() Accident `%s`!', styleScope, domain, _style.reset), + + error: platformInfo.isCli + ? console.error.bind(console, `${styleScope}❌\n%s\x1b[31m.%s() Error \`%s\`${_style.reset}\n`, domain) + : console.error.bind(console, '%c%s%c.%s() Error `%s`\n', styleScope, domain, _style.reset), + }; + + if (!debugMode_) { + return requiredItems; + } + // else + return { + ...requiredItems, + + logProperty: console.debug.bind(console, _keySection + '.%s = %o;', styleScope, domain, _style.reset), + + logMethod: console.debug.bind(console, _keySection + '.%s();', styleScope, domain, _style.reset), + + logModule: console.debug.bind(console, _keySection + '/%s.js;', styleScope, domain, _style.reset), + + logMethodArgs: console.debug.bind(console, _keySection + '.%s(%o);', styleScope, domain, _style.reset), + + logMethodFull: console.debug.bind(console, _keySection + '.%s(%o) => %o', styleScope, domain, _style.reset), + + logOther: console.debug.bind(console, _keySection, styleScope, domain, _style.reset), + + incident: platformInfo.isCli + ? console.log.bind(console, `${styleScope}🚸\n%s${_style.reset}.%s() Incident \`%s\`!${_style.reset}`, domain) + : console.log.bind(console, '%c%s%c.%s() Incident `%s`!', styleScope, domain, 'color: orange;'), + + time: (label: string) => console.time(domain + '.' + label + ' duration time'), + timeEnd: (label: string) => console.timeEnd(domain + '.' + label + ' duration time'), + } as const; +}; diff --git a/packages/logger/src/type.ts b/packages/logger/src/type.ts new file mode 100644 index 00000000..f6fa50ef --- /dev/null +++ b/packages/logger/src/type.ts @@ -0,0 +1,147 @@ +export interface AlwatrLogger { + /** + * `console.debug` property change. + * + * Example: + * + * ```ts + * logger.logProperty?.('name', 'ali'); + * ``` + */ + logProperty?(property: string, value: unknown): void; + + /** + * `console.debug` module name. + * + * Example: + * + * ```ts + * logger.logModule?.('app'); + * ``` + */ + logModule?(name: string): void; + + /** + * `console.debug` function or method calls. + * + * Example: + * + * ```ts + * function myMethod () { + * logger.logMethod?.('myMethod'); + * } + * ``` + */ + logMethod?(method: string): void; + + /** + * `console.debug` function or method calls with arguments. + * + * Example: + * + * ```ts + * function myMethod (a: number, b: number) { + * logger.logMethodArgs?.('myMethod', {a, b}); + * } + * ``` + */ + logMethodArgs?(method: string, args: unknown): void; + + /** + * `console.debug` function or method calls with arguments. + * + * Example: + * + * ```ts + * function add (a: number, b: number): number { + * const result = a + b; + * logger.logMethodFull?.('add', {a, b}, result); + * return result; + * } + * ``` + */ + logMethodFull?(method: string, args: unknown, result: unknown): void; + + /** + * `console.log` an event or expected accident. + * not warn or error just important information. + * + * Example: + * + * ```ts + * logger.incident?.('fetch', 'abort_signal', {url: '/test.json'}); + * ``` + */ + incident?(method: string, code: string, ...args: unknown[]): void; + + /** + * `console.warn` an unexpected accident or error that you handled like warning. + * + * Example: + * + * ```ts + * logger.accident('fetch', 'file_not_found', {url: '/test.json'}); + * ``` + */ + accident(method: string, code: string, ...args: unknown[]): void; + + /** + * `console.error` an unexpected error. + * + * Example: + * + * ```ts + * try { + * ... + * } + * catch (err) { + * logger.error('myMethod', 'error_code', err, {a: 1, b: 2}); + * } + * ``` + */ + error(method: string, code: string, ...args: unknown[]): void; + + /** + * Simple `console.debug` with styled scope. + * + * Example: + * + * ```ts + * logger.logOther?.('foo:', 'bar', {a: 1}); + * ``` + */ + logOther?(...args: unknown[]): void; + + /** + * Simple `console.time` with scope. + * + * Example: + * + * ```ts + * logger.time?.('foo'); + * ``` + */ + time?(label: string): void; + + /** + * Simple `console.timeEnd` with scope. + * + * Example: + * + * ```ts + * logger.timeEnd?.('foo'); + * ``` + */ + timeEnd?(label: string): void; + + /** + * log big banner + * + * Example: + * + * ```ts + * logger.banner('Alwatr PWA v2'); + * ``` + */ + banner(message: string): void; +} diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json new file mode 100644 index 00000000..b37f2034 --- /dev/null +++ b/packages/logger/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "@alwatr/tsconfig-base/tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "emitDeclarationOnly": true, + "composite": true, + }, + "include": ["src/**/*.ts"], + "references": [{"path": "../flatomise"}] +} diff --git a/yarn.lock b/yarn.lock index a73ee61f..737ba815 100644 --- a/yarn.lock +++ b/yarn.lock @@ -106,6 +106,21 @@ __metadata: languageName: unknown linkType: soft +"@alwatr/logger@workspace:packages/logger": + version: 0.0.0-use.local + resolution: "@alwatr/logger@workspace:packages/logger" + dependencies: + "@alwatr/global-scope": "workspace:^" + "@alwatr/nano-build": "workspace:^" + "@alwatr/platform-info": "workspace:^" + "@alwatr/prettier-config": "workspace:^" + "@alwatr/tsconfig-base": "workspace:^" + "@alwatr/type-helper": "workspace:^" + "@types/node": "npm:^20.10.6" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + "@alwatr/nano-build@workspace:^, @alwatr/nano-build@workspace:packages/nano-build": version: 0.0.0-use.local resolution: "@alwatr/nano-build@workspace:packages/nano-build" @@ -119,7 +134,7 @@ __metadata: languageName: unknown linkType: soft -"@alwatr/platform-info@workspace:packages/platform-info": +"@alwatr/platform-info@workspace:^, @alwatr/platform-info@workspace:packages/platform-info": version: 0.0.0-use.local resolution: "@alwatr/platform-info@workspace:packages/platform-info" dependencies: From 38443ade4677e857b5ebd4be417f5f2eb1818c87 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 19:27:00 +0330 Subject: [PATCH 25/27] chore: rename logger env --- packages/async-queue/package.json | 2 +- packages/deep-clone/package.json | 2 +- packages/exit-hook/package.json | 2 +- packages/flat-string/package.json | 2 +- packages/flatomise/package.json | 2 +- packages/global-scope/package.json | 2 +- packages/platform-info/demo/demo.mjs | 3 +++ packages/platform-info/package.json | 2 +- packages/type-helper/package.json | 2 +- packages/wait/package.json | 2 +- 10 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 packages/platform-info/demo/demo.mjs diff --git a/packages/async-queue/package.json b/packages/async-queue/package.json index ef171743..567f6f01 100644 --- a/packages/async-queue/package.json +++ b/packages/async-queue/package.json @@ -62,7 +62,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts & yarn run build:es", "build:es": "nano-build --preset=module", "build:ts": "tsc --build", diff --git a/packages/deep-clone/package.json b/packages/deep-clone/package.json index 915aaf71..7e59ec40 100644 --- a/packages/deep-clone/package.json +++ b/packages/deep-clone/package.json @@ -57,7 +57,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts & yarn run build:es", "build:es": "nano-build --preset=module", "build:ts": "tsc --build", diff --git a/packages/exit-hook/package.json b/packages/exit-hook/package.json index 347c999a..593fd938 100644 --- a/packages/exit-hook/package.json +++ b/packages/exit-hook/package.json @@ -55,7 +55,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts & yarn run build:es", "build:es": "nano-build --preset=module", "build:ts": "tsc --build", diff --git a/packages/flat-string/package.json b/packages/flat-string/package.json index f240afc4..77ab7087 100644 --- a/packages/flat-string/package.json +++ b/packages/flat-string/package.json @@ -58,7 +58,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts & yarn run build:es", "build:es": "nano-build --preset=module", "build:ts": "tsc --build", diff --git a/packages/flatomise/package.json b/packages/flatomise/package.json index cbd71387..a58fcf43 100644 --- a/packages/flatomise/package.json +++ b/packages/flatomise/package.json @@ -55,7 +55,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts & yarn run build:es", "build:es": "nano-build --preset=module", "build:ts": "tsc --build", diff --git a/packages/global-scope/package.json b/packages/global-scope/package.json index 6030aa73..91bcae1a 100644 --- a/packages/global-scope/package.json +++ b/packages/global-scope/package.json @@ -59,7 +59,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts & yarn run build:es", "build:es": "nano-build --preset=module", "build:ts": "tsc --build", diff --git a/packages/platform-info/demo/demo.mjs b/packages/platform-info/demo/demo.mjs new file mode 100644 index 00000000..fb6e2561 --- /dev/null +++ b/packages/platform-info/demo/demo.mjs @@ -0,0 +1,3 @@ +import {platformInfo} from '@alwatr/platform-info'; + +console.dir(platformInfo); diff --git a/packages/platform-info/package.json b/packages/platform-info/package.json index 4d2d4a20..ffe2ef4c 100644 --- a/packages/platform-info/package.json +++ b/packages/platform-info/package.json @@ -65,7 +65,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts & yarn run build:es", "build:es": "nano-build --preset=module", "build:ts": "tsc --build", diff --git a/packages/type-helper/package.json b/packages/type-helper/package.json index 9d6fe949..8b8a422a 100644 --- a/packages/type-helper/package.json +++ b/packages/type-helper/package.json @@ -39,7 +39,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts", "build:es": "echo skip build:es", "build:ts": "tsc --build", diff --git a/packages/wait/package.json b/packages/wait/package.json index 27142d6a..cc9c42e4 100644 --- a/packages/wait/package.json +++ b/packages/wait/package.json @@ -56,7 +56,7 @@ "w": "yarn run watch", "c": "yarn run clean", "cb": "yarn run clean && yarn run build", - "d": "yarn run build:es && ALWATR_DEBUG=1 yarn node", + "d": "yarn run build:es && DEBUG=1 yarn node", "build": "yarn run build:ts & yarn run build:es", "build:es": "nano-build --preset=module", "build:ts": "tsc --build", From bbbc703f1fc000a1b615c91976c0f939741949ae Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 19:44:25 +0330 Subject: [PATCH 26/27] docs(logger): readme --- packages/logger/README.md | 68 +++++++++++++---------------------- packages/logger/package.json | 2 -- packages/logger/tsconfig.json | 2 +- yarn.lock | 2 -- 4 files changed, 26 insertions(+), 48 deletions(-) diff --git a/packages/logger/README.md b/packages/logger/README.md index 1071f5a0..e3e7e9ff 100644 --- a/packages/logger/README.md +++ b/packages/logger/README.md @@ -1,53 +1,35 @@ -# Async Queue +# Alwatr Logger - `@alwatr/logger` -A queue that executes async tasks in order like mutex and semaphore methodology for javascript and typescript. +Fancy colorful console debugger with custom scope written in tiny TypeScript, ES module. -## Installation +## Example usage -```bash -yarn add @alwatr/async-queue +```ts +import {createLogger} from '@alwatr/logger'; + +const logger = createLogger('demo'); + +function sayHello(name: string) { + logger.logMethodArgs?.('sayHello', {name}); +} ``` -## Usage +### Debug/Develope Mode (DEBUG_MODE) -```typescript -import {AsyncQueue} from '@alwatr/async-queue'; -import {waitForTimeout} from '@alwatr/wait'; +Many of the methods in the logger are no-ops when the debug mode is off. This is to prevent unnecessary performance impact in production. -const queue = new AsyncQueue(); +#### Browser -async function longTask(n) { - console.log('longTask(%s)', n); - await queue.push('longTaskId', async () => { - console.log('longTask %s start', n); - // Simulate a long task - await waitForTimeout(1000); - }); - console.log('longTask %s end', n); -} +```ts +window.localStorage?.setItem('debug', '1'); + +// Please remember to **reload** the window after changing the debug mode. +``` + +> Make sure the [log level](https://developer.chrome.com/docs/devtools/console/log/#browser) in set correctly. + +#### CLI -// run the tasks parallel -longTask(1); -longTask(2); -longTask(3).then(() => console.log('longTask 3 resolved')); -longTask(4); - -/* -Output: - - longTask(1) - longTask(2) - longTask(3) - longTask(4) - longTask 1 start - longTask 1 end - longTask 2 start - longTask 2 end - longTask 3 start - longTask 3 end - longTask 3 resolved - longTask 4 start - longTask 4 end - -*/ +```sh +DEBUG=1 node index.js ``` diff --git a/packages/logger/package.json b/packages/logger/package.json index 4d857f78..31849c92 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -69,12 +69,10 @@ "@alwatr/nano-build": "workspace:^", "@alwatr/prettier-config": "workspace:^", "@alwatr/tsconfig-base": "workspace:^", - "@alwatr/type-helper": "workspace:^", "@types/node": "^20.10.6", "typescript": "^5.3.3" }, "dependencies": { - "@alwatr/global-scope": "workspace:^", "@alwatr/platform-info": "workspace:^" } } diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json index b37f2034..879b4c5c 100644 --- a/packages/logger/tsconfig.json +++ b/packages/logger/tsconfig.json @@ -7,5 +7,5 @@ "composite": true, }, "include": ["src/**/*.ts"], - "references": [{"path": "../flatomise"}] + "references": [] } diff --git a/yarn.lock b/yarn.lock index 737ba815..98d528d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -110,12 +110,10 @@ __metadata: version: 0.0.0-use.local resolution: "@alwatr/logger@workspace:packages/logger" dependencies: - "@alwatr/global-scope": "workspace:^" "@alwatr/nano-build": "workspace:^" "@alwatr/platform-info": "workspace:^" "@alwatr/prettier-config": "workspace:^" "@alwatr/tsconfig-base": "workspace:^" - "@alwatr/type-helper": "workspace:^" "@types/node": "npm:^20.10.6" typescript: "npm:^5.3.3" languageName: unknown From 2f30ef15240a3629c7697409c322c7fdfc91a5f8 Mon Sep 17 00:00:00 2001 From: "S. Amir Mohammad Najafi" Date: Wed, 3 Jan 2024 19:49:55 +0330 Subject: [PATCH 27/27] chore(logger): add reference --- packages/logger/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json index 879b4c5c..d939f3ff 100644 --- a/packages/logger/tsconfig.json +++ b/packages/logger/tsconfig.json @@ -7,5 +7,5 @@ "composite": true, }, "include": ["src/**/*.ts"], - "references": [] + "references": [{"path": "../platform-info"}] }