apache-iggy 0.5.0-edge.1

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 (265) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +81 -0
  3. package/dist/src/bdd/auth.d.ts +20 -0
  4. package/dist/src/bdd/auth.js +38 -0
  5. package/dist/src/bdd/message.d.ts +20 -0
  6. package/dist/src/bdd/message.js +70 -0
  7. package/dist/src/bdd/stream.d.ts +20 -0
  8. package/dist/src/bdd/stream.js +39 -0
  9. package/dist/src/bdd/topic.d.ts +20 -0
  10. package/dist/src/bdd/topic.js +36 -0
  11. package/dist/src/bdd/world.d.ts +30 -0
  12. package/dist/src/bdd/world.js +21 -0
  13. package/dist/src/client/client.connection.d.ts +40 -0
  14. package/dist/src/client/client.connection.js +171 -0
  15. package/dist/src/client/client.d.ts +38 -0
  16. package/dist/src/client/client.debug.d.ts +21 -0
  17. package/dist/src/client/client.debug.js +21 -0
  18. package/dist/src/client/client.js +97 -0
  19. package/dist/src/client/client.socket.d.ts +48 -0
  20. package/dist/src/client/client.socket.js +156 -0
  21. package/dist/src/client/client.type.d.ts +69 -0
  22. package/dist/src/client/client.type.js +20 -0
  23. package/dist/src/client/client.utils.d.ts +29 -0
  24. package/dist/src/client/client.utils.js +54 -0
  25. package/dist/src/client/index.d.ts +23 -0
  26. package/dist/src/client/index.js +23 -0
  27. package/dist/src/client.e2e.d.ts +20 -0
  28. package/dist/src/client.e2e.js +54 -0
  29. package/dist/src/debug-send.d.ts +20 -0
  30. package/dist/src/debug-send.js +117 -0
  31. package/dist/src/debug.d.ts +20 -0
  32. package/dist/src/debug.js +107 -0
  33. package/dist/src/e2e/tcp.client.e2e.d.ts +20 -0
  34. package/dist/src/e2e/tcp.client.e2e.js +45 -0
  35. package/dist/src/e2e/tcp.consumer-group.e2e.d.ts +20 -0
  36. package/dist/src/e2e/tcp.consumer-group.e2e.js +111 -0
  37. package/dist/src/e2e/tcp.consumer-stream.e2e.d.ts +20 -0
  38. package/dist/src/e2e/tcp.consumer-stream.e2e.js +92 -0
  39. package/dist/src/e2e/tcp.parallel.e2e.d.ts +20 -0
  40. package/dist/src/e2e/tcp.parallel.e2e.js +59 -0
  41. package/dist/src/e2e/tcp.send-message.e2e.d.ts +20 -0
  42. package/dist/src/e2e/tcp.send-message.e2e.js +118 -0
  43. package/dist/src/e2e/tcp.stream.e2e.d.ts +20 -0
  44. package/dist/src/e2e/tcp.stream.e2e.js +59 -0
  45. package/dist/src/e2e/tcp.system.e2e.d.ts +20 -0
  46. package/dist/src/e2e/tcp.system.e2e.js +46 -0
  47. package/dist/src/e2e/tcp.token.e2e.d.ts +20 -0
  48. package/dist/src/e2e/tcp.token.e2e.js +43 -0
  49. package/dist/src/e2e/tcp.topic.e2e.d.ts +20 -0
  50. package/dist/src/e2e/tcp.topic.e2e.js +83 -0
  51. package/dist/src/e2e/tcp.user.e2e.d.ts +20 -0
  52. package/dist/src/e2e/tcp.user.e2e.js +95 -0
  53. package/dist/src/e2e/test-client.utils.d.ts +21 -0
  54. package/dist/src/e2e/test-client.utils.js +28 -0
  55. package/dist/src/index.d.ts +22 -0
  56. package/dist/src/index.js +22 -0
  57. package/dist/src/stream/consumer-stream.d.ts +40 -0
  58. package/dist/src/stream/consumer-stream.js +79 -0
  59. package/dist/src/stream/index.d.ts +20 -0
  60. package/dist/src/stream/index.js +20 -0
  61. package/dist/src/tcp.e2e.d.ts +20 -0
  62. package/dist/src/tcp.e2e.js +106 -0
  63. package/dist/src/tcp.sm.utils.d.ts +97 -0
  64. package/dist/src/tcp.sm.utils.js +66 -0
  65. package/dist/src/tls.system.e2e.d.ts +20 -0
  66. package/dist/src/tls.system.e2e.js +49 -0
  67. package/dist/src/type.utils.d.ts +21 -0
  68. package/dist/src/type.utils.js +25 -0
  69. package/dist/src/wire/client/client.utils.d.ts +32 -0
  70. package/dist/src/wire/client/client.utils.js +48 -0
  71. package/dist/src/wire/client/get-client.command.d.ts +30 -0
  72. package/dist/src/wire/client/get-client.command.js +33 -0
  73. package/dist/src/wire/client/get-clients.command.d.ts +27 -0
  74. package/dist/src/wire/client/get-clients.command.js +38 -0
  75. package/dist/src/wire/client/get-me.command.d.ts +27 -0
  76. package/dist/src/wire/client/get-me.command.js +28 -0
  77. package/dist/src/wire/client/index.d.ts +22 -0
  78. package/dist/src/wire/client/index.js +22 -0
  79. package/dist/src/wire/command-set.d.ts +128 -0
  80. package/dist/src/wire/command-set.js +157 -0
  81. package/dist/src/wire/command.code.d.ts +68 -0
  82. package/dist/src/wire/command.code.js +72 -0
  83. package/dist/src/wire/command.utils.d.ts +26 -0
  84. package/dist/src/wire/command.utils.js +29 -0
  85. package/dist/src/wire/consumer-group/create-group.command.d.ts +34 -0
  86. package/dist/src/wire/consumer-group/create-group.command.js +44 -0
  87. package/dist/src/wire/consumer-group/create-group.command.test.d.ts +20 -0
  88. package/dist/src/wire/consumer-group/create-group.command.test.js +47 -0
  89. package/dist/src/wire/consumer-group/delete-group.command.d.ts +31 -0
  90. package/dist/src/wire/consumer-group/delete-group.command.js +31 -0
  91. package/dist/src/wire/consumer-group/get-group.command.d.ts +33 -0
  92. package/dist/src/wire/consumer-group/get-group.command.js +32 -0
  93. package/dist/src/wire/consumer-group/get-groups.command.d.ts +32 -0
  94. package/dist/src/wire/consumer-group/get-groups.command.js +36 -0
  95. package/dist/src/wire/consumer-group/group.command.test.d.ts +20 -0
  96. package/dist/src/wire/consumer-group/group.command.test.js +50 -0
  97. package/dist/src/wire/consumer-group/group.utils.d.ts +34 -0
  98. package/dist/src/wire/consumer-group/group.utils.js +53 -0
  99. package/dist/src/wire/consumer-group/index.d.ts +25 -0
  100. package/dist/src/wire/consumer-group/index.js +25 -0
  101. package/dist/src/wire/consumer-group/join-group.command.d.ts +31 -0
  102. package/dist/src/wire/consumer-group/join-group.command.js +31 -0
  103. package/dist/src/wire/consumer-group/leave-group.command.d.ts +31 -0
  104. package/dist/src/wire/consumer-group/leave-group.command.js +31 -0
  105. package/dist/src/wire/error.code.d.ts +20 -0
  106. package/dist/src/wire/error.code.js +202 -0
  107. package/dist/src/wire/error.utils.d.ts +20 -0
  108. package/dist/src/wire/error.utils.js +23 -0
  109. package/dist/src/wire/identifier.utils.d.ts +21 -0
  110. package/dist/src/wire/identifier.utils.js +49 -0
  111. package/dist/src/wire/identifier.utils.test.d.ts +20 -0
  112. package/dist/src/wire/identifier.utils.test.js +40 -0
  113. package/dist/src/wire/index.d.ts +32 -0
  114. package/dist/src/wire/index.js +31 -0
  115. package/dist/src/wire/message/flush-unsaved-buffers.command.d.ts +31 -0
  116. package/dist/src/wire/message/flush-unsaved-buffers.command.js +31 -0
  117. package/dist/src/wire/message/header.type.d.ts +101 -0
  118. package/dist/src/wire/message/header.type.js +55 -0
  119. package/dist/src/wire/message/header.utils.d.ts +67 -0
  120. package/dist/src/wire/message/header.utils.js +248 -0
  121. package/dist/src/wire/message/header.utils.test.d.ts +20 -0
  122. package/dist/src/wire/message/header.utils.test.js +39 -0
  123. package/dist/src/wire/message/iggy-header.utils.d.ts +32 -0
  124. package/dist/src/wire/message/iggy-header.utils.js +50 -0
  125. package/dist/src/wire/message/index.d.ts +25 -0
  126. package/dist/src/wire/message/index.js +25 -0
  127. package/dist/src/wire/message/message.utils.d.ts +35 -0
  128. package/dist/src/wire/message/message.utils.js +112 -0
  129. package/dist/src/wire/message/partitioning.utils.d.ts +51 -0
  130. package/dist/src/wire/message/partitioning.utils.js +77 -0
  131. package/dist/src/wire/message/poll-messages.command.d.ts +43 -0
  132. package/dist/src/wire/message/poll-messages.command.js +32 -0
  133. package/dist/src/wire/message/poll.utils.d.ts +93 -0
  134. package/dist/src/wire/message/poll.utils.js +135 -0
  135. package/dist/src/wire/message/send-messages.command.d.ts +34 -0
  136. package/dist/src/wire/message/send-messages.command.js +31 -0
  137. package/dist/src/wire/message/send-messages.command.test.d.ts +20 -0
  138. package/dist/src/wire/message/send-messages.command.test.js +88 -0
  139. package/dist/src/wire/number.utils.d.ts +32 -0
  140. package/dist/src/wire/number.utils.js +85 -0
  141. package/dist/src/wire/offset/delete-offset.command.d.ts +28 -0
  142. package/dist/src/wire/offset/delete-offset.command.js +31 -0
  143. package/dist/src/wire/offset/get-offset.command.d.ts +34 -0
  144. package/dist/src/wire/offset/get-offset.command.js +41 -0
  145. package/dist/src/wire/offset/index.d.ts +22 -0
  146. package/dist/src/wire/offset/index.js +22 -0
  147. package/dist/src/wire/offset/offset.utils.d.ts +54 -0
  148. package/dist/src/wire/offset/offset.utils.js +60 -0
  149. package/dist/src/wire/offset/store-offset.command.d.ts +34 -0
  150. package/dist/src/wire/offset/store-offset.command.js +29 -0
  151. package/dist/src/wire/partition/create-partition.command.d.ts +31 -0
  152. package/dist/src/wire/partition/create-partition.command.js +31 -0
  153. package/dist/src/wire/partition/delete-partition.command.d.ts +31 -0
  154. package/dist/src/wire/partition/delete-partition.command.js +31 -0
  155. package/dist/src/wire/partition/index.d.ts +21 -0
  156. package/dist/src/wire/partition/index.js +21 -0
  157. package/dist/src/wire/partition/partition.utils.d.ts +21 -0
  158. package/dist/src/wire/partition/partition.utils.js +33 -0
  159. package/dist/src/wire/partition/partition.utils.test.d.ts +20 -0
  160. package/dist/src/wire/partition/partition.utils.test.js +33 -0
  161. package/dist/src/wire/segment/delete-segments.command.d.ts +32 -0
  162. package/dist/src/wire/segment/delete-segments.command.js +31 -0
  163. package/dist/src/wire/segment/index.d.ts +20 -0
  164. package/dist/src/wire/segment/index.js +20 -0
  165. package/dist/src/wire/segment/segment.utils.d.ts +21 -0
  166. package/dist/src/wire/segment/segment.utils.js +35 -0
  167. package/dist/src/wire/serialize.utils.d.ts +22 -0
  168. package/dist/src/wire/serialize.utils.js +27 -0
  169. package/dist/src/wire/session/index.d.ts +23 -0
  170. package/dist/src/wire/session/index.js +22 -0
  171. package/dist/src/wire/session/login-with-token.command.d.ts +32 -0
  172. package/dist/src/wire/session/login-with-token.command.js +30 -0
  173. package/dist/src/wire/session/login-with-token.command.test.d.ts +20 -0
  174. package/dist/src/wire/session/login-with-token.command.test.js +38 -0
  175. package/dist/src/wire/session/login.command.d.ts +29 -0
  176. package/dist/src/wire/session/login.command.js +30 -0
  177. package/dist/src/wire/session/login.command.test.d.ts +20 -0
  178. package/dist/src/wire/session/login.command.test.js +52 -0
  179. package/dist/src/wire/session/login.utils.d.ts +30 -0
  180. package/dist/src/wire/session/login.utils.js +54 -0
  181. package/dist/src/wire/session/logout.command.d.ts +25 -0
  182. package/dist/src/wire/session/logout.command.js +30 -0
  183. package/dist/src/wire/stream/create-stream.command.d.ts +31 -0
  184. package/dist/src/wire/stream/create-stream.command.js +41 -0
  185. package/dist/src/wire/stream/create-stream.command.test.d.ts +20 -0
  186. package/dist/src/wire/stream/create-stream.command.test.js +45 -0
  187. package/dist/src/wire/stream/delete-stream.command.d.ts +29 -0
  188. package/dist/src/wire/stream/delete-stream.command.js +31 -0
  189. package/dist/src/wire/stream/get-stream.command.d.ts +31 -0
  190. package/dist/src/wire/stream/get-stream.command.js +33 -0
  191. package/dist/src/wire/stream/get-streams.command.d.ts +27 -0
  192. package/dist/src/wire/stream/get-streams.command.js +38 -0
  193. package/dist/src/wire/stream/index.d.ts +25 -0
  194. package/dist/src/wire/stream/index.js +25 -0
  195. package/dist/src/wire/stream/purge-stream.command.d.ts +29 -0
  196. package/dist/src/wire/stream/purge-stream.command.js +31 -0
  197. package/dist/src/wire/stream/stream.utils.d.ts +33 -0
  198. package/dist/src/wire/stream/stream.utils.js +35 -0
  199. package/dist/src/wire/stream/update-stream.command.d.ts +30 -0
  200. package/dist/src/wire/stream/update-stream.command.js +40 -0
  201. package/dist/src/wire/system/get-stats.command.d.ts +50 -0
  202. package/dist/src/wire/system/get-stats.command.js +83 -0
  203. package/dist/src/wire/system/index.d.ts +21 -0
  204. package/dist/src/wire/system/index.js +21 -0
  205. package/dist/src/wire/system/ping.command.d.ts +25 -0
  206. package/dist/src/wire/system/ping.command.js +30 -0
  207. package/dist/src/wire/token/create-token.command.d.ts +31 -0
  208. package/dist/src/wire/token/create-token.command.js +37 -0
  209. package/dist/src/wire/token/create-token.command.test.d.ts +20 -0
  210. package/dist/src/wire/token/create-token.command.test.js +45 -0
  211. package/dist/src/wire/token/delete-token.command.d.ts +28 -0
  212. package/dist/src/wire/token/delete-token.command.js +38 -0
  213. package/dist/src/wire/token/delete-token.command.test.d.ts +20 -0
  214. package/dist/src/wire/token/delete-token.command.test.js +42 -0
  215. package/dist/src/wire/token/get-tokens.command.d.ts +27 -0
  216. package/dist/src/wire/token/get-tokens.command.js +28 -0
  217. package/dist/src/wire/token/index.d.ts +22 -0
  218. package/dist/src/wire/token/index.js +22 -0
  219. package/dist/src/wire/token/token.utils.d.ts +38 -0
  220. package/dist/src/wire/token/token.utils.js +53 -0
  221. package/dist/src/wire/topic/create-topic.command.d.ts +38 -0
  222. package/dist/src/wire/topic/create-topic.command.js +53 -0
  223. package/dist/src/wire/topic/create-topic.command.test.d.ts +20 -0
  224. package/dist/src/wire/topic/create-topic.command.test.js +67 -0
  225. package/dist/src/wire/topic/delete-topic.command.d.ts +32 -0
  226. package/dist/src/wire/topic/delete-topic.command.js +36 -0
  227. package/dist/src/wire/topic/get-topic.command.d.ts +33 -0
  228. package/dist/src/wire/topic/get-topic.command.js +36 -0
  229. package/dist/src/wire/topic/get-topics.command.d.ts +31 -0
  230. package/dist/src/wire/topic/get-topics.command.js +33 -0
  231. package/dist/src/wire/topic/index.d.ts +25 -0
  232. package/dist/src/wire/topic/index.js +25 -0
  233. package/dist/src/wire/topic/purge-topic.command.d.ts +30 -0
  234. package/dist/src/wire/topic/purge-topic.command.js +34 -0
  235. package/dist/src/wire/topic/topic.utils.d.ts +71 -0
  236. package/dist/src/wire/topic/topic.utils.js +91 -0
  237. package/dist/src/wire/topic/update-topic.command.d.ts +36 -0
  238. package/dist/src/wire/topic/update-topic.command.js +50 -0
  239. package/dist/src/wire/user/change-password.command.d.ts +30 -0
  240. package/dist/src/wire/user/change-password.command.js +45 -0
  241. package/dist/src/wire/user/create-user.command.d.ts +34 -0
  242. package/dist/src/wire/user/create-user.command.js +48 -0
  243. package/dist/src/wire/user/create-user.command.test.d.ts +20 -0
  244. package/dist/src/wire/user/create-user.command.test.js +60 -0
  245. package/dist/src/wire/user/delete-user.command.d.ts +29 -0
  246. package/dist/src/wire/user/delete-user.command.js +31 -0
  247. package/dist/src/wire/user/get-user.command.d.ts +31 -0
  248. package/dist/src/wire/user/get-user.command.js +31 -0
  249. package/dist/src/wire/user/get-users.command.d.ts +27 -0
  250. package/dist/src/wire/user/get-users.command.js +28 -0
  251. package/dist/src/wire/user/index.d.ts +26 -0
  252. package/dist/src/wire/user/index.js +26 -0
  253. package/dist/src/wire/user/permissions.utils.d.ts +77 -0
  254. package/dist/src/wire/user/permissions.utils.js +161 -0
  255. package/dist/src/wire/user/permissions.utils.test.d.ts +20 -0
  256. package/dist/src/wire/user/permissions.utils.test.js +44 -0
  257. package/dist/src/wire/user/update-permissions.command.d.ts +31 -0
  258. package/dist/src/wire/user/update-permissions.command.js +39 -0
  259. package/dist/src/wire/user/update-user.command.d.ts +32 -0
  260. package/dist/src/wire/user/update-user.command.js +54 -0
  261. package/dist/src/wire/user/user.utils.d.ts +41 -0
  262. package/dist/src/wire/user/user.utils.js +74 -0
  263. package/dist/src/wire/uuid.utils.d.ts +22 -0
  264. package/dist/src/wire/uuid.utils.js +23 -0
  265. package/package.json +70 -0
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ export type GlobalPermissions = {
20
+ ManageServers: boolean;
21
+ ReadServers: boolean;
22
+ ManageUsers: boolean;
23
+ ReadUsers: boolean;
24
+ ManageStreams: boolean;
25
+ ReadStreams: boolean;
26
+ ManageTopics: boolean;
27
+ ReadTopics: boolean;
28
+ PollMessages: boolean;
29
+ SendMessages: boolean;
30
+ };
31
+ type GlobalPermissionsDeserialized = {
32
+ bytesRead: number;
33
+ data: GlobalPermissions;
34
+ };
35
+ export type TopicPermissions = {
36
+ manage: boolean;
37
+ read: boolean;
38
+ pollMessages: boolean;
39
+ sendMessages: boolean;
40
+ };
41
+ export type TopicPerms = {
42
+ topicId: number;
43
+ permissions: TopicPermissions;
44
+ };
45
+ type TopicPermissionsDeserialized = {
46
+ bytesRead: number;
47
+ } & TopicPerms;
48
+ export type StreamPermissions = {
49
+ manageStream: boolean;
50
+ readStream: boolean;
51
+ manageTopics: boolean;
52
+ readTopics: boolean;
53
+ pollMessages: boolean;
54
+ sendMessages: boolean;
55
+ };
56
+ export type StreamPerms = {
57
+ streamId: number;
58
+ permissions: StreamPermissions;
59
+ topics: TopicPerms[];
60
+ };
61
+ type StreamPermissionsDeserialized = {
62
+ bytesRead: number;
63
+ } & StreamPerms;
64
+ export type UserPermissions = {
65
+ global: GlobalPermissions;
66
+ streams: StreamPerms[];
67
+ };
68
+ export declare const deserializeGlobalPermissions: (p: Buffer, pos?: number) => GlobalPermissionsDeserialized;
69
+ export declare const serializeGlobalPermission: (p: GlobalPermissions) => Buffer<ArrayBuffer>;
70
+ export declare const deserializeTopicPermissions: (p: Buffer, pos?: number) => TopicPermissionsDeserialized;
71
+ export declare const serializeTopicPermissions: (p: TopicPerms) => Buffer<ArrayBuffer>;
72
+ export declare const deserializeStreamPermissions: (p: Buffer, pos?: number) => StreamPermissionsDeserialized;
73
+ export declare const serializeStreamPermissions: (p: StreamPerms) => Buffer<ArrayBuffer>;
74
+ export declare const deserializePermissions: (p: Buffer, pos?: number) => UserPermissions;
75
+ export declare const serializePermissions: (p?: UserPermissions) => Buffer<ArrayBuffer>;
76
+ export {};
77
+ //# sourceMappingURL=permissions.utils.d.ts.map
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { uint8ToBuf, uint32ToBuf } from '../number.utils.js';
20
+ const toBool = (u) => u === 1;
21
+ const boolToByte = (b) => b ? 1 : 0;
22
+ export const deserializeGlobalPermissions = (p, pos = 0) => {
23
+ return {
24
+ bytesRead: 10,
25
+ data: {
26
+ ManageServers: toBool(p.readUInt8(pos)),
27
+ ReadServers: toBool(p.readUInt8(pos + 1)),
28
+ ManageUsers: toBool(p.readUInt8(pos + 2)),
29
+ ReadUsers: toBool(p.readUInt8(pos + 3)),
30
+ ManageStreams: toBool(p.readUInt8(pos + 4)),
31
+ ReadStreams: toBool(p.readUInt8(pos + 5)),
32
+ ManageTopics: toBool(p.readUInt8(pos + 6)),
33
+ ReadTopics: toBool(p.readUInt8(pos + 7)),
34
+ PollMessages: toBool(p.readUInt8(pos + 8)),
35
+ SendMessages: toBool(p.readUInt8(pos + 9)),
36
+ }
37
+ };
38
+ };
39
+ export const serializeGlobalPermission = (p) => {
40
+ return Buffer.concat([
41
+ uint8ToBuf(boolToByte(p.ManageServers)),
42
+ uint8ToBuf(boolToByte(p.ReadServers)),
43
+ uint8ToBuf(boolToByte(p.ManageUsers)),
44
+ uint8ToBuf(boolToByte(p.ReadUsers)),
45
+ uint8ToBuf(boolToByte(p.ManageStreams)),
46
+ uint8ToBuf(boolToByte(p.ReadStreams)),
47
+ uint8ToBuf(boolToByte(p.ManageTopics)),
48
+ uint8ToBuf(boolToByte(p.ReadTopics)),
49
+ uint8ToBuf(boolToByte(p.PollMessages)),
50
+ uint8ToBuf(boolToByte(p.SendMessages)),
51
+ ]);
52
+ };
53
+ export const deserializeTopicPermissions = (p, pos = 0) => {
54
+ const topicId = p.readUInt32LE(pos);
55
+ const permissions = {
56
+ manage: toBool(p.readUInt8(pos + 4)),
57
+ read: toBool(p.readUInt8(pos + 5)),
58
+ pollMessages: toBool(p.readUInt8(pos + 6)),
59
+ sendMessages: toBool(p.readUInt8(pos + 7)),
60
+ };
61
+ return {
62
+ bytesRead: 8,
63
+ topicId,
64
+ permissions
65
+ };
66
+ };
67
+ export const serializeTopicPermissions = (p) => {
68
+ return Buffer.concat([
69
+ uint32ToBuf(p.topicId),
70
+ uint8ToBuf(boolToByte(p.permissions.manage)),
71
+ uint8ToBuf(boolToByte(p.permissions.read)),
72
+ uint8ToBuf(boolToByte(p.permissions.pollMessages)),
73
+ uint8ToBuf(boolToByte(p.permissions.sendMessages)),
74
+ ]);
75
+ };
76
+ export const deserializeStreamPermissions = (p, pos = 0) => {
77
+ const start = pos;
78
+ const streamId = p.readUInt32LE(pos);
79
+ const permissions = {
80
+ manageStream: toBool(p.readUInt8(pos + 4)),
81
+ readStream: toBool(p.readUInt8(pos + 5)),
82
+ manageTopics: toBool(p.readUInt8(pos + 6)),
83
+ readTopics: toBool(p.readUInt8(pos + 7)),
84
+ pollMessages: toBool(p.readUInt8(pos + 8)),
85
+ sendMessages: toBool(p.readUInt8(pos + 9)),
86
+ };
87
+ pos += 10;
88
+ const topics = [];
89
+ const hasTopics = toBool(p.readUInt8(pos));
90
+ if (hasTopics) {
91
+ let read = true;
92
+ pos += 1;
93
+ while (read) {
94
+ const { bytesRead, topicId, permissions } = deserializeTopicPermissions(p, pos);
95
+ pos += bytesRead;
96
+ topics.push({ topicId, permissions });
97
+ if (p.readUInt8(pos) === 0)
98
+ read = false; // break
99
+ }
100
+ }
101
+ return {
102
+ bytesRead: pos - start,
103
+ streamId,
104
+ permissions,
105
+ topics
106
+ };
107
+ };
108
+ export const serializeStreamPermissions = (p) => {
109
+ const bStream = Buffer.concat([
110
+ uint32ToBuf(p.streamId),
111
+ uint8ToBuf(boolToByte(p.permissions.manageStream)),
112
+ uint8ToBuf(boolToByte(p.permissions.readStream)),
113
+ uint8ToBuf(boolToByte(p.permissions.manageTopics)),
114
+ uint8ToBuf(boolToByte(p.permissions.readTopics)),
115
+ uint8ToBuf(boolToByte(p.permissions.pollMessages)),
116
+ uint8ToBuf(boolToByte(p.permissions.sendMessages)),
117
+ ]);
118
+ const hasTopic = p.topics.length > 0;
119
+ const bHasTopic = uint8ToBuf(boolToByte(hasTopic));
120
+ const bHead = Buffer.concat([bStream, bHasTopic]);
121
+ if (!hasTopic)
122
+ return bHead;
123
+ return p.topics.reduce((ac, c) => Buffer.concat([
124
+ ac, serializeTopicPermissions(c)
125
+ ]), bHead);
126
+ };
127
+ export const deserializePermissions = (p, pos = 0) => {
128
+ const { bytesRead, data } = deserializeGlobalPermissions(p, pos);
129
+ pos += bytesRead;
130
+ const streams = [];
131
+ const hasStream = toBool(p.readUInt8(pos));
132
+ if (hasStream) {
133
+ let readStream = true;
134
+ pos += 1;
135
+ while (readStream) {
136
+ const { bytesRead, streamId, permissions, topics } = deserializeStreamPermissions(p, pos);
137
+ streams.push({ streamId, permissions, topics });
138
+ pos += bytesRead;
139
+ if (p.readUInt8(pos) === 0)
140
+ readStream = false; // break
141
+ }
142
+ }
143
+ return {
144
+ global: data,
145
+ streams
146
+ };
147
+ };
148
+ export const serializePermissions = (p) => {
149
+ if (!p)
150
+ return uint8ToBuf(0);
151
+ const bGlobal = serializeGlobalPermission(p.global);
152
+ const hasStream = p.streams.length > 0;
153
+ const bHasStream = uint8ToBuf(boolToByte(hasStream));
154
+ const bHead = Buffer.concat([bGlobal, bHasStream]);
155
+ if (!hasStream)
156
+ return bHead;
157
+ return p.streams.reduce((ac, c) => Buffer.concat([
158
+ ac, serializeStreamPermissions(c)
159
+ ]), bHead);
160
+ };
161
+ //# sourceMappingURL=permissions.utils.js.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=permissions.utils.test.d.ts.map
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { describe, it } from 'node:test';
20
+ import assert from 'node:assert/strict';
21
+ import { serializePermissions, deserializePermissions } from './permissions.utils.js';
22
+ describe('Permissions', () => {
23
+ const permissions = {
24
+ global: {
25
+ ManageServers: true,
26
+ ReadServers: true,
27
+ ManageUsers: true,
28
+ ReadUsers: true,
29
+ ManageStreams: true,
30
+ ReadStreams: true,
31
+ ManageTopics: true,
32
+ ReadTopics: true,
33
+ PollMessages: true,
34
+ SendMessages: true
35
+ },
36
+ streams: []
37
+ };
38
+ it('serialize/deserialize', () => {
39
+ const s = serializePermissions(permissions);
40
+ const d = deserializePermissions(s);
41
+ assert.deepEqual(permissions, d);
42
+ });
43
+ });
44
+ //# sourceMappingURL=permissions.utils.test.js.map
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { type Id } from '../identifier.utils.js';
20
+ import { type UserPermissions } from './permissions.utils.js';
21
+ export type UpdatePermissions = {
22
+ userId: Id;
23
+ permissions: UserPermissions;
24
+ };
25
+ export declare const UPDATE_PERMISSIONS: {
26
+ code: number;
27
+ serialize: ({ userId, permissions }: UpdatePermissions) => Buffer<ArrayBuffer>;
28
+ deserialize: (r: import("../../index.js").CommandResponse) => boolean;
29
+ };
30
+ export declare const updatePermissions: (getClient: import("../../index.js").ClientProvider) => (arg: UpdatePermissions) => Promise<boolean>;
31
+ //# sourceMappingURL=update-permissions.command.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { wrapCommand } from '../command.utils.js';
20
+ import { COMMAND_CODE } from '../command.code.js';
21
+ import { deserializeVoidResponse } from '../../client/client.utils.js';
22
+ import { uint32ToBuf, boolToBuf } from '../number.utils.js';
23
+ import { serializeIdentifier } from '../identifier.utils.js';
24
+ import { serializePermissions } from './permissions.utils.js';
25
+ export const UPDATE_PERMISSIONS = {
26
+ code: COMMAND_CODE.UpdatePermissions,
27
+ serialize: ({ userId, permissions }) => {
28
+ const bPermissions = serializePermissions(permissions);
29
+ return Buffer.concat([
30
+ serializeIdentifier(userId),
31
+ boolToBuf(!!permissions),
32
+ uint32ToBuf(bPermissions.length),
33
+ bPermissions
34
+ ]);
35
+ },
36
+ deserialize: deserializeVoidResponse
37
+ };
38
+ export const updatePermissions = wrapCommand(UPDATE_PERMISSIONS);
39
+ //# sourceMappingURL=update-permissions.command.js.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import type { UserStatus } from './user.utils.js';
20
+ import { type Id } from '../identifier.utils.js';
21
+ export type UpdateUser = {
22
+ userId: Id;
23
+ username?: string;
24
+ status?: UserStatus;
25
+ };
26
+ export declare const UPDATE_USER: {
27
+ code: number;
28
+ serialize: ({ userId, username, status }: UpdateUser) => Buffer<ArrayBuffer>;
29
+ deserialize: (r: import("../../index.js").CommandResponse) => boolean;
30
+ };
31
+ export declare const updateUser: (getClient: import("../../index.js").ClientProvider) => (arg: UpdateUser) => Promise<boolean>;
32
+ //# sourceMappingURL=update-user.command.d.ts.map
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { wrapCommand } from '../command.utils.js';
20
+ import { COMMAND_CODE } from '../command.code.js';
21
+ import { deserializeVoidResponse } from '../../client/client.utils.js';
22
+ import { serializeIdentifier } from '../identifier.utils.js';
23
+ import { uint8ToBuf } from '../number.utils.js';
24
+ export const UPDATE_USER = {
25
+ code: COMMAND_CODE.UpdateUser,
26
+ serialize: ({ userId, username, status }) => {
27
+ const bId = serializeIdentifier(userId);
28
+ let bUsername, bStatus;
29
+ if (username) {
30
+ const bn = Buffer.from(username);
31
+ if (bn.length < 1 || bn.length > 255)
32
+ throw new Error('User username should be between 1 and 255 bytes');
33
+ bUsername = Buffer.concat([
34
+ uint8ToBuf(1),
35
+ uint8ToBuf(bn.length),
36
+ bn
37
+ ]);
38
+ }
39
+ else
40
+ bUsername = uint8ToBuf(0);
41
+ if (status)
42
+ bStatus = Buffer.concat([uint8ToBuf(1), uint8ToBuf(status)]);
43
+ else
44
+ bStatus = uint8ToBuf(0);
45
+ return Buffer.concat([
46
+ bId,
47
+ bUsername,
48
+ bStatus,
49
+ ]);
50
+ },
51
+ deserialize: deserializeVoidResponse
52
+ };
53
+ export const updateUser = wrapCommand(UPDATE_USER);
54
+ //# sourceMappingURL=update-user.command.js.map
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { type UserPermissions } from './permissions.utils.js';
20
+ export type BaseUser = {
21
+ id: number;
22
+ createdAt: Date;
23
+ status: string;
24
+ userName: string;
25
+ };
26
+ type BaseUserDeserialized = {
27
+ bytesRead: number;
28
+ data: BaseUser;
29
+ };
30
+ export type User = BaseUser & {
31
+ permissions: UserPermissions | null;
32
+ };
33
+ export declare enum UserStatus {
34
+ Active = 1,
35
+ Inactive = 2
36
+ }
37
+ export declare const deserializeBaseUser: (p: Buffer, pos?: number) => BaseUserDeserialized;
38
+ export declare const deserializeUser: (p: Buffer, pos?: number) => User;
39
+ export declare const deserializeUsers: (p: Buffer, pos?: number) => BaseUser[];
40
+ export {};
41
+ //# sourceMappingURL=user.utils.d.ts.map
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { toDate } from '../serialize.utils.js';
20
+ import { deserializePermissions } from './permissions.utils.js';
21
+ export var UserStatus;
22
+ (function (UserStatus) {
23
+ UserStatus[UserStatus["Active"] = 1] = "Active";
24
+ UserStatus[UserStatus["Inactive"] = 2] = "Inactive";
25
+ })(UserStatus || (UserStatus = {}));
26
+ ;
27
+ const statusString = (t) => {
28
+ switch (t.toString()) {
29
+ case '1': return 'Active';
30
+ case '2': return 'Inactive';
31
+ default: return `unknown_status_${t}`;
32
+ // default: throw new Error(`unknown_status_${t}`);
33
+ }
34
+ };
35
+ export const deserializeBaseUser = (p, pos = 0) => {
36
+ const id = p.readUInt32LE(pos);
37
+ const createdAt = toDate(p.readBigUInt64LE(pos + 4));
38
+ const status = statusString(p.readUInt8(pos + 12));
39
+ const userNameLength = p.readUInt8(pos + 13);
40
+ const userName = p.subarray(pos + 14, pos + 14 + userNameLength).toString();
41
+ return {
42
+ bytesRead: 14 + userNameLength,
43
+ data: {
44
+ id,
45
+ createdAt,
46
+ status,
47
+ userName,
48
+ }
49
+ };
50
+ };
51
+ export const deserializeUser = (p, pos = 0) => {
52
+ const { bytesRead, data } = deserializeBaseUser(p, pos);
53
+ pos += bytesRead;
54
+ const hasPerm = 1 === p.readUInt8(pos);
55
+ let permissions = null;
56
+ if (hasPerm) {
57
+ pos += 1;
58
+ const permLength = p.readUInt32LE(pos);
59
+ const permBuffer = p.subarray(pos + 4, pos + 4 + permLength);
60
+ permissions = deserializePermissions(permBuffer, 0);
61
+ }
62
+ return { ...data, permissions };
63
+ };
64
+ export const deserializeUsers = (p, pos = 0) => {
65
+ const users = [];
66
+ const end = p.length;
67
+ while (pos < end) {
68
+ const { bytesRead, data } = deserializeBaseUser(p, pos);
69
+ users.push(data);
70
+ pos += bytesRead;
71
+ }
72
+ return users;
73
+ };
74
+ //# sourceMappingURL=user.utils.js.map
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { UUID } from "uuidv7";
20
+ export declare const parse: (uid: string) => UUID;
21
+ export declare const v7: () => string;
22
+ //# sourceMappingURL=uuid.utils.d.ts.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { uuidv7, UUID } from "uuidv7";
20
+ export const parse = (uid) => UUID.parse(uid);
21
+ // https://github.com/LiosK/uuidv7
22
+ export const v7 = () => uuidv7();
23
+ //# sourceMappingURL=uuid.utils.js.map