memx 0.0.7 → 0.1.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 (78) hide show
  1. package/dist/buffers.cjs +50 -0
  2. package/dist/buffers.cjs.map +6 -0
  3. package/dist/buffers.d.ts +14 -0
  4. package/dist/buffers.mjs +25 -0
  5. package/dist/buffers.mjs.map +6 -0
  6. package/dist/client.cjs +251 -0
  7. package/dist/client.cjs.map +6 -0
  8. package/dist/client.d.ts +76 -0
  9. package/dist/client.mjs +216 -0
  10. package/dist/client.mjs.map +6 -0
  11. package/dist/cluster.cjs +147 -0
  12. package/dist/cluster.cjs.map +6 -0
  13. package/dist/cluster.d.ts +60 -0
  14. package/dist/cluster.mjs +112 -0
  15. package/dist/cluster.mjs.map +6 -0
  16. package/dist/connection.cjs +186 -0
  17. package/dist/connection.cjs.map +6 -0
  18. package/dist/connection.d.ts +18 -0
  19. package/dist/connection.mjs +151 -0
  20. package/dist/connection.mjs.map +6 -0
  21. package/dist/constants.cjs +140 -0
  22. package/dist/constants.cjs.map +6 -0
  23. package/dist/constants.d.ts +87 -0
  24. package/dist/constants.mjs +107 -0
  25. package/dist/constants.mjs.map +6 -0
  26. package/dist/decode.cjs +101 -0
  27. package/dist/decode.cjs.map +6 -0
  28. package/dist/decode.d.ts +16 -0
  29. package/dist/decode.mjs +66 -0
  30. package/dist/decode.mjs.map +6 -0
  31. package/dist/encode.cjs +70 -0
  32. package/dist/encode.cjs.map +6 -0
  33. package/dist/encode.d.ts +20 -0
  34. package/dist/encode.mjs +45 -0
  35. package/dist/encode.mjs.map +6 -0
  36. package/dist/fake.cjs +183 -0
  37. package/dist/fake.cjs.map +6 -0
  38. package/dist/fake.d.ts +53 -0
  39. package/dist/fake.mjs +157 -0
  40. package/dist/fake.mjs.map +6 -0
  41. package/dist/index.cjs +57 -0
  42. package/dist/index.cjs.map +6 -0
  43. package/dist/index.d.ts +12 -0
  44. package/dist/index.mjs +15 -1460
  45. package/dist/index.mjs.map +2 -2
  46. package/dist/internals.cjs +58 -0
  47. package/dist/internals.cjs.map +6 -0
  48. package/dist/internals.d.ts +7 -0
  49. package/dist/internals.mjs +21 -0
  50. package/dist/internals.mjs.map +6 -0
  51. package/dist/server.cjs +468 -0
  52. package/dist/server.cjs.map +6 -0
  53. package/dist/server.d.ts +59 -0
  54. package/dist/server.mjs +443 -0
  55. package/dist/server.mjs.map +6 -0
  56. package/dist/types.cjs +19 -0
  57. package/dist/types.cjs.map +6 -0
  58. package/dist/types.d.ts +239 -0
  59. package/dist/types.mjs +1 -0
  60. package/dist/types.mjs.map +6 -0
  61. package/dist/utils.cjs +182 -0
  62. package/dist/utils.cjs.map +6 -0
  63. package/dist/utils.d.ts +22 -0
  64. package/dist/utils.mjs +145 -0
  65. package/dist/utils.mjs.map +6 -0
  66. package/package.json +29 -27
  67. package/src/client.ts +25 -23
  68. package/src/cluster.ts +6 -3
  69. package/src/connection.ts +8 -4
  70. package/src/decode.ts +5 -2
  71. package/src/encode.ts +5 -2
  72. package/src/fake.ts +34 -33
  73. package/src/internals.ts +7 -7
  74. package/src/server.ts +47 -45
  75. package/src/utils.ts +7 -4
  76. package/dist/index.js +0 -1496
  77. package/dist/index.js.map +0 -6
  78. package/index.d.ts +0 -710
