@zlink-systems/zlink 0.17.3

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 (199) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +198 -0
  3. package/README.typedoc.md +56 -0
  4. package/THIRD_PARTY_NOTICES.md +84 -0
  5. package/binding.gyp +27 -0
  6. package/dist/index.d.mts +3 -0
  7. package/dist/index.d.ts +24 -0
  8. package/dist/index.js +117 -0
  9. package/dist/index.mjs +4 -0
  10. package/dist/zlink/contracts/core/buffer_like.d.ts +2 -0
  11. package/dist/zlink/contracts/core/buffer_like.js +3 -0
  12. package/dist/zlink/contracts/core/context.d.ts +103 -0
  13. package/dist/zlink/contracts/core/context.js +11 -0
  14. package/dist/zlink/contracts/core/index.d.ts +3 -0
  15. package/dist/zlink/contracts/core/index.js +20 -0
  16. package/dist/zlink/contracts/core/routing_id.d.ts +28 -0
  17. package/dist/zlink/contracts/core/routing_id.js +120 -0
  18. package/dist/zlink/contracts/errors/errors.d.ts +44 -0
  19. package/dist/zlink/contracts/errors/errors.js +89 -0
  20. package/dist/zlink/contracts/errors/index.d.ts +2 -0
  21. package/dist/zlink/contracts/errors/index.js +29 -0
  22. package/dist/zlink/contracts/errors/results.d.ts +106 -0
  23. package/dist/zlink/contracts/errors/results.js +102 -0
  24. package/dist/zlink/contracts/eventing/index.d.ts +3 -0
  25. package/dist/zlink/contracts/eventing/index.js +20 -0
  26. package/dist/zlink/contracts/eventing/monitor.d.ts +157 -0
  27. package/dist/zlink/contracts/eventing/monitor.js +82 -0
  28. package/dist/zlink/contracts/eventing/poller.d.ts +76 -0
  29. package/dist/zlink/contracts/eventing/poller.js +3 -0
  30. package/dist/zlink/contracts/eventing/timer.d.ts +38 -0
  31. package/dist/zlink/contracts/eventing/timer.js +3 -0
  32. package/dist/zlink/contracts/index.d.ts +5 -0
  33. package/dist/zlink/contracts/index.js +22 -0
  34. package/dist/zlink/contracts/messaging/handlers.d.ts +5 -0
  35. package/dist/zlink/contracts/messaging/handlers.js +3 -0
  36. package/dist/zlink/contracts/messaging/index.d.ts +8 -0
  37. package/dist/zlink/contracts/messaging/index.js +15 -0
  38. package/dist/zlink/contracts/messaging/message.d.ts +68 -0
  39. package/dist/zlink/contracts/messaging/message.js +280 -0
  40. package/dist/zlink/contracts/messaging/message_parts_envelope.d.ts +14 -0
  41. package/dist/zlink/contracts/messaging/message_parts_envelope.js +56 -0
  42. package/dist/zlink/contracts/messaging/operations.d.ts +54 -0
  43. package/dist/zlink/contracts/messaging/operations.js +3 -0
  44. package/dist/zlink/contracts/messaging/received.d.ts +41 -0
  45. package/dist/zlink/contracts/messaging/received.js +130 -0
  46. package/dist/zlink/contracts/messaging/stream_packet.d.ts +14 -0
  47. package/dist/zlink/contracts/messaging/stream_packet.js +33 -0
  48. package/dist/zlink/contracts/messaging/subscription_event.d.ts +12 -0
  49. package/dist/zlink/contracts/messaging/subscription_event.js +20 -0
  50. package/dist/zlink/contracts/messaging/topic_message.d.ts +14 -0
  51. package/dist/zlink/contracts/messaging/topic_message.js +36 -0
  52. package/dist/zlink/contracts/sockets/dealer_socket.d.ts +29 -0
  53. package/dist/zlink/contracts/sockets/dealer_socket.js +3 -0
  54. package/dist/zlink/contracts/sockets/index.d.ts +10 -0
  55. package/dist/zlink/contracts/sockets/index.js +15 -0
  56. package/dist/zlink/contracts/sockets/pair_socket.d.ts +20 -0
  57. package/dist/zlink/contracts/sockets/pair_socket.js +3 -0
  58. package/dist/zlink/contracts/sockets/pubsub_sockets.d.ts +40 -0
  59. package/dist/zlink/contracts/sockets/pubsub_sockets.js +3 -0
  60. package/dist/zlink/contracts/sockets/router_socket.d.ts +32 -0
  61. package/dist/zlink/contracts/sockets/router_socket.js +3 -0
  62. package/dist/zlink/contracts/sockets/socket.d.ts +58 -0
  63. package/dist/zlink/contracts/sockets/socket.js +3 -0
  64. package/dist/zlink/contracts/sockets/socket_constants.d.ts +88 -0
  65. package/dist/zlink/contracts/sockets/socket_constants.js +67 -0
  66. package/dist/zlink/contracts/sockets/socket_options.d.ts +105 -0
  67. package/dist/zlink/contracts/sockets/socket_options.js +3 -0
  68. package/dist/zlink/contracts/sockets/stream_socket.d.ts +31 -0
  69. package/dist/zlink/contracts/sockets/stream_socket.js +3 -0
  70. package/dist/zlink/runtime/buffers/message_conversion.d.ts +6 -0
  71. package/dist/zlink/runtime/buffers/message_conversion.js +49 -0
  72. package/dist/zlink/runtime/core/context.d.ts +43 -0
  73. package/dist/zlink/runtime/core/context.js +150 -0
  74. package/dist/zlink/runtime/core/context_options.d.ts +19 -0
  75. package/dist/zlink/runtime/core/context_options.js +23 -0
  76. package/dist/zlink/runtime/core/routing_id.d.ts +3 -0
  77. package/dist/zlink/runtime/core/routing_id.js +30 -0
  78. package/dist/zlink/runtime/core/routing_id_conversion.d.ts +2 -0
  79. package/dist/zlink/runtime/core/routing_id_conversion.js +11 -0
  80. package/dist/zlink/runtime/core/runtime_info.d.ts +8 -0
  81. package/dist/zlink/runtime/core/runtime_info.js +39 -0
  82. package/dist/zlink/runtime/errors/error_mapping.d.ts +4 -0
  83. package/dist/zlink/runtime/errors/error_mapping.js +132 -0
  84. package/dist/zlink/runtime/errors/error_state.d.ts +1 -0
  85. package/dist/zlink/runtime/errors/error_state.js +15 -0
  86. package/dist/zlink/runtime/errors/native_errors.d.ts +16 -0
  87. package/dist/zlink/runtime/errors/native_errors.js +86 -0
  88. package/dist/zlink/runtime/eventing/counters.d.ts +16 -0
  89. package/dist/zlink/runtime/eventing/counters.js +33 -0
  90. package/dist/zlink/runtime/eventing/index.d.ts +6 -0
  91. package/dist/zlink/runtime/eventing/index.js +22 -0
  92. package/dist/zlink/runtime/eventing/monitor_event_state.d.ts +3 -0
  93. package/dist/zlink/runtime/eventing/monitor_event_state.js +19 -0
  94. package/dist/zlink/runtime/eventing/monitor_raw.d.ts +50 -0
  95. package/dist/zlink/runtime/eventing/monitor_raw.js +3 -0
  96. package/dist/zlink/runtime/eventing/monitor_socket.d.ts +9 -0
  97. package/dist/zlink/runtime/eventing/monitor_socket.js +39 -0
  98. package/dist/zlink/runtime/eventing/monitor_status.d.ts +3 -0
  99. package/dist/zlink/runtime/eventing/monitor_status.js +52 -0
  100. package/dist/zlink/runtime/eventing/poll_events.d.ts +20 -0
  101. package/dist/zlink/runtime/eventing/poll_events.js +92 -0
  102. package/dist/zlink/runtime/eventing/poller.d.ts +34 -0
  103. package/dist/zlink/runtime/eventing/poller.js +275 -0
  104. package/dist/zlink/runtime/eventing/thread.d.ts +6 -0
  105. package/dist/zlink/runtime/eventing/thread.js +52 -0
  106. package/dist/zlink/runtime/eventing/timer.d.ts +8 -0
  107. package/dist/zlink/runtime/eventing/timer.js +45 -0
  108. package/dist/zlink/runtime/handles/native_handle.d.ts +7 -0
  109. package/dist/zlink/runtime/handles/native_handle.js +24 -0
  110. package/dist/zlink/runtime/messaging/completion_owner.d.ts +86 -0
  111. package/dist/zlink/runtime/messaging/completion_owner.js +570 -0
  112. package/dist/zlink/runtime/messaging/message_materializer.d.ts +36 -0
  113. package/dist/zlink/runtime/messaging/message_materializer.js +199 -0
  114. package/dist/zlink/runtime/messaging/message_parts_state.d.ts +4 -0
  115. package/dist/zlink/runtime/messaging/message_parts_state.js +20 -0
  116. package/dist/zlink/runtime/messaging/message_snapshot.d.ts +13 -0
  117. package/dist/zlink/runtime/messaging/message_snapshot.js +42 -0
  118. package/dist/zlink/runtime/messaging/received_operations.d.ts +5 -0
  119. package/dist/zlink/runtime/messaging/received_operations.js +46 -0
  120. package/dist/zlink/runtime/messaging/received_state.d.ts +13 -0
  121. package/dist/zlink/runtime/messaging/received_state.js +29 -0
  122. package/dist/zlink/runtime/messaging/request_executor.d.ts +2 -0
  123. package/dist/zlink/runtime/messaging/request_executor.js +8 -0
  124. package/dist/zlink/runtime/messaging/send_operation_base.d.ts +13 -0
  125. package/dist/zlink/runtime/messaging/send_operation_base.js +52 -0
  126. package/dist/zlink/runtime/messaging/subscription_event_state.d.ts +4 -0
  127. package/dist/zlink/runtime/messaging/subscription_event_state.js +17 -0
  128. package/dist/zlink/runtime/messaging/topic_message_state.d.ts +11 -0
  129. package/dist/zlink/runtime/messaging/topic_message_state.js +75 -0
  130. package/dist/zlink/runtime/native/binding.d.ts +6 -0
  131. package/dist/zlink/runtime/native/binding.js +3 -0
  132. package/dist/zlink/runtime/native/binding_context.d.ts +14 -0
  133. package/dist/zlink/runtime/native/binding_context.js +3 -0
  134. package/dist/zlink/runtime/native/binding_core.d.ts +21 -0
  135. package/dist/zlink/runtime/native/binding_core.js +3 -0
  136. package/dist/zlink/runtime/native/binding_eventing.d.ts +40 -0
  137. package/dist/zlink/runtime/native/binding_eventing.js +3 -0
  138. package/dist/zlink/runtime/native/binding_socket.d.ts +52 -0
  139. package/dist/zlink/runtime/native/binding_socket.js +3 -0
  140. package/dist/zlink/runtime/native/binding_types.d.ts +8 -0
  141. package/dist/zlink/runtime/native/binding_types.js +3 -0
  142. package/dist/zlink/runtime/native/native.d.ts +2 -0
  143. package/dist/zlink/runtime/native/native.js +40 -0
  144. package/dist/zlink/runtime/native/native_load_paths.d.ts +16 -0
  145. package/dist/zlink/runtime/native/native_load_paths.js +165 -0
  146. package/dist/zlink/runtime/options/byte_values.d.ts +3 -0
  147. package/dist/zlink/runtime/options/byte_values.js +27 -0
  148. package/dist/zlink/runtime/options/option_mapping.d.ts +72 -0
  149. package/dist/zlink/runtime/options/option_mapping.js +41 -0
  150. package/dist/zlink/runtime/options/validation.d.ts +1 -0
  151. package/dist/zlink/runtime/options/validation.js +17 -0
  152. package/dist/zlink/runtime/public_bridge.d.ts +6 -0
  153. package/dist/zlink/runtime/public_bridge.js +23 -0
  154. package/dist/zlink/runtime/sockets/dealer_socket.d.ts +16 -0
  155. package/dist/zlink/runtime/sockets/dealer_socket.js +56 -0
  156. package/dist/zlink/runtime/sockets/index.d.ts +19 -0
  157. package/dist/zlink/runtime/sockets/index.js +27 -0
  158. package/dist/zlink/runtime/sockets/pair_socket.d.ts +7 -0
  159. package/dist/zlink/runtime/sockets/pair_socket.js +12 -0
  160. package/dist/zlink/runtime/sockets/pub_socket.d.ts +7 -0
  161. package/dist/zlink/runtime/sockets/pub_socket.js +12 -0
  162. package/dist/zlink/runtime/sockets/router_socket.d.ts +19 -0
  163. package/dist/zlink/runtime/sockets/router_socket.js +70 -0
  164. package/dist/zlink/runtime/sockets/socket_base.d.ts +21 -0
  165. package/dist/zlink/runtime/sockets/socket_base.js +102 -0
  166. package/dist/zlink/runtime/sockets/socket_operation_builders.d.ts +38 -0
  167. package/dist/zlink/runtime/sockets/socket_operation_builders.js +93 -0
  168. package/dist/zlink/runtime/sockets/socket_operations.d.ts +40 -0
  169. package/dist/zlink/runtime/sockets/socket_operations.js +177 -0
  170. package/dist/zlink/runtime/sockets/socket_options.d.ts +104 -0
  171. package/dist/zlink/runtime/sockets/socket_options.js +259 -0
  172. package/dist/zlink/runtime/sockets/socket_submit_errors.d.ts +3 -0
  173. package/dist/zlink/runtime/sockets/socket_submit_errors.js +13 -0
  174. package/dist/zlink/runtime/sockets/stream_socket.d.ts +15 -0
  175. package/dist/zlink/runtime/sockets/stream_socket.js +93 -0
  176. package/dist/zlink/runtime/sockets/sub_socket.d.ts +7 -0
  177. package/dist/zlink/runtime/sockets/sub_socket.js +12 -0
  178. package/dist/zlink/runtime/sockets/xpub_socket.d.ts +10 -0
  179. package/dist/zlink/runtime/sockets/xpub_socket.js +39 -0
  180. package/dist/zlink/runtime/sockets/xsub_socket.d.ts +7 -0
  181. package/dist/zlink/runtime/sockets/xsub_socket.js +12 -0
  182. package/native/src/addon.cc +11 -0
  183. package/native/src/addon_common_api.h +57 -0
  184. package/native/src/addon_core.cc +3974 -0
  185. package/native/src/addon_core_api.h +110 -0
  186. package/native/src/addon_core_options.cc +119 -0
  187. package/native/src/addon_core_options.h +9 -0
  188. package/native/src/addon_exports.cc +151 -0
  189. package/native/src/addon_exports.h +7 -0
  190. package/native/src/addon_message_parts.h +67 -0
  191. package/native/src/addon_message_values.h +345 -0
  192. package/native/src/addon_monitor_status_values.h +71 -0
  193. package/native/src/addon_submit_results.h +30 -0
  194. package/package.json +74 -0
  195. package/prebuilds/linux-x64/libzlink.so.0.17.3 +0 -0
  196. package/prebuilds/linux-x64/zlink.node +0 -0
  197. package/provenance/core-package-provenance.json +73 -0
  198. package/scripts/install.js +37 -0
  199. package/scripts/resolve_core.js +86 -0
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.mapNativeErrno = mapNativeErrno;
5
+ exports.createError = createError;
6
+ const errors_1 = require("../../contracts/errors/errors");
7
+ const error_state_1 = require("./error_state");
8
+ const ETERM = 156384765;
9
+ function mapNativeErrno(category, errno) {
10
+ switch (category) {
11
+ case 'submit':
12
+ switch (errno) {
13
+ case 0: return errors_1.SubmitResult.Ok;
14
+ case 11: return errors_1.SubmitResult.Backpressured;
15
+ case 107:
16
+ case 113:
17
+ case 110: return errors_1.SubmitResult.NotConnected;
18
+ case 111: return errors_1.SubmitResult.NotAdmitted;
19
+ case 2: return errors_1.SubmitResult.NotFound;
20
+ case 125:
21
+ case 108:
22
+ case ETERM: return errors_1.SubmitResult.Terminated;
23
+ case 14: return errors_1.SubmitResult.InvalidHandle;
24
+ case 22: return errors_1.SubmitResult.InvalidArgument;
25
+ case 95:
26
+ case 93: return errors_1.SubmitResult.NotSupported;
27
+ case 16: return errors_1.SubmitResult.InvalidState;
28
+ case 35: return errors_1.SubmitResult.ThreadViolation;
29
+ case 12: return errors_1.SubmitResult.OutOfMemory;
30
+ case 75: return errors_1.SubmitResult.SeqExhausted;
31
+ default: return errors_1.SubmitResult.InternalError;
32
+ }
33
+ case 'request':
34
+ switch (errno) {
35
+ case 0: return errors_1.RequestResult.Ok;
36
+ case 110: return errors_1.RequestResult.TimedOut;
37
+ case 2: return errors_1.RequestResult.NotFound;
38
+ case 125:
39
+ case ETERM: return errors_1.RequestResult.Terminated;
40
+ case 111: return errors_1.RequestResult.Rejected;
41
+ case 17: return errors_1.RequestResult.Conflict;
42
+ case 16: return errors_1.RequestResult.Busy;
43
+ case 107:
44
+ case 113: return errors_1.RequestResult.NotConnected;
45
+ case 22: return errors_1.RequestResult.InvalidArgument;
46
+ case 95:
47
+ case 93: return errors_1.RequestResult.NotSupported;
48
+ default: return errors_1.RequestResult.ProtocolError;
49
+ }
50
+ case 'recv':
51
+ switch (errno) {
52
+ case 0: return errors_1.RecvResult.Ok;
53
+ case 11: return errors_1.RecvResult.NoData;
54
+ case 4: return errors_1.RecvResult.NoData;
55
+ case 16: return errors_1.RecvResult.Busy;
56
+ case 125: return errors_1.RecvResult.Terminated;
57
+ case 14: return errors_1.RecvResult.InvalidHandle;
58
+ default: return errors_1.RecvResult.InternalError;
59
+ }
60
+ case 'handler':
61
+ switch (errno) {
62
+ case 0: return errors_1.HandlerResult.Ok;
63
+ case 22: return errors_1.HandlerResult.InvalidArgument;
64
+ case 16: return errors_1.HandlerResult.Busy;
65
+ case 35: return errors_1.HandlerResult.Deadlock;
66
+ case 14: return errors_1.HandlerResult.InvalidHandle;
67
+ default: return errors_1.HandlerResult.InternalError;
68
+ }
69
+ case 'close':
70
+ switch (errno) {
71
+ case 0: return errors_1.CloseResult.Ok;
72
+ case 16: return errors_1.CloseResult.Busy;
73
+ case 108: return errors_1.CloseResult.Shutdown;
74
+ case 14: return errors_1.CloseResult.InvalidHandle;
75
+ default: return errors_1.CloseResult.InternalError;
76
+ }
77
+ case 'bind':
78
+ switch (errno) {
79
+ case 0: return errors_1.BindResult.Ok;
80
+ case 22: return errors_1.BindResult.InvalidArgument;
81
+ case 98: return errors_1.BindResult.AddrInUse;
82
+ case 95:
83
+ case 93: return errors_1.BindResult.NotSupported;
84
+ case 14: return errors_1.BindResult.InvalidHandle;
85
+ default: return errors_1.BindResult.InternalError;
86
+ }
87
+ case 'connect':
88
+ switch (errno) {
89
+ case 0: return errors_1.ConnectResult.Ok;
90
+ case 22: return errors_1.ConnectResult.InvalidArgument;
91
+ case 95:
92
+ case 93: return errors_1.ConnectResult.NotSupported;
93
+ case 14: return errors_1.ConnectResult.InvalidHandle;
94
+ case 2: return errors_1.ConnectResult.NotFound;
95
+ case 17: return errors_1.ConnectResult.Conflict;
96
+ case 16: return errors_1.ConnectResult.Busy;
97
+ default: return errors_1.ConnectResult.InternalError;
98
+ }
99
+ case 'config':
100
+ switch (errno) {
101
+ case 0: return errors_1.ConfigResult.Ok;
102
+ case 14: return errors_1.ConfigResult.InvalidHandle;
103
+ case 22: return errors_1.ConfigResult.InvalidArgument;
104
+ case 95:
105
+ case 93: return errors_1.ConfigResult.NotSupported;
106
+ case 16: return errors_1.ConfigResult.InvalidState;
107
+ case 2: return errors_1.ConfigResult.NotFound;
108
+ default: return errors_1.ConfigResult.InternalError;
109
+ }
110
+ }
111
+ }
112
+ function createError(category, errno, message) {
113
+ const code = mapNativeErrno(category, errno);
114
+ switch (category) {
115
+ case 'submit':
116
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.SubmitError(code, errno), message);
117
+ case 'request':
118
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.RequestError(code, errno), message);
119
+ case 'recv':
120
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.RecvError(code, errno), message);
121
+ case 'handler':
122
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.HandlerError(code, errno), message);
123
+ case 'close':
124
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.CloseError(code, errno), message);
125
+ case 'bind':
126
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.BindError(code, errno), message);
127
+ case 'connect':
128
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.ConnectError(code, errno), message);
129
+ case 'config':
130
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.ConfigError(code, errno), message);
131
+ }
132
+ }
@@ -0,0 +1 @@
1
+ export declare function withRuntimeErrorMessage<T extends Error>(error: T, message?: string): T;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.withRuntimeErrorMessage = withRuntimeErrorMessage;
5
+ function withRuntimeErrorMessage(error, message) {
6
+ if (!message) {
7
+ return error;
8
+ }
9
+ Object.defineProperty(error, 'message', {
10
+ value: message,
11
+ configurable: true,
12
+ writable: true
13
+ });
14
+ return error;
15
+ }
@@ -0,0 +1,16 @@
1
+ import { RecvFlags, SendFlags } from '../../contracts/sockets/socket_constants';
2
+ import { RecvError, SubmitError, ZlinkError } from '../../contracts/errors/errors';
3
+ import { type NativeErrorCategory } from './error_mapping';
4
+ export declare function readErrno(): number;
5
+ export declare function isWouldBlock(errno?: number): boolean;
6
+ export declare function nativeErrorMessage(error: unknown, fallbackMessage: string): string;
7
+ export declare function lastError(category: NativeErrorCategory, message: string): ZlinkError;
8
+ export declare function nativeCall<T>(category: NativeErrorCategory, fallbackMessage: string, fn: () => T): T;
9
+ export declare function bindCall<T>(fallbackMessage: string, fn: () => T): T;
10
+ export declare function connectCall<T>(fallbackMessage: string, fn: () => T): T;
11
+ export declare function configCall<T>(fallbackMessage: string, fn: () => T): T;
12
+ export declare function handlerCall<T>(fallbackMessage: string, fn: () => T): T;
13
+ export declare function closeCall<T>(fallbackMessage: string, fn: () => T): T;
14
+ export declare function recvNativeError(error: unknown, flags: RecvFlags, fallbackMessage: string): RecvError;
15
+ export declare function submitNativeError(error: unknown, flags: SendFlags, fallbackMessage: string): SubmitError;
16
+ export declare function submitOrBackpressure(error: unknown, flags: SendFlags, fallbackMessage: string): false;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.readErrno = readErrno;
5
+ exports.isWouldBlock = isWouldBlock;
6
+ exports.nativeErrorMessage = nativeErrorMessage;
7
+ exports.lastError = lastError;
8
+ exports.nativeCall = nativeCall;
9
+ exports.bindCall = bindCall;
10
+ exports.connectCall = connectCall;
11
+ exports.configCall = configCall;
12
+ exports.handlerCall = handlerCall;
13
+ exports.closeCall = closeCall;
14
+ exports.recvNativeError = recvNativeError;
15
+ exports.submitNativeError = submitNativeError;
16
+ exports.submitOrBackpressure = submitOrBackpressure;
17
+ const native_1 = require("../native/native");
18
+ const socket_constants_1 = require("../../contracts/sockets/socket_constants");
19
+ const errors_1 = require("../../contracts/errors/errors");
20
+ const error_mapping_1 = require("./error_mapping");
21
+ const error_state_1 = require("./error_state");
22
+ function readErrno() {
23
+ const native = (0, native_1.requireNative)();
24
+ return typeof native.errno === 'function' ? native.errno() : 0;
25
+ }
26
+ function isWouldBlock(errno = readErrno()) {
27
+ return errno === 11;
28
+ }
29
+ function nativeErrorMessage(error, fallbackMessage) {
30
+ return error instanceof Error && error.message ? error.message : fallbackMessage;
31
+ }
32
+ function lastError(category, message) {
33
+ return (0, error_mapping_1.createError)(category, readErrno(), message);
34
+ }
35
+ function nativeCall(category, fallbackMessage, fn) {
36
+ try {
37
+ return fn();
38
+ }
39
+ catch (error) {
40
+ throw (0, error_mapping_1.createError)(category, readErrno(), nativeErrorMessage(error, fallbackMessage));
41
+ }
42
+ }
43
+ function bindCall(fallbackMessage, fn) {
44
+ return nativeCall('bind', fallbackMessage, fn);
45
+ }
46
+ function connectCall(fallbackMessage, fn) {
47
+ return nativeCall('connect', fallbackMessage, fn);
48
+ }
49
+ function configCall(fallbackMessage, fn) {
50
+ return nativeCall('config', fallbackMessage, fn);
51
+ }
52
+ function handlerCall(fallbackMessage, fn) {
53
+ return nativeCall('handler', fallbackMessage, fn);
54
+ }
55
+ function closeCall(fallbackMessage, fn) {
56
+ return nativeCall('close', fallbackMessage, fn);
57
+ }
58
+ function recvNativeError(error, flags, fallbackMessage) {
59
+ const message = nativeErrorMessage(error, fallbackMessage);
60
+ const errno = readErrno();
61
+ if ((flags & socket_constants_1.RecvFlags.DontWait) !== 0 && isWouldBlock(errno)) {
62
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.RecvError(errors_1.RecvResult.NoData, errno), message);
63
+ }
64
+ return (0, error_mapping_1.createError)('recv', errno, message);
65
+ }
66
+ function submitNativeError(error, flags, fallbackMessage) {
67
+ const message = nativeErrorMessage(error, fallbackMessage);
68
+ const errno = readErrno();
69
+ const nativeResult = typeof error === 'object' && error !== null
70
+ ? error.nativeResult
71
+ : undefined;
72
+ if (typeof nativeResult === 'number') {
73
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.SubmitError(nativeResult, errno), message);
74
+ }
75
+ if ((flags & socket_constants_1.SendFlags.DontWait) !== 0 && isWouldBlock(errno)) {
76
+ return (0, error_state_1.withRuntimeErrorMessage)(new errors_1.SubmitError(errors_1.SubmitResult.Backpressured, errno), message);
77
+ }
78
+ return (0, error_mapping_1.createError)('submit', errno, message);
79
+ }
80
+ function submitOrBackpressure(error, flags, fallbackMessage) {
81
+ const submitError = submitNativeError(error, flags, fallbackMessage);
82
+ if (((flags | 0) & (socket_constants_1.SendFlags.DontWait | 0)) && submitError.result === errors_1.SubmitResult.Backpressured) {
83
+ return false;
84
+ }
85
+ throw submitError;
86
+ }
@@ -0,0 +1,16 @@
1
+ import { NativeHandle } from '../handles/native_handle';
2
+ export declare class Stopwatch extends NativeHandle {
3
+ constructor();
4
+ intermediate(): number;
5
+ stop(): number;
6
+ close(): void;
7
+ }
8
+ export declare class AtomicCounter {
9
+ private _native;
10
+ constructor(initialValue?: number);
11
+ set(value: number): void;
12
+ inc(): number;
13
+ dec(): number;
14
+ value(): number;
15
+ close(): void;
16
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AtomicCounter = exports.Stopwatch = void 0;
5
+ const native_1 = require("../native/native");
6
+ const native_handle_1 = require("../handles/native_handle");
7
+ class Stopwatch extends native_handle_1.NativeHandle {
8
+ constructor() { super((0, native_1.requireNative)().stopwatchStart()); }
9
+ intermediate() { return (0, native_1.requireNative)().stopwatchIntermediate(this._native); }
10
+ stop() { return (0, native_1.requireNative)().stopwatchStop(this._native); }
11
+ close() { this._native = null; }
12
+ }
13
+ exports.Stopwatch = Stopwatch;
14
+ class AtomicCounter {
15
+ _native;
16
+ constructor(initialValue = 0) {
17
+ this._native = (0, native_1.requireNative)().atomicCounterNew();
18
+ if ((initialValue | 0) !== 0) {
19
+ this.set(initialValue);
20
+ }
21
+ }
22
+ set(value) { (0, native_1.requireNative)().atomicCounterSet(this._native, value | 0); }
23
+ inc() { return (0, native_1.requireNative)().atomicCounterInc(this._native); }
24
+ dec() { return (0, native_1.requireNative)().atomicCounterDec(this._native); }
25
+ value() { return (0, native_1.requireNative)().atomicCounterValue(this._native); }
26
+ close() {
27
+ if (this._native) {
28
+ (0, native_1.requireNative)().atomicCounterDestroy(this._native);
29
+ this._native = null;
30
+ }
31
+ }
32
+ }
33
+ exports.AtomicCounter = AtomicCounter;
@@ -0,0 +1,6 @@
1
+ export { AtomicCounter, AtomicCounter as RuntimeAtomicCounter, Stopwatch, Stopwatch as RuntimeStopwatch, } from './counters';
2
+ export { sleep } from '../core/runtime_info';
3
+ export { Thread as RuntimeThread } from './thread';
4
+ export { Poller, Poller as RuntimePoller, } from './poller';
5
+ export { PollEvents, PollEvents as RuntimePollEvents, } from './poll_events';
6
+ export { Timer, Timer as RuntimeTimer } from './timer';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RuntimeTimer = exports.Timer = exports.RuntimePollEvents = exports.PollEvents = exports.RuntimePoller = exports.Poller = exports.RuntimeThread = exports.sleep = exports.RuntimeStopwatch = exports.Stopwatch = exports.RuntimeAtomicCounter = exports.AtomicCounter = void 0;
5
+ var counters_1 = require("./counters");
6
+ Object.defineProperty(exports, "AtomicCounter", { enumerable: true, get: function () { return counters_1.AtomicCounter; } });
7
+ Object.defineProperty(exports, "RuntimeAtomicCounter", { enumerable: true, get: function () { return counters_1.AtomicCounter; } });
8
+ Object.defineProperty(exports, "Stopwatch", { enumerable: true, get: function () { return counters_1.Stopwatch; } });
9
+ Object.defineProperty(exports, "RuntimeStopwatch", { enumerable: true, get: function () { return counters_1.Stopwatch; } });
10
+ var runtime_info_1 = require("../core/runtime_info");
11
+ Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return runtime_info_1.sleep; } });
12
+ var thread_1 = require("./thread");
13
+ Object.defineProperty(exports, "RuntimeThread", { enumerable: true, get: function () { return thread_1.Thread; } });
14
+ var poller_1 = require("./poller");
15
+ Object.defineProperty(exports, "Poller", { enumerable: true, get: function () { return poller_1.Poller; } });
16
+ Object.defineProperty(exports, "RuntimePoller", { enumerable: true, get: function () { return poller_1.Poller; } });
17
+ var poll_events_1 = require("./poll_events");
18
+ Object.defineProperty(exports, "PollEvents", { enumerable: true, get: function () { return poll_events_1.PollEvents; } });
19
+ Object.defineProperty(exports, "RuntimePollEvents", { enumerable: true, get: function () { return poll_events_1.PollEvents; } });
20
+ var timer_1 = require("./timer");
21
+ Object.defineProperty(exports, "Timer", { enumerable: true, get: function () { return timer_1.Timer; } });
22
+ Object.defineProperty(exports, "RuntimeTimer", { enumerable: true, get: function () { return timer_1.Timer; } });
@@ -0,0 +1,3 @@
1
+ import { MonitorEvent } from '../../contracts/eventing/monitor';
2
+ import type { MonitorEventValueRaw } from './monitor_raw';
3
+ export declare function createMonitorEvent(raw: MonitorEventValueRaw): MonitorEvent;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createMonitorEvent = createMonitorEvent;
5
+ const monitor_1 = require("../../contracts/eventing/monitor");
6
+ const core_1 = require("../../contracts/core");
7
+ function createMonitorEvent(raw) {
8
+ const event = Object.create(monitor_1.MonitorEvent.prototype);
9
+ const state = event;
10
+ state.event = raw.event;
11
+ state.value = raw.value ?? 0n;
12
+ state.routingId = raw.routingId && raw.routingId.length > 0 ? core_1.RoutingId.from(raw.routingId) : null;
13
+ state.localAddr = raw.localAddr ?? raw.local ?? '';
14
+ state.remoteAddr = raw.remoteAddr ?? raw.remote ?? '';
15
+ state.connectionId = raw.connectionId ?? 0n;
16
+ state.transportLane = raw.transportLane ?? 0;
17
+ state.flags = raw.flags ?? 0;
18
+ return event;
19
+ }
@@ -0,0 +1,50 @@
1
+ export interface MonitorStatusRaw {
2
+ abiVersion: number;
3
+ structSize: number;
4
+ sourceKind: number;
5
+ stateFlags: number;
6
+ detailFlags: number;
7
+ sndPendingMsgs: bigint;
8
+ rcvPendingMsgs: bigint;
9
+ sndPendingBytes: bigint;
10
+ rcvPendingBytes: bigint;
11
+ autoHwmEnabled: boolean;
12
+ autoHwmProfile: number;
13
+ autoHwmRole: number;
14
+ autoHwmPolicyClass: number;
15
+ autoHwmPlannedSndHwmBytes: bigint;
16
+ autoHwmPlannedRcvHwmBytes: bigint;
17
+ autoHwmAppliedSndHwmBytes: bigint;
18
+ autoHwmAppliedRcvHwmBytes: bigint;
19
+ autoHwmEffectiveSndBuf?: number;
20
+ autoHwmEffectiveRcvBuf?: number;
21
+ autoHwmLastRecalcMs: bigint;
22
+ autoHwmLastRecalcReason: number;
23
+ autoHwmSendBlockedRatioPpm: number;
24
+ autoHwmDeferredSndHwmBytes: bigint;
25
+ autoHwmDeferredRcvHwmBytes: bigint;
26
+ autoHwmDeferredSndHwmValid: boolean;
27
+ autoHwmDeferredRcvHwmValid: boolean;
28
+ sndBytesInFlight: bigint;
29
+ rcvBytesInFlight: bigint;
30
+ minimumCoreMessageChargeBytes: bigint;
31
+ oversizeMessageAdmissionCount: bigint;
32
+ oversizeMessageAdmissionMaxBytes: bigint;
33
+ flowPausedConnections: bigint;
34
+ flowPauseAppliedTotal: bigint;
35
+ flowResumeAppliedTotal: bigint;
36
+ flowStateStaleTotal: bigint;
37
+ flowPauseDurationMs: bigint;
38
+ }
39
+ export interface MonitorEventValueRaw {
40
+ event: number;
41
+ value: bigint;
42
+ routingId?: Buffer | null;
43
+ local?: string;
44
+ remote?: string;
45
+ localAddr?: string;
46
+ remoteAddr?: string;
47
+ connectionId?: bigint;
48
+ transportLane?: number;
49
+ flags?: number;
50
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ import { NativeHandle } from '../handles/native_handle';
2
+ import { RecvFlags } from '../../contracts/sockets/socket_constants';
3
+ import { MonitorEvent, type MonitorStatus } from '../../contracts/eventing';
4
+ export declare class MonitorSocket extends NativeHandle {
5
+ constructor(native: unknown);
6
+ recv(flags?: RecvFlags): MonitorEvent | null;
7
+ status(): MonitorStatus;
8
+ close(): void;
9
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MonitorSocket = void 0;
5
+ const native_handle_1 = require("../handles/native_handle");
6
+ const native_1 = require("../native/native");
7
+ const native_errors_1 = require("../errors/native_errors");
8
+ const socket_constants_1 = require("../../contracts/sockets/socket_constants");
9
+ const monitor_event_state_1 = require("./monitor_event_state");
10
+ const monitor_status_1 = require("./monitor_status");
11
+ class MonitorSocket extends native_handle_1.NativeHandle {
12
+ constructor(native) {
13
+ super(native);
14
+ }
15
+ recv(flags = socket_constants_1.RecvFlags.None) {
16
+ try {
17
+ if ((flags | 0) & (socket_constants_1.RecvFlags.DontWait | 0)) {
18
+ const raw = (0, native_1.requireNative)().monitorRecvNoWait(this._native);
19
+ return raw ? (0, monitor_event_state_1.createMonitorEvent)(raw) : null;
20
+ }
21
+ return (0, monitor_event_state_1.createMonitorEvent)((0, native_1.requireNative)().monitorRecv(this._native));
22
+ }
23
+ catch (error) {
24
+ throw (0, native_errors_1.recvNativeError)(error, flags, 'monitor recv failed');
25
+ }
26
+ }
27
+ status() {
28
+ return (0, monitor_status_1.materializeMonitorStatus)((0, native_errors_1.configCall)('monitor status failed', () => (0, native_1.requireNative)().monitorStatus(this._native)));
29
+ }
30
+ close() {
31
+ if (this._native) {
32
+ (0, native_errors_1.closeCall)('monitor close failed', () => {
33
+ (0, native_1.requireNative)().monitorClose(this._native);
34
+ });
35
+ this._native = null;
36
+ }
37
+ }
38
+ }
39
+ exports.MonitorSocket = MonitorSocket;
@@ -0,0 +1,3 @@
1
+ import { type MonitorStatus } from '../../contracts/eventing';
2
+ import type { MonitorStatusRaw } from './monitor_raw';
3
+ export declare function materializeMonitorStatus(raw: MonitorStatusRaw): MonitorStatus;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.materializeMonitorStatus = materializeMonitorStatus;
5
+ const MONITOR_STATE_READY = 1 << 0;
6
+ const MONITOR_STATUS_DETAIL_FLOW_STATE = 1 << 5;
7
+ function materializeMonitorStatus(raw) {
8
+ return {
9
+ abiVersion: raw.abiVersion,
10
+ structSize: raw.structSize,
11
+ sourceKind: raw.sourceKind,
12
+ stateFlags: raw.stateFlags,
13
+ detailFlags: raw.detailFlags,
14
+ sndPendingMsgs: raw.sndPendingMsgs,
15
+ rcvPendingMsgs: raw.rcvPendingMsgs,
16
+ sndPendingBytes: raw.sndPendingBytes,
17
+ rcvPendingBytes: raw.rcvPendingBytes,
18
+ autoHwmEnabled: raw.autoHwmEnabled,
19
+ autoHwmProfile: raw.autoHwmProfile,
20
+ autoHwmRole: raw.autoHwmRole,
21
+ autoHwmPolicyClass: raw.autoHwmPolicyClass,
22
+ autoHwmPlannedSndHwmBytes: raw.autoHwmPlannedSndHwmBytes,
23
+ autoHwmPlannedRcvHwmBytes: raw.autoHwmPlannedRcvHwmBytes,
24
+ autoHwmAppliedSndHwmBytes: raw.autoHwmAppliedSndHwmBytes,
25
+ autoHwmAppliedRcvHwmBytes: raw.autoHwmAppliedRcvHwmBytes,
26
+ autoHwmEffectiveSndBuf: raw.autoHwmEffectiveSndBuf ?? 0,
27
+ autoHwmEffectiveRcvBuf: raw.autoHwmEffectiveRcvBuf ?? 0,
28
+ autoHwmLastRecalcMs: raw.autoHwmLastRecalcMs,
29
+ autoHwmLastRecalcReason: raw.autoHwmLastRecalcReason,
30
+ autoHwmSendBlockedRatioPpm: raw.autoHwmSendBlockedRatioPpm,
31
+ autoHwmDeferredSndHwmBytes: raw.autoHwmDeferredSndHwmBytes,
32
+ autoHwmDeferredRcvHwmBytes: raw.autoHwmDeferredRcvHwmBytes,
33
+ autoHwmDeferredSndHwmValid: raw.autoHwmDeferredSndHwmValid,
34
+ autoHwmDeferredRcvHwmValid: raw.autoHwmDeferredRcvHwmValid,
35
+ sndBytesInFlight: raw.sndBytesInFlight,
36
+ rcvBytesInFlight: raw.rcvBytesInFlight,
37
+ minimumCoreMessageChargeBytes: raw.minimumCoreMessageChargeBytes,
38
+ oversizeMessageAdmissionCount: raw.oversizeMessageAdmissionCount,
39
+ oversizeMessageAdmissionMaxBytes: raw.oversizeMessageAdmissionMaxBytes,
40
+ flowPausedConnections: raw.flowPausedConnections,
41
+ flowPauseAppliedTotal: raw.flowPauseAppliedTotal,
42
+ flowResumeAppliedTotal: raw.flowResumeAppliedTotal,
43
+ flowStateStaleTotal: raw.flowStateStaleTotal,
44
+ flowPauseDurationMs: raw.flowPauseDurationMs,
45
+ isReady() {
46
+ return (this.stateFlags & MONITOR_STATE_READY) !== 0;
47
+ },
48
+ isFlowStateDetailPopulated() {
49
+ return (this.detailFlags & MONITOR_STATUS_DETAIL_FLOW_STATE) !== 0;
50
+ }
51
+ };
52
+ }
@@ -0,0 +1,20 @@
1
+ import type { PollEventFlagValue } from '../../contracts/sockets/socket_constants';
2
+ import type { Pollable } from '../../contracts/eventing/poller';
3
+ import { NativeHandle } from '../handles/native_handle';
4
+ export declare class PollEvents extends NativeHandle {
5
+ private _readyCount;
6
+ private _nativeReadyCount;
7
+ private _synthetic;
8
+ readonly capacity: number;
9
+ constructor(capacity: number);
10
+ get readyCount(): number;
11
+ source(index: number): Pollable;
12
+ sourceKind(index: number): number;
13
+ slot(index: number): number;
14
+ revents(index: number): number;
15
+ fd(index: number): number;
16
+ hasEvent(index: number, event: PollEventFlagValue): boolean;
17
+ close(): void;
18
+ private checkReadyIndex;
19
+ }
20
+ export { PollEvents as RuntimePollEvents };
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RuntimePollEvents = exports.PollEvents = void 0;
5
+ const native_errors_1 = require("../errors/native_errors");
6
+ const native_handle_1 = require("../handles/native_handle");
7
+ const native_1 = require("../native/native");
8
+ class PollEvents extends native_handle_1.NativeHandle {
9
+ _readyCount = 0;
10
+ _nativeReadyCount = 0;
11
+ _synthetic = [];
12
+ capacity;
13
+ constructor(capacity) {
14
+ if (!Number.isInteger(capacity) || capacity <= 0) {
15
+ throw new RangeError('capacity must be a positive integer');
16
+ }
17
+ super((0, native_1.requireNative)().pollEventsNew(capacity));
18
+ this.capacity = capacity;
19
+ }
20
+ get readyCount() { return this._readyCount; }
21
+ source(index) {
22
+ this.checkReadyIndex(index);
23
+ return this._synthetic[index].source;
24
+ }
25
+ sourceKind(index) {
26
+ this.checkReadyIndex(index);
27
+ if (index >= this._nativeReadyCount) {
28
+ return this._synthetic[index - this._nativeReadyCount].sourceKind;
29
+ }
30
+ return (0, native_1.requireNative)().pollEventsSourceKind(this._native, index | 0);
31
+ }
32
+ slot(index) {
33
+ this.checkReadyIndex(index);
34
+ if (index >= this._nativeReadyCount) {
35
+ return this._synthetic[index - this._nativeReadyCount].slot;
36
+ }
37
+ return (0, native_1.requireNative)().pollEventsSlot(this._native, index | 0);
38
+ }
39
+ revents(index) {
40
+ this.checkReadyIndex(index);
41
+ if (index >= this._nativeReadyCount) {
42
+ return this._synthetic[index - this._nativeReadyCount].revents;
43
+ }
44
+ return (0, native_1.requireNative)().pollEventsRevents(this._native, index | 0);
45
+ }
46
+ fd(index) {
47
+ this.checkReadyIndex(index);
48
+ if (index >= this._nativeReadyCount) {
49
+ return this._synthetic[index - this._nativeReadyCount].fd;
50
+ }
51
+ return Number((0, native_1.requireNative)().pollEventsFd(this._native, index | 0));
52
+ }
53
+ hasEvent(index, event) {
54
+ return (this.revents(index) & event) !== 0;
55
+ }
56
+ /** @internal */
57
+ markReadyCount(count) {
58
+ if (count < 0 || count > this.capacity) {
59
+ throw new RangeError('ready count out of range');
60
+ }
61
+ this._readyCount = count;
62
+ this._nativeReadyCount = count;
63
+ this._synthetic = [];
64
+ }
65
+ /** @internal */
66
+ markCombined(nativeCount, entries) {
67
+ if (nativeCount < 0 || nativeCount + entries.length > this.capacity) {
68
+ throw new RangeError('ready count out of range');
69
+ }
70
+ this._nativeReadyCount = nativeCount;
71
+ this._synthetic = entries;
72
+ this._readyCount = nativeCount + entries.length;
73
+ }
74
+ close() {
75
+ if (!this._native)
76
+ return;
77
+ (0, native_errors_1.closeCall)('poll events close failed', () => {
78
+ (0, native_1.requireNative)().pollEventsDestroy(this._native);
79
+ });
80
+ this._native = null;
81
+ this._readyCount = 0;
82
+ this._nativeReadyCount = 0;
83
+ this._synthetic = [];
84
+ }
85
+ checkReadyIndex(index) {
86
+ if (!Number.isInteger(index) || index < 0 || index >= this._readyCount) {
87
+ throw new RangeError(`ready index ${index}`);
88
+ }
89
+ }
90
+ }
91
+ exports.PollEvents = PollEvents;
92
+ exports.RuntimePollEvents = PollEvents;