roomzin-js 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/LICENSE +68 -0
  2. package/README.md +467 -0
  3. package/dist/api/client.d.ts +86 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +3 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/cluster/api.d.ts +34 -0
  8. package/dist/cluster/api.d.ts.map +1 -0
  9. package/dist/cluster/api.js +250 -0
  10. package/dist/cluster/api.js.map +1 -0
  11. package/dist/cluster/config.d.ts +30 -0
  12. package/dist/cluster/config.d.ts.map +1 -0
  13. package/dist/cluster/config.js +86 -0
  14. package/dist/cluster/config.js.map +1 -0
  15. package/dist/cluster/index.d.ts +3 -0
  16. package/dist/cluster/index.d.ts.map +1 -0
  17. package/dist/cluster/index.js +21 -0
  18. package/dist/cluster/index.js.map +1 -0
  19. package/dist/index.d.ts +5 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +21 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/internal/cluster/handler.d.ts +60 -0
  24. package/dist/internal/cluster/handler.d.ts.map +1 -0
  25. package/dist/internal/cluster/handler.js +589 -0
  26. package/dist/internal/cluster/handler.js.map +1 -0
  27. package/dist/internal/cluster/httputil.d.ts +25 -0
  28. package/dist/internal/cluster/httputil.d.ts.map +1 -0
  29. package/dist/internal/cluster/httputil.js +193 -0
  30. package/dist/internal/cluster/httputil.js.map +1 -0
  31. package/dist/internal/command/dec_room_avl.d.ts +5 -0
  32. package/dist/internal/command/dec_room_avl.d.ts.map +1 -0
  33. package/dist/internal/command/dec_room_avl.js +49 -0
  34. package/dist/internal/command/dec_room_avl.js.map +1 -0
  35. package/dist/internal/command/del_prop.d.ts +4 -0
  36. package/dist/internal/command/del_prop.d.ts.map +1 -0
  37. package/dist/internal/command/del_prop.js +43 -0
  38. package/dist/internal/command/del_prop.js.map +1 -0
  39. package/dist/internal/command/del_prop_day.d.ts +5 -0
  40. package/dist/internal/command/del_prop_day.d.ts.map +1 -0
  41. package/dist/internal/command/del_prop_day.js +47 -0
  42. package/dist/internal/command/del_prop_day.js.map +1 -0
  43. package/dist/internal/command/del_prop_room.d.ts +5 -0
  44. package/dist/internal/command/del_prop_room.d.ts.map +1 -0
  45. package/dist/internal/command/del_prop_room.js +46 -0
  46. package/dist/internal/command/del_prop_room.js.map +1 -0
  47. package/dist/internal/command/del_room_day.d.ts +5 -0
  48. package/dist/internal/command/del_room_day.d.ts.map +1 -0
  49. package/dist/internal/command/del_room_day.js +47 -0
  50. package/dist/internal/command/del_room_day.js.map +1 -0
  51. package/dist/internal/command/del_segment.d.ts +4 -0
  52. package/dist/internal/command/del_segment.d.ts.map +1 -0
  53. package/dist/internal/command/del_segment.js +43 -0
  54. package/dist/internal/command/del_segment.js.map +1 -0
  55. package/dist/internal/command/get_codecs.d.ts +5 -0
  56. package/dist/internal/command/get_codecs.d.ts.map +1 -0
  57. package/dist/internal/command/get_codecs.js +38 -0
  58. package/dist/internal/command/get_codecs.js.map +1 -0
  59. package/dist/internal/command/get_prop_room_day.d.ts +7 -0
  60. package/dist/internal/command/get_prop_room_day.d.ts.map +1 -0
  61. package/dist/internal/command/get_prop_room_day.js +59 -0
  62. package/dist/internal/command/get_prop_room_day.js.map +1 -0
  63. package/dist/internal/command/get_segments.d.ts +5 -0
  64. package/dist/internal/command/get_segments.d.ts.map +1 -0
  65. package/dist/internal/command/get_segments.js +47 -0
  66. package/dist/internal/command/get_segments.js.map +1 -0
  67. package/dist/internal/command/inc_room_avl.d.ts +5 -0
  68. package/dist/internal/command/inc_room_avl.d.ts.map +1 -0
  69. package/dist/internal/command/inc_room_avl.js +46 -0
  70. package/dist/internal/command/inc_room_avl.js.map +1 -0
  71. package/dist/internal/command/index.d.ts +20 -0
  72. package/dist/internal/command/index.d.ts.map +1 -0
  73. package/dist/internal/command/index.js +61 -0
  74. package/dist/internal/command/index.js.map +1 -0
  75. package/dist/internal/command/prop_exist.d.ts +4 -0
  76. package/dist/internal/command/prop_exist.d.ts.map +1 -0
  77. package/dist/internal/command/prop_exist.js +43 -0
  78. package/dist/internal/command/prop_exist.js.map +1 -0
  79. package/dist/internal/command/prop_room_date_list.d.ts +5 -0
  80. package/dist/internal/command/prop_room_date_list.d.ts.map +1 -0
  81. package/dist/internal/command/prop_room_date_list.js +50 -0
  82. package/dist/internal/command/prop_room_date_list.js.map +1 -0
  83. package/dist/internal/command/prop_room_exist.d.ts +5 -0
  84. package/dist/internal/command/prop_room_exist.d.ts.map +1 -0
  85. package/dist/internal/command/prop_room_exist.js +44 -0
  86. package/dist/internal/command/prop_room_exist.js.map +1 -0
  87. package/dist/internal/command/prop_room_list.d.ts +4 -0
  88. package/dist/internal/command/prop_room_list.d.ts.map +1 -0
  89. package/dist/internal/command/prop_room_list.js +45 -0
  90. package/dist/internal/command/prop_room_list.js.map +1 -0
  91. package/dist/internal/command/search_avail.d.ts +7 -0
  92. package/dist/internal/command/search_avail.d.ts.map +1 -0
  93. package/dist/internal/command/search_avail.js +129 -0
  94. package/dist/internal/command/search_avail.js.map +1 -0
  95. package/dist/internal/command/search_prop.d.ts +5 -0
  96. package/dist/internal/command/search_prop.d.ts.map +1 -0
  97. package/dist/internal/command/search_prop.js +73 -0
  98. package/dist/internal/command/search_prop.js.map +1 -0
  99. package/dist/internal/command/set_prop.d.ts +5 -0
  100. package/dist/internal/command/set_prop.d.ts.map +1 -0
  101. package/dist/internal/command/set_prop.js +47 -0
  102. package/dist/internal/command/set_prop.js.map +1 -0
  103. package/dist/internal/command/set_room_avl.d.ts +5 -0
  104. package/dist/internal/command/set_room_avl.d.ts.map +1 -0
  105. package/dist/internal/command/set_room_avl.js +46 -0
  106. package/dist/internal/command/set_room_avl.js.map +1 -0
  107. package/dist/internal/command/set_room_pkg.d.ts +5 -0
  108. package/dist/internal/command/set_room_pkg.d.ts.map +1 -0
  109. package/dist/internal/command/set_room_pkg.js +76 -0
  110. package/dist/internal/command/set_room_pkg.js.map +1 -0
  111. package/dist/internal/err.d.ts +16 -0
  112. package/dist/internal/err.d.ts.map +1 -0
  113. package/dist/internal/err.js +39 -0
  114. package/dist/internal/err.js.map +1 -0
  115. package/dist/internal/protocol/frame.d.ts +6 -0
  116. package/dist/internal/protocol/frame.d.ts.map +1 -0
  117. package/dist/internal/protocol/frame.js +118 -0
  118. package/dist/internal/protocol/frame.js.map +1 -0
  119. package/dist/internal/protocol/helpers.d.ts +8 -0
  120. package/dist/internal/protocol/helpers.d.ts.map +1 -0
  121. package/dist/internal/protocol/helpers.js +101 -0
  122. package/dist/internal/protocol/helpers.js.map +1 -0
  123. package/dist/internal/protocol/login.d.ts +2 -0
  124. package/dist/internal/protocol/login.d.ts.map +1 -0
  125. package/dist/internal/protocol/login.js +30 -0
  126. package/dist/internal/protocol/login.js.map +1 -0
  127. package/dist/internal/protocol/types.d.ts +19 -0
  128. package/dist/internal/protocol/types.d.ts.map +1 -0
  129. package/dist/internal/protocol/types.js +8 -0
  130. package/dist/internal/protocol/types.js.map +1 -0
  131. package/dist/internal/single/handler.d.ts +30 -0
  132. package/dist/internal/single/handler.d.ts.map +1 -0
  133. package/dist/internal/single/handler.js +197 -0
  134. package/dist/internal/single/handler.js.map +1 -0
  135. package/dist/single/api.d.ts +38 -0
  136. package/dist/single/api.d.ts.map +1 -0
  137. package/dist/single/api.js +240 -0
  138. package/dist/single/api.js.map +1 -0
  139. package/dist/single/config.d.ts +21 -0
  140. package/dist/single/config.d.ts.map +1 -0
  141. package/dist/single/config.js +64 -0
  142. package/dist/single/config.js.map +1 -0
  143. package/dist/single/index.d.ts +3 -0
  144. package/dist/single/index.d.ts.map +1 -0
  145. package/dist/single/index.js +21 -0
  146. package/dist/single/index.js.map +1 -0
  147. package/dist/types/codecs.d.ts +5 -0
  148. package/dist/types/codecs.d.ts.map +1 -0
  149. package/dist/types/codecs.js +16 -0
  150. package/dist/types/codecs.js.map +1 -0
  151. package/dist/types/discovery.d.ts +7 -0
  152. package/dist/types/discovery.d.ts.map +1 -0
  153. package/dist/types/discovery.js +3 -0
  154. package/dist/types/discovery.js.map +1 -0
  155. package/dist/types/err.d.ts +20 -0
  156. package/dist/types/err.d.ts.map +1 -0
  157. package/dist/types/err.js +38 -0
  158. package/dist/types/err.js.map +1 -0
  159. package/dist/types/index.d.ts +5 -0
  160. package/dist/types/index.d.ts.map +1 -0
  161. package/dist/types/index.js +21 -0
  162. package/dist/types/index.js.map +1 -0
  163. package/dist/types/request.d.ts +94 -0
  164. package/dist/types/request.d.ts.map +1 -0
  165. package/dist/types/request.js +207 -0
  166. package/dist/types/request.js.map +1 -0
  167. package/dist/types/response.d.ts +22 -0
  168. package/dist/types/response.d.ts.map +1 -0
  169. package/dist/types/response.js +3 -0
  170. package/dist/types/response.js.map +1 -0
  171. package/package.json +34 -0
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prependHeader = prependHeader;
4
+ exports.drainFrame = drainFrame;
5
+ exports.parseFields = parseFields;
6
+ exports.readFull = readFull;
7
+ const err_1 = require("../err");
8
+ // PrependHeader takes the already-serialised payload (status string + fields)
9
+ // and returns a complete frame ready to write to the server:
10
+ // | magic(1) | clrid(4) | totalLen(4) | payload |
11
+ // totalLen == len(payload)
12
+ function prependHeader(clrID, payload) {
13
+ const totalLen = payload.length;
14
+ const out = Buffer.alloc(9 + totalLen);
15
+ out[0] = 0xFF; // magic byte
16
+ out.writeUInt32LE(clrID, 1); // clrID at position 1-4
17
+ out.writeUInt32LE(totalLen, 5); // totalLen at position 5-8
18
+ payload.copy(out, 9); // payload at position 9+
19
+ return out;
20
+ }
21
+ // DrainFrame reads a full frame and returns header + raw payload.
22
+ // The payload starts at [statusLen][status][fieldCount]...fields
23
+ async function drainFrame(stream) {
24
+ const fix = Buffer.alloc(9);
25
+ // Read the fixed header (9 bytes)
26
+ await readFull(stream, fix);
27
+ // Frame layout: [0xFF][ClrID:4][payloadLen:4]
28
+ if (fix[0] !== 0xFF) {
29
+ throw (0, err_1.RzError)(`bad magic byte: got 0x${fix[0].toString(16).padStart(2, '0')}`);
30
+ }
31
+ const clrID = fix.readUInt32LE(1);
32
+ const payloadLen = fix.readUInt32LE(5);
33
+ // Read the payload
34
+ const payload = Buffer.alloc(payloadLen);
35
+ await readFull(stream, payload);
36
+ if (payload.length < 1) {
37
+ throw (0, err_1.RzError)("short frame: no statusLen");
38
+ }
39
+ const statusLen = payload[0];
40
+ if (payload.length < 1 + statusLen + 2) {
41
+ throw (0, err_1.RzError)("short frame: missing status or fieldCount");
42
+ }
43
+ const status = payload.toString('utf8', 1, 1 + statusLen);
44
+ const fieldCnt = payload.readUInt16LE(1 + statusLen);
45
+ const header = {
46
+ clrID,
47
+ status,
48
+ fieldCnt
49
+ };
50
+ return [header, payload];
51
+ }
52
+ // ParseFields decodes the flat field array from payload.
53
+ // The slice must start at the first field (not status).
54
+ function parseFields(data, fieldCount) {
55
+ const fields = [];
56
+ let offset = 0;
57
+ for (let i = 0; i < fieldCount; i++) {
58
+ if (offset + 7 > data.length) {
59
+ throw (0, err_1.RzError)(`short frame: not enough bytes for field header at field ${i}`);
60
+ }
61
+ const id = data.readUInt16LE(offset);
62
+ const fieldType = data[offset + 2];
63
+ const length = data.readUInt32LE(offset + 3);
64
+ offset += 7;
65
+ if (offset + length > data.length) {
66
+ throw (0, err_1.RzError)(`short frame: not enough data for field payload (field ${i}, need ${length}, have ${data.length - offset})`);
67
+ }
68
+ const fieldData = Buffer.from(data.subarray(offset, offset + length));
69
+ fields.push({
70
+ id,
71
+ fieldType,
72
+ data: fieldData
73
+ });
74
+ offset += length;
75
+ }
76
+ // Rust version enforces: all fields must be consumed
77
+ if (offset !== data.length) {
78
+ throw (0, err_1.RzError)(`extra ${data.length - offset} bytes after parsing fields`);
79
+ }
80
+ return fields;
81
+ }
82
+ // Helper function to read exact number of bytes from stream
83
+ function readFull(stream, buffer) {
84
+ return new Promise((resolve, reject) => {
85
+ let bytesRead = 0;
86
+ const readChunk = () => {
87
+ const chunk = stream.read(buffer.length - bytesRead);
88
+ if (chunk) {
89
+ chunk.copy(buffer, bytesRead);
90
+ bytesRead += chunk.length;
91
+ if (bytesRead === buffer.length) {
92
+ stream.removeListener('readable', readChunk);
93
+ stream.removeListener('error', onError);
94
+ stream.removeListener('end', onEnd);
95
+ resolve();
96
+ }
97
+ }
98
+ };
99
+ const onError = (error) => {
100
+ stream.removeListener('readable', readChunk);
101
+ stream.removeListener('end', onEnd);
102
+ reject(error);
103
+ };
104
+ const onEnd = () => {
105
+ stream.removeListener('readable', readChunk);
106
+ stream.removeListener('error', onError);
107
+ if (bytesRead < buffer.length) {
108
+ reject(new Error('stream ended before reading required bytes'));
109
+ }
110
+ };
111
+ stream.on('readable', readChunk);
112
+ stream.on('error', onError);
113
+ stream.on('end', onEnd);
114
+ // Trigger initial read
115
+ readChunk();
116
+ });
117
+ }
118
+ //# sourceMappingURL=frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../src/internal/protocol/frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Codecs } from '../../types/codecs';
2
+ export declare function bitmaskToRateFeatureStrings(codecs: Codecs | null, mask: number): string[];
3
+ export declare function u16ToDate(packed: number): string;
4
+ export declare function makeF64(v: number): Buffer;
5
+ export declare function makeU64(v: number): Buffer;
6
+ export declare function makeU32(v: number): Buffer;
7
+ export declare function bytesToPropertyID(data: Buffer): string;
8
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/internal/protocol/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAYzF;AAGD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBhD;AAGD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIzC;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIzC;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIzC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiDtD"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bitmaskToRateFeatureStrings = bitmaskToRateFeatureStrings;
4
+ exports.u16ToDate = u16ToDate;
5
+ exports.makeF64 = makeF64;
6
+ exports.makeU64 = makeU64;
7
+ exports.makeU32 = makeU32;
8
+ exports.bytesToPropertyID = bytesToPropertyID;
9
+ const err_1 = require("../err");
10
+ // bitmaskToRateFeatureStrings converts 24-bit mask → string[] (matches Rust bitmask_to_rate_feature_string)
11
+ function bitmaskToRateFeatureStrings(codecs, mask) {
12
+ if (!codecs || !codecs.rateFeatures) {
13
+ return [];
14
+ }
15
+ const out = [];
16
+ for (let i = 0; i < 24 && i < codecs.rateFeatures.length; i++) {
17
+ if (mask & (1 << i)) {
18
+ out.push(codecs.rateFeatures[i]);
19
+ }
20
+ }
21
+ return out;
22
+ }
23
+ // u16ToDate unpacks the 16-bit packed date (same bit layout as Rust)
24
+ function u16ToDate(packed) {
25
+ const yearOffset = (packed >> 9) & 0b111; // 0-7
26
+ const month = ((packed >> 5) & 0b1111) + 1; // 1-12
27
+ const day = (packed & 0b11111) + 1; // 1-31
28
+ const baseYear = new Date().getFullYear();
29
+ // Use the UTC constructor overload
30
+ const date = new Date(Date.UTC(baseYear + yearOffset, month - 1, day, 0, 0, 0, 0));
31
+ // validation (UTC values)
32
+ if (date.getUTCMonth() + 1 !== month || date.getUTCDate() !== day) {
33
+ throw (0, err_1.RzError)('invalid packed date');
34
+ }
35
+ // ISO string is already UTC, just drop the time part
36
+ return date.toISOString().split('T')[0];
37
+ }
38
+ function makeF64(v) {
39
+ const buf = Buffer.alloc(8);
40
+ buf.writeDoubleLE(v);
41
+ return buf;
42
+ }
43
+ function makeU64(v) {
44
+ const buf = Buffer.alloc(8);
45
+ buf.writeBigUInt64LE(BigInt(v));
46
+ return buf;
47
+ }
48
+ function makeU32(v) {
49
+ const buf = Buffer.alloc(4);
50
+ buf.writeUInt32LE(v);
51
+ return buf;
52
+ }
53
+ function bytesToPropertyID(data) {
54
+ // 1. Too short → return empty
55
+ if (data.length < 7) {
56
+ return "";
57
+ }
58
+ // 2. Short string marker
59
+ if (data[6] === 0xF0) {
60
+ // Left segment: 0..5
61
+ let leftLen = 0;
62
+ for (let i = 0; i < 6; i++) {
63
+ if (i >= data.length || data[i] === 0)
64
+ break;
65
+ leftLen++;
66
+ }
67
+ // Right segment: 7..15
68
+ let rightLen = 0;
69
+ for (let i = 7; i < data.length; i++) {
70
+ if (data[i] === 0)
71
+ break;
72
+ rightLen++;
73
+ }
74
+ const result = Buffer.alloc(leftLen + rightLen);
75
+ data.copy(result, 0, 0, leftLen);
76
+ data.copy(result, leftLen, 7, 7 + rightLen);
77
+ return result.toString('utf8');
78
+ }
79
+ // 3. UUID detection (valid version)
80
+ const version = (data[6] & 0xF0) >> 4;
81
+ if ([1, 2, 3, 4, 5, 7].includes(version)) {
82
+ const uuidBytes = Buffer.alloc(16);
83
+ if (data.length >= 16) {
84
+ data.copy(uuidBytes, 0, 0, 16);
85
+ }
86
+ else {
87
+ data.copy(uuidBytes, 0); // pad remaining with zeros
88
+ }
89
+ try {
90
+ // Convert to UUID string format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
91
+ const hex = uuidBytes.toString('hex');
92
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
93
+ }
94
+ catch {
95
+ // Invalid UUID, fall through
96
+ }
97
+ }
98
+ // This should never happen with proper server data
99
+ return "";
100
+ }
101
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/internal/protocol/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function buildLoginPayload(token: string): Buffer;
2
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/internal/protocol/login.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgCvD"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildLoginPayload = buildLoginPayload;
4
+ function buildLoginPayload(token) {
5
+ const cmdName = "LOGIN";
6
+ // Calculate total size to pre-allocate Buffer
7
+ const totalSize = 1 + cmdName.length + 2 + 2 + 1 + 4 + token.length;
8
+ const buf = Buffer.alloc(totalSize);
9
+ let offset = 0;
10
+ // Write command name length and name
11
+ buf.writeUInt8(cmdName.length, offset);
12
+ offset += 1;
13
+ buf.write(cmdName, offset, 'utf8');
14
+ offset += cmdName.length;
15
+ // Write field count (1 field)
16
+ buf.writeUInt16LE(1, offset);
17
+ offset += 2;
18
+ // Write field ID (2 bytes)
19
+ buf.writeUInt16LE(0x01, offset);
20
+ offset += 2;
21
+ // Write field type (string = 0x01)
22
+ buf.writeUInt8(0x01, offset);
23
+ offset += 1;
24
+ // Write token length and token
25
+ buf.writeUInt32LE(token.length, offset);
26
+ offset += 4;
27
+ buf.write(token, offset, 'utf8');
28
+ return buf;
29
+ }
30
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/internal/protocol/login.ts"],"names":[],"mappings":";;AAAA,8CAgCC;AAhCD,SAAgB,iBAAiB,CAAC,KAAa;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC;IAExB,8CAA8C;IAC9C,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACpE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,qCAAqC;IACrC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,CAAC,CAAC;IACZ,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAEzB,8BAA8B;IAC9B,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,IAAI,CAAC,CAAC;IAEZ,2BAA2B;IAC3B,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,IAAI,CAAC,CAAC;IAEZ,mCAAmC;IACnC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,IAAI,CAAC,CAAC;IAEZ,+BAA+B;IAC/B,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,IAAI,CAAC,CAAC;IACZ,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare const ErrConnClosed: Error;
2
+ export declare const ErrTimeout: Error;
3
+ export declare const ErrShortFrame: Error;
4
+ export declare const ErrMissingMagic: Error;
5
+ export type Header = {
6
+ clrID: number;
7
+ status: string;
8
+ fieldCnt: number;
9
+ };
10
+ export type Field = {
11
+ id: number;
12
+ fieldType: number;
13
+ data: Buffer;
14
+ };
15
+ export type RawResult = {
16
+ status: string;
17
+ fields: Field[];
18
+ };
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/internal/protocol/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,OAAiC,CAAC;AAC5D,eAAO,MAAM,UAAU,OAAiC,CAAC;AACzD,eAAO,MAAM,aAAa,OAAgC,CAAC;AAC3D,eAAO,MAAM,eAAe,OAAkC,CAAC;AAE/D,MAAM,MAAM,MAAM,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrMissingMagic = exports.ErrShortFrame = exports.ErrTimeout = exports.ErrConnClosed = void 0;
4
+ exports.ErrConnClosed = new Error("connection closed");
5
+ exports.ErrTimeout = new Error("request timed out");
6
+ exports.ErrShortFrame = new Error("incomplete frame");
7
+ exports.ErrMissingMagic = new Error("missing magic byte");
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/internal/protocol/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC/C,QAAA,UAAU,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC5C,QAAA,aAAa,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC9C,QAAA,eAAe,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { RawResult } from '../protocol/types';
2
+ export interface SingleConfig {
3
+ addr: string;
4
+ tcpPort: number;
5
+ authToken: string;
6
+ timeout: number;
7
+ keepAlive: number;
8
+ }
9
+ export declare class SingleHandler {
10
+ private config;
11
+ private conn;
12
+ private nextId;
13
+ private mu;
14
+ private closed;
15
+ private demux;
16
+ private onReconnect?;
17
+ constructor(config: SingleConfig);
18
+ connect(): Promise<void>;
19
+ private reconnect;
20
+ private dial;
21
+ private handshake;
22
+ close(): Promise<void>;
23
+ nextID(): number;
24
+ roundTrip(clrId: number, payload: Buffer): Promise<RawResult>;
25
+ private startReadLoop;
26
+ private failAll;
27
+ private parseHost;
28
+ setOnReconnect(callback: () => void): void;
29
+ }
30
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/internal/single/handler.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6B,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGzE,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,EAAE,CAAe;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAkF;IAC/F,OAAO,CAAC,WAAW,CAAC,CAAa;gBAErB,MAAM,EAAE,YAAY;IAI1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAIhB,SAAS;IAkBvB,OAAO,CAAC,IAAI;IA6BZ,OAAO,CAAC,SAAS;IA4BX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B,MAAM,IAAI,MAAM;IAIV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAuCnE,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,SAAS;IAKjB,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;CAG7C"}
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SingleHandler = void 0;
7
+ // src/internal/single/handler.ts
8
+ const net_1 = __importDefault(require("net"));
9
+ const async_mutex_1 = require("async-mutex");
10
+ const login_1 = require("../protocol/login");
11
+ const frame_1 = require("../protocol/frame");
12
+ const frame_2 = require("../protocol/frame");
13
+ const types_1 = require("../protocol/types");
14
+ const err_1 = require("../err");
15
+ class SingleHandler {
16
+ constructor(config) {
17
+ this.conn = null;
18
+ this.nextId = 0;
19
+ this.mu = new async_mutex_1.Mutex();
20
+ this.closed = false;
21
+ this.demux = new Map();
22
+ this.config = config;
23
+ }
24
+ async connect() {
25
+ await this.reconnect();
26
+ }
27
+ async reconnect() {
28
+ const release = await this.mu.acquire();
29
+ try {
30
+ if (this.conn) {
31
+ this.conn.destroy();
32
+ this.conn = null;
33
+ }
34
+ const host = this.parseHost(this.config.addr);
35
+ const addr = `${host}:${this.config.tcpPort}`;
36
+ this.conn = await this.dial(addr);
37
+ this.startReadLoop();
38
+ }
39
+ finally {
40
+ release();
41
+ }
42
+ }
43
+ dial(addr) {
44
+ return new Promise((resolve, reject) => {
45
+ const socket = new net_1.default.Socket();
46
+ const timeout = setTimeout(() => {
47
+ socket.destroy();
48
+ reject(new Error('dial timeout'));
49
+ }, this.config.timeout);
50
+ socket.connect(this.config.tcpPort, this.parseHost(this.config.addr), () => clearTimeout(timeout));
51
+ socket.once('connect', async () => {
52
+ try {
53
+ await this.handshake(socket);
54
+ socket.setKeepAlive(true, this.config.keepAlive);
55
+ clearTimeout(timeout);
56
+ resolve(socket);
57
+ }
58
+ catch (err) {
59
+ socket.destroy();
60
+ reject(err);
61
+ }
62
+ });
63
+ socket.on('error', (err) => {
64
+ clearTimeout(timeout);
65
+ reject(err);
66
+ });
67
+ });
68
+ }
69
+ handshake(socket) {
70
+ return new Promise((resolve, reject) => {
71
+ const timer = setTimeout(() => reject(new Error('handshake timeout')), this.config.timeout);
72
+ const payload = (0, login_1.buildLoginPayload)(this.config.authToken);
73
+ const frame = (0, frame_1.prependHeader)(0, payload);
74
+ socket.write(frame);
75
+ const onData = (data) => {
76
+ clearTimeout(timer);
77
+ socket.removeListener('error', onError);
78
+ const resp = data.toString('utf8').trim();
79
+ if (resp === 'LOGIN OK') {
80
+ resolve();
81
+ }
82
+ else if (resp === 'LOGIN FAILED') {
83
+ reject(new Error('login failed: invalid token'));
84
+ }
85
+ else {
86
+ reject(new Error(`unexpected login reply: "${resp}"`));
87
+ }
88
+ };
89
+ const onError = (err) => {
90
+ clearTimeout(timer);
91
+ reject(err);
92
+ };
93
+ socket.once('data', onData);
94
+ socket.once('error', onError);
95
+ });
96
+ }
97
+ async close() {
98
+ const release = await this.mu.acquire();
99
+ try {
100
+ if (this.closed)
101
+ return;
102
+ this.closed = true;
103
+ if (this.conn)
104
+ this.conn.destroy();
105
+ for (const entry of this.demux.values()) {
106
+ clearTimeout(entry.timer);
107
+ entry.resolve({ status: '', fields: [] });
108
+ }
109
+ this.demux.clear();
110
+ }
111
+ finally {
112
+ release();
113
+ }
114
+ }
115
+ nextID() {
116
+ return ++this.nextId;
117
+ }
118
+ async roundTrip(clrId, payload) {
119
+ const release = await this.mu.acquire();
120
+ try {
121
+ if (this.closed)
122
+ throw (0, err_1.RzError)(types_1.ErrConnClosed);
123
+ // Self-heal: reconnect if connection is gone
124
+ if (!this.conn || this.conn.destroyed) {
125
+ release();
126
+ await this.reconnect();
127
+ return this.roundTrip(clrId, payload); // retry once
128
+ }
129
+ const ch = () => { };
130
+ const promise = new Promise((resolve) => {
131
+ const timer = setTimeout(() => {
132
+ this.demux.delete(clrId);
133
+ this.reconnect().catch(() => { });
134
+ resolve({ status: 'ERROR', fields: [] });
135
+ }, this.config.timeout);
136
+ this.demux.set(clrId, { resolve, timer });
137
+ });
138
+ const frame = (0, frame_1.prependHeader)(clrId, payload);
139
+ this.conn.write(frame, (err) => {
140
+ if (err) {
141
+ this.demux.delete(clrId);
142
+ this.reconnect().catch(() => { });
143
+ }
144
+ });
145
+ release();
146
+ return await promise;
147
+ }
148
+ catch (err) {
149
+ release();
150
+ throw (0, err_1.RzError)(err instanceof Error ? err : String(err));
151
+ }
152
+ }
153
+ startReadLoop() {
154
+ if (!this.conn)
155
+ return;
156
+ const loop = async () => {
157
+ try {
158
+ while (this.conn && !this.conn.destroyed && !this.closed) {
159
+ const [header, payload] = await (0, frame_1.drainFrame)(this.conn);
160
+ const fieldStart = 1 + header.status.length + 2;
161
+ const fields = (0, frame_2.parseFields)(payload.subarray(fieldStart), header.fieldCnt);
162
+ const entry = this.demux.get(header.clrID);
163
+ if (entry) {
164
+ clearTimeout(entry.timer);
165
+ entry.resolve({ status: header.status, fields });
166
+ this.demux.delete(header.clrID);
167
+ }
168
+ }
169
+ }
170
+ catch (err) {
171
+ // Connection died
172
+ this.failAll(err instanceof Error ? err : new Error('read error'));
173
+ if (this.onReconnect)
174
+ this.onReconnect();
175
+ }
176
+ };
177
+ loop();
178
+ }
179
+ failAll(err) {
180
+ for (const [id, entry] of this.demux) {
181
+ clearTimeout(entry.timer);
182
+ entry.resolve({ status: 'ERROR', fields: [] });
183
+ this.demux.delete(id);
184
+ }
185
+ if (this.onReconnect)
186
+ this.onReconnect();
187
+ }
188
+ parseHost(addr) {
189
+ const parts = addr.split(':');
190
+ return parts.length > 1 ? parts[0] : addr;
191
+ }
192
+ setOnReconnect(callback) {
193
+ this.onReconnect = callback;
194
+ }
195
+ }
196
+ exports.SingleHandler = SingleHandler;
197
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/internal/single/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Config } from './config';
2
+ import type { CacheClientAPI } from '../api/client';
3
+ import type { Codecs } from '../types/codecs';
4
+ import { DelPropDayRequest, DelPropRoomPayload, DelRoomDayRequest, GetRoomDayRequest, PropRoomDateListPayload, PropRoomExistPayload, SearchAvailPayload, SearchPropPayload, SetPropPayload, SetRoomPkgPayload, UpdRoomAvlPayload } from '../types/request';
5
+ export declare class Client implements CacheClientAPI {
6
+ private handler;
7
+ private codecs;
8
+ private closed;
9
+ private nextClrId;
10
+ private constructor();
11
+ static create(cfg: Config): Promise<Client>;
12
+ private nextID;
13
+ private roundTrip;
14
+ private fetchCodecs;
15
+ private getCodecsInternal;
16
+ getCodecs(): Promise<Codecs>;
17
+ private assertOk;
18
+ setProp(p: SetPropPayload): Promise<void>;
19
+ searchProp(p: SearchPropPayload): Promise<string[]>;
20
+ searchAvail(p: SearchAvailPayload): Promise<any[]>;
21
+ setRoomPkg(p: SetRoomPkgPayload): Promise<void>;
22
+ setRoomAvl(p: UpdRoomAvlPayload): Promise<number>;
23
+ incRoomAvl(p: UpdRoomAvlPayload): Promise<number>;
24
+ decRoomAvl(p: UpdRoomAvlPayload): Promise<number>;
25
+ propExist(propertyID: string): Promise<boolean>;
26
+ propRoomExist(p: PropRoomExistPayload): Promise<boolean>;
27
+ propRoomList(propertyID: string): Promise<string[]>;
28
+ propRoomDateList(p: PropRoomDateListPayload): Promise<string[]>;
29
+ delProp(propertyID: string): Promise<void>;
30
+ delSegment(segment: string): Promise<void>;
31
+ delPropDay(p: DelPropDayRequest): Promise<void>;
32
+ delPropRoom(p: DelPropRoomPayload): Promise<void>;
33
+ delRoomDay(p: DelRoomDayRequest): Promise<void>;
34
+ getPropRoomDay(p: GetRoomDayRequest): Promise<any>;
35
+ getSegments(): Promise<any[]>;
36
+ close(): Promise<void>;
37
+ }
38
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/single/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA4C9C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAwM,MAAM,kBAAkB,CAAC;AAIjc,qBAAa,MAAO,YAAW,cAAc;IACzC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO;WAIM,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBjD,OAAO,CAAC,MAAM;YAIA,SAAS;YAMT,WAAW;YASX,iBAAiB;IASzB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC,OAAO,CAAC,QAAQ;IAYV,OAAO,CAAC,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzC,UAAU,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWnD,WAAW,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAWlD,UAAU,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,UAAU,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjD,UAAU,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjD,UAAU,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ/C,aAAa,CAAC,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQnD,gBAAgB,CAAC,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU/D,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1C,UAAU,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,WAAW,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,UAAU,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,cAAc,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAWlD,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAO7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}