Skip to content

Commit

Permalink
Merge branch 'release/v3.1.1-beta.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
andreashuber69 committed Dec 6, 2024
2 parents 27468ec + a70be5c commit ba964e9
Show file tree
Hide file tree
Showing 49 changed files with 9,991 additions and 7,230 deletions.
1 change: 1 addition & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

// eslint-disable-next-line import/no-commonjs, import/unambiguous
module.exports = {
env: {
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,8 @@ export type { Calculator };

```ts
// ./src/createCalculatorWorker.ts
import { ObjectInfo, implementObjectWorkerExternal, Worker } from "kiss-worker";
import { ObjectInfo, implementObjectWorkerExternal, Worker } from
"kiss-worker";

// Import the type only
import type { Calculator } from "./Calculator.ts";
Expand Down
17,109 changes: 9,908 additions & 7,201 deletions package-lock.json

Large diffs are not rendered by default.

32 changes: 16 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kiss-worker",
"version": "3.1.0",
"version": "3.1.1-beta.0",
"description": "Provides one of the easiest ways to use a worker thread.",
"keywords": [
"kiss",
Expand Down Expand Up @@ -54,24 +54,24 @@
"finish-release": "git flow release finish -p -m \"chore: finish release\" v`cat package.json | jq -r '.version'`"
},
"devDependencies": {
"@andreashuber69/eslint-config": "^1.2.19",
"@tsconfig/node-lts": "^20.1.3",
"@andreashuber69/eslint-config": "^1.2.30",
"@tsconfig/node-lts": "^22.0.1",
"@tsconfig/strictest": "^2.0.5",
"@types/node": "^20.12.13",
"@vitest/browser": "^1.5.0",
"@vitest/coverage-istanbul": "^1.5.0",
"@types/node": "^22.10.1",
"@vitest/browser": "^2.1.8",
"@vitest/coverage-istanbul": "^2.1.8",
"api": "file:src/api",
"c8": "^9.1.0",
"c8": "^10.1.2",
"coveralls": "^3.1.1",
"cspell": "^8.8.3",
"markdownlint-cli": "^0.41.0",
"tsx": "^4.11.0",
"typedoc": "^0.25.13",
"typescript": "^5.4.5",
"vite": "^5.2.12",
"vite-plugin-dts": "^3.9.1",
"vitest": "^1.5.0",
"webdriverio": "^8.38.0"
"cspell": "^8.16.1",
"markdownlint-cli": "^0.43.0",
"tsx": "^4.19.2",
"typedoc": "^0.27.3",
"typescript": "^5.7.2",
"vite": "^6.0.3",
"vite-plugin-dts": "^4.3.0",
"vitest": "^2.1.8",
"webdriverio": "^9.4.1"
},
"peerDependencies": {
"tsx": "^4.11.0"
Expand Down
1 change: 1 addition & 0 deletions src/DedicatedWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { implementFunctionWorker } from "./implementFunctionWorker.ts";
import type { implementFunctionWorkerExternal } from "./implementFunctionWorkerExternal.ts";
import type { implementObjectWorker } from "./implementObjectWorker.ts";
Expand Down
1 change: 1 addition & 0 deletions src/FunctionInfo.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { implementFunctionWorkerExternal } from "./implementFunctionWorkerExternal.ts";
import type { serveFunction } from "./serveFunction.ts";

Expand Down
1 change: 1 addition & 0 deletions src/FunctionWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { implementFunctionWorker } from "./implementFunctionWorker.ts";
import type { implementFunctionWorkerExternal } from "./implementFunctionWorkerExternal.ts";

Expand Down
1 change: 1 addition & 0 deletions src/FunctionWorkerImpl.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { DedicatedWorker } from "./DedicatedWorker.ts";
import { PromiseQueue } from "./PromiseQueue.ts";
import { getCause, isInvalidWorkerFile } from "api";
Expand Down
2 changes: 2 additions & 0 deletions src/MethodsOnlyObject.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

/**
* Constrains `T` to only declare methods.
* @template T The type of the object to be constrained to containing only methods.
* @description The primary purpose of a worker is to provide a way to offload CPU-bound work onto a separate thread.
* The interface of a type supporting such a use case often looks quite different from one that runs code that does not
* hog the CPU. While the latter might have a well balanced mixture of fields, getters, setters and (mutating) methods,
Expand Down
1 change: 1 addition & 0 deletions src/ObjectInfo.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { implementObjectWorkerExternal } from "./implementObjectWorkerExternal.ts";
import type { MethodsOnlyObject } from "./MethodsOnlyObject.ts";
import type { serveObject } from "./serveObject.ts";
Expand Down
1 change: 1 addition & 0 deletions src/ObjectWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { implementObjectWorker } from "./implementObjectWorker.ts";
import type { implementObjectWorkerExternal } from "./implementObjectWorkerExternal.ts";
import type { MethodsOnlyObject } from "./MethodsOnlyObject.ts";
Expand Down
5 changes: 3 additions & 2 deletions src/ObjectWorkerImpl.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { DedicatedWorker } from "./DedicatedWorker.ts";
import { FunctionInfo } from "./FunctionInfo.ts";
import type { FunctionWorker } from "./FunctionWorker.ts";
Expand All @@ -17,9 +18,9 @@ class ProxyImpl<C extends new (..._: never[]) => T, T extends MethodsOnlyObject<
this.#worker = worker;

for (const key of propertyNames) {
// The cast-fest below is necessary because there seems to be no way to transform the type of args to the
// parameter types of #worker.execute. The same goes for the type of the function.
this[key as string] = (async (...args: Parameters<Proxy<T>[keyof Proxy<T>]>) =>
// The cast-fest below is necessary because there seems to be no way to transform the type of args to
// the parameter types of #worker.execute. The same goes for the type of the function.
await this.#worker.execute(...(["call", key, ...args] as Parameters<CallSignature<T>>))
) as Proxy<T>[keyof Proxy<T>];
}
Expand Down
1 change: 1 addition & 0 deletions src/PromiseQueue.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { describe, expect, it } from "vitest";

import { PromiseQueue } from "./PromiseQueue.ts";
Expand Down
1 change: 1 addition & 0 deletions src/PromiseQueue.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

export class PromiseQueue {
public async execute<T>(createAwaitable: () => Promise<T>) {
const resultPromise = PromiseQueue.push(this.pendingPromise, createAwaitable);
Expand Down
2 changes: 2 additions & 0 deletions src/Proxy.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { MethodsOnlyObject } from "./MethodsOnlyObject.ts";

/**
* A type with async equivalents of the methods declared on `T`.
* @template T The original type.
* @description Contains only the methods with string identifiers, methods identified by numbers or symbols will not
* appear.
*/
Expand Down
1 change: 1 addition & 0 deletions src/Worker.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { describe, it } from "vitest";
import { Worker } from "./index.ts";

Expand Down
2 changes: 2 additions & 0 deletions src/api/TsxWorker.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { workerData } from "node:worker_threads";
// This is an optional peer dependency. If the worker script does not end in "ts", this script is never executed.
// eslint-disable-next-line import/no-extraneous-dependencies
Expand Down
2 changes: 2 additions & 0 deletions src/api/browserApi.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

const addEventListenerLocal = addEventListener;
const postMessageLocal = postMessage;
const WorkerLocal = Worker;
Expand Down
16 changes: 8 additions & 8 deletions src/api/nodeApi.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { WorkerOptions } from "node:worker_threads";
import { isMainThread, parentPort, Worker } from "node:worker_threads";

const addEventListener = (type: "message", listener: (ev: MessageEvent) => unknown): void =>
void parentPort?.addListener(
type,
// Code coverage is not reported for code executed within a worker, because only the original (uninstrumented)
// version of the code is ever loaded.
/* istanbul ignore next -- @preserve */
(value: unknown) => listener({ data: value } as unknown as MessageEvent),
);
const addEventListener = (type: "message", listener: (ev: MessageEvent) => unknown) => {
// Code coverage is not reported for code executed within a worker, because only the original (uninstrumented)
// version of the code is ever loaded.
/* istanbul ignore next -- @preserve */
parentPort?.addListener(type, (value: unknown) => listener({ data: value } as unknown as MessageEvent));
};

const isWorker = () => !isMainThread;

Expand Down
1 change: 1 addition & 0 deletions src/getAllPropertyNames.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { describe, expect, it } from "vitest";

import { getAllPropertyNames } from "./getAllPropertyNames.ts";
Expand Down
2 changes: 2 additions & 0 deletions src/getAllPropertyNames.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

const getAllPropertyNamesImpl = (obj: unknown): string[] => {
if (obj && obj !== Object.prototype) {
return [
Expand Down
3 changes: 2 additions & 1 deletion src/implementFunctionWorker.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { assert, describe, expect, it } from "vitest";
import { createDelayWorker } from "./testHelpers/createDelayWorker.ts";
import { createFibonacciWorker } from "./testHelpers/createFibonacciWorker.ts";
Expand Down Expand Up @@ -92,7 +93,7 @@ describe("FunctionWorker", () => {
try {
await worker.execute(() => 2);
} catch (error: unknown) {
expect(error instanceof Error && error.message.endsWith("() => 2 could not be cloned.")).toBe(true);
expect(error instanceof Error && error.message.endsWith("could not be cloned.")).toBe(true);
}
});

Expand Down
1 change: 1 addition & 0 deletions src/implementFunctionWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { DedicatedWorker } from "./DedicatedWorker.ts";
import { FunctionInfo } from "./FunctionInfo.ts";
import type { FunctionWorker } from "./FunctionWorker.ts";
Expand Down
1 change: 1 addition & 0 deletions src/implementFunctionWorkerExternal.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { describe, expect, it } from "vitest";
import { createFibonacciWorkerExternal } from "./testHelpers/createFibonacciWorkerExternal.ts";

Expand Down
1 change: 1 addition & 0 deletions src/implementFunctionWorkerExternal.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { DedicatedWorker } from "./DedicatedWorker.ts";
import type { FunctionInfo } from "./FunctionInfo.ts";
import type { FunctionWorker } from "./FunctionWorker.ts";
Expand Down
1 change: 1 addition & 0 deletions src/implementObjectWorker.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { describe, expect, it } from "vitest";
import { createCalculatorWorker } from "./testHelpers/createCalculatorWorker.ts";
import { createMisbehavedWorker } from "./testHelpers/createMisbehavedWorker.ts";
Expand Down
1 change: 1 addition & 0 deletions src/implementObjectWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { DedicatedWorker } from "./DedicatedWorker.ts";
import { implementObjectWorkerExternal } from "./implementObjectWorkerExternal.ts";
import type { MethodsOnlyObject } from "./MethodsOnlyObject.ts";
Expand Down
1 change: 1 addition & 0 deletions src/implementObjectWorkerExternal.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { describe, expect, it } from "vitest";
import { createCalculatorWorkerExternal } from "./testHelpers/createCalculatorWorkerExternal.ts";

Expand Down
1 change: 1 addition & 0 deletions src/implementObjectWorkerExternal.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { DedicatedWorker } from "./DedicatedWorker.ts";
import type { implementObjectWorker } from "./implementObjectWorker.ts";
import type { MethodsOnlyObject } from "./MethodsOnlyObject.ts";
Expand Down
1 change: 1 addition & 0 deletions src/serveFunction.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import type { implementFunctionWorkerExternal } from "./implementFunctionWorkerExternal.ts";
import { addEventListener, postMessage } from "api";

Expand Down
1 change: 1 addition & 0 deletions src/serveObject.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { getAllPropertyNames } from "./getAllPropertyNames.ts";
import type { implementObjectWorkerExternal } from "./implementObjectWorkerExternal.ts";
import type { MethodsOnlyObject } from "./MethodsOnlyObject.ts";
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/Calculator.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { serveObject } from "../index.ts";

class Calculator {
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/bounce.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

const bounce = (/** @type {unknown} */ x) => x;

export { bounce };
2 changes: 2 additions & 0 deletions src/testHelpers/createCalculatorWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md
/* eslint-disable jsdoc/convert-to-jsdoc-comments */

import { implementObjectWorker, Worker } from "../index.ts";

// We want to serve an object of this class on a worker thread
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createCalculatorWorkerExternal.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { implementObjectWorkerExternal, ObjectInfo, Worker } from "../index.ts";
import type { Calculator } from "./Calculator.ts";

Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createDelayWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { implementFunctionWorker, Worker } from "../index.ts";

export const createDelayWorker = implementFunctionWorker(
Expand Down
2 changes: 2 additions & 0 deletions src/testHelpers/createFibonacciWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md
/* eslint-disable jsdoc/convert-to-jsdoc-comments */

import { implementFunctionWorker, Worker } from "../index.ts";

// The function we want to execute on a worker thread
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createFibonacciWorkerExternal.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { FunctionInfo, implementFunctionWorkerExternal, Worker } from "../index.ts";
import type { fibonacciExternal } from "./fibonacciExternal.ts";

Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createFunnyWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { implementFunctionWorker, Worker } from "../index.ts";
import { postMessage } from "api";

Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createMisbehavedWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { implementObjectWorker, Worker } from "../index.ts";

class Bouncer {
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createThrowingWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { implementObjectWorker, Worker } from "../index.ts";

class Throwing {
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createUniversalFunctionWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { implementFunctionWorker, Worker } from "../index.ts";

export const createUniversalFunctionWorker = implementFunctionWorker(
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createUniversalObjectWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { implementFunctionWorker, Worker } from "../index.ts";

export interface Obj {
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/createWrongFilenameWorker.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { implementFunctionWorker, Worker } from "../index.ts";

export const createWrongFilenameWorker =
Expand Down
1 change: 1 addition & 0 deletions src/testHelpers/fibonacciExternal.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { serveFunction } from "../index.ts";

const fibonacciExternal = (n: number): number =>
Expand Down
1 change: 1 addition & 0 deletions vite.browser.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { defineConfig } from "vite";
import dts from "vite-plugin-dts";

Expand Down
1 change: 1 addition & 0 deletions vite.node.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { defineConfig } from "vite";

// eslint-disable-next-line import/no-default-export, import/no-anonymous-default-export
Expand Down
3 changes: 2 additions & 1 deletion vitest.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { defineConfig } from "vitest/config";

// eslint-disable-next-line import/no-anonymous-default-export, import/no-default-export
Expand All @@ -7,7 +8,7 @@ export default defineConfig({
coverage: {
provider: "istanbul",
include: ["src/**/*.ts"],
exclude: ["src/testHelpers/*.ts"],
exclude: ["src/testHelpers/*.ts", "src/**/*.spec.ts"],
reporter: ["lcov", "text"],
},
},
Expand Down
2 changes: 2 additions & 0 deletions vitest.workspace.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// https://github.com/andreashuber69/kiss-worker/blob/develop/README.md

import { defineWorkspace } from "vitest/config";

// eslint-disable-next-line import/no-anonymous-default-export, import/no-default-export
Expand All @@ -7,6 +8,7 @@ export default defineWorkspace([
test: {
name: "browser",
browser: {
provider: "webdriverio",
enabled: true,
name: "chrome",
},
Expand Down

0 comments on commit ba964e9

Please sign in to comment.