@pronto-tools-and-more/diff-process 8.18.0

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.
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@pronto-tools-and-more/diff-process",
3
+ "version": "8.18.0",
4
+ "description": "",
5
+ "main": "src/diffProcessMain.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "test": "node --unhandled-rejections=warn --experimental-vm-modules ./node_modules/jest/bin/jest.js --detectOpenHandles --forceExit",
9
+ "test:watch": "node --unhandled-rejections=warn --experimental-vm-modules ./node_modules/jest/bin/jest.js --watch",
10
+ "type-check": "tsc"
11
+ },
12
+ "keywords": [],
13
+ "author": "",
14
+ "license": "MIT",
15
+ "dependencies": {
16
+ "@lvce-editor/ipc": "^11.1.0",
17
+ "@lvce-editor/json-rpc": "^5.0.0"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^22.9.0",
21
+ "jest": "^29.7.0"
22
+ }
23
+ }
@@ -0,0 +1,3 @@
1
+ import * as Main from "./parts/Main/Main.js";
2
+
3
+ Main.main();
@@ -0,0 +1 @@
1
+ export { resolve } from "@lvce-editor/json-rpc";
@@ -0,0 +1,9 @@
1
+ import * as CommandState from "../CommandState/CommandState.js";
2
+
3
+ export const execute = (command, ...args) => {
4
+ const fn = CommandState.getCommand(command);
5
+ if (!fn) {
6
+ throw new Error(`Command not found ${command}`);
7
+ }
8
+ return fn(...args);
9
+ };
@@ -0,0 +1,5 @@
1
+ import * as Diff from "../Diff/Diff.js";
2
+
3
+ export const commandMap = {
4
+ "Diff.diff": Diff.diff,
5
+ };
@@ -0,0 +1,17 @@
1
+ const state = {
2
+ commands: Object.create(null),
3
+ };
4
+
5
+ const registerCommand = (key, fn) => {
6
+ state.commands[key] = fn;
7
+ };
8
+
9
+ export const registerCommands = (commandMap) => {
10
+ for (const [key, value] of Object.entries(commandMap)) {
11
+ registerCommand(key, value);
12
+ }
13
+ };
14
+
15
+ export const getCommand = (key) => {
16
+ return state.commands[key];
17
+ };
@@ -0,0 +1,3 @@
1
+ export const diff = (oldViews, newViews) => {
2
+ return [];
3
+ };
@@ -0,0 +1,10 @@
1
+ import * as HandleMessage from "../HandleMessage/HandleMessage.js";
2
+
3
+ export const handleIpc = (ipc) => {
4
+ if ("addEventListener" in ipc) {
5
+ ipc.addEventListener("message", HandleMessage.handleMessage);
6
+ } else if ("on" in ipc) {
7
+ // deprecated
8
+ ipc.on("message", HandleMessage.handleMessage);
9
+ }
10
+ };
@@ -0,0 +1,27 @@
1
+ import * as Callback from "../Callback/Callback.js";
2
+ import * as Command from "../Command/Command.js";
3
+ import * as JsonRpc from "../JsonRpc/JsonRpc.js";
4
+
5
+ const prepare = (error) => {
6
+ return error;
7
+ };
8
+
9
+ const requiresSocket = (method) => {
10
+ return false;
11
+ };
12
+
13
+ const logError = (error, prettyError) => {
14
+ console.error(error);
15
+ };
16
+
17
+ export const handleMessage = (event) => {
18
+ return JsonRpc.handleJsonRpcMessage(
19
+ event.target,
20
+ event.data,
21
+ Command.execute,
22
+ Callback.resolve,
23
+ prepare,
24
+ logError,
25
+ requiresSocket,
26
+ );
27
+ };
@@ -0,0 +1,10 @@
1
+ import { MurmurHash3 } from "../MurmurHash/MurmurHash.js";
2
+
3
+ const seed = 48434; // Random int between 0 and 65535
4
+
5
+ /**
6
+ * Hashes a string.
7
+ */
8
+ export function hash(string) {
9
+ return MurmurHash3.hashString(string, string.length, seed);
10
+ }
@@ -0,0 +1,15 @@
1
+ import * as IpcChildModule from "../IpcChildModule/IpcChildModule.js";
2
+
3
+ export const listen = async ({ method, ...params }) => {
4
+ const module = await IpcChildModule.getModule(method);
5
+ // @ts-ignore
6
+ const rawIpc = await module.listen(params);
7
+ // @ts-ignore
8
+ if (module.signal) {
9
+ // @ts-ignore
10
+ module.signal(rawIpc);
11
+ }
12
+ // @ts-ignore
13
+ const ipc = module.wrap(rawIpc);
14
+ return ipc;
15
+ };
@@ -0,0 +1,25 @@
1
+ import {
2
+ IpcChildWithElectronMessagePort,
3
+ IpcChildWithElectronUtilityProcess,
4
+ IpcChildWithNodeForkedProcess,
5
+ IpcChildWithNodeWorker,
6
+ IpcChildWithWebSocket,
7
+ } from "@lvce-editor/ipc";
8
+ import * as IpcChildType from "../IpcChildType/IpcChildType.js";
9
+
10
+ export const getModule = (method) => {
11
+ switch (method) {
12
+ case IpcChildType.NodeForkedProcess:
13
+ return IpcChildWithNodeForkedProcess;
14
+ case IpcChildType.NodeWorker:
15
+ return IpcChildWithNodeWorker;
16
+ case IpcChildType.ElectronUtilityProcess:
17
+ return IpcChildWithElectronUtilityProcess;
18
+ case IpcChildType.ElectronMessagePort:
19
+ return IpcChildWithElectronMessagePort;
20
+ case IpcChildType.WebSocket:
21
+ return IpcChildWithWebSocket;
22
+ default:
23
+ throw new Error("unexpected ipc type");
24
+ }
25
+ };
@@ -0,0 +1,19 @@
1
+ export const NodeWorker = 1;
2
+ export const NodeForkedProcess = 2;
3
+ export const ElectronUtilityProcess = 3;
4
+ export const ElectronMessagePort = 4;
5
+ export const WebSocket = 6;
6
+
7
+ export const Auto = () => {
8
+ const { argv } = process;
9
+ if (argv.includes("--ipc-type=node-worker")) {
10
+ return NodeWorker;
11
+ }
12
+ if (argv.includes("--ipc-type=node-forked-process")) {
13
+ return NodeForkedProcess;
14
+ }
15
+ if (argv.includes("--ipc-type=electron-utility-process")) {
16
+ return ElectronUtilityProcess;
17
+ }
18
+ throw new Error(`[shared-process] unknown ipc type`);
19
+ };
@@ -0,0 +1 @@
1
+ export * from "@lvce-editor/json-rpc";
@@ -0,0 +1,8 @@
1
+ import * as HandleIpc from "../HandleIpc/HandleIpc.js";
2
+ import * as IpcChild from "../IpcChild/IpcChild.js";
3
+ import * as IpcChildType from "../IpcChildType/IpcChildType.js";
4
+
5
+ export const listen = async () => {
6
+ const ipc = await IpcChild.listen({ method: IpcChildType.Auto() });
7
+ HandleIpc.handleIpc(ipc);
8
+ };
@@ -0,0 +1,8 @@
1
+ import * as CommandMap from "../CommandMap/CommandMap.js";
2
+ import * as CommandState from "../CommandState/CommandState.js";
3
+ import * as Listen from "../Listen/Listen.js";
4
+
5
+ export const main = async () => {
6
+ CommandState.registerCommands(CommandMap.commandMap);
7
+ await Listen.listen();
8
+ };
@@ -0,0 +1,120 @@
1
+ /* Public Domain MurmurHash3 implementation. Altered to have AMD header and function wrapper. */
2
+
3
+ /*
4
+ * The MurmurHash3 algorithm was created by Austin Appleby. This JavaScript port was authored
5
+ * by Peter Zotov (based on Java port by Yonik Seeley) and is placed into the public domain.
6
+ * The author hereby disclaims copyright to this source code.
7
+ *
8
+ * This produces exactly the same hash values as the final C++ version of MurmurHash3 and
9
+ * is thus suitable for producing the same hash values across platforms.
10
+ *
11
+ * There are two versions of this hash implementation. First interprets the string as a
12
+ * sequence of bytes, ignoring most significant byte of each codepoint. The second one
13
+ * interprets the string as a UTF-16 codepoint sequence, and appends each 16-bit codepoint
14
+ * to the hash independently. The latter mode was not written to be compatible with
15
+ * any other implementation, but it should offer better performance for JavaScript-only
16
+ * applications.
17
+ *
18
+ * See http://github.com/whitequark/murmurhash3-js for future updates to this file.
19
+ */
20
+
21
+ export const MurmurHash3 = {
22
+ mul32(m, n) {
23
+ const nlo = n & 0xffff;
24
+ const nhi = n - nlo;
25
+ return (((nhi * m) | 0) + ((nlo * m) | 0)) | 0;
26
+ },
27
+
28
+ hashBytes(data, len, seed) {
29
+ const c1 = 0xcc9e2d51;
30
+ const c2 = 0x1b873593;
31
+
32
+ let h1 = seed;
33
+ const roundedEnd = len & ~0x3;
34
+
35
+ for (let i = 0; i < roundedEnd; i += 4) {
36
+ var k1 =
37
+ (data.charCodeAt(i) & 0xff) |
38
+ ((data.charCodeAt(i + 1) & 0xff) << 8) |
39
+ ((data.charCodeAt(i + 2) & 0xff) << 16) |
40
+ ((data.charCodeAt(i + 3) & 0xff) << 24);
41
+
42
+ k1 = this.mul32(k1, c1);
43
+ k1 = ((k1 & 0x1ffff) << 15) | (k1 >>> 17); // ROTL32(k1,15);
44
+ k1 = this.mul32(k1, c2);
45
+
46
+ h1 ^= k1;
47
+ h1 = ((h1 & 0x7ffff) << 13) | (h1 >>> 19); // ROTL32(h1,13);
48
+ h1 = (h1 * 5 + 0xe6546b64) | 0;
49
+ }
50
+
51
+ k1 = 0;
52
+
53
+ switch (len % 4) {
54
+ case 3:
55
+ k1 = (data.charCodeAt(roundedEnd + 2) & 0xff) << 16;
56
+ // Fallthrough
57
+ case 2:
58
+ k1 |= (data.charCodeAt(roundedEnd + 1) & 0xff) << 8;
59
+ // Fallthrough
60
+ case 1:
61
+ k1 |= data.charCodeAt(roundedEnd) & 0xff;
62
+ k1 = this.mul32(k1, c1);
63
+ k1 = ((k1 & 0x1ffff) << 15) | (k1 >>> 17); // ROTL32(k1,15);
64
+ k1 = this.mul32(k1, c2);
65
+ h1 ^= k1;
66
+ }
67
+
68
+ // Finalization
69
+ h1 ^= len;
70
+
71
+ // Fmix(h1);
72
+ h1 ^= h1 >>> 16;
73
+ h1 = this.mul32(h1, 0x85ebca6b);
74
+ h1 ^= h1 >>> 13;
75
+ h1 = this.mul32(h1, 0xc2b2ae35);
76
+ h1 ^= h1 >>> 16;
77
+
78
+ return h1;
79
+ },
80
+
81
+ hashString(data, len, seed) {
82
+ const c1 = 0xcc9e2d51;
83
+ const c2 = 0x1b873593;
84
+
85
+ let h1 = seed;
86
+ const roundedEnd = len & ~0x1;
87
+
88
+ for (let i = 0; i < roundedEnd; i += 2) {
89
+ var k1 = data.charCodeAt(i) | (data.charCodeAt(i + 1) << 16);
90
+
91
+ k1 = this.mul32(k1, c1);
92
+ k1 = ((k1 & 0x1ffff) << 15) | (k1 >>> 17); // ROTL32(k1,15);
93
+ k1 = this.mul32(k1, c2);
94
+
95
+ h1 ^= k1;
96
+ h1 = ((h1 & 0x7ffff) << 13) | (h1 >>> 19); // ROTL32(h1,13);
97
+ h1 = (h1 * 5 + 0xe6546b64) | 0;
98
+ }
99
+
100
+ if (len % 2 == 1) {
101
+ k1 = data.charCodeAt(roundedEnd);
102
+ k1 = this.mul32(k1, c1);
103
+ k1 = ((k1 & 0x1ffff) << 15) | (k1 >>> 17); // ROTL32(k1,15);
104
+ k1 = this.mul32(k1, c2);
105
+ h1 ^= k1;
106
+ }
107
+
108
+ // Finalization
109
+ h1 ^= len << 1;
110
+
111
+ // Fmix(h1);
112
+ h1 ^= h1 >>> 16;
113
+ h1 = this.mul32(h1, 0x85ebca6b);
114
+ h1 ^= h1 >>> 13;
115
+ h1 = this.mul32(h1, 0xc2b2ae35);
116
+ h1 ^= h1 >>> 16;
117
+
118
+ return h1;
119
+ },
120
+ };