@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.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -2
  3. package/dist/index.d.ts +15 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +15 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/Platform.d.ts +48 -0
  8. package/dist/src/Platform.d.ts.map +1 -0
  9. package/dist/src/Platform.js +275 -0
  10. package/dist/src/Platform.js.map +1 -0
  11. package/dist/src/agent/AgentController.d.ts +20 -0
  12. package/dist/src/agent/AgentController.d.ts.map +1 -0
  13. package/dist/src/agent/AgentController.js +224 -0
  14. package/dist/src/agent/AgentController.js.map +1 -0
  15. package/dist/src/agent/agentWorkerDriver.d.ts +11 -0
  16. package/dist/src/agent/agentWorkerDriver.d.ts.map +1 -0
  17. package/dist/src/agent/agentWorkerDriver.js +20 -0
  18. package/dist/src/agent/agentWorkerDriver.js.map +1 -0
  19. package/dist/src/agent/d.d.ts +39 -0
  20. package/dist/src/agent/d.d.ts.map +1 -0
  21. package/dist/src/agent/d.js +91 -0
  22. package/dist/src/agent/d.js.map +1 -0
  23. package/dist/src/agent/worker.d.ts +2 -0
  24. package/dist/src/agent/worker.d.ts.map +1 -0
  25. package/dist/src/agent/worker.js +67 -0
  26. package/dist/src/agent/worker.js.map +1 -0
  27. package/dist/src/builder/Fragment.d.ts +40 -0
  28. package/dist/src/builder/Fragment.d.ts.map +1 -0
  29. package/dist/src/builder/Fragment.js +87 -0
  30. package/dist/src/builder/Fragment.js.map +1 -0
  31. package/dist/src/builder/Panel.d.ts +30 -0
  32. package/dist/src/builder/Panel.d.ts.map +1 -0
  33. package/dist/src/builder/Panel.js +45 -0
  34. package/dist/src/builder/Panel.js.map +1 -0
  35. package/dist/src/builder/builder.d.ts +31 -0
  36. package/dist/src/builder/builder.d.ts.map +1 -0
  37. package/dist/src/builder/builder.js +43 -0
  38. package/dist/src/builder/builder.js.map +1 -0
  39. package/dist/src/executor/ActivityInstance.d.ts +98 -0
  40. package/dist/src/executor/ActivityInstance.d.ts.map +1 -0
  41. package/dist/src/executor/ActivityInstance.js +389 -0
  42. package/dist/src/executor/ActivityInstance.js.map +1 -0
  43. package/dist/src/executor/AppInstance.d.ts +73 -0
  44. package/dist/src/executor/AppInstance.d.ts.map +1 -0
  45. package/dist/src/executor/AppInstance.js +399 -0
  46. package/dist/src/executor/AppInstance.js.map +1 -0
  47. package/dist/src/executor/Instance.d.ts +37 -0
  48. package/dist/src/executor/Instance.d.ts.map +1 -0
  49. package/dist/src/executor/Instance.js +303 -0
  50. package/dist/src/executor/Instance.js.map +1 -0
  51. package/dist/src/executor/index.d.ts +4 -0
  52. package/dist/src/executor/index.d.ts.map +1 -0
  53. package/dist/src/executor/index.js +3 -0
  54. package/dist/src/executor/index.js.map +1 -0
  55. package/dist/src/executor/proto.d.ts +120 -0
  56. package/dist/src/executor/proto.d.ts.map +1 -0
  57. package/dist/src/executor/proto.js +207 -0
  58. package/dist/src/executor/proto.js.map +1 -0
  59. package/dist/src/executor/worker.d.ts +2 -0
  60. package/dist/src/executor/worker.d.ts.map +1 -0
  61. package/dist/src/executor/worker.js +154 -0
  62. package/dist/src/executor/worker.js.map +1 -0
  63. package/dist/src/executor/workerDriver.d.ts +14 -0
  64. package/dist/src/executor/workerDriver.d.ts.map +1 -0
  65. package/dist/src/executor/workerDriver.js +26 -0
  66. package/dist/src/executor/workerDriver.js.map +1 -0
  67. package/dist/src/lib/actors.d.ts +94 -0
  68. package/dist/src/lib/actors.d.ts.map +1 -0
  69. package/dist/src/lib/actors.js +139 -0
  70. package/dist/src/lib/actors.js.map +1 -0
  71. package/dist/src/lib/d.d.ts +145 -0
  72. package/dist/src/lib/d.d.ts.map +1 -0
  73. package/dist/src/lib/d.js +296 -0
  74. package/dist/src/lib/d.js.map +1 -0
  75. package/dist/src/lib/worker_socket.d.ts +56 -0
  76. package/dist/src/lib/worker_socket.d.ts.map +1 -0
  77. package/dist/src/lib/worker_socket.js +161 -0
  78. package/dist/src/lib/worker_socket.js.map +1 -0
  79. package/dist/src/server/AuthProvider.d.ts +130 -0
  80. package/dist/src/server/AuthProvider.d.ts.map +1 -0
  81. package/dist/src/server/AuthProvider.js +58 -0
  82. package/dist/src/server/AuthProvider.js.map +1 -0
  83. package/dist/src/server/ConnectRequest.d.ts +15 -0
  84. package/dist/src/server/ConnectRequest.d.ts.map +1 -0
  85. package/dist/src/server/ConnectRequest.js +36 -0
  86. package/dist/src/server/ConnectRequest.js.map +1 -0
  87. package/dist/src/server/Endpoint.d.ts +49 -0
  88. package/dist/src/server/Endpoint.d.ts.map +1 -0
  89. package/dist/src/server/Endpoint.js +414 -0
  90. package/dist/src/server/Endpoint.js.map +1 -0
  91. package/dist/src/server/EndpointController.d.ts +15 -0
  92. package/dist/src/server/EndpointController.d.ts.map +1 -0
  93. package/dist/src/server/EndpointController.js +92 -0
  94. package/dist/src/server/EndpointController.js.map +1 -0
  95. package/dist/src/server/index.d.ts +7 -0
  96. package/dist/src/server/index.d.ts.map +1 -0
  97. package/dist/src/server/index.js +7 -0
  98. package/dist/src/server/index.js.map +1 -0
  99. package/dist/src/utils/i18n.d.ts +20 -0
  100. package/dist/src/utils/i18n.d.ts.map +1 -0
  101. package/dist/src/utils/i18n.js +41 -0
  102. package/dist/src/utils/i18n.js.map +1 -0
  103. package/dist/src/utils/index.d.ts +4 -0
  104. package/dist/src/utils/index.d.ts.map +1 -0
  105. package/dist/src/utils/index.js +4 -0
  106. package/dist/src/utils/index.js.map +1 -0
  107. package/dist/src/utils/log_middleware.d.ts +3 -0
  108. package/dist/src/utils/log_middleware.d.ts.map +1 -0
  109. package/dist/src/utils/log_middleware.js +37 -0
  110. package/dist/src/utils/log_middleware.js.map +1 -0
  111. package/dist/src/utils/minioService.d.ts +53 -0
  112. package/dist/src/utils/minioService.d.ts.map +1 -0
  113. package/dist/src/utils/minioService.js +163 -0
  114. package/dist/src/utils/minioService.js.map +1 -0
  115. package/dist/tests/actors.test.d.ts +2 -0
  116. package/dist/tests/actors.test.d.ts.map +1 -0
  117. package/dist/tests/actors.test.js +45 -0
  118. package/dist/tests/actors.test.js.map +1 -0
  119. package/dist/tests/authProvider.test.d.ts +2 -0
  120. package/dist/tests/authProvider.test.d.ts.map +1 -0
  121. package/dist/tests/authProvider.test.js +24 -0
  122. package/dist/tests/authProvider.test.js.map +1 -0
  123. package/dist/tests/builder.test.d.ts +2 -0
  124. package/dist/tests/builder.test.d.ts.map +1 -0
  125. package/dist/tests/builder.test.js +37 -0
  126. package/dist/tests/builder.test.js.map +1 -0
  127. package/dist/tests/connectRequest.test.d.ts +2 -0
  128. package/dist/tests/connectRequest.test.d.ts.map +1 -0
  129. package/dist/tests/connectRequest.test.js +55 -0
  130. package/dist/tests/connectRequest.test.js.map +1 -0
  131. package/dist/tests/endpointController.test.d.ts +2 -0
  132. package/dist/tests/endpointController.test.d.ts.map +1 -0
  133. package/dist/tests/endpointController.test.js +28 -0
  134. package/dist/tests/endpointController.test.js.map +1 -0
  135. package/dist/tests/i18n.test.d.ts +2 -0
  136. package/dist/tests/i18n.test.d.ts.map +1 -0
  137. package/dist/tests/i18n.test.js +25 -0
  138. package/dist/tests/i18n.test.js.map +1 -0
  139. package/dist/tests/logMiddleware.test.d.ts +2 -0
  140. package/dist/tests/logMiddleware.test.d.ts.map +1 -0
  141. package/dist/tests/logMiddleware.test.js +10 -0
  142. package/dist/tests/logMiddleware.test.js.map +1 -0
  143. package/dist/tests/minioService.test.d.ts +2 -0
  144. package/dist/tests/minioService.test.d.ts.map +1 -0
  145. package/dist/tests/minioService.test.js +29 -0
  146. package/dist/tests/minioService.test.js.map +1 -0
  147. package/dist/tests/platform.test.d.ts +2 -0
  148. package/dist/tests/platform.test.d.ts.map +1 -0
  149. package/dist/tests/platform.test.js +43 -0
  150. package/dist/tests/platform.test.js.map +1 -0
  151. package/dist/tests/proto.test.d.ts +2 -0
  152. package/dist/tests/proto.test.d.ts.map +1 -0
  153. package/dist/tests/proto.test.js +37 -0
  154. package/dist/tests/proto.test.js.map +1 -0
  155. package/dist/tests/workerSocket.test.d.ts +2 -0
  156. package/dist/tests/workerSocket.test.d.ts.map +1 -0
  157. package/dist/tests/workerSocket.test.js +53 -0
  158. package/dist/tests/workerSocket.test.js.map +1 -0
  159. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=connectRequest.test.d.ts.map
@@ -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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,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,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE9E,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC1B,MAAM,KAAK,GAAG;YACV,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;YACtB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC/C,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;QACF,IAAI,CAAC,OAAO,CAAC,MAAa,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE3C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAErC,iCAAiC;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,aAAoB,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACzB,MAAM,KAAK,GAAG;YACV,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;YACtB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE3C,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=endpointController.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=i18n.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logMiddleware.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=minioService.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=platform.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=proto.test.d.ts.map
@@ -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":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workerSocket.test.d.ts.map
@@ -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
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
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
  }