@araminix/platform 0.0.0-stage → 1.0.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/LICENSE +21 -0
- package/README.md +210 -2
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/src/Platform.d.ts +48 -0
- package/dist/src/Platform.d.ts.map +1 -0
- package/dist/src/Platform.js +275 -0
- package/dist/src/Platform.js.map +1 -0
- package/dist/src/agent/AgentController.d.ts +20 -0
- package/dist/src/agent/AgentController.d.ts.map +1 -0
- package/dist/src/agent/AgentController.js +224 -0
- package/dist/src/agent/AgentController.js.map +1 -0
- package/dist/src/agent/agentWorkerDriver.d.ts +11 -0
- package/dist/src/agent/agentWorkerDriver.d.ts.map +1 -0
- package/dist/src/agent/agentWorkerDriver.js +20 -0
- package/dist/src/agent/agentWorkerDriver.js.map +1 -0
- package/dist/src/agent/d.d.ts +39 -0
- package/dist/src/agent/d.d.ts.map +1 -0
- package/dist/src/agent/d.js +91 -0
- package/dist/src/agent/d.js.map +1 -0
- package/dist/src/agent/worker.d.ts +2 -0
- package/dist/src/agent/worker.d.ts.map +1 -0
- package/dist/src/agent/worker.js +67 -0
- package/dist/src/agent/worker.js.map +1 -0
- package/dist/src/builder/Fragment.d.ts +40 -0
- package/dist/src/builder/Fragment.d.ts.map +1 -0
- package/dist/src/builder/Fragment.js +87 -0
- package/dist/src/builder/Fragment.js.map +1 -0
- package/dist/src/builder/Panel.d.ts +30 -0
- package/dist/src/builder/Panel.d.ts.map +1 -0
- package/dist/src/builder/Panel.js +45 -0
- package/dist/src/builder/Panel.js.map +1 -0
- package/dist/src/builder/builder.d.ts +31 -0
- package/dist/src/builder/builder.d.ts.map +1 -0
- package/dist/src/builder/builder.js +43 -0
- package/dist/src/builder/builder.js.map +1 -0
- package/dist/src/executor/ActivityInstance.d.ts +98 -0
- package/dist/src/executor/ActivityInstance.d.ts.map +1 -0
- package/dist/src/executor/ActivityInstance.js +389 -0
- package/dist/src/executor/ActivityInstance.js.map +1 -0
- package/dist/src/executor/AppInstance.d.ts +73 -0
- package/dist/src/executor/AppInstance.d.ts.map +1 -0
- package/dist/src/executor/AppInstance.js +399 -0
- package/dist/src/executor/AppInstance.js.map +1 -0
- package/dist/src/executor/Instance.d.ts +37 -0
- package/dist/src/executor/Instance.d.ts.map +1 -0
- package/dist/src/executor/Instance.js +303 -0
- package/dist/src/executor/Instance.js.map +1 -0
- package/dist/src/executor/index.d.ts +4 -0
- package/dist/src/executor/index.d.ts.map +1 -0
- package/dist/src/executor/index.js +3 -0
- package/dist/src/executor/index.js.map +1 -0
- package/dist/src/executor/proto.d.ts +120 -0
- package/dist/src/executor/proto.d.ts.map +1 -0
- package/dist/src/executor/proto.js +207 -0
- package/dist/src/executor/proto.js.map +1 -0
- package/dist/src/executor/worker.d.ts +2 -0
- package/dist/src/executor/worker.d.ts.map +1 -0
- package/dist/src/executor/worker.js +154 -0
- package/dist/src/executor/worker.js.map +1 -0
- package/dist/src/executor/workerDriver.d.ts +14 -0
- package/dist/src/executor/workerDriver.d.ts.map +1 -0
- package/dist/src/executor/workerDriver.js +26 -0
- package/dist/src/executor/workerDriver.js.map +1 -0
- package/dist/src/lib/actors.d.ts +94 -0
- package/dist/src/lib/actors.d.ts.map +1 -0
- package/dist/src/lib/actors.js +139 -0
- package/dist/src/lib/actors.js.map +1 -0
- package/dist/src/lib/d.d.ts +145 -0
- package/dist/src/lib/d.d.ts.map +1 -0
- package/dist/src/lib/d.js +296 -0
- package/dist/src/lib/d.js.map +1 -0
- package/dist/src/lib/worker_socket.d.ts +56 -0
- package/dist/src/lib/worker_socket.d.ts.map +1 -0
- package/dist/src/lib/worker_socket.js +161 -0
- package/dist/src/lib/worker_socket.js.map +1 -0
- package/dist/src/server/AuthProvider.d.ts +130 -0
- package/dist/src/server/AuthProvider.d.ts.map +1 -0
- package/dist/src/server/AuthProvider.js +58 -0
- package/dist/src/server/AuthProvider.js.map +1 -0
- package/dist/src/server/ConnectRequest.d.ts +15 -0
- package/dist/src/server/ConnectRequest.d.ts.map +1 -0
- package/dist/src/server/ConnectRequest.js +36 -0
- package/dist/src/server/ConnectRequest.js.map +1 -0
- package/dist/src/server/Endpoint.d.ts +49 -0
- package/dist/src/server/Endpoint.d.ts.map +1 -0
- package/dist/src/server/Endpoint.js +414 -0
- package/dist/src/server/Endpoint.js.map +1 -0
- package/dist/src/server/EndpointController.d.ts +15 -0
- package/dist/src/server/EndpointController.d.ts.map +1 -0
- package/dist/src/server/EndpointController.js +92 -0
- package/dist/src/server/EndpointController.js.map +1 -0
- package/dist/src/server/index.d.ts +7 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +7 -0
- package/dist/src/server/index.js.map +1 -0
- package/dist/src/utils/i18n.d.ts +20 -0
- package/dist/src/utils/i18n.d.ts.map +1 -0
- package/dist/src/utils/i18n.js +41 -0
- package/dist/src/utils/i18n.js.map +1 -0
- package/dist/src/utils/index.d.ts +4 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +4 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/log_middleware.d.ts +3 -0
- package/dist/src/utils/log_middleware.d.ts.map +1 -0
- package/dist/src/utils/log_middleware.js +37 -0
- package/dist/src/utils/log_middleware.js.map +1 -0
- package/dist/src/utils/minioService.d.ts +53 -0
- package/dist/src/utils/minioService.d.ts.map +1 -0
- package/dist/src/utils/minioService.js +163 -0
- package/dist/src/utils/minioService.js.map +1 -0
- package/dist/tests/actors.test.d.ts +2 -0
- package/dist/tests/actors.test.d.ts.map +1 -0
- package/dist/tests/actors.test.js +45 -0
- package/dist/tests/actors.test.js.map +1 -0
- package/dist/tests/authProvider.test.d.ts +2 -0
- package/dist/tests/authProvider.test.d.ts.map +1 -0
- package/dist/tests/authProvider.test.js +24 -0
- package/dist/tests/authProvider.test.js.map +1 -0
- package/dist/tests/builder.test.d.ts +2 -0
- package/dist/tests/builder.test.d.ts.map +1 -0
- package/dist/tests/builder.test.js +37 -0
- package/dist/tests/builder.test.js.map +1 -0
- package/dist/tests/connectRequest.test.d.ts +2 -0
- package/dist/tests/connectRequest.test.d.ts.map +1 -0
- package/dist/tests/connectRequest.test.js +55 -0
- package/dist/tests/connectRequest.test.js.map +1 -0
- package/dist/tests/endpointController.test.d.ts +2 -0
- package/dist/tests/endpointController.test.d.ts.map +1 -0
- package/dist/tests/endpointController.test.js +28 -0
- package/dist/tests/endpointController.test.js.map +1 -0
- package/dist/tests/i18n.test.d.ts +2 -0
- package/dist/tests/i18n.test.d.ts.map +1 -0
- package/dist/tests/i18n.test.js +25 -0
- package/dist/tests/i18n.test.js.map +1 -0
- package/dist/tests/logMiddleware.test.d.ts +2 -0
- package/dist/tests/logMiddleware.test.d.ts.map +1 -0
- package/dist/tests/logMiddleware.test.js +10 -0
- package/dist/tests/logMiddleware.test.js.map +1 -0
- package/dist/tests/minioService.test.d.ts +2 -0
- package/dist/tests/minioService.test.d.ts.map +1 -0
- package/dist/tests/minioService.test.js +29 -0
- package/dist/tests/minioService.test.js.map +1 -0
- package/dist/tests/platform.test.d.ts +2 -0
- package/dist/tests/platform.test.d.ts.map +1 -0
- package/dist/tests/platform.test.js +43 -0
- package/dist/tests/platform.test.js.map +1 -0
- package/dist/tests/proto.test.d.ts +2 -0
- package/dist/tests/proto.test.d.ts.map +1 -0
- package/dist/tests/proto.test.js +37 -0
- package/dist/tests/proto.test.js.map +1 -0
- package/dist/tests/workerSocket.test.d.ts +2 -0
- package/dist/tests/workerSocket.test.d.ts.map +1 -0
- package/dist/tests/workerSocket.test.js +53 -0
- package/dist/tests/workerSocket.test.js.map +1 -0
- package/package.json +69 -3
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import builder from '../src/builder/builder.js';
|
|
4
|
+
import Fragment from '../src/builder/Fragment.js';
|
|
5
|
+
import panel, { Panel } from '../src/builder/Panel.js';
|
|
6
|
+
class MockFragment extends Fragment {
|
|
7
|
+
async load() {
|
|
8
|
+
return this.input.label;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
describe('UI Builder & Fragments', () => {
|
|
12
|
+
it('builds nested panels and registers fragments', async () => {
|
|
13
|
+
const mockActivityDriver = {
|
|
14
|
+
push: async () => { },
|
|
15
|
+
trigger: async () => { },
|
|
16
|
+
};
|
|
17
|
+
const buildResult = await builder.build(mockActivityDriver, async () => {
|
|
18
|
+
await panel({
|
|
19
|
+
styles: ['flex', 'col'],
|
|
20
|
+
render: async () => {
|
|
21
|
+
new MockFragment({ label: 'Hello Fragment' });
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
assert.ok(buildResult.mainPanel instanceof Panel);
|
|
26
|
+
assert.strictEqual(buildResult.fragments.size, 1);
|
|
27
|
+
const frag = [...buildResult.fragments.values()][0];
|
|
28
|
+
assert.strictEqual(frag.type, 'MockFragment');
|
|
29
|
+
const loadedData = await frag.load();
|
|
30
|
+
assert.strictEqual(loadedData, 'Hello Fragment');
|
|
31
|
+
const tree = buildResult.mainPanel._build();
|
|
32
|
+
assert.strictEqual(tree.type, 'Panel');
|
|
33
|
+
assert.ok(Array.isArray(tree.content));
|
|
34
|
+
assert.strictEqual(tree.content.length, 1);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=builder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.test.js","sourceRoot":"","sources":["../../tests/builder.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAChD,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAClD,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,YAAa,SAAQ,QAAsD;IAC7E,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC5B,CAAC;CACJ;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,kBAAkB,GAAQ;YAC5B,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;YACpB,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SAC1B,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,KAAK,CAAC;gBACR,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;gBACvB,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBAClD,CAAC;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAEjD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectRequest.test.d.ts","sourceRoot":"","sources":["../../tests/connectRequest.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Connection } from '@araminix/lib';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
|
+
import { describe, it } from 'node:test';
|
|
4
|
+
import { AgentInfo } from '../src/server/AuthProvider.js';
|
|
5
|
+
import { AcceptError, ConnectRequest } from '../src/server/ConnectRequest.js';
|
|
6
|
+
describe('ConnectRequest', () => {
|
|
7
|
+
it('accepts connection', () => {
|
|
8
|
+
const inter = {
|
|
9
|
+
onDestroy: () => { },
|
|
10
|
+
onDisconnect: () => { },
|
|
11
|
+
onAccept: () => { },
|
|
12
|
+
};
|
|
13
|
+
const conn = new Connection(inter, 'test-arg');
|
|
14
|
+
const mockWs = {
|
|
15
|
+
send: () => { },
|
|
16
|
+
close: () => { },
|
|
17
|
+
onopen: null,
|
|
18
|
+
onerror: null,
|
|
19
|
+
onclose: null,
|
|
20
|
+
onmessage: null,
|
|
21
|
+
readyState: 1,
|
|
22
|
+
};
|
|
23
|
+
conn.connect(mockWs);
|
|
24
|
+
const info = new AgentInfo('agent-1', 'test');
|
|
25
|
+
const req = new ConnectRequest(conn, info);
|
|
26
|
+
assert.strictEqual(req.arg, 'test-arg');
|
|
27
|
+
const res = req.accept();
|
|
28
|
+
assert.strictEqual(res.isOk(), true);
|
|
29
|
+
// Second accept should be Staled
|
|
30
|
+
const res2 = req.accept();
|
|
31
|
+
assert.strictEqual(res2.isErr(), true);
|
|
32
|
+
if (res2.isErr()) {
|
|
33
|
+
assert.strictEqual(res2.e, AcceptError.Staled);
|
|
34
|
+
}
|
|
35
|
+
conn.destroy('Intentional');
|
|
36
|
+
});
|
|
37
|
+
it('denies connection', () => {
|
|
38
|
+
const inter = {
|
|
39
|
+
onDestroy: () => { },
|
|
40
|
+
onDisconnect: () => { },
|
|
41
|
+
onAccept: () => { },
|
|
42
|
+
};
|
|
43
|
+
const conn = new Connection(inter, 'test-arg');
|
|
44
|
+
const info = new AgentInfo('agent-1', 'test');
|
|
45
|
+
const req = new ConnectRequest(conn, info);
|
|
46
|
+
const res = req.deny();
|
|
47
|
+
assert.strictEqual(res.isOk(), true);
|
|
48
|
+
const res2 = req.deny();
|
|
49
|
+
assert.strictEqual(res2.isErr(), true);
|
|
50
|
+
if (res2.isErr()) {
|
|
51
|
+
assert.strictEqual(res2.e, AcceptError.Staled);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=connectRequest.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectRequest.test.js","sourceRoot":"","sources":["../../tests/connectRequest.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpointController.test.d.ts","sourceRoot":"","sources":["../../tests/endpointController.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { AgentInfo } from '../src/server/AuthProvider.js';
|
|
4
|
+
import EndpointController from '../src/server/EndpointController.js';
|
|
5
|
+
describe('EndpointController', () => {
|
|
6
|
+
it('acquires and connects', async () => {
|
|
7
|
+
const controller = new EndpointController();
|
|
8
|
+
const acquirePromise = controller.acquire();
|
|
9
|
+
const mockWs = {
|
|
10
|
+
send: () => { },
|
|
11
|
+
close: () => { },
|
|
12
|
+
onopen: null,
|
|
13
|
+
onerror: null,
|
|
14
|
+
onclose: null,
|
|
15
|
+
onmessage: null,
|
|
16
|
+
readyState: 1,
|
|
17
|
+
};
|
|
18
|
+
const info = new AgentInfo('agent-10', 'typeX');
|
|
19
|
+
await controller.connect(mockWs, 'token-123', info, 'arg-1');
|
|
20
|
+
const result = await acquirePromise;
|
|
21
|
+
assert.strictEqual(result.isOk(), true);
|
|
22
|
+
const req = result.unwrap();
|
|
23
|
+
assert.strictEqual(req.info.id, 'agent-10');
|
|
24
|
+
assert.strictEqual(req.arg, 'arg-1');
|
|
25
|
+
req.deny();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=endpointController.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpointController.test.js","sourceRoot":"","sources":["../../tests/endpointController.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,kBAAkB,MAAM,qCAAqC,CAAC;AAErE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAE5C,MAAM,MAAM,GAAG;YACX,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,CAAC;SAChB,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,UAAU,CAAC,OAAO,CAAC,MAAa,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.test.d.ts","sourceRoot":"","sources":["../../tests/i18n.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { I18nService } from '../src/utils/i18n.js';
|
|
4
|
+
describe('I18nService', () => {
|
|
5
|
+
it('translates known keys', () => {
|
|
6
|
+
const i18n = new I18nService('en');
|
|
7
|
+
i18n.loadTranslations({
|
|
8
|
+
en: { hello: 'Hello', bye: 'Goodbye' },
|
|
9
|
+
ru: { hello: 'Привет', bye: 'Пока' },
|
|
10
|
+
});
|
|
11
|
+
assert.strictEqual(i18n.t('hello'), 'Hello');
|
|
12
|
+
assert.strictEqual(i18n.t('bye'), 'Goodbye');
|
|
13
|
+
assert.strictEqual(i18n.t('hello', 'ru'), 'Привет');
|
|
14
|
+
});
|
|
15
|
+
it('switches language and falls back to key on missing translation', () => {
|
|
16
|
+
const i18n = new I18nService('en');
|
|
17
|
+
i18n.loadTranslations({
|
|
18
|
+
en: { hello: 'Hello', bye: 'Goodbye' },
|
|
19
|
+
});
|
|
20
|
+
i18n.setLanguage('ru');
|
|
21
|
+
assert.strictEqual(i18n.getCurrentLanguage(), 'ru');
|
|
22
|
+
assert.strictEqual(i18n.t('hello'), 'hello'); // fallback
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=i18n.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.test.js","sourceRoot":"","sources":["../../tests/i18n.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAI,WAAW,CAAY,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC;YAClB,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;YACtC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;SACvC,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,IAAI,WAAW,CAAY,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC;YAClB,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;SACzC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logMiddleware.test.d.ts","sourceRoot":"","sources":["../../tests/logMiddleware.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { logMiddleware } from '../src/utils/log_middleware.js';
|
|
4
|
+
describe('LogMiddleware', () => {
|
|
5
|
+
it('is a standard express middleware function', () => {
|
|
6
|
+
assert.strictEqual(typeof logMiddleware, 'function');
|
|
7
|
+
assert.strictEqual(logMiddleware.length, 3);
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=logMiddleware.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logMiddleware.test.js","sourceRoot":"","sources":["../../tests/logMiddleware.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,WAAW,CAAC,OAAO,aAAa,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minioService.test.d.ts","sourceRoot":"","sources":["../../tests/minioService.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { MIME_TYPE, MimeToExtension, MinioService } from '../src/utils/minioService.js';
|
|
4
|
+
describe('MinioService Options and Extensions', () => {
|
|
5
|
+
it('maps MIME types to expected file extensions', () => {
|
|
6
|
+
assert.strictEqual(MimeToExtension[MIME_TYPE.JPG], 'jpg');
|
|
7
|
+
assert.strictEqual(MimeToExtension[MIME_TYPE.PNG], 'png');
|
|
8
|
+
assert.strictEqual(MimeToExtension[MIME_TYPE.PDF], 'pdf');
|
|
9
|
+
assert.strictEqual(MimeToExtension[MIME_TYPE.ZIP], 'zip');
|
|
10
|
+
assert.strictEqual(MimeToExtension[MIME_TYPE.JSON], 'json');
|
|
11
|
+
});
|
|
12
|
+
it('validates required constructor parameters', () => {
|
|
13
|
+
assert.throws(() => {
|
|
14
|
+
new MinioService({});
|
|
15
|
+
}, /MinIO endPoint is required/);
|
|
16
|
+
assert.throws(() => {
|
|
17
|
+
new MinioService({ endPoint: 'localhost' });
|
|
18
|
+
}, /MinIO port is required/);
|
|
19
|
+
});
|
|
20
|
+
it('validates missing accessKey or bucketName', () => {
|
|
21
|
+
assert.throws(() => {
|
|
22
|
+
new MinioService({ endPoint: 'localhost', port: 9000 });
|
|
23
|
+
}, /MinIO accessKey is required/);
|
|
24
|
+
assert.throws(() => {
|
|
25
|
+
new MinioService({ endPoint: 'localhost', port: 9000, accessKey: 'k', secretKey: 's' });
|
|
26
|
+
}, /MinIO bucketName is required/);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=minioService.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minioService.test.js","sourceRoot":"","sources":["../../tests/minioService.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAExF,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACf,IAAI,YAAY,CAAC,EAAS,CAAC,CAAC;QAChC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAEjC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACf,IAAI,YAAY,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAS,CAAC,CAAC;QACvD,CAAC,EAAE,wBAAwB,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACf,IAAI,YAAY,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAS,CAAC,CAAC;QACnE,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACf,IAAI,YAAY,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAS,CAAC,CAAC;QACnG,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.test.d.ts","sourceRoot":"","sources":["../../tests/platform.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { AgentErrorType, CommunicationAgentError, ExecutionAgentError } from '../src/agent/d.js';
|
|
4
|
+
import { AppError } from '../src/executor/AppInstance.js';
|
|
5
|
+
import Platform from '../src/Platform.js';
|
|
6
|
+
describe('Platform Core Structure', () => {
|
|
7
|
+
it('verifies AppError and AgentError enumerations and classes', () => {
|
|
8
|
+
assert.strictEqual(AppError.WrongAction, 'WrongAction');
|
|
9
|
+
assert.strictEqual(AppError.NonActive, 'NonActive');
|
|
10
|
+
assert.strictEqual(AppError.NotFound, 'NotFound');
|
|
11
|
+
const execErr = new ExecutionAgentError('bad payload');
|
|
12
|
+
assert.strictEqual(execErr.type, AgentErrorType.Execution);
|
|
13
|
+
assert.strictEqual(execErr.e, 'bad payload');
|
|
14
|
+
const commErr = new CommunicationAgentError();
|
|
15
|
+
assert.strictEqual(commErr.type, AgentErrorType.Communication);
|
|
16
|
+
});
|
|
17
|
+
it('instantiates Platform with valid configuration', () => {
|
|
18
|
+
const mockAuth = {
|
|
19
|
+
getInfo: async () => ({}),
|
|
20
|
+
auth: async () => ({}),
|
|
21
|
+
googleAuth: async () => ({}),
|
|
22
|
+
destroy: async () => { },
|
|
23
|
+
refreshToken: async () => ({}),
|
|
24
|
+
request2FA: async () => ({}),
|
|
25
|
+
verify2FA: async () => ({}),
|
|
26
|
+
enable2FA: async () => ({}),
|
|
27
|
+
disable2FA: async () => ({}),
|
|
28
|
+
requestUploadUrl: async () => ({}),
|
|
29
|
+
requestDownloadUrl: async () => ({}),
|
|
30
|
+
mobileRequests: async () => ({}),
|
|
31
|
+
};
|
|
32
|
+
const platform = new Platform({
|
|
33
|
+
appIndexPath: new URL('file:///d:/dummy/apps.js'),
|
|
34
|
+
agentIndexPath: new URL('file:///d:/dummy/agents.js'),
|
|
35
|
+
authProvider: mockAuth,
|
|
36
|
+
instanceUserLimit: 5,
|
|
37
|
+
});
|
|
38
|
+
assert.ok(platform.endpoint);
|
|
39
|
+
assert.ok(platform.instances);
|
|
40
|
+
platform.stop();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=platform.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.test.js","sourceRoot":"","sources":["../../tests/platform.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAG1C,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAiB;YAC3B,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YAChC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YAC7B,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YACnC,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;YACvB,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YACrC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YACnC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YAClC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YAClC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YACnC,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YACzC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;YAC3C,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAQ;SAC1C,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC1B,YAAY,EAAE,IAAI,GAAG,CAAC,0BAA0B,CAAC;YACjD,cAAc,EAAE,IAAI,GAAG,CAAC,4BAA4B,CAAC;YACrD,YAAY,EAAE,QAAQ;YACtB,iBAAiB,EAAE,CAAC;SACvB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proto.test.d.ts","sourceRoot":"","sources":["../../tests/proto.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { Action, AgentList, AgentPost, AgentTask, deserialize, SendUpdate, } from '../src/executor/proto.js';
|
|
4
|
+
import { UpdateTypes } from '../src/lib/actors.js';
|
|
5
|
+
describe('Proto Messages and Deserializer', () => {
|
|
6
|
+
it('deserializes Agent messages', () => {
|
|
7
|
+
const post = new AgentPost('testEvent', { a: 1 });
|
|
8
|
+
const postDeser = deserialize(JSON.parse(JSON.stringify(post)));
|
|
9
|
+
assert.ok(postDeser instanceof AgentPost);
|
|
10
|
+
assert.strictEqual(postDeser.name, 'testEvent');
|
|
11
|
+
const task = new AgentTask('agent-1', 'compute', { x: 5 }, 30);
|
|
12
|
+
const taskDeser = deserialize(JSON.parse(JSON.stringify(task)));
|
|
13
|
+
assert.ok(taskDeser instanceof AgentTask);
|
|
14
|
+
assert.strictEqual(taskDeser.id, 'agent-1');
|
|
15
|
+
assert.strictEqual(taskDeser.hp, 30);
|
|
16
|
+
const list = new AgentList('myType');
|
|
17
|
+
const listDeser = deserialize(JSON.parse(JSON.stringify(list)));
|
|
18
|
+
assert.ok(listDeser instanceof AgentList);
|
|
19
|
+
assert.strictEqual(listDeser.type, 'myType');
|
|
20
|
+
});
|
|
21
|
+
it('deserializes UI and instance controls', () => {
|
|
22
|
+
const action = new Action('frag-1', 'click', { btn: 1 });
|
|
23
|
+
const actionDeser = deserialize(JSON.parse(JSON.stringify(action)));
|
|
24
|
+
assert.ok(actionDeser instanceof Action);
|
|
25
|
+
assert.strictEqual(actionDeser.fragmentId, 'frag-1');
|
|
26
|
+
const update = new SendUpdate({
|
|
27
|
+
activityId: 'act-1',
|
|
28
|
+
fragmentId: 'f-1',
|
|
29
|
+
type: UpdateTypes.Patch,
|
|
30
|
+
data: { v: 99 },
|
|
31
|
+
});
|
|
32
|
+
const updateDeser = deserialize(JSON.parse(JSON.stringify(update)));
|
|
33
|
+
assert.ok(updateDeser instanceof SendUpdate);
|
|
34
|
+
assert.strictEqual(updateDeser.data.type, UpdateTypes.Patch);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=proto.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proto.test.js","sourceRoot":"","sources":["../../tests/proto.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAEH,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,EAGT,WAAW,EAUX,UAAU,GAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,SAAS,YAAY,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAE,SAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,SAAS,YAAY,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAE,SAAuB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAE,SAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,SAAS,YAAY,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAE,SAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,EAAE,CAAC,WAAW,YAAY,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAE,WAAsB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;YAC1B,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,WAAW,CAAC,KAAK;YACvB,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;SAClB,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,EAAE,CAAC,WAAW,YAAY,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAE,WAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workerSocket.test.d.ts","sourceRoot":"","sources":["../../tests/workerSocket.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { MessageChannel } from 'worker_threads';
|
|
4
|
+
import { Rej, Req, RequestSocket, Res, ResponseSocket } from '../src/lib/worker_socket.js';
|
|
5
|
+
class CustomReq extends Req {
|
|
6
|
+
payload;
|
|
7
|
+
constructor(payload) {
|
|
8
|
+
super();
|
|
9
|
+
this.payload = payload;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
class CustomRes extends Res {
|
|
13
|
+
answer;
|
|
14
|
+
constructor(answer) {
|
|
15
|
+
super();
|
|
16
|
+
this.answer = answer;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function deserialize(data) {
|
|
20
|
+
if (!data)
|
|
21
|
+
return undefined;
|
|
22
|
+
if (data._type === 'CustomReq')
|
|
23
|
+
return new CustomReq(data.payload);
|
|
24
|
+
if (data._type === 'CustomRes')
|
|
25
|
+
return new CustomRes(data.answer);
|
|
26
|
+
if (data._type === 'Res')
|
|
27
|
+
return new Res();
|
|
28
|
+
if (data._type === 'Rej')
|
|
29
|
+
return new Rej();
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
describe('WorkerSocket', () => {
|
|
33
|
+
it('communicates over MessageChannel', async () => {
|
|
34
|
+
const channel = new MessageChannel();
|
|
35
|
+
const reqSocket = new RequestSocket(channel.port1, deserialize);
|
|
36
|
+
const resSocket = new ResponseSocket(channel.port2, deserialize);
|
|
37
|
+
const serverPromise = (async () => {
|
|
38
|
+
const readRes = await resSocket.read();
|
|
39
|
+
assert.ok(readRes.isOk());
|
|
40
|
+
const req = readRes.unwrap();
|
|
41
|
+
assert.ok(req instanceof CustomReq);
|
|
42
|
+
assert.strictEqual(req.payload, 'ping');
|
|
43
|
+
resSocket.resolve(new CustomRes(42));
|
|
44
|
+
})();
|
|
45
|
+
const clientRes = await reqSocket.writeRead(new CustomReq('ping'));
|
|
46
|
+
assert.ok(clientRes.isOk());
|
|
47
|
+
assert.strictEqual(clientRes.unwrap().answer, 42);
|
|
48
|
+
await serverPromise;
|
|
49
|
+
reqSocket.close();
|
|
50
|
+
resSocket.close();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=workerSocket.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workerSocket.test.js","sourceRoot":"","sources":["../../tests/workerSocket.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAe,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAExG,MAAM,SAAU,SAAQ,GAAG;IACvB,OAAO,CAAS;IAChB,YAAY,OAAe;QACvB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAED,MAAM,SAAU,SAAQ,GAAG;IACvB,MAAM,CAAS;IACf,YAAY,MAAc;QACtB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CACJ;AAED,SAAS,WAAW,CAAC,IAAS;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;QAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;QAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC3C,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEjE,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,SAAS,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAE,GAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvD,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,SAAS,CAAuB,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACzF,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAElD,MAAM,aAAa,CAAC;QACpB,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,SAAS,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,72 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@araminix/platform",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"description": "Enterprise-grade actor runtime, WebSocket endpoint platform, and agent execution engine",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"publishConfig": {
|
|
9
|
+
"access": "public"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/araminix/platform.git"
|
|
14
|
+
},
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/araminix/platform/issues"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://github.com/araminix/platform#readme",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/index.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md",
|
|
28
|
+
"LICENSE"
|
|
29
|
+
],
|
|
30
|
+
"keywords": [
|
|
31
|
+
"araminix",
|
|
32
|
+
"actor-model",
|
|
33
|
+
"realtime",
|
|
34
|
+
"platform",
|
|
35
|
+
"websocket",
|
|
36
|
+
"agent",
|
|
37
|
+
"worker-threads",
|
|
38
|
+
"express-ws",
|
|
39
|
+
"microservices"
|
|
40
|
+
],
|
|
41
|
+
"author": "Amin Abbasi",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@araminix/lib": "1.0.0",
|
|
45
|
+
"axios": "1.20.0",
|
|
46
|
+
"cookie-parser": "1.4.7",
|
|
47
|
+
"express": "5.3.0",
|
|
48
|
+
"express-ws": "5.0.2",
|
|
49
|
+
"minio": "8.0.7",
|
|
50
|
+
"multer": "2.5.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@trivago/prettier-plugin-sort-imports": "6.0.2",
|
|
54
|
+
"@types/cookie-parser": "1.4.10",
|
|
55
|
+
"@types/express": "5.0.6",
|
|
56
|
+
"@types/express-ws": "3.0.6",
|
|
57
|
+
"@types/multer": "2.3.0",
|
|
58
|
+
"@types/node": "26.6.5",
|
|
59
|
+
"@types/supertest": "7.2.1",
|
|
60
|
+
"@types/ws": "8.18.2",
|
|
61
|
+
"prettier": "3.9.10",
|
|
62
|
+
"supertest": "7.3.1",
|
|
63
|
+
"typescript": "7.0.2"
|
|
64
|
+
},
|
|
65
|
+
"scripts": {
|
|
66
|
+
"build": "tsc",
|
|
67
|
+
"format": "prettier --write .",
|
|
68
|
+
"format:check": "prettier --check .",
|
|
69
|
+
"test": "node --test dist/tests/i18n.test.js dist/tests/actors.test.js dist/tests/builder.test.js dist/tests/workerSocket.test.js dist/tests/proto.test.js dist/tests/platform.test.js dist/tests/authProvider.test.js dist/tests/connectRequest.test.js dist/tests/endpointController.test.js dist/tests/minioService.test.js dist/tests/logMiddleware.test.js",
|
|
70
|
+
"test:coverage": "node --experimental-test-coverage --test dist/tests/i18n.test.js dist/tests/actors.test.js dist/tests/builder.test.js dist/tests/workerSocket.test.js dist/tests/proto.test.js dist/tests/platform.test.js dist/tests/authProvider.test.js dist/tests/connectRequest.test.js dist/tests/endpointController.test.js dist/tests/minioService.test.js dist/tests/logMiddleware.test.js"
|
|
71
|
+
}
|
|
6
72
|
}
|