From 595b8ed157207cf64a8f03f279b0df4f0790883f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sun, 25 Aug 2024 19:17:04 +0200 Subject: [PATCH] chore(master): release 0.4.21 (#60) * chore(master): release 0.4.21 * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 25 +++++++++++++++++++ README.md | 4 +-- deno.json | 24 ++++++++++++++---- dist/package.json | 2 +- examples/deno/javascript/dynamicExample.js | 2 +- examples/deno/javascript/fixedExample.js | 2 +- .../deno/javascript/multiFunctionExample.js | 2 +- .../deno/javascript/multiFunctionWorker.js | 2 +- examples/deno/javascript/yourWorker.js | 2 +- examples/deno/typescript/pool.ts | 2 +- examples/deno/typescript/worker.ts | 2 +- sonar-project.properties | 2 +- src/circular-buffer.ts | 4 +-- src/pools/abstract-pool.ts | 14 +++++------ .../worker-choice-strategies-context.ts | 6 ++--- src/pools/utils.ts | 8 +++--- src/pools/version.ts | 2 +- src/pools/worker-node.ts | 2 +- src/queues/abstract-fixed-queue.ts | 8 +++--- src/queues/fixed-priority-queue.ts | 2 +- src/queues/priority-queue.ts | 6 ++--- tests/pools/abstract-pool.test.mjs | 14 +++++------ tests/pools/thread/fixed.test.mjs | 2 +- tests/queues/fixed-priority-queue.test.mjs | 4 +-- tests/queues/fixed-queue.test.mjs | 4 +-- tests/queues/priority-queue.test.mjs | 6 ++--- tests/test-utils.mjs | 4 +-- 28 files changed, 99 insertions(+), 60 deletions(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index cb3a6627..4a46db4f 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.4.20" + ".": "0.4.21" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 38e86054..f78d4adf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,31 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.21](https://github.com/poolifier/poolifier-web-worker/compare/v0.4.20...v0.4.21) (2024-08-24) + +### ๐Ÿž Bug Fixes + +- fix pool ready status with zero min size dynamic pool + ([cebb8d8](https://github.com/poolifier/poolifier-web-worker/commit/cebb8d85701be4376b92ea97f71e6cabd39f9592)) + +### ๐Ÿงช Tests + +- add pool empty event test + ([e353778](https://github.com/poolifier/poolifier-web-worker/commit/e353778b3657122d216ea08bd5f9528d9bbcd6f4)) +- optimize pool empty event test + ([e49f64a](https://github.com/poolifier/poolifier-web-worker/commit/e49f64a279e58c4e74f083b572b2555b2111d05c)) + +### ๐Ÿ“š Documentation + +- refine a code comment + ([1dc8bf2](https://github.com/poolifier/poolifier-web-worker/commit/1dc8bf2a39f9876a96b43730d6722e64fc5b5613)) + +### ๐Ÿค– Automation + +- **deps:** Bump sonarsource/sonarcloud-github-action + ([#59](https://github.com/poolifier/poolifier-web-worker/issues/59)) + ([d35a85f](https://github.com/poolifier/poolifier-web-worker/commit/d35a85fb3108222f358aa516d24124f15a3430b9)) + ## [0.4.20](https://github.com/poolifier/poolifier-web-worker/compare/v0.4.19...v0.4.20) (2024-08-19) ### ๐Ÿž Bug Fixes diff --git a/README.md b/README.md index bd5eae49..749b0b38 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ for more details**: ```js - + ``` ```js @@ -158,7 +158,7 @@ import { DynamicThreadPool, FixedThreadPool, PoolEvents, -} from 'https://cdn.jsdelivr.net/npm/poolifier-web-worker@0.4.20/browser/mod.js' +} from 'https://cdn.jsdelivr.net/npm/poolifier-web-worker@0.4.21/browser/mod.js' ``` diff --git a/deno.json b/deno.json index e123de39..3a7a45cf 100644 --- a/deno.json +++ b/deno.json @@ -1,9 +1,11 @@ { "name": "@poolifier/poolifier-web-worker", - "version": "0.4.20", + "version": "0.4.21", "exports": "./src/mod.ts", "compilerOptions": { - "lib": ["deno.worker"], + "lib": [ + "deno.worker" + ], "strict": true }, "tasks": { @@ -24,7 +26,9 @@ "documentation": "deno doc ./src/mod.ts" }, "test": { - "include": ["./tests/**/*.test.mjs"] + "include": [ + "./tests/**/*.test.mjs" + ] }, "fmt": { "semiColons": false, @@ -38,8 +42,18 @@ "expect": "npm:expect@^29.7.0" }, "publish": { - "include": ["LICENSE", "README.md", "deno.json", "src/**/*.ts"] + "include": [ + "LICENSE", + "README.md", + "deno.json", + "src/**/*.ts" + ] }, "lock": false, - "exclude": ["./coverage", "./dist/browser", "./dist/esm", "./npm"] + "exclude": [ + "./coverage", + "./dist/browser", + "./dist/esm", + "./npm" + ] } diff --git a/dist/package.json b/dist/package.json index b0751162..9a57b78f 100644 --- a/dist/package.json +++ b/dist/package.json @@ -1,6 +1,6 @@ { "name": "poolifier-web-worker", - "version": "0.4.20", + "version": "0.4.21", "description": "poolifier-web-worker", "repository": { "type": "git", diff --git a/examples/deno/javascript/dynamicExample.js b/examples/deno/javascript/dynamicExample.js index 9d627ef2..761c7302 100644 --- a/examples/deno/javascript/dynamicExample.js +++ b/examples/deno/javascript/dynamicExample.js @@ -2,7 +2,7 @@ import { availableParallelism, DynamicThreadPool, PoolEvents, -} from 'jsr:@poolifier/poolifier-web-worker@^0.4.20' // x-release-please-version +} from 'jsr:@poolifier/poolifier-web-worker@^0.4.21' // x-release-please-version const pool = new DynamicThreadPool( Math.floor(availableParallelism() / 2), diff --git a/examples/deno/javascript/fixedExample.js b/examples/deno/javascript/fixedExample.js index 792adb40..8981d10d 100644 --- a/examples/deno/javascript/fixedExample.js +++ b/examples/deno/javascript/fixedExample.js @@ -2,7 +2,7 @@ import { availableParallelism, FixedThreadPool, PoolEvents, -} from 'jsr:@poolifier/poolifier-web-worker@^0.4.20' // x-release-please-version +} from 'jsr:@poolifier/poolifier-web-worker@^0.4.21' // x-release-please-version const pool = new FixedThreadPool( availableParallelism(), diff --git a/examples/deno/javascript/multiFunctionExample.js b/examples/deno/javascript/multiFunctionExample.js index bff1fa2a..52d70463 100644 --- a/examples/deno/javascript/multiFunctionExample.js +++ b/examples/deno/javascript/multiFunctionExample.js @@ -1,7 +1,7 @@ import { availableParallelism, FixedThreadPool, -} from 'jsr:@poolifier/poolifier-web-worker@^0.4.20' // x-release-please-version +} from 'jsr:@poolifier/poolifier-web-worker@^0.4.21' // x-release-please-version const pool = new FixedThreadPool( availableParallelism(), diff --git a/examples/deno/javascript/multiFunctionWorker.js b/examples/deno/javascript/multiFunctionWorker.js index 4024ceeb..85c2a032 100644 --- a/examples/deno/javascript/multiFunctionWorker.js +++ b/examples/deno/javascript/multiFunctionWorker.js @@ -1,4 +1,4 @@ -import { ThreadWorker } from 'jsr:@poolifier/poolifier-web-worker@^0.4.20' // x-release-please-version +import { ThreadWorker } from 'jsr:@poolifier/poolifier-web-worker@^0.4.21' // x-release-please-version function fn0(data) { console.info('Executing fn0') diff --git a/examples/deno/javascript/yourWorker.js b/examples/deno/javascript/yourWorker.js index 2144f9d3..376b890a 100644 --- a/examples/deno/javascript/yourWorker.js +++ b/examples/deno/javascript/yourWorker.js @@ -1,4 +1,4 @@ -import { ThreadWorker } from 'jsr:@poolifier/poolifier-web-worker@^0.4.20' // x-release-please-version +import { ThreadWorker } from 'jsr:@poolifier/poolifier-web-worker@^0.4.21' // x-release-please-version function yourFunction() { for (let i = 0; i <= 1000; i++) { diff --git a/examples/deno/typescript/pool.ts b/examples/deno/typescript/pool.ts index 72677ee2..b5d7e8c2 100644 --- a/examples/deno/typescript/pool.ts +++ b/examples/deno/typescript/pool.ts @@ -2,7 +2,7 @@ import { availableParallelism, DynamicThreadPool, FixedThreadPool, -} from 'jsr:@poolifier/poolifier-web-worker@^0.4.20' // x-release-please-version +} from 'jsr:@poolifier/poolifier-web-worker@^0.4.21' // x-release-please-version import type { MyData, MyResponse } from './worker.ts' const workerFileURL = new URL('./worker.ts', import.meta.url) diff --git a/examples/deno/typescript/worker.ts b/examples/deno/typescript/worker.ts index 45ea3df5..c12d1530 100644 --- a/examples/deno/typescript/worker.ts +++ b/examples/deno/typescript/worker.ts @@ -1,4 +1,4 @@ -import { ThreadWorker } from 'jsr:@poolifier/poolifier-web-worker@^0.4.20' // x-release-please-version +import { ThreadWorker } from 'jsr:@poolifier/poolifier-web-worker@^0.4.21' // x-release-please-version export interface MyData { ok: 0 | 1 diff --git a/sonar-project.properties b/sonar-project.properties index 8a28298b..9cf2b8ec 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -3,7 +3,7 @@ sonar.organization=poolifier sonar.javascript.lcov.reportPaths=coverage/lcov.info sonar.projectName=poolifier-web-worker # x-release-please-start-version -sonar.projectVersion=0.4.20 +sonar.projectVersion=0.4.21 # x-release-please-end sonar.host.url=https://sonarcloud.io sonar.sources=src diff --git a/src/circular-buffer.ts b/src/circular-buffer.ts index 96ee7970..cc108183 100644 --- a/src/circular-buffer.ts +++ b/src/circular-buffer.ts @@ -55,7 +55,7 @@ export class CircularBuffer { this.items[this.writeIdx] = number this.writeIdx = this.writeIdx === this.maxArrayIdx ? 0 : this.writeIdx + 1 if (this.size < this.items.length) { - ;++this.size + ++this.size } } @@ -71,7 +71,7 @@ export class CircularBuffer { } this.items[this.readIdx] = -1 this.readIdx = this.readIdx === this.maxArrayIdx ? 0 : this.readIdx + 1 - ;--this.size + --this.size return number } diff --git a/src/pools/abstract-pool.ts b/src/pools/abstract-pool.ts index dbbf3a97..09ef0a60 100644 --- a/src/pools/abstract-pool.ts +++ b/src/pools/abstract-pool.ts @@ -1304,7 +1304,7 @@ export abstract class AbstractPool< ): void { if (this.workerNodes[workerNodeKey]?.usage != null) { const workerUsage = this.workerNodes[workerNodeKey].usage - ;++workerUsage.tasks.executing + ++workerUsage.tasks.executing updateWaitTimeWorkerUsage( this.workerChoiceStrategiesContext, workerUsage, @@ -1319,7 +1319,7 @@ export abstract class AbstractPool< const taskFunctionWorkerUsage = this.workerNodes[ workerNodeKey ].getTaskFunctionWorkerUsage(task.name!)! - ;++taskFunctionWorkerUsage.tasks.executing + ++taskFunctionWorkerUsage.tasks.executing updateWaitTimeWorkerUsage( this.workerChoiceStrategiesContext, taskFunctionWorkerUsage, @@ -1753,13 +1753,13 @@ export abstract class AbstractPool< ): void { const workerNode = this.workerNodes[workerNodeKey] if (workerNode?.usage != null) { - ;++workerNode.usage.tasks.stolen + ++workerNode.usage.tasks.stolen } if ( this.shallUpdateTaskFunctionWorkerUsage(workerNodeKey) && workerNode.getTaskFunctionWorkerUsage(taskName) != null ) { - ;++workerNode.getTaskFunctionWorkerUsage(taskName)!.tasks.stolen + ++workerNode.getTaskFunctionWorkerUsage(taskName)!.tasks.stolen } } @@ -1770,7 +1770,7 @@ export abstract class AbstractPool< ): void { const workerNode = this.workerNodes[workerNodeKey] if (workerNode?.usage != null && taskName != null) { - ;++workerNode.usage.tasks.sequentiallyStolen + ++workerNode.usage.tasks.sequentiallyStolen } if ( taskName != null && @@ -1786,7 +1786,7 @@ export abstract class AbstractPool< previousTaskName === taskName && taskFunctionWorkerUsage.tasks.sequentiallyStolen > 0) ) { - ;++taskFunctionWorkerUsage.tasks.sequentiallyStolen + ++taskFunctionWorkerUsage.tasks.sequentiallyStolen } else if (taskFunctionWorkerUsage.tasks.sequentiallyStolen > 0) { taskFunctionWorkerUsage.tasks.sequentiallyStolen = 0 } @@ -2215,7 +2215,7 @@ export abstract class AbstractPool< workerNodeKey, this.dequeueTask(workerNodeKey) as Task, ) - ;++flushedTasks + ++flushedTasks } this.workerNodes[workerNodeKey].clearTasksQueue() return flushedTasks diff --git a/src/pools/selection-strategies/worker-choice-strategies-context.ts b/src/pools/selection-strategies/worker-choice-strategies-context.ts index f2205701..89a9ddc1 100644 --- a/src/pools/selection-strategies/worker-choice-strategies-context.ts +++ b/src/pools/selection-strategies/worker-choice-strategies-context.ts @@ -176,10 +176,10 @@ export class WorkerChoiceStrategiesContext< do { workerNodeKey = workerChoiceStrategy.choose() if (workerNodeKey == null && chooseCount > 0) { - ;++retriesCount - ;++this.retriesCount + ++retriesCount + ++this.retriesCount } - ;++chooseCount + ++chooseCount } while (workerNodeKey == null && retriesCount < this.retries) if (workerNodeKey == null) { throw new Error( diff --git a/src/pools/utils.ts b/src/pools/utils.ts index 35f5ce28..8caec83d 100644 --- a/src/pools/utils.ts +++ b/src/pools/utils.ts @@ -316,12 +316,12 @@ export const updateTaskStatisticsWorkerUsage = ( workerTaskStatistics.executing != null && workerTaskStatistics.executing > 0 ) { - ;--workerTaskStatistics.executing + --workerTaskStatistics.executing } if (message.workerError == null) { - ;++workerTaskStatistics.executed + ++workerTaskStatistics.executed } else { - ;++workerTaskStatistics.failed + ++workerTaskStatistics.failed } } @@ -458,7 +458,7 @@ export const waitWorkerNodeEvents = async < case 'idle': case 'exit': workerNode.addEventListener(workerNodeEvent, () => { - ;++events + ++events if (events === numberOfEventsToWait) { resolve(events) } diff --git a/src/pools/version.ts b/src/pools/version.ts index 1a49afae..6cdf2701 100644 --- a/src/pools/version.ts +++ b/src/pools/version.ts @@ -1,3 +1,3 @@ // x-release-please-start-version -export const version = '0.4.20' +export const version = '0.4.21' // x-release-please-end diff --git a/src/pools/worker-node.ts b/src/pools/worker-node.ts index 5a985730..34f03a5d 100644 --- a/src/pools/worker-node.ts +++ b/src/pools/worker-node.ts @@ -254,7 +254,7 @@ export class WorkerNode name === this.info.taskFunctionsProperties![1].name) || (task.name !== DEFAULT_TASK_NAME && name === task.name) ) { - ;++taskFunctionQueueSize + ++taskFunctionQueueSize } } return taskFunctionQueueSize diff --git a/src/queues/abstract-fixed-queue.ts b/src/queues/abstract-fixed-queue.ts index 2ad1e889..68b2111a 100644 --- a/src/queues/abstract-fixed-queue.ts +++ b/src/queues/abstract-fixed-queue.ts @@ -63,8 +63,8 @@ export abstract class AbstractFixedQueue implements IFixedQueue { return undefined } const index = this.start - ;--this.size - ;++this.start + --this.size + ++this.start if (this.start === this.capacity) { this.start = 0 } @@ -90,8 +90,8 @@ export abstract class AbstractFixedQueue implements IFixedQueue { } } const value = this.nodeArray[index].data - ;++index - ;++i + ++index + ++i if (index === this.capacity) { index = 0 } diff --git a/src/queues/fixed-priority-queue.ts b/src/queues/fixed-priority-queue.ts index f0eb3db4..f9c6175b 100644 --- a/src/queues/fixed-priority-queue.ts +++ b/src/queues/fixed-priority-queue.ts @@ -24,7 +24,7 @@ export class FixedPriorityQueue extends AbstractFixedQueue inserted = true break } - ;++index + ++index if (index === this.capacity) { index = 0 } diff --git a/src/queues/priority-queue.ts b/src/queues/priority-queue.ts index dfd095ba..17326266 100644 --- a/src/queues/priority-queue.ts +++ b/src/queues/priority-queue.ts @@ -98,7 +98,7 @@ export class PriorityQueue { if (node.next == null) { head = currentNode } - ;++buckets + ++buckets node = node.next } this.head = head! @@ -148,7 +148,7 @@ export class PriorityQueue { if (currentBucket === bucket) { break } - ;++currentBucket + ++currentBucket tail = tail.next } tailChanged = tail !== this.tail @@ -203,7 +203,7 @@ export class PriorityQueue { done: true, } } - ;++index + ++index if (index === node.capacity && node.next != null) { node = node.next index = 0 diff --git a/tests/pools/abstract-pool.test.mjs b/tests/pools/abstract-pool.test.mjs index 42b905a4..ba734745 100644 --- a/tests/pools/abstract-pool.test.mjs +++ b/tests/pools/abstract-pool.test.mjs @@ -1133,7 +1133,7 @@ describe({ let poolInfo let poolReady = 0 pool.eventTarget.addEventListener(PoolEvents.ready, (event) => { - ;++poolReady + ++poolReady poolInfo = event.detail }) await waitPoolEvents(pool, PoolEvents.ready, 1) @@ -1167,7 +1167,7 @@ describe({ let poolBusy = 0 let poolInfo pool.eventTarget.addEventListener(PoolEvents.busy, (event) => { - ;++poolBusy + ++poolBusy poolInfo = event.detail }) for (let i = 0; i < numberOfWorkers * 2; i++) { @@ -1207,7 +1207,7 @@ describe({ let poolFull = 0 let poolInfo pool.eventTarget.addEventListener(PoolEvents.full, (event) => { - ;++poolFull + ++poolFull poolInfo = event.detail }) for (let i = 0; i < numberOfWorkers * 2; i++) { @@ -1248,7 +1248,7 @@ describe({ let poolBackPressure = 0 let poolInfo pool.eventTarget.addEventListener(PoolEvents.backPressure, (event) => { - ;++poolBackPressure + ++poolBackPressure poolInfo = event.detail }) for (let i = 0; i < numberOfWorkers + 1; i++) { @@ -1296,7 +1296,7 @@ describe({ let poolEmpty = 0 let poolInfo pool.eventTarget.addEventListener(PoolEvents.empty, (event) => { - ;++poolEmpty + ++poolEmpty poolInfo = event.detail }) for (let i = 0; i < numberOfWorkers; i++) { @@ -1339,7 +1339,7 @@ describe({ let tasksFinished = 0 for (const workerNode of pool.workerNodes) { workerNode.addEventListener('taskFinished', () => { - ;++tasksFinished + ++tasksFinished }) } for (let i = 0; i < numberOfWorkers * maxMultiplier; i++) { @@ -1368,7 +1368,7 @@ describe({ let tasksFinished = 0 for (const workerNode of pool.workerNodes) { workerNode.addEventListener('taskFinished', () => { - ;++tasksFinished + ++tasksFinished }) } for (let i = 0; i < numberOfWorkers * maxMultiplier; i++) { diff --git a/tests/pools/thread/fixed.test.mjs b/tests/pools/thread/fixed.test.mjs index ecafd9ca..06ebe8a2 100644 --- a/tests/pools/thread/fixed.test.mjs +++ b/tests/pools/thread/fixed.test.mjs @@ -314,7 +314,7 @@ describe({ const workerNodeKey = 0 let exitEvent = 0 pool.workerNodes[workerNodeKey].addEventListener('exit', () => { - ;++exitEvent + ++exitEvent }) await expect( pool.destroyWorkerNode(workerNodeKey), diff --git a/tests/queues/fixed-priority-queue.test.mjs b/tests/queues/fixed-priority-queue.test.mjs index b9d3c7be..69071f2c 100644 --- a/tests/queues/fixed-priority-queue.test.mjs +++ b/tests/queues/fixed-priority-queue.test.mjs @@ -147,13 +147,13 @@ describe('Fixed priority queue test suite', () => { let i = fixedPriorityQueue.start + 1 for (const value of fixedPriorityQueue) { expect(value).toBe(i) - ;++i + ++i } fixedPriorityQueue.dequeue() i = fixedPriorityQueue.start + 1 for (const value of fixedPriorityQueue) { expect(value).toBe(i) - ;++i + ++i } }) diff --git a/tests/queues/fixed-queue.test.mjs b/tests/queues/fixed-queue.test.mjs index 5489f998..125bb604 100644 --- a/tests/queues/fixed-queue.test.mjs +++ b/tests/queues/fixed-queue.test.mjs @@ -145,13 +145,13 @@ describe('Fixed queue test suite', () => { let i = fixedQueue.start + 1 for (const value of fixedQueue) { expect(value).toBe(i) - ;++i + ++i } fixedQueue.dequeue() i = fixedQueue.start + 1 for (const value of fixedQueue) { expect(value).toBe(i) - ;++i + ++i } }) diff --git a/tests/queues/priority-queue.test.mjs b/tests/queues/priority-queue.test.mjs index 4f90004a..19e04173 100644 --- a/tests/queues/priority-queue.test.mjs +++ b/tests/queues/priority-queue.test.mjs @@ -313,7 +313,7 @@ describe('Priority queue test suite', () => { while (node != null) { expect(node).toBeInstanceOf(FixedQueue) node = node.next - ;++buckets + ++buckets } expect(buckets).toBe(2) priorityQueue.enablePriority = true @@ -323,7 +323,7 @@ describe('Priority queue test suite', () => { while (node != null) { expect(node).toBeInstanceOf(FixedPriorityQueue) node = node.next - ;++buckets + ++buckets } expect(buckets).toBe(2) }) @@ -336,7 +336,7 @@ describe('Priority queue test suite', () => { let i = 1 for (const value of priorityQueue) { expect(value).toBe(i) - ;++i + ++i } }) diff --git a/tests/test-utils.mjs b/tests/test-utils.mjs index 462f27d4..51d81634 100644 --- a/tests/test-utils.mjs +++ b/tests/test-utils.mjs @@ -12,7 +12,7 @@ export const waitWorkerNodeEvents = async ( return } const eventHandler = () => { - ;++events + ++events if (events === numberOfEventsToWait) { resolve(events) } @@ -42,7 +42,7 @@ export const waitPoolEvents = async (pool, poolEvent, numberOfEventsToWait) => { return } pool.eventTarget?.addEventListener(poolEvent, () => { - ;++events + ++events if (events === numberOfEventsToWait) { resolve(events) }