@@ -0,0 +1,151 @@
1
+ // connection.ts
2
+ import assert from "node:assert";
3
+ import net from "node:net";
4
+ import { Encoder } from "./encode.mjs";
5
+ import { Decoder } from "./decode.mjs";
6
+ import { BUFFERS, OPCODE } from "./constants.mjs";
7
+ import { socketFinalizationRegistry } from "./internals.mjs";
8
+ var Deferred = class {
9
+ #resolve;
10
+ #reject;
11
+ #packets = [];
12
+ promise;
13
+ opcode;
14
+ constructor(opcode) {
15
+ this.opcode = opcode;
16
+ this.promise = new Promise((resolve, reject) => {
17
+ this.#resolve = resolve;
18
+ this.#reject = reject;
19
+ });
20
+ }
21
+ append(packet) {
22
+ this.#packets.push(packet);
23
+ }
24
+ resolve(packet) {
25
+ this.#packets.push(packet);
26
+ this.#resolve(this.#packets);
27
+ }
28
+ reject(error) {
29
+ this.#reject(error);
30
+ }
31
+ };
32
+ var Connection = class {
33
+ #decoder = new Decoder((packet) => this.#receive(packet));
34
+ #encoder = new Encoder();
35
+ #buffer = Buffer.allocUnsafeSlow(BUFFERS.BUFFER_SIZE);
36
+ #defers = /* @__PURE__ */ new Map();
37
+ #factory;
38
+ #socket;
39
+ #sequence = 0;
40
+ #timeout;
41
+ #host;
42
+ #port;
43
+ constructor(options) {
44
+ assert(options, "No options specified");
45
+ const {
46
+ host,
47
+ port = 11211,
48
+ timeout = 1e3,
49
+ factory = net.connect
50
+ } = options;
51
+ this.#factory = factory;
52
+ assert(host, "No host name specified");
53
+ assert(port > 0 && port < 65536 && Math.floor(port) == port, `Invalid port ${port}`);
54
+ this.#timeout = timeout;
55
+ this.#host = host;
56
+ this.#port = port;
57
+ }
58
+ /* ======================================================================== */
59
+ get connected() {
60
+ return !!this.#socket;
61
+ }
62
+ get host() {
63
+ return this.#host;
64
+ }
65
+ get port() {
66
+ return this.#port;
67
+ }
68
+ get timeout() {
69
+ return this.#timeout;
70
+ }
71
+ /* ======================================================================== */
72
+ #connect() {
73
+ return this.#socket || (this.#socket = new Promise((resolve, reject) => {
74
+ const socket = this.#factory({
75
+ host: this.#host,
76
+ port: this.#port,
77
+ timeout: this.#timeout,
78
+ onread: {
79
+ buffer: this.#buffer,
80
+ callback: (bytes, buffer) => {
81
+ this.#decoder.append(buffer, 0, bytes);
82
+ return true;
83
+ }
84
+ }
85
+ });
86
+ socket.on("timeout", () => socket.destroy(new Error("Timeout")));
87
+ socket.on("error", reject);
88
+ socket.on("close", () => {
89
+ socketFinalizationRegistry.unregister(this);
90
+ this.#socket = void 0;
91
+ });
92
+ socket.on("connect", () => {
93
+ socketFinalizationRegistry.register(this, socket, this);
94
+ socket.off("error", reject);
95
+ socket.on("error", (error) => {
96
+ for (const deferred of this.#defers.values()) {
97
+ process.nextTick(() => deferred.reject(error));
98
+ }
99
+ this.#defers.clear();
100
+ this.#socket = void 0;
101
+ });
102
+ socket.unref();
103
+ resolve(socket);
104
+ });
105
+ }));
106
+ }
107
+ #receive(packet) {
108
+ const deferred = this.#defers.get(packet.sequence);
109
+ if (deferred) {
110
+ if (deferred.opcode === packet.opcode) {
111
+ if (packet.opcode === OPCODE.STAT && packet.key.length !== 0) {
112
+ return deferred.append(packet);
113
+ }
114
+ return deferred.resolve(packet);
115
+ } else {
116
+ const sent = `0x${deferred.opcode.toString(16).padStart(2, "0")}`;
117
+ const received = `0x${packet.opcode.toString(16).padStart(2, "0")}`;
118
+ return deferred.reject(new Error(`Opcode mismatch (sent=${sent}, received=${received})`));
119
+ }
120
+ }
121
+ }
122
+ async send(packet) {
123
+ const sequence = ++this.#sequence;
124
+ const buffer = this.#encoder.encode(packet, sequence);
125
+ const deferred = new Deferred(packet.opcode);
126
+ this.#defers.set(sequence, deferred);
127
+ const socket = await this.#connect();
128
+ socket.write(buffer, (error) => {
129
+ buffer.recycle();
130
+ if (error)
131
+ return deferred.reject(error);
132
+ });
133
+ const timeout = setTimeout(() => deferred.reject(new Error("No response")), this.#timeout);
134
+ return deferred.promise.finally(() => {
135
+ clearTimeout(timeout);
136
+ this.#defers.delete(sequence);
137
+ });
138
+ }
139
+ async destroy() {
140
+ const socket = await this.#socket;
141
+ if (!socket)
142
+ return false;
143
+ return new Promise((resolve, reject) => {
144
+ socket.once("error", reject).once("close", resolve).destroy();
145
+ });
146
+ }
147
+ };
148
+ export {
149
+ Connection
150
+ };
151
+ //# sourceMappingURL=connection.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/connection.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // constants.ts
21
+ var constants_exports = {};
22
+ __export(constants_exports, {
23
+ BUFFERS: () => BUFFERS,
24
+ DATA_TYPE: () => DATA_TYPE,
25
+ EMPTY_BUFFER: () => EMPTY_BUFFER,
26
+ FLAGS: () => FLAGS,
27
+ MAGIC: () => MAGIC,
28
+ OFFSETS: () => OFFSETS,
29
+ OPCODE: () => OPCODE,
30
+ STATUS: () => STATUS,
31
+ VBUCKET: () => VBUCKET
32
+ });
33
+ module.exports = __toCommonJS(constants_exports);
34
+ var EMPTY_BUFFER = Buffer.alloc(0);
35
+ var FLAGS = /* @__PURE__ */ ((FLAGS2) => {
36
+ FLAGS2[FLAGS2["BUFFER"] = 0] = "BUFFER";
37
+ FLAGS2[FLAGS2["BIGINT"] = 3402235904] = "BIGINT";
38
+ FLAGS2[FLAGS2["BOOLEAN"] = 3402235905] = "BOOLEAN";
39
+ FLAGS2[FLAGS2["NUMBER"] = 3402235906] = "NUMBER";
40
+ FLAGS2[FLAGS2["STRING"] = 3402235907] = "STRING";
41
+ FLAGS2[FLAGS2["NULL"] = 3402235918] = "NULL";
42
+ FLAGS2[FLAGS2["JSON"] = 3402235919] = "JSON";
43
+ FLAGS2[FLAGS2["UINT8ARRAY"] = 3402235920] = "UINT8ARRAY";
44
+ FLAGS2[FLAGS2["UINT8CLAMPEDARRAY"] = 3402235921] = "UINT8CLAMPEDARRAY";
45
+ FLAGS2[FLAGS2["UINT16ARRAY"] = 3402235922] = "UINT16ARRAY";
46
+ FLAGS2[FLAGS2["UINT32ARRAY"] = 3402235923] = "UINT32ARRAY";
47
+ FLAGS2[FLAGS2["INT8ARRAY"] = 3402235924] = "INT8ARRAY";
48
+ FLAGS2[FLAGS2["INT16ARRAY"] = 3402235925] = "INT16ARRAY";
49
+ FLAGS2[FLAGS2["INT32ARRAY"] = 3402235926] = "INT32ARRAY";
50
+ FLAGS2[FLAGS2["BIGUINT64ARRAY"] = 3402235927] = "BIGUINT64ARRAY";
51
+ FLAGS2[FLAGS2["BIGINT64ARRAY"] = 3402235928] = "BIGINT64ARRAY";
52
+ FLAGS2[FLAGS2["FLOAT32ARRAY"] = 3402235929] = "FLOAT32ARRAY";
53
+ FLAGS2[FLAGS2["FLOAT64ARRAY"] = 3402235930] = "FLOAT64ARRAY";
54
+ return FLAGS2;
55
+ })(FLAGS || {});
56
+ var BUFFERS = /* @__PURE__ */ ((BUFFERS2) => {
57
+ BUFFERS2[BUFFERS2["POOL_SIZE"] = 64] = "POOL_SIZE";
58
+ BUFFERS2[BUFFERS2["BUFFER_SIZE"] = 8192] = "BUFFER_SIZE";
59
+ BUFFERS2[BUFFERS2["HEADER_SIZE"] = 24] = "HEADER_SIZE";
60
+ BUFFERS2[BUFFERS2["KEY_SIZE"] = 250] = "KEY_SIZE";
61
+ BUFFERS2[BUFFERS2["KEY_TOO_BIG"] = 251] = "KEY_TOO_BIG";
62
+ return BUFFERS2;
63
+ })(BUFFERS || {});
64
+ var OFFSETS = /* @__PURE__ */ ((OFFSETS2) => {
65
+ OFFSETS2[OFFSETS2["MAGIC_$8"] = 0] = "MAGIC_$8";
66
+ OFFSETS2[OFFSETS2["OPCODE_$8"] = 1] = "OPCODE_$8";
67
+ OFFSETS2[OFFSETS2["KEY_LENGTH_$16"] = 2] = "KEY_LENGTH_$16";
68
+ OFFSETS2[OFFSETS2["EXTRAS_LENGTH_$8"] = 4] = "EXTRAS_LENGTH_$8";
69
+ OFFSETS2[OFFSETS2["DATA_TYPE_$8"] = 5] = "DATA_TYPE_$8";
70
+ OFFSETS2[OFFSETS2["STATUS_$16"] = 6] = "STATUS_$16";
71
+ OFFSETS2[OFFSETS2["BODY_LENGTH_$32"] = 8] = "BODY_LENGTH_$32";
72
+ OFFSETS2[OFFSETS2["SEQUENCE_$32"] = 12] = "SEQUENCE_$32";
73
+ OFFSETS2[OFFSETS2["CAS_$64"] = 16] = "CAS_$64";
74
+ OFFSETS2[OFFSETS2["BODY"] = 24] = "BODY";
75
+ return OFFSETS2;
76
+ })(OFFSETS || {});
77
+ var MAGIC = /* @__PURE__ */ ((MAGIC2) => {
78
+ MAGIC2[MAGIC2["REQUEST"] = 128] = "REQUEST";
79
+ MAGIC2[MAGIC2["RESPONSE"] = 129] = "RESPONSE";
80
+ return MAGIC2;
81
+ })(MAGIC || {});
82
+ var STATUS = /* @__PURE__ */ ((STATUS2) => {
83
+ STATUS2[STATUS2["OK"] = 0] = "OK";
84
+ STATUS2[STATUS2["KEY_NOT_FOUND"] = 1] = "KEY_NOT_FOUND";
85
+ STATUS2[STATUS2["KEY_EXISTS"] = 2] = "KEY_EXISTS";
86
+ STATUS2[STATUS2["TOO_LARGE"] = 3] = "TOO_LARGE";
87
+ STATUS2[STATUS2["INVALID_ARGS"] = 4] = "INVALID_ARGS";
88
+ STATUS2[STATUS2["ITEM_NOT_STORED"] = 5] = "ITEM_NOT_STORED";
89
+ STATUS2[STATUS2["NON_NUMERIC_VALUE"] = 6] = "NON_NUMERIC_VALUE";
90
+ STATUS2[STATUS2["WRONG_VBUCKET"] = 7] = "WRONG_VBUCKET";
91
+ STATUS2[STATUS2["AUTH_ERROR"] = 8] = "AUTH_ERROR";
92
+ STATUS2[STATUS2["AUTH_CONTINUE"] = 9] = "AUTH_CONTINUE";
93
+ STATUS2[STATUS2["UNKNOWN_COMMAND"] = 129] = "UNKNOWN_COMMAND";
94
+ STATUS2[STATUS2["OUT_OF_MEMORY"] = 130] = "OUT_OF_MEMORY";
95
+ STATUS2[STATUS2["NOT_SUPPORTED"] = 131] = "NOT_SUPPORTED";
96
+ STATUS2[STATUS2["INTERNAL_ERROR"] = 132] = "INTERNAL_ERROR";
97
+ STATUS2[STATUS2["BUSY"] = 133] = "BUSY";
98
+ STATUS2[STATUS2["TEMPORARY_FAILURE"] = 134] = "TEMPORARY_FAILURE";
99
+ return STATUS2;
100
+ })(STATUS || {});
101
+ var OPCODE = /* @__PURE__ */ ((OPCODE2) => {
102
+ OPCODE2[OPCODE2["GET"] = 0] = "GET";
103
+ OPCODE2[OPCODE2["SET"] = 1] = "SET";
104
+ OPCODE2[OPCODE2["ADD"] = 2] = "ADD";
105
+ OPCODE2[OPCODE2["REPLACE"] = 3] = "REPLACE";
106
+ OPCODE2[OPCODE2["DELETE"] = 4] = "DELETE";
107
+ OPCODE2[OPCODE2["INCREMENT"] = 5] = "INCREMENT";
108
+ OPCODE2[OPCODE2["DECREMENT"] = 6] = "DECREMENT";
109
+ OPCODE2[OPCODE2["QUIT"] = 7] = "QUIT";
110
+ OPCODE2[OPCODE2["FLUSH"] = 8] = "FLUSH";
111
+ OPCODE2[OPCODE2["NOOP"] = 10] = "NOOP";
112
+ OPCODE2[OPCODE2["VERSION"] = 11] = "VERSION";
113
+ OPCODE2[OPCODE2["APPEND"] = 14] = "APPEND";
114
+ OPCODE2[OPCODE2["PREPEND"] = 15] = "PREPEND";
115
+ OPCODE2[OPCODE2["STAT"] = 16] = "STAT";
116
+ OPCODE2[OPCODE2["TOUCH"] = 28] = "TOUCH";
117
+ OPCODE2[OPCODE2["GAT"] = 29] = "GAT";
118
+ return OPCODE2;
119
+ })(OPCODE || {});
120
+ var DATA_TYPE = /* @__PURE__ */ ((DATA_TYPE2) => {
121
+ DATA_TYPE2[DATA_TYPE2["RAW"] = 0] = "RAW";
122
+ return DATA_TYPE2;
123
+ })(DATA_TYPE || {});
124
+ var VBUCKET = /* @__PURE__ */ ((VBUCKET2) => {
125
+ VBUCKET2[VBUCKET2["NIL"] = 0] = "NIL";
126
+ return VBUCKET2;
127
+ })(VBUCKET || {});
128
+ // Annotate the CommonJS export names for ESM import in node:
129
+ 0 && (module.exports = {
130
+ BUFFERS,
131
+ DATA_TYPE,
132
+ EMPTY_BUFFER,
133
+ FLAGS,
134
+ MAGIC,
135
+ OFFSETS,
136
+ OPCODE,
137
+ STATUS,
138
+ VBUCKET
139
+ });
140
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/constants.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,eAAe,OAAO,MAAM,CAAC;AAEnC,IAAK,QAAL,kBAAKA,WAAL;AAEL,EAAAA,cAAA,YAAS,KAAT;AAGA,EAAAA,cAAA,YAAS,cAAT;AACA,EAAAA,cAAA,aAAU,cAAV;AACA,EAAAA,cAAA,YAAS,cAAT;AACA,EAAAA,cAAA,YAAS,cAAT;AAGA,EAAAA,cAAA,UAAO,cAAP;AAGA,EAAAA,cAAA,UAAO,cAAP;AAGA,EAAAA,cAAA,gBAAa,cAAb;AACA,EAAAA,cAAA,uBAAoB,cAApB;AACA,EAAAA,cAAA,iBAAc,cAAd;AACA,EAAAA,cAAA,iBAAc,cAAd;AACA,EAAAA,cAAA,eAAY,cAAZ;AACA,EAAAA,cAAA,gBAAa,cAAb;AACA,EAAAA,cAAA,gBAAa,cAAb;AACA,EAAAA,cAAA,oBAAiB,cAAjB;AACA,EAAAA,cAAA,mBAAgB,cAAhB;AACA,EAAAA,cAAA,kBAAe,cAAf;AACA,EAAAA,cAAA,kBAAe,cAAf;AA3BU,SAAAA;AAAA,GAAA;AA8BL,IAAK,UAAL,kBAAKC,aAAL;AACL,EAAAA,kBAAA,eAAY,MAAZ;AACA,EAAAA,kBAAA,iBAAc,QAAd;AACA,EAAAA,kBAAA,iBAAc,MAAd;AACA,EAAAA,kBAAA,cAAW,OAAX;AACA,EAAAA,kBAAA,iBAAc,OAAd;AALU,SAAAA;AAAA,GAAA;AAQL,IAAK,UAAL,kBAAKC,aAAL;AACL,EAAAA,kBAAA,cAAW,KAAX;AACA,EAAAA,kBAAA,eAAY,KAAZ;AACA,EAAAA,kBAAA,oBAAiB,KAAjB;AACA,EAAAA,kBAAA,sBAAmB,KAAnB;AACA,EAAAA,kBAAA,kBAAe,KAAf;AACA,EAAAA,kBAAA,gBAAa,KAAb;AACA,EAAAA,kBAAA,qBAAkB,KAAlB;AACA,EAAAA,kBAAA,kBAAe,MAAf;AACA,EAAAA,kBAAA,aAAU,MAAV;AACA,EAAAA,kBAAA,UAAO,MAAP;AAVU,SAAAA;AAAA,GAAA;AAaL,IAAK,QAAL,kBAAKC,WAAL;AACL,EAAAA,cAAA,aAAU,OAAV;AACA,EAAAA,cAAA,cAAW,OAAX;AAFU,SAAAA;AAAA,GAAA;AAKL,IAAK,SAAL,kBAAKC,YAAL;AACL,EAAAA,gBAAA,QAAK,KAAL;AACA,EAAAA,gBAAA,mBAAgB,KAAhB;AACA,EAAAA,gBAAA,gBAAa,KAAb;AACA,EAAAA,gBAAA,eAAY,KAAZ;AACA,EAAAA,gBAAA,kBAAe,KAAf;AACA,EAAAA,gBAAA,qBAAkB,KAAlB;AACA,EAAAA,gBAAA,uBAAoB,KAApB;AACA,EAAAA,gBAAA,mBAAgB,KAAhB;AACA,EAAAA,gBAAA,gBAAa,KAAb;AACA,EAAAA,gBAAA,mBAAgB,KAAhB;AACA,EAAAA,gBAAA,qBAAkB,OAAlB;AACA,EAAAA,gBAAA,mBAAgB,OAAhB;AACA,EAAAA,gBAAA,mBAAgB,OAAhB;AACA,EAAAA,gBAAA,oBAAiB,OAAjB;AACA,EAAAA,gBAAA,UAAO,OAAP;AACA,EAAAA,gBAAA,uBAAoB,OAApB;AAhBU,SAAAA;AAAA,GAAA;AAmBL,IAAK,SAAL,kBAAKC,YAAL;AACL,EAAAA,gBAAA,SAAM,KAAN;AACA,EAAAA,gBAAA,SAAM,KAAN;AACA,EAAAA,gBAAA,SAAM,KAAN;AACA,EAAAA,gBAAA,aAAU,KAAV;AACA,EAAAA,gBAAA,YAAS,KAAT;AACA,EAAAA,gBAAA,eAAY,KAAZ;AACA,EAAAA,gBAAA,eAAY,KAAZ;AACA,EAAAA,gBAAA,UAAO,KAAP;AACA,EAAAA,gBAAA,WAAQ,KAAR;AACA,EAAAA,gBAAA,UAAO,MAAP;AACA,EAAAA,gBAAA,aAAU,MAAV;AACA,EAAAA,gBAAA,YAAS,MAAT;AACA,EAAAA,gBAAA,aAAU,MAAV;AACA,EAAAA,gBAAA,UAAO,MAAP;AACA,EAAAA,gBAAA,WAAQ,MAAR;AACA,EAAAA,gBAAA,SAAM,MAAN;AAhBU,SAAAA;AAAA,GAAA;AAmBL,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,sBAAA,SAAM,KAAN;AADU,SAAAA;AAAA,GAAA;AAIL,IAAK,UAAL,kBAAKC,aAAL;AACL,EAAAA,kBAAA,SAAM,KAAN;AADU,SAAAA;AAAA,GAAA;",
5
+ "names": ["FLAGS", "BUFFERS", "OFFSETS", "MAGIC", "STATUS", "OPCODE", "DATA_TYPE", "VBUCKET"]
6
+ }
@@ -0,0 +1,87 @@
1
+ /// <reference types="node" />
2
+ export declare const EMPTY_BUFFER: Buffer;
3
+ export declare enum FLAGS {
4
+ BUFFER = 0,
5
+ BIGINT = 3402235904,
6
+ BOOLEAN = 3402235905,
7
+ NUMBER = 3402235906,
8
+ STRING = 3402235907,
9
+ NULL = 3402235918,
10
+ JSON = 3402235919,
11
+ UINT8ARRAY = 3402235920,
12
+ UINT8CLAMPEDARRAY = 3402235921,
13
+ UINT16ARRAY = 3402235922,
14
+ UINT32ARRAY = 3402235923,
15
+ INT8ARRAY = 3402235924,
16
+ INT16ARRAY = 3402235925,
17
+ INT32ARRAY = 3402235926,
18
+ BIGUINT64ARRAY = 3402235927,
19
+ BIGINT64ARRAY = 3402235928,
20
+ FLOAT32ARRAY = 3402235929,
21
+ FLOAT64ARRAY = 3402235930
22
+ }
23
+ export declare enum BUFFERS {
24
+ POOL_SIZE = 64,
25
+ BUFFER_SIZE = 8192,
26
+ HEADER_SIZE = 24,
27
+ KEY_SIZE = 250,
28
+ KEY_TOO_BIG = 251
29
+ }
30
+ export declare enum OFFSETS {
31
+ MAGIC_$8 = 0,
32
+ OPCODE_$8 = 1,
33
+ KEY_LENGTH_$16 = 2,
34
+ EXTRAS_LENGTH_$8 = 4,
35
+ DATA_TYPE_$8 = 5,
36
+ STATUS_$16 = 6,
37
+ BODY_LENGTH_$32 = 8,
38
+ SEQUENCE_$32 = 12,
39
+ CAS_$64 = 16,
40
+ BODY = 24
41
+ }
42
+ export declare enum MAGIC {
43
+ REQUEST = 128,
44
+ RESPONSE = 129
45
+ }
46
+ export declare enum STATUS {
47
+ OK = 0,
48
+ KEY_NOT_FOUND = 1,
49
+ KEY_EXISTS = 2,
50
+ TOO_LARGE = 3,
51
+ INVALID_ARGS = 4,
52
+ ITEM_NOT_STORED = 5,
53
+ NON_NUMERIC_VALUE = 6,
54
+ WRONG_VBUCKET = 7,
55
+ AUTH_ERROR = 8,
56
+ AUTH_CONTINUE = 9,
57
+ UNKNOWN_COMMAND = 129,
58
+ OUT_OF_MEMORY = 130,
59
+ NOT_SUPPORTED = 131,
60
+ INTERNAL_ERROR = 132,
61
+ BUSY = 133,
62
+ TEMPORARY_FAILURE = 134
63
+ }
64
+ export declare enum OPCODE {
65
+ GET = 0,
66
+ SET = 1,
67
+ ADD = 2,
68
+ REPLACE = 3,
69
+ DELETE = 4,
70
+ INCREMENT = 5,
71
+ DECREMENT = 6,
72
+ QUIT = 7,
73
+ FLUSH = 8,
74
+ NOOP = 10,
75
+ VERSION = 11,
76
+ APPEND = 14,
77
+ PREPEND = 15,
78
+ STAT = 16,
79
+ TOUCH = 28,
80
+ GAT = 29
81
+ }
82
+ export declare enum DATA_TYPE {
83
+ RAW = 0
84
+ }
85
+ export declare enum VBUCKET {
86
+ NIL = 0
87
+ }
@@ -0,0 +1,107 @@
1
+ // constants.ts
2
+ var EMPTY_BUFFER = Buffer.alloc(0);
3
+ var FLAGS = /* @__PURE__ */ ((FLAGS2) => {
4
+ FLAGS2[FLAGS2["BUFFER"] = 0] = "BUFFER";
5
+ FLAGS2[FLAGS2["BIGINT"] = 3402235904] = "BIGINT";
6
+ FLAGS2[FLAGS2["BOOLEAN"] = 3402235905] = "BOOLEAN";
7
+ FLAGS2[FLAGS2["NUMBER"] = 3402235906] = "NUMBER";
8
+ FLAGS2[FLAGS2["STRING"] = 3402235907] = "STRING";
9
+ FLAGS2[FLAGS2["NULL"] = 3402235918] = "NULL";
10
+ FLAGS2[FLAGS2["JSON"] = 3402235919] = "JSON";
11
+ FLAGS2[FLAGS2["UINT8ARRAY"] = 3402235920] = "UINT8ARRAY";
12
+ FLAGS2[FLAGS2["UINT8CLAMPEDARRAY"] = 3402235921] = "UINT8CLAMPEDARRAY";
13
+ FLAGS2[FLAGS2["UINT16ARRAY"] = 3402235922] = "UINT16ARRAY";
14
+ FLAGS2[FLAGS2["UINT32ARRAY"] = 3402235923] = "UINT32ARRAY";
15
+ FLAGS2[FLAGS2["INT8ARRAY"] = 3402235924] = "INT8ARRAY";
16
+ FLAGS2[FLAGS2["INT16ARRAY"] = 3402235925] = "INT16ARRAY";
17
+ FLAGS2[FLAGS2["INT32ARRAY"] = 3402235926] = "INT32ARRAY";
18
+ FLAGS2[FLAGS2["BIGUINT64ARRAY"] = 3402235927] = "BIGUINT64ARRAY";
19
+ FLAGS2[FLAGS2["BIGINT64ARRAY"] = 3402235928] = "BIGINT64ARRAY";
20
+ FLAGS2[FLAGS2["FLOAT32ARRAY"] = 3402235929] = "FLOAT32ARRAY";
21
+ FLAGS2[FLAGS2["FLOAT64ARRAY"] = 3402235930] = "FLOAT64ARRAY";
22
+ return FLAGS2;
23
+ })(FLAGS || {});
24
+ var BUFFERS = /* @__PURE__ */ ((BUFFERS2) => {
25
+ BUFFERS2[BUFFERS2["POOL_SIZE"] = 64] = "POOL_SIZE";
26
+ BUFFERS2[BUFFERS2["BUFFER_SIZE"] = 8192] = "BUFFER_SIZE";
27
+ BUFFERS2[BUFFERS2["HEADER_SIZE"] = 24] = "HEADER_SIZE";
28
+ BUFFERS2[BUFFERS2["KEY_SIZE"] = 250] = "KEY_SIZE";
29
+ BUFFERS2[BUFFERS2["KEY_TOO_BIG"] = 251] = "KEY_TOO_BIG";
30
+ return BUFFERS2;
31
+ })(BUFFERS || {});
32
+ var OFFSETS = /* @__PURE__ */ ((OFFSETS2) => {
33
+ OFFSETS2[OFFSETS2["MAGIC_$8"] = 0] = "MAGIC_$8";
34
+ OFFSETS2[OFFSETS2["OPCODE_$8"] = 1] = "OPCODE_$8";
35
+ OFFSETS2[OFFSETS2["KEY_LENGTH_$16"] = 2] = "KEY_LENGTH_$16";
36
+ OFFSETS2[OFFSETS2["EXTRAS_LENGTH_$8"] = 4] = "EXTRAS_LENGTH_$8";
37
+ OFFSETS2[OFFSETS2["DATA_TYPE_$8"] = 5] = "DATA_TYPE_$8";
38
+ OFFSETS2[OFFSETS2["STATUS_$16"] = 6] = "STATUS_$16";
39
+ OFFSETS2[OFFSETS2["BODY_LENGTH_$32"] = 8] = "BODY_LENGTH_$32";
40
+ OFFSETS2[OFFSETS2["SEQUENCE_$32"] = 12] = "SEQUENCE_$32";
41
+ OFFSETS2[OFFSETS2["CAS_$64"] = 16] = "CAS_$64";
42
+ OFFSETS2[OFFSETS2["BODY"] = 24] = "BODY";
43
+ return OFFSETS2;
44
+ })(OFFSETS || {});
45
+ var MAGIC = /* @__PURE__ */ ((MAGIC2) => {
46
+ MAGIC2[MAGIC2["REQUEST"] = 128] = "REQUEST";
47
+ MAGIC2[MAGIC2["RESPONSE"] = 129] = "RESPONSE";
48
+ return MAGIC2;
49
+ })(MAGIC || {});
50
+ var STATUS = /* @__PURE__ */ ((STATUS2) => {
51
+ STATUS2[STATUS2["OK"] = 0] = "OK";
52
+ STATUS2[STATUS2["KEY_NOT_FOUND"] = 1] = "KEY_NOT_FOUND";
53
+ STATUS2[STATUS2["KEY_EXISTS"] = 2] = "KEY_EXISTS";
54
+ STATUS2[STATUS2["TOO_LARGE"] = 3] = "TOO_LARGE";
55
+ STATUS2[STATUS2["INVALID_ARGS"] = 4] = "INVALID_ARGS";
56
+ STATUS2[STATUS2["ITEM_NOT_STORED"] = 5] = "ITEM_NOT_STORED";
57
+ STATUS2[STATUS2["NON_NUMERIC_VALUE"] = 6] = "NON_NUMERIC_VALUE";
58
+ STATUS2[STATUS2["WRONG_VBUCKET"] = 7] = "WRONG_VBUCKET";
59
+ STATUS2[STATUS2["AUTH_ERROR"] = 8] = "AUTH_ERROR";
60
+ STATUS2[STATUS2["AUTH_CONTINUE"] = 9] = "AUTH_CONTINUE";
61
+ STATUS2[STATUS2["UNKNOWN_COMMAND"] = 129] = "UNKNOWN_COMMAND";
62
+ STATUS2[STATUS2["OUT_OF_MEMORY"] = 130] = "OUT_OF_MEMORY";
63
+ STATUS2[STATUS2["NOT_SUPPORTED"] = 131] = "NOT_SUPPORTED";
64
+ STATUS2[STATUS2["INTERNAL_ERROR"] = 132] = "INTERNAL_ERROR";
65
+ STATUS2[STATUS2["BUSY"] = 133] = "BUSY";
66
+ STATUS2[STATUS2["TEMPORARY_FAILURE"] = 134] = "TEMPORARY_FAILURE";
67
+ return STATUS2;
68
+ })(STATUS || {});
69
+ var OPCODE = /* @__PURE__ */ ((OPCODE2) => {
70
+ OPCODE2[OPCODE2["GET"] = 0] = "GET";
71
+ OPCODE2[OPCODE2["SET"] = 1] = "SET";
72
+ OPCODE2[OPCODE2["ADD"] = 2] = "ADD";
73
+ OPCODE2[OPCODE2["REPLACE"] = 3] = "REPLACE";
74
+ OPCODE2[OPCODE2["DELETE"] = 4] = "DELETE";
75
+ OPCODE2[OPCODE2["INCREMENT"] = 5] = "INCREMENT";
76
+ OPCODE2[OPCODE2["DECREMENT"] = 6] = "DECREMENT";
77
+ OPCODE2[OPCODE2["QUIT"] = 7] = "QUIT";
78
+ OPCODE2[OPCODE2["FLUSH"] = 8] = "FLUSH";
79
+ OPCODE2[OPCODE2["NOOP"] = 10] = "NOOP";
80
+ OPCODE2[OPCODE2["VERSION"] = 11] = "VERSION";
81
+ OPCODE2[OPCODE2["APPEND"] = 14] = "APPEND";
82
+ OPCODE2[OPCODE2["PREPEND"] = 15] = "PREPEND";
83
+ OPCODE2[OPCODE2["STAT"] = 16] = "STAT";
84
+ OPCODE2[OPCODE2["TOUCH"] = 28] = "TOUCH";
85
+ OPCODE2[OPCODE2["GAT"] = 29] = "GAT";
86
+ return OPCODE2;
87
+ })(OPCODE || {});
88
+ var DATA_TYPE = /* @__PURE__ */ ((DATA_TYPE2) => {
89
+ DATA_TYPE2[DATA_TYPE2["RAW"] = 0] = "RAW";
90
+ return DATA_TYPE2;
91
+ })(DATA_TYPE || {});
92
+ var VBUCKET = /* @__PURE__ */ ((VBUCKET2) => {
93
+ VBUCKET2[VBUCKET2["NIL"] = 0] = "NIL";
94
+ return VBUCKET2;
95
+ })(VBUCKET || {});
96
+ export {
97
+ BUFFERS,
98
+ DATA_TYPE,
99
+ EMPTY_BUFFER,
100
+ FLAGS,
101
+ MAGIC,
102
+ OFFSETS,
103
+ OPCODE,
104
+ STATUS,
105
+ VBUCKET
106
+ };
107
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/constants.ts"],
4
+ "mappings": "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",
5
+ "names": ["FLAGS", "BUFFERS", "OFFSETS", "MAGIC", "STATUS", "OPCODE", "DATA_TYPE", "VBUCKET"]
6
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // decode.ts
31
+ var decode_exports = {};
32
+ __export(decode_exports, {
33
+ Decoder: () => Decoder
34
+ });
35
+ module.exports = __toCommonJS(decode_exports);
36
+ var import_node_assert = __toESM(require("node:assert"));
37
+ var import_constants = require("./constants.cjs");
38
+ var import_buffers = require("./buffers.cjs");
39
+ var Decoder = class {
40
+ #consumer;
41
+ #header = Buffer.allocUnsafeSlow(24);
42
+ #body;
43
+ #pos = 0;
44
+ constructor(consumer) {
45
+ this.#consumer = consumer;
46
+ }
47
+ append(buffer, start, end) {
48
+ const header = this.#header;
49
+ while (start < end) {
50
+ if (this.#pos < 24) {
51
+ const copied = buffer.copy(header, this.#pos, start, end);
52
+ this.#pos += copied;
53
+ start += copied;
54
+ }
55
+ if (this.#pos < 24)
56
+ return;
57
+ let extras = import_constants.EMPTY_BUFFER;
58
+ let key = import_constants.EMPTY_BUFFER;
59
+ let value = import_constants.EMPTY_BUFFER;
60
+ let recycle = () => void 0;
61
+ const bodyLength = header.readUInt32BE(import_constants.OFFSETS.BODY_LENGTH_$32);
62
+ if (bodyLength) {
63
+ const body = this.#body || (this.#body = (0, import_buffers.allocateBuffer)(bodyLength));
64
+ const copied = buffer.copy(body, this.#pos - 24, start, end);
65
+ this.#pos += copied;
66
+ start += copied;
67
+ if (this.#pos - 24 < body.length)
68
+ return;
69
+ const keyLength = header.readUInt16BE(import_constants.OFFSETS.KEY_LENGTH_$16);
70
+ const extrasLength = header.readUInt8(import_constants.OFFSETS.EXTRAS_LENGTH_$8);
71
+ const valueLength = bodyLength - keyLength - extrasLength;
72
+ key = keyLength ? body.subarray(extrasLength, extrasLength + keyLength) : import_constants.EMPTY_BUFFER;
73
+ value = valueLength ? body.subarray(extrasLength + keyLength) : import_constants.EMPTY_BUFFER;
74
+ extras = extrasLength ? body.subarray(0, extrasLength) : import_constants.EMPTY_BUFFER;
75
+ recycle = () => void body.recycle();
76
+ }
77
+ const packet = {
78
+ opcode: header.readUInt8(import_constants.OFFSETS.OPCODE_$8),
79
+ status: header.readUInt16BE(import_constants.OFFSETS.STATUS_$16),
80
+ sequence: header.readUInt32BE(import_constants.OFFSETS.SEQUENCE_$32),
81
+ cas: header.readBigUInt64BE(import_constants.OFFSETS.CAS_$64),
82
+ extras,
83
+ key,
84
+ value,
85
+ recycle
86
+ };
87
+ const magic = header.readUInt8(import_constants.OFFSETS.MAGIC_$8);
88
+ const dataType = header.readUInt8(import_constants.OFFSETS.DATA_TYPE_$8);
89
+ import_node_assert.default.equal(magic, import_constants.MAGIC.RESPONSE, "Invalid magic in header");
90
+ import_node_assert.default.equal(dataType, import_constants.DATA_TYPE.RAW, "Invalid data type in header");
91
+ this.#pos = 0;
92
+ this.#body = void 0;
93
+ this.#consumer(packet);
94
+ }
95
+ }
96
+ };
97
+ // Annotate the CommonJS export names for ESM import in node:
98
+ 0 && (module.exports = {
99
+ Decoder
100
+ });
101
+ //# sourceMappingURL=decode.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/decode.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAmB;AAEnB,uBAAwD;AACxD,qBAA+B;AA0BxB,IAAM,UAAN,MAAc;AAAA,EACnB;AAAA,EACA,UAAU,OAAO,gBAAgB,EAAE;AAAA,EACnC;AAAA,EACA,OAAO;AAAA,EAEP,YAAY,UAA+C;AACzD,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,OAAO,QAAgB,OAAe,KAAmB;AACvD,UAAM,SAAS,KAAK;AAEpB,WAAO,QAAQ,KAAK;AAClB,UAAI,KAAK,OAAO,IAAI;AAClB,cAAM,SAAS,OAAO,KAAK,QAAQ,KAAK,MAAM,OAAO,GAAG;AACxD,aAAK,QAAQ;AACb,iBAAS;AAAA,MACX;AAEA,UAAI,KAAK,OAAO;AAAI;AAEpB,UAAI,SAAS;AACb,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,UAAU,MAAM;AAEpB,YAAM,aAAa,OAAO,aAAa,yBAAQ,eAAe;AAC9D,UAAI,YAAY;AACd,cAAM,OAAO,KAAK,UAAU,KAAK,YAAQ,+BAAe,UAAU;AAElE,cAAM,SAAS,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,OAAO,GAAG;AAC3D,aAAK,QAAQ;AACb,iBAAS;AAET,YAAI,KAAK,OAAO,KAAK,KAAK;AAAQ;AAElC,cAAM,YAAY,OAAO,aAAa,yBAAQ,cAAc;AAC5D,cAAM,eAAe,OAAO,UAAU,yBAAQ,gBAAgB;AAC9D,cAAM,cAAc,aAAa,YAAY;AAE7C,cAAM,YAAY,KAAK,SAAS,cAAc,eAAe,SAAS,IAAI;AAC1E,gBAAQ,cAAc,KAAK,SAAS,eAAe,SAAS,IAAI;AAChE,iBAAS,eAAe,KAAK,SAAS,GAAG,YAAY,IAAI;AACzD,kBAAU,MAAM,KAAK,KAAK,QAAQ;AAAA,MACpC;AAEA,YAAM,SAA4B;AAAA,QAChC,QAAQ,OAAO,UAAU,yBAAQ,SAAS;AAAA,QAC1C,QAAQ,OAAO,aAAa,yBAAQ,UAAU;AAAA,QAC9C,UAAU,OAAO,aAAa,yBAAQ,YAAY;AAAA,QAClD,KAAK,OAAO,gBAAgB,yBAAQ,OAAO;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,YAAM,QAAQ,OAAO,UAAU,yBAAQ,QAAQ;AAC/C,YAAM,WAAW,OAAO,UAAU,yBAAQ,YAAY;AACtD,yBAAAA,QAAO,MAAM,OAAO,uBAAM,UAAU,yBAAyB;AAC7D,yBAAAA,QAAO,MAAM,UAAU,2BAAU,KAAK,6BAA6B;AAEnE,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,UAAU,MAAM;AAAA,IACvB;AAAA,EACF;AACF;",
5
+ "names": ["assert"]
6
+ }
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ export interface RawIncomingPacket {
3
+ readonly opcode: number;
4
+ readonly status: number;
5
+ readonly sequence: number;
6
+ readonly cas: bigint;
7
+ readonly extras: Buffer;
8
+ readonly key: Buffer;
9
+ readonly value: Buffer;
10
+ recycle: () => void;
11
+ }
12
+ export declare class Decoder {
13
+ #private;
14
+ constructor(consumer: (packet: RawIncomingPacket) => void);
15
+ append(buffer: Buffer, start: number, end: number): void;
16
+ }