@danielsimonjr/mathts-parallel 0.6.10 → 0.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.js +1093 -1744
  2. package/dist/matrix.worker.js +88 -110
  3. package/package.json +17 -6
@@ -1,126 +1,104 @@
1
- // src/matrix.worker.ts
2
- var isNode = typeof process !== "undefined" && process.versions?.node !== void 0;
3
- var nodeParentPort = null;
1
+ //#region src/matrix.worker.ts
2
+ const isNode = typeof process !== "undefined" && process.versions?.node !== void 0;
3
+ let nodeParentPort = null;
4
4
  function sendMessage(message) {
5
- if (isNode) {
6
- if (nodeParentPort) {
7
- nodeParentPort.postMessage(message);
8
- }
9
- } else {
10
- postMessage(message);
11
- }
5
+ if (isNode) {
6
+ if (nodeParentPort) nodeParentPort.postMessage(message);
7
+ } else postMessage(message);
12
8
  }
13
9
  function handleMessage(event) {
14
- const message = isNode ? event : event.data;
15
- try {
16
- const task = message.data;
17
- let result;
18
- switch (task.operation) {
19
- case "multiply":
20
- result = multiplyTask(task);
21
- break;
22
- case "add":
23
- result = elementwiseTask(task, (a, b) => a + b);
24
- break;
25
- case "subtract":
26
- result = elementwiseTask(task, (a, b) => a - b);
27
- break;
28
- case "elementMultiply":
29
- result = elementwiseTask(task, (a, b) => a * b);
30
- break;
31
- case "scale":
32
- result = scaleTask(task);
33
- break;
34
- case "transpose":
35
- result = transposeTask(task);
36
- break;
37
- case "dot":
38
- result = dotProductTask(task);
39
- break;
40
- case "sum":
41
- result = sumTask(task);
42
- break;
43
- default:
44
- throw new Error(`Unknown operation: ${task.operation}`);
45
- }
46
- sendMessage({
47
- id: message.id,
48
- type: "result",
49
- data: result
50
- });
51
- } catch (error) {
52
- sendMessage({
53
- id: message.id,
54
- type: "error",
55
- error: error instanceof Error ? error.message : String(error)
56
- });
57
- }
10
+ const message = isNode ? event : event.data;
11
+ try {
12
+ const task = message.data;
13
+ let result;
14
+ switch (task.operation) {
15
+ case "multiply":
16
+ result = multiplyTask(task);
17
+ break;
18
+ case "add":
19
+ result = elementwiseTask(task, (a, b) => a + b);
20
+ break;
21
+ case "subtract":
22
+ result = elementwiseTask(task, (a, b) => a - b);
23
+ break;
24
+ case "elementMultiply":
25
+ result = elementwiseTask(task, (a, b) => a * b);
26
+ break;
27
+ case "scale":
28
+ result = scaleTask(task);
29
+ break;
30
+ case "transpose":
31
+ result = transposeTask(task);
32
+ break;
33
+ case "dot":
34
+ result = dotProductTask(task);
35
+ break;
36
+ case "sum":
37
+ result = sumTask(task);
38
+ break;
39
+ default: throw new Error(`Unknown operation: ${task.operation}`);
40
+ }
41
+ sendMessage({
42
+ id: message.id,
43
+ type: "result",
44
+ data: result
45
+ });
46
+ } catch (error) {
47
+ sendMessage({
48
+ id: message.id,
49
+ type: "error",
50
+ error: error instanceof Error ? error.message : String(error)
51
+ });
52
+ }
58
53
  }
59
54
  function multiplyTask(task) {
60
- const { aData, aCols, bData, bCols, startRow, endRow } = task;
61
- const rowCount = endRow - startRow;
62
- const out = new Float64Array(rowCount * bCols);
63
- for (let i = startRow; i < endRow; i++) {
64
- for (let j = 0; j < bCols; j++) {
65
- let sum = 0;
66
- for (let k = 0; k < aCols; k++) {
67
- sum += aData[i * aCols + k] * bData[k * bCols + j];
68
- }
69
- out[(i - startRow) * bCols + j] = sum;
70
- }
71
- }
72
- return out;
55
+ const { aData, aCols, bData, bCols, startRow, endRow } = task;
56
+ const rowCount = endRow - startRow;
57
+ const out = new Float64Array(rowCount * bCols);
58
+ for (let i = startRow; i < endRow; i++) for (let j = 0; j < bCols; j++) {
59
+ let sum = 0;
60
+ for (let k = 0; k < aCols; k++) sum += aData[i * aCols + k] * bData[k * bCols + j];
61
+ out[(i - startRow) * bCols + j] = sum;
62
+ }
63
+ return out;
73
64
  }
74
65
  function elementwiseTask(task, op) {
75
- const { aData, bData, start, end } = task;
76
- const out = new Float64Array(end - start);
77
- for (let i = start; i < end; i++) {
78
- out[i - start] = op(aData[i], bData[i]);
79
- }
80
- return out;
66
+ const { aData, bData, start, end } = task;
67
+ const out = new Float64Array(end - start);
68
+ for (let i = start; i < end; i++) out[i - start] = op(aData[i], bData[i]);
69
+ return out;
81
70
  }
82
71
  function scaleTask(task) {
83
- const { aData, scalar, start, end } = task;
84
- const out = new Float64Array(end - start);
85
- for (let i = start; i < end; i++) {
86
- out[i - start] = aData[i] * scalar;
87
- }
88
- return out;
72
+ const { aData, scalar, start, end } = task;
73
+ const out = new Float64Array(end - start);
74
+ for (let i = start; i < end; i++) out[i - start] = aData[i] * scalar;
75
+ return out;
89
76
  }
90
77
  function transposeTask(task) {
91
- const { data, cols, startRow, endRow } = task;
92
- const rowCount = endRow - startRow;
93
- const out = new Float64Array(rowCount * cols);
94
- for (let i = startRow; i < endRow; i++) {
95
- for (let j = 0; j < cols; j++) {
96
- out[j * rowCount + (i - startRow)] = data[i * cols + j];
97
- }
98
- }
99
- return out;
78
+ const { data, cols, startRow, endRow } = task;
79
+ const rowCount = endRow - startRow;
80
+ const out = new Float64Array(rowCount * cols);
81
+ for (let i = startRow; i < endRow; i++) for (let j = 0; j < cols; j++) out[j * rowCount + (i - startRow)] = data[i * cols + j];
82
+ return out;
100
83
  }
101
84
  function dotProductTask(task) {
102
- const { aData, bData, start, end } = task;
103
- let sum = 0;
104
- for (let i = start; i < end; i++) {
105
- sum += aData[i] * bData[i];
106
- }
107
- return sum;
85
+ const { aData, bData, start, end } = task;
86
+ let sum = 0;
87
+ for (let i = start; i < end; i++) sum += aData[i] * bData[i];
88
+ return sum;
108
89
  }
109
90
  function sumTask(task) {
110
- const { aData, start, end } = task;
111
- let sum = 0;
112
- for (let i = start; i < end; i++) {
113
- sum += aData[i];
114
- }
115
- return sum;
116
- }
117
- if (isNode) {
118
- void import("worker_threads").then(({ parentPort }) => {
119
- if (parentPort) {
120
- nodeParentPort = parentPort;
121
- parentPort.on("message", handleMessage);
122
- }
123
- });
124
- } else {
125
- self.onmessage = handleMessage;
91
+ const { aData, start, end } = task;
92
+ let sum = 0;
93
+ for (let i = start; i < end; i++) sum += aData[i];
94
+ return sum;
126
95
  }
96
+ if (isNode) import("node:worker_threads").then(({ parentPort }) => {
97
+ if (parentPort) {
98
+ nodeParentPort = parentPort;
99
+ parentPort.on("message", handleMessage);
100
+ }
101
+ });
102
+ else self.onmessage = handleMessage;
103
+ //#endregion
104
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danielsimonjr/mathts-parallel",
3
- "version": "0.6.10",
3
+ "version": "0.6.11",
4
4
  "description": "WebWorker parallelization for MathTS computations",
5
5
  "author": "Daniel Simon Jr.",
6
6
  "license": "MIT",
@@ -19,8 +19,8 @@
19
19
  "README.md"
20
20
  ],
21
21
  "scripts": {
22
- "build": "tsup src/index.ts src/matrix.worker.ts --format esm --clean && tsc -p tsconfig.dts.json",
23
- "dev": "tsup src/index.ts src/matrix.worker.ts --format esm --watch --onSuccess \"tsc -p tsconfig.dts.json\"",
22
+ "build": "tsdown src/index.ts src/matrix.worker.ts --format esm && tsc -p tsconfig.dts.json",
23
+ "dev": "tsdown src/index.ts src/matrix.worker.ts --format esm --watch --on-success \"tsc -p tsconfig.dts.json\"",
24
24
  "test": "bun test --isolate --timeout 30000",
25
25
  "test:watch": "vitest",
26
26
  "test:coverage": "bun test --isolate --timeout 30000 --coverage",
@@ -28,15 +28,26 @@
28
28
  "lint": "oxlint src",
29
29
  "lint:fix": "oxlint src --fix",
30
30
  "clean": "rm -rf dist",
31
- "build:prod": "tsup src/index.ts src/matrix.worker.ts --format esm --clean --minify --treeshake && tsc -p tsconfig.dts.json"
31
+ "build:prod": "tsdown src/index.ts src/matrix.worker.ts --format esm --minify && tsc -p tsconfig.dts.json"
32
+ },
33
+ "tsdown": {
34
+ "fixedExtension": false,
35
+ "dts": false,
36
+ "outputOptions": {
37
+ "comments": {
38
+ "legal": true,
39
+ "annotation": true,
40
+ "jsdoc": false
41
+ }
42
+ }
32
43
  },
33
44
  "dependencies": {
34
45
  "@danielsimonjr/mathts-workerpool": "^0.2.5",
35
- "@danielsimonjr/mathts-core": "^0.18.0"
46
+ "@danielsimonjr/mathts-core": "^0.19.0"
36
47
  },
37
48
  "devDependencies": {
38
49
  "@types/node": "^26.4.0",
39
- "tsup": "^8.0.0",
50
+ "tsdown": "^0.23.0",
40
51
  "typescript": "^7.0.2",
41
52
  "vitest": "^5.0.0"
42
53
  },