jooby-codec 2.13.0 → 2.14.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 (144) hide show
  1. package/dist/analog/Command.js +2 -4
  2. package/dist/analog/Command.js.map +1 -1
  3. package/dist/analog/CommandBinaryBuffer.d.ts +4 -4
  4. package/dist/analog/CommandBinaryBuffer.js +7 -4
  5. package/dist/analog/CommandBinaryBuffer.js.map +1 -1
  6. package/dist/analog/commands/downlink/GetParameter.js +8 -0
  7. package/dist/analog/commands/downlink/GetParameter.js.map +1 -1
  8. package/dist/analog/message.d.ts +8 -0
  9. package/dist/analog/message.js +6 -12
  10. package/dist/analog/message.js.map +1 -1
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/mtx/Command.d.ts +28 -0
  15. package/dist/mtx/Command.js +30 -0
  16. package/dist/mtx/Command.js.map +1 -0
  17. package/dist/mtx/CommandBinaryBuffer.d.ts +167 -0
  18. package/dist/mtx/CommandBinaryBuffer.js +332 -0
  19. package/dist/mtx/CommandBinaryBuffer.js.map +1 -0
  20. package/dist/mtx/UnknownCommand.d.ts +13 -0
  21. package/dist/mtx/UnknownCommand.js +17 -0
  22. package/dist/mtx/UnknownCommand.js.map +1 -0
  23. package/dist/mtx/commands/downlink/ActivateRatePlan.d.ts +18 -0
  24. package/dist/mtx/commands/downlink/ActivateRatePlan.js +55 -0
  25. package/dist/mtx/commands/downlink/ActivateRatePlan.js.map +1 -0
  26. package/dist/mtx/commands/downlink/GetDateTime.d.ts +12 -0
  27. package/dist/mtx/commands/downlink/GetDateTime.js +30 -0
  28. package/dist/mtx/commands/downlink/GetDateTime.js.map +1 -0
  29. package/dist/mtx/commands/downlink/GetDisplayParam.d.ts +16 -0
  30. package/dist/mtx/commands/downlink/GetDisplayParam.js +38 -0
  31. package/dist/mtx/commands/downlink/GetDisplayParam.js.map +1 -0
  32. package/dist/mtx/commands/downlink/GetOpParams.d.ts +12 -0
  33. package/dist/mtx/commands/downlink/GetOpParams.js +30 -0
  34. package/dist/mtx/commands/downlink/GetOpParams.js.map +1 -0
  35. package/dist/mtx/commands/downlink/GetRatePlanInfo.d.ts +16 -0
  36. package/dist/mtx/commands/downlink/GetRatePlanInfo.js +38 -0
  37. package/dist/mtx/commands/downlink/GetRatePlanInfo.js.map +1 -0
  38. package/dist/mtx/commands/downlink/SetDisplayParam.d.ts +17 -0
  39. package/dist/mtx/commands/downlink/SetDisplayParam.js +54 -0
  40. package/dist/mtx/commands/downlink/SetDisplayParam.js.map +1 -0
  41. package/dist/mtx/commands/downlink/SetOpParams.d.ts +14 -0
  42. package/dist/mtx/commands/downlink/SetOpParams.js +47 -0
  43. package/dist/mtx/commands/downlink/SetOpParams.js.map +1 -0
  44. package/dist/mtx/commands/downlink/TurnRelayOff.d.ts +12 -0
  45. package/dist/mtx/commands/downlink/TurnRelayOff.js +30 -0
  46. package/dist/mtx/commands/downlink/TurnRelayOff.js.map +1 -0
  47. package/dist/mtx/commands/downlink/TurnRelayOn.d.ts +12 -0
  48. package/dist/mtx/commands/downlink/TurnRelayOn.js +30 -0
  49. package/dist/mtx/commands/downlink/TurnRelayOn.js.map +1 -0
  50. package/dist/mtx/commands/downlink/index.d.ts +9 -0
  51. package/dist/mtx/commands/downlink/index.js +10 -0
  52. package/dist/mtx/commands/downlink/index.js.map +1 -0
  53. package/dist/mtx/commands/index.d.ts +2 -0
  54. package/dist/mtx/commands/index.js +3 -0
  55. package/dist/mtx/commands/index.js.map +1 -0
  56. package/dist/mtx/commands/uplink/ActivateRatePlanResponse.d.ts +12 -0
  57. package/dist/mtx/commands/uplink/ActivateRatePlanResponse.js +30 -0
  58. package/dist/mtx/commands/uplink/ActivateRatePlanResponse.js.map +1 -0
  59. package/dist/mtx/commands/uplink/ErrorResponse.d.ts +17 -0
  60. package/dist/mtx/commands/uplink/ErrorResponse.js +47 -0
  61. package/dist/mtx/commands/uplink/ErrorResponse.js.map +1 -0
  62. package/dist/mtx/commands/uplink/GetDateTimeResponse.d.ts +14 -0
  63. package/dist/mtx/commands/uplink/GetDateTimeResponse.js +47 -0
  64. package/dist/mtx/commands/uplink/GetDateTimeResponse.js.map +1 -0
  65. package/dist/mtx/commands/uplink/GetDisplayParamResponse.d.ts +17 -0
  66. package/dist/mtx/commands/uplink/GetDisplayParamResponse.js +54 -0
  67. package/dist/mtx/commands/uplink/GetDisplayParamResponse.js.map +1 -0
  68. package/dist/mtx/commands/uplink/GetOpParamsResponse.d.ts +14 -0
  69. package/dist/mtx/commands/uplink/GetOpParamsResponse.js +47 -0
  70. package/dist/mtx/commands/uplink/GetOpParamsResponse.js.map +1 -0
  71. package/dist/mtx/commands/uplink/GetRatePlanInfoResponse.d.ts +19 -0
  72. package/dist/mtx/commands/uplink/GetRatePlanInfoResponse.js +70 -0
  73. package/dist/mtx/commands/uplink/GetRatePlanInfoResponse.js.map +1 -0
  74. package/dist/mtx/commands/uplink/SetDisplayParamResponse.d.ts +12 -0
  75. package/dist/mtx/commands/uplink/SetDisplayParamResponse.js +30 -0
  76. package/dist/mtx/commands/uplink/SetDisplayParamResponse.js.map +1 -0
  77. package/dist/mtx/commands/uplink/SetOpParamsResponse.d.ts +12 -0
  78. package/dist/mtx/commands/uplink/SetOpParamsResponse.js +30 -0
  79. package/dist/mtx/commands/uplink/SetOpParamsResponse.js.map +1 -0
  80. package/dist/mtx/commands/uplink/TurnRelayOffResponse.d.ts +12 -0
  81. package/dist/mtx/commands/uplink/TurnRelayOffResponse.js +30 -0
  82. package/dist/mtx/commands/uplink/TurnRelayOffResponse.js.map +1 -0
  83. package/dist/mtx/commands/uplink/TurnRelayOnResponse.d.ts +12 -0
  84. package/dist/mtx/commands/uplink/TurnRelayOnResponse.js +30 -0
  85. package/dist/mtx/commands/uplink/TurnRelayOnResponse.js.map +1 -0
  86. package/dist/mtx/commands/uplink/index.d.ts +10 -0
  87. package/dist/mtx/commands/uplink/index.js +11 -0
  88. package/dist/mtx/commands/uplink/index.js.map +1 -0
  89. package/dist/mtx/constants/accessLevels.d.ts +5 -0
  90. package/dist/mtx/constants/accessLevels.js +6 -0
  91. package/dist/mtx/constants/accessLevels.js.map +1 -0
  92. package/dist/mtx/constants/directions.d.ts +3 -0
  93. package/dist/mtx/constants/directions.js +4 -0
  94. package/dist/mtx/constants/directions.js.map +1 -0
  95. package/dist/mtx/constants/frameAttributes.d.ts +3 -0
  96. package/dist/mtx/constants/frameAttributes.js +4 -0
  97. package/dist/mtx/constants/frameAttributes.js.map +1 -0
  98. package/dist/mtx/constants/frameTypes.d.ts +13 -0
  99. package/dist/mtx/constants/frameTypes.js +14 -0
  100. package/dist/mtx/constants/frameTypes.js.map +1 -0
  101. package/dist/mtx/constants/index.d.ts +9 -0
  102. package/dist/mtx/constants/index.js +10 -0
  103. package/dist/mtx/constants/index.js.map +1 -0
  104. package/dist/mtx/constants/resultCodes.d.ts +25 -0
  105. package/dist/mtx/constants/resultCodes.js +26 -0
  106. package/dist/mtx/constants/resultCodes.js.map +1 -0
  107. package/dist/mtx/constants/resultNames.d.ts +2 -0
  108. package/dist/mtx/constants/resultNames.js +4 -0
  109. package/dist/mtx/constants/resultNames.js.map +1 -0
  110. package/dist/mtx/constants/screenIds.d.ts +22 -0
  111. package/dist/mtx/constants/screenIds.js +23 -0
  112. package/dist/mtx/constants/screenIds.js.map +1 -0
  113. package/dist/mtx/constants/screenNames.d.ts +2 -0
  114. package/dist/mtx/constants/screenNames.js +4 -0
  115. package/dist/mtx/constants/screenNames.js.map +1 -0
  116. package/dist/mtx/constants/screenSets.d.ts +2 -0
  117. package/dist/mtx/constants/screenSets.js +28 -0
  118. package/dist/mtx/constants/screenSets.js.map +1 -0
  119. package/dist/mtx/index.d.ts +4 -0
  120. package/dist/mtx/index.js +5 -0
  121. package/dist/mtx/index.js.map +1 -0
  122. package/dist/mtx/message.d.ts +50 -0
  123. package/dist/mtx/message.js +138 -0
  124. package/dist/mtx/message.js.map +1 -0
  125. package/dist/mtx/utils/crypto.d.ts +10 -0
  126. package/dist/mtx/utils/crypto.js +111 -0
  127. package/dist/mtx/utils/crypto.js.map +1 -0
  128. package/dist/mtx/utils/index.d.ts +1 -0
  129. package/dist/mtx/utils/index.js +2 -0
  130. package/dist/mtx/utils/index.js.map +1 -0
  131. package/dist/obis-observer/Command.js +2 -4
  132. package/dist/obis-observer/Command.js.map +1 -1
  133. package/dist/obis-observer/commands/downlink/UpdateImageWrite.js +2 -4
  134. package/dist/obis-observer/commands/downlink/UpdateImageWrite.js.map +1 -1
  135. package/dist/obis-observer/message.d.ts +8 -0
  136. package/dist/obis-observer/message.js +5 -11
  137. package/dist/obis-observer/message.js.map +1 -1
  138. package/dist/utils/index.d.ts +1 -0
  139. package/dist/utils/index.js +1 -0
  140. package/dist/utils/index.js.map +1 -1
  141. package/dist/utils/mergeUint8Arrays.d.ts +2 -0
  142. package/dist/utils/mergeUint8Arrays.js +11 -0
  143. package/dist/utils/mergeUint8Arrays.js.map +1 -0
  144. package/package.json +9 -1
@@ -0,0 +1,28 @@
1
+ import * as screenIds from './screenIds.js';
2
+ export const main = [
3
+ screenIds.M_VERSION,
4
+ screenIds.M_WH,
5
+ screenIds.M_WH_T0,
6
+ screenIds.M_WH_T1,
7
+ screenIds.M_WH_T2,
8
+ screenIds.M_WH_T3,
9
+ screenIds.M_POWER,
10
+ screenIds.M_POWER_B,
11
+ screenIds.M_IRMS,
12
+ screenIds.M_IRMS_B,
13
+ screenIds.M_VRMS,
14
+ screenIds.M_TIME,
15
+ screenIds.M_DATE,
16
+ screenIds.M_PF_A,
17
+ screenIds.M_PF_B,
18
+ screenIds.M_VBAT,
19
+ screenIds.M_POWER_THRESHOLD_T0,
20
+ screenIds.M_POWER_THRESHOLD_T1,
21
+ screenIds.M_POWER_THRESHOLD_T2,
22
+ screenIds.M_POWER_THRESHOLD_T3
23
+ ];
24
+ export const extended = [
25
+ ...main,
26
+ screenIds.M_MAGNET_TESLA
27
+ ];
28
+ //# sourceMappingURL=screenSets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenSets.js","sourceRoot":"","sources":["../../../src/mtx/constants/screenSets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAG5C,MAAM,CAAC,MAAM,IAAI,GAAG;IAChB,SAAS,CAAC,SAAS;IACnB,SAAS,CAAC,IAAI;IACd,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,SAAS;IACnB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,QAAQ;IAClB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,oBAAoB;IAC9B,SAAS,CAAC,oBAAoB;IAC9B,SAAS,CAAC,oBAAoB;IAC9B,SAAS,CAAC,oBAAoB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,GAAG,IAAI;IACP,SAAS,CAAC,cAAc;CAC3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * as commands from './commands/index.js';
2
+ export * as message from './message.js';
3
+ export * as constants from './constants/index.js';
4
+ export * as utils from './utils/index.js';
@@ -0,0 +1,5 @@
1
+ export * as commands from './commands/index.js';
2
+ export * as message from './message.js';
3
+ export * as constants from './constants/index.js';
4
+ export * as utils from './utils/index.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mtx/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,50 @@
1
+ import Command from './Command.js';
2
+ import * as downlinkCommands from './commands/downlink/index.js';
3
+ import * as uplinkCommands from './commands/uplink/index.js';
4
+ import { IHexFormatOptions } from '../config.js';
5
+ interface IMessageCommand {
6
+ data: {
7
+ header: Uint8Array;
8
+ body: Uint8Array;
9
+ };
10
+ command: Command;
11
+ }
12
+ interface IFromBytesOptions {
13
+ direction?: number;
14
+ aesKey?: Uint8Array;
15
+ }
16
+ interface IToBytesOptions {
17
+ messageId: number;
18
+ accessLevel?: number;
19
+ aesKey?: Uint8Array;
20
+ }
21
+ interface IFromFrameOptions {
22
+ aesKey?: Uint8Array;
23
+ }
24
+ interface IToFrameOptions {
25
+ frameType: number;
26
+ source: Uint8Array;
27
+ destination: Uint8Array;
28
+ }
29
+ interface IMessage extends IToBytesOptions {
30
+ commands: Array<IMessageCommand>;
31
+ lrc: number;
32
+ }
33
+ interface IFrame extends IMessage, IToFrameOptions {
34
+ crc: Uint8Array;
35
+ }
36
+ export declare const downlinkCommandsById: {
37
+ [k: string]: typeof downlinkCommands.ActivateRatePlan | typeof downlinkCommands.GetDateTime | typeof downlinkCommands.GetDisplayParam | typeof downlinkCommands.GetOpParams | typeof downlinkCommands.GetRatePlanInfo | typeof downlinkCommands.SetDisplayParam | typeof downlinkCommands.SetOpParams | typeof downlinkCommands.TurnRelayOff | typeof downlinkCommands.TurnRelayOn;
38
+ };
39
+ export declare const uplinkCommandsById: {
40
+ [k: string]: typeof uplinkCommands.ActivateRatePlanResponse | typeof uplinkCommands.ErrorResponse | typeof uplinkCommands.GetDateTimeResponse | typeof uplinkCommands.GetDisplayParamResponse | typeof uplinkCommands.GetOpParamsResponse | typeof uplinkCommands.GetRatePlanInfoResponse | typeof uplinkCommands.SetDisplayParamResponse | typeof uplinkCommands.SetOpParamsResponse | typeof uplinkCommands.TurnRelayOffResponse | typeof uplinkCommands.TurnRelayOnResponse;
41
+ };
42
+ export declare const fromBytes: (message: Uint8Array, config?: IFromBytesOptions) => IMessage;
43
+ export declare const fromFrame: (frame: Uint8Array, { aesKey }: IFromFrameOptions) => IFrame;
44
+ export declare const fromHex: (data: string, config?: IFromBytesOptions) => IMessage;
45
+ export declare const fromBase64: (data: string) => IMessage;
46
+ export declare const toBytes: (commands: Array<Command>, { messageId, accessLevel, aesKey }: IToBytesOptions) => Uint8Array;
47
+ export declare const toFrame: (message: Uint8Array, { frameType, source, destination }: IToFrameOptions) => Uint8Array;
48
+ export declare const toHex: (commands: Array<Command>, messageOptions: IToBytesOptions, hexOptions?: IHexFormatOptions) => string;
49
+ export declare const toBase64: (commands: Array<Command>, messageOptions: IToBytesOptions) => string;
50
+ export {};
@@ -0,0 +1,138 @@
1
+ import UnknownCommand from './UnknownCommand.js';
2
+ import * as downlinkCommands from './commands/downlink/index.js';
3
+ import * as uplinkCommands from './commands/uplink/index.js';
4
+ import getBytesFromHex from '../utils/getBytesFromHex.js';
5
+ import getBytesFromBase64 from '../utils/getBytesFromBase64.js';
6
+ import getHexFromBytes from '../utils/getHexFromBytes.js';
7
+ import getBase64FromBytes from '../utils/getBase64FromBytes.js';
8
+ import mergeUint8Arrays from '../utils/mergeUint8Arrays.js';
9
+ import { aes, arrayStuff, arrayUnstuff, calculateCrcBytes, calculateLrc } from './utils/crypto.js';
10
+ import { READ_ONLY, MASK } from './constants/accessLevels.js';
11
+ import * as accessLevels from './constants/accessLevels.js';
12
+ import * as directionTypes from './constants/directions.js';
13
+ import { AUTO, DOWNLINK, UPLINK } from './constants/directions.js';
14
+ import { START_BYTE, STOP_BYTE } from './constants/frameAttributes.js';
15
+ import * as frameTypes from './constants/frameTypes.js';
16
+ const MESSAGE_HEADER_SIZE = 2;
17
+ const COMMAND_HEADER_SIZE = 2;
18
+ const BLOCK_SIZE = 16;
19
+ const COMMANDS_END_MARK = new Uint8Array([0]);
20
+ const directionTypeIds = new Set(Object.values(directionTypes));
21
+ export const downlinkCommandsById = Object.fromEntries(Object.values(downlinkCommands).map(item => [item.id, item]));
22
+ export const uplinkCommandsById = Object.fromEntries(Object.values(uplinkCommands).map(item => [item.id, item]));
23
+ const getCommand = (id, size, data, direction = AUTO) => {
24
+ if (!directionTypeIds.has(direction)) {
25
+ throw new Error('wrong direction type');
26
+ }
27
+ const downlinkCommand = downlinkCommandsById[id];
28
+ const uplinkCommand = uplinkCommandsById[id];
29
+ if ((!downlinkCommand && !uplinkCommand)
30
+ || (direction === DOWNLINK && !downlinkCommand)
31
+ || (direction === UPLINK && !uplinkCommand)) {
32
+ return new UnknownCommand({ id, size, data });
33
+ }
34
+ if (direction === DOWNLINK || direction === UPLINK) {
35
+ const command = direction === UPLINK ? uplinkCommand : downlinkCommand;
36
+ return command.fromBytes(data);
37
+ }
38
+ try {
39
+ return uplinkCommand.fromBytes(data);
40
+ }
41
+ catch {
42
+ return downlinkCommand.fromBytes(data);
43
+ }
44
+ };
45
+ export const fromBytes = (message, config) => {
46
+ const direction = config?.direction ?? AUTO;
47
+ const aesKey = config?.aesKey;
48
+ const commands = [];
49
+ const [messageId, maskedAccessLevel] = message;
50
+ const accessLevel = maskedAccessLevel & MASK;
51
+ const result = {
52
+ messageId,
53
+ accessLevel,
54
+ commands,
55
+ lrc: 0
56
+ };
57
+ let messageBody = message.slice(MESSAGE_HEADER_SIZE);
58
+ if (aesKey && accessLevel !== accessLevels.UNENCRYPTED) {
59
+ messageBody = aes.decrypt(aesKey, messageBody);
60
+ }
61
+ const lrc = messageBody[messageBody.length - 1];
62
+ messageBody = messageBody.slice(0, -1);
63
+ result.lrc = calculateLrc(messageBody);
64
+ if (lrc !== result.lrc) {
65
+ throw new Error('Mismatch LRC.');
66
+ }
67
+ const accessLevel2 = messageBody[0] & MASK;
68
+ const commandsData = messageBody.slice(1);
69
+ if (accessLevel !== accessLevel2) {
70
+ throw new Error('Mismatch access levels.');
71
+ }
72
+ let position = 0;
73
+ do {
74
+ const commandId = commandsData[position];
75
+ const commandBodySize = commandsData[position + 1];
76
+ const commandSize = COMMAND_HEADER_SIZE + commandBodySize;
77
+ const commandBody = commandsData.slice(position + COMMAND_HEADER_SIZE, position + commandSize);
78
+ if (!commandId) {
79
+ break;
80
+ }
81
+ const command = getCommand(commandId, commandBodySize, commandBody, direction);
82
+ commands.push({
83
+ data: { header: new Uint8Array([commandId]), body: commandBody },
84
+ command
85
+ });
86
+ position += commandSize;
87
+ } while (position <= commandsData.length);
88
+ return result;
89
+ };
90
+ export const fromFrame = (frame, { aesKey }) => {
91
+ let unstuffed = new Uint8Array(arrayUnstuff([...frame]));
92
+ if (frame[0] === START_BYTE && frame[frame.length - 1] === STOP_BYTE) {
93
+ unstuffed = new Uint8Array(unstuffed.slice(1, unstuffed.length - 1));
94
+ }
95
+ const frameType = unstuffed[0];
96
+ const destination = unstuffed.slice(1, 3);
97
+ const source = unstuffed.slice(3, 5);
98
+ const messageData = new Uint8Array(unstuffed.slice(5, -2));
99
+ const crc = new Uint8Array(unstuffed.slice(-2));
100
+ const message = fromBytes(messageData, { direction: frameType === frameTypes.DATA_REQUEST ? DOWNLINK : UPLINK, aesKey });
101
+ message.crc = crc;
102
+ message.source = source;
103
+ message.destination = destination;
104
+ message.frameType = frameType;
105
+ return message;
106
+ };
107
+ export const fromHex = (data, config) => (fromBytes(getBytesFromHex(data), config));
108
+ export const fromBase64 = (data) => (fromBytes(getBytesFromBase64(data)));
109
+ export const toBytes = (commands, { messageId, accessLevel = READ_ONLY, aesKey }) => {
110
+ const commandBytes = commands.map(command => command.toBytes());
111
+ const maskedAccessLevel = accessLevel | 0x10;
112
+ const header = new Uint8Array([messageId, maskedAccessLevel]);
113
+ let body = mergeUint8Arrays(new Uint8Array([maskedAccessLevel]), mergeUint8Arrays(...commandBytes), COMMANDS_END_MARK);
114
+ if (accessLevel !== accessLevels.UNENCRYPTED) {
115
+ const padding = (body.length + 1) % BLOCK_SIZE;
116
+ if (padding) {
117
+ body = mergeUint8Arrays(body, new Uint8Array(BLOCK_SIZE - padding).fill(0));
118
+ }
119
+ }
120
+ body = mergeUint8Arrays(body, new Uint8Array([calculateLrc(body)]));
121
+ if (aesKey && accessLevel !== accessLevels.UNENCRYPTED) {
122
+ body = aes.encrypt(aesKey, body);
123
+ }
124
+ return mergeUint8Arrays(header, body);
125
+ };
126
+ export const toFrame = (message, { frameType, source, destination }) => {
127
+ const unstuffed = new Uint8Array([frameType, ...destination, ...source, ...message]);
128
+ const crc = calculateCrcBytes(unstuffed);
129
+ const stuffed = arrayStuff([...unstuffed, ...crc]);
130
+ stuffed.unshift(START_BYTE);
131
+ stuffed.push(STOP_BYTE);
132
+ return new Uint8Array(stuffed);
133
+ };
134
+ export const toHex = (commands, messageOptions, hexOptions = {}) => {
135
+ return getHexFromBytes(toBytes(commands, messageOptions), hexOptions);
136
+ };
137
+ export const toBase64 = (commands, messageOptions) => getBase64FromBytes(toBytes(commands, messageOptions));
138
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/mtx/message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const aes: {
2
+ encrypt: (key: Uint8Array, value: Uint8Array) => Uint8Array;
3
+ decrypt: (key: Uint8Array, value: Uint8Array) => Uint8Array;
4
+ };
5
+ export declare const calculateLrc: (data: Uint8Array, initialLrc?: number) => number;
6
+ export declare const calculateCrc: (value: Uint8Array) => number;
7
+ export declare const calculateCrcBytes: (value: Uint8Array) => Uint8Array;
8
+ export declare const STUFFING_BYTE = 125;
9
+ export declare const arrayStuff: (data: Array<number>) => Array<number>;
10
+ export declare const arrayUnstuff: (data: Array<number>) => Array<number>;
@@ -0,0 +1,111 @@
1
+ import crypto from 'crypto-js';
2
+ import getBase64FromBytes from '../../utils/getBase64FromBytes.js';
3
+ const convertWordArrayToUint8Array = ({ words }) => {
4
+ const uint32Array = new Uint32Array(words.length);
5
+ words.forEach((value, index) => {
6
+ uint32Array[index] = ((value & 0xFF) << 24)
7
+ | ((value & 0xFF00) << 8)
8
+ | ((value >> 8) & 0xFF00)
9
+ | ((value >> 24) & 0xFF);
10
+ });
11
+ return new Uint8Array(uint32Array.buffer);
12
+ };
13
+ const convertUint8ArrayToWordArray = (data) => {
14
+ const result = [];
15
+ const dv = new DataView(data.buffer, data.byteOffset, data.byteLength);
16
+ for (let pos = 0; pos < data.byteLength; pos += 4) {
17
+ result.push(dv.getUint32(pos, false));
18
+ }
19
+ return crypto.lib.WordArray.create(result, data.byteLength);
20
+ };
21
+ const aesConfig = {
22
+ keySize: 16,
23
+ mode: crypto.mode.ECB,
24
+ padding: crypto.pad.NoPadding
25
+ };
26
+ export const aes = {
27
+ encrypt: (key, value) => {
28
+ const { ciphertext } = crypto.AES.encrypt(convertUint8ArrayToWordArray(value), convertUint8ArrayToWordArray(key), aesConfig);
29
+ return convertWordArrayToUint8Array(ciphertext);
30
+ },
31
+ decrypt: (key, value) => (convertWordArrayToUint8Array(crypto.AES.decrypt(getBase64FromBytes(value), convertUint8ArrayToWordArray(key), aesConfig)))
32
+ };
33
+ export const calculateLrc = (data, initialLrc = 0x55) => {
34
+ let lrc = initialLrc;
35
+ data.forEach(item => {
36
+ lrc ^= item;
37
+ });
38
+ return lrc;
39
+ };
40
+ export const calculateCrc = (value) => {
41
+ let crc = 0xFFFF;
42
+ for (let index = 0; index < value.length; index++) {
43
+ let data = value[index] ^ (crc & 0xFF);
44
+ data ^= (data << 4) & 0xFF;
45
+ crc = (data << 3) ^ (data << 8) ^ (crc >> 8) ^ (data >> 4);
46
+ }
47
+ return ((crc & 0xFF00) ^ 0xFF00) | ((crc & 0xFF) ^ 0xFF);
48
+ };
49
+ export const calculateCrcBytes = (value) => {
50
+ const number = calculateCrc(value);
51
+ const buffer = new ArrayBuffer(2);
52
+ const view = new DataView(buffer);
53
+ view.setUint16(0, number, true);
54
+ return new Uint8Array(buffer);
55
+ };
56
+ const byteStuff = (byte) => {
57
+ switch (byte) {
58
+ case 0x13: return 0x33;
59
+ case 0x11: return 0x31;
60
+ case 0x7D: return 0x5D;
61
+ case 0x7E: return 0x5E;
62
+ default:
63
+ break;
64
+ }
65
+ return byte;
66
+ };
67
+ const byteUnstuff = (byte) => {
68
+ switch (byte) {
69
+ case 0x33: return 0x13;
70
+ case 0x31: return 0x11;
71
+ case 0x5D: return 0x7D;
72
+ case 0x5E: return 0x7E;
73
+ default:
74
+ break;
75
+ }
76
+ return byte;
77
+ };
78
+ export const STUFFING_BYTE = 0x7d;
79
+ export const arrayStuff = (data) => {
80
+ const result = [];
81
+ data.forEach(byte => {
82
+ const stuff = byteStuff(byte);
83
+ if (stuff === byte) {
84
+ result.push(byte);
85
+ }
86
+ else {
87
+ result.push(STUFFING_BYTE);
88
+ result.push(stuff);
89
+ }
90
+ });
91
+ return result;
92
+ };
93
+ export const arrayUnstuff = (data) => {
94
+ const result = [];
95
+ let position = 0;
96
+ let hasPrevStuffingByte = false;
97
+ data.forEach(byte => {
98
+ if (byte === STUFFING_BYTE) {
99
+ hasPrevStuffingByte = true;
100
+ }
101
+ else if (hasPrevStuffingByte) {
102
+ hasPrevStuffingByte = false;
103
+ result[position++] = byteUnstuff(byte);
104
+ }
105
+ else {
106
+ result[position++] = byte;
107
+ }
108
+ });
109
+ return result;
110
+ };
111
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/mtx/utils/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * as crypto from './crypto.js';
@@ -0,0 +1,2 @@
1
+ export * as crypto from './crypto.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mtx/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import getHexFromBytes from '../utils/getHexFromBytes.js';
2
2
  import getHexFromNumber from '../utils/getHexFromNumber.js';
3
3
  import getBase64FromBytes from '../utils/getBase64FromBytes.js';
4
+ import mergeUint8Arrays from '../utils/mergeUint8Arrays.js';
4
5
  class Command {
5
6
  static getId() {
6
7
  return getHexFromNumber(this.id);
@@ -9,10 +10,7 @@ class Command {
9
10
  const commandLength = commandData?.length ?? 0;
10
11
  const headerData = new Uint8Array([id]);
11
12
  if (commandData && commandLength) {
12
- const resultData = new Uint8Array(commandLength + headerData.length);
13
- resultData.set(headerData);
14
- resultData.set(commandData, headerData.length);
15
- return resultData;
13
+ return mergeUint8Arrays(headerData, commandData);
16
14
  }
17
15
  return headerData;
18
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Command.js","sourceRoot":"","sources":["../../src/obis-observer/Command.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAC1D,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAC5D,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAmBhE,MAAe,OAAO;IAmBlB,MAAM,CAAC,KAAK;QACR,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IA+CD,MAAM,CAAC,OAAO,CAAG,EAAU,EAAE,WAAwB;QACjD,MAAM,aAAa,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExC,IAAK,WAAW,IAAI,aAAa,EAAG;YAChC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAErE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3B,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAE/C,OAAO,UAAU,CAAC;SACrB;QAGD,OAAO,UAAU,CAAC;IACtB,CAAC;IAGD,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAGD,OAAO;QACH,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAG,UAA6B,EAAE;QACnC,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,QAAQ;QACJ,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAOD,MAAM;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAChD,CAAC;;AArGM,qBAAa,GAAG,KAAK,CAAC;AAyGjC,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Command.js","sourceRoot":"","sources":["../../src/obis-observer/Command.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAC1D,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAC5D,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAChE,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAmB5D,MAAe,OAAO;IAmBlB,MAAM,CAAC,KAAK;QACR,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IA+CD,MAAM,CAAC,OAAO,CAAG,EAAU,EAAE,WAAwB;QACjD,MAAM,aAAa,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExC,IAAK,WAAW,IAAI,aAAa,EAAG;YAChC,OAAO,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;SACpD;QAGD,OAAO,UAAU,CAAC;IACtB,CAAC;IAGD,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAGD,OAAO;QACH,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAG,UAA6B,EAAE;QACnC,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,QAAQ;QACJ,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAOD,MAAM;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAChD,CAAC;;AAhGM,qBAAa,GAAG,KAAK,CAAC;AAoGjC,eAAe,OAAO,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import Command from '../../Command.js';
2
2
  import CommandBinaryBuffer, { REQUEST_ID_SIZE } from '../../CommandBinaryBuffer.js';
3
3
  import { DOWNLINK } from '../../constants/directions.js';
4
+ import mergeUint8Arrays from '../../../utils/mergeUint8Arrays.js';
4
5
  const COMMAND_ID = 0x2a;
5
6
  const COMMAND_HEADER_SIZE = 1 + REQUEST_ID_SIZE + 4;
6
7
  const examples = [
@@ -36,13 +37,10 @@ class UpdateImageWrite extends Command {
36
37
  }
37
38
  const { requestId, offset, data } = this.parameters;
38
39
  const buffer = new CommandBinaryBuffer(COMMAND_HEADER_SIZE);
39
- const result = new Uint8Array(this.size);
40
40
  buffer.setUint8(this.size - 1);
41
41
  buffer.setUint8(requestId);
42
42
  buffer.setUint32(offset);
43
- result.set(buffer.toUint8Array());
44
- result.set(data, COMMAND_HEADER_SIZE);
45
- return Command.toBytes(COMMAND_ID, result);
43
+ return Command.toBytes(COMMAND_ID, mergeUint8Arrays(buffer.toUint8Array(), data));
46
44
  }
47
45
  }
48
46
  UpdateImageWrite.id = COMMAND_ID;
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateImageWrite.js","sourceRoot":"","sources":["../../../../src/obis-observer/commands/downlink/UpdateImageWrite.ts"],"names":[],"mappings":"AAAA,OAAO,OAA8B,MAAM,kBAAkB,CAAC;AAC9D,OAAO,mBAAmB,EAAE,EAAC,eAAe,EAAqB,MAAM,8BAA8B,CAAC;AACtG,OAAO,EAAC,QAAQ,EAAC,MAAM,+BAA+B,CAAC;AAYvD,MAAM,UAAU,GAAG,IAAI,CAAC;AAGxB,MAAM,mBAAmB,GAAG,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;AAEpD,MAAM,QAAQ,GAAwB;IAClC;QACI,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE;YACR,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI,UAAU,CAAC;gBACjB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;aACjG,CAAC;SACL;QACD,GAAG,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,mEAAmE,EAAC;KACjG;CACJ,CAAC;AA0BF,MAAM,gBAAiB,SAAQ,OAAO;IAClC,YAAqB,UAAuC;QACxD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAA6B;QAGxD,IAAI,CAAC,IAAI,GAAG,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7D,CAAC;IAaD,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,GAAG,mBAAmB,CAAC,CAAC;QAE/F,OAAO,IAAI,gBAAgB,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;IACtE,CAAC;IAGD,OAAO;QACH,IAAK,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAG;YACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC9C;QAED,MAAM,EAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAGzC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAGzB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAEtC,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;;AAxCe,mBAAE,GAAG,UAAU,CAAC;AAEhB,8BAAa,GAAG,QAAQ,CAAC;AAEzB,yBAAQ,GAAG,QAAQ,CAAC;AAEpB,8BAAa,GAAG,IAAI,CAAC;AAsCzC,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"UpdateImageWrite.js","sourceRoot":"","sources":["../../../../src/obis-observer/commands/downlink/UpdateImageWrite.ts"],"names":[],"mappings":"AAAA,OAAO,OAA8B,MAAM,kBAAkB,CAAC;AAC9D,OAAO,mBAAmB,EAAE,EAAC,eAAe,EAAqB,MAAM,8BAA8B,CAAC;AACtG,OAAO,EAAC,QAAQ,EAAC,MAAM,+BAA+B,CAAC;AACvD,OAAO,gBAAgB,MAAM,oCAAoC,CAAC;AAYlE,MAAM,UAAU,GAAG,IAAI,CAAC;AAGxB,MAAM,mBAAmB,GAAG,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;AAEpD,MAAM,QAAQ,GAAwB;IAClC;QACI,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE;YACR,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI,UAAU,CAAC;gBACjB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;aACjG,CAAC;SACL;QACD,GAAG,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,mEAAmE,EAAC;KACjG;CACJ,CAAC;AA0BF,MAAM,gBAAiB,SAAQ,OAAO;IAClC,YAAqB,UAAuC;QACxD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAA6B;QAGxD,IAAI,CAAC,IAAI,GAAG,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7D,CAAC;IAaD,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,GAAG,mBAAmB,CAAC,CAAC;QAE/F,OAAO,IAAI,gBAAgB,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;IACtE,CAAC;IAGD,OAAO;QACH,IAAK,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAG;YACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC9C;QAED,MAAM,EAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QAG5D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEzB,OAAO,OAAO,CAAC,OAAO,CAClB,UAAU,EAEV,gBAAgB,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAChD,CAAC;IACN,CAAC;;AAvCe,mBAAE,GAAG,UAAU,CAAC;AAEhB,8BAAa,GAAG,QAAQ,CAAC;AAEzB,yBAAQ,GAAG,QAAQ,CAAC;AAEpB,8BAAa,GAAG,IAAI,CAAC;AAqCzC,eAAe,gBAAgB,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import Command from './Command.js';
2
+ import * as downlinkCommands from './commands/downlink/index.js';
3
+ import * as uplinkCommands from './commands/uplink/index.js';
2
4
  import { IHexFormatOptions } from '../config.js';
3
5
  interface IMessageCommand {
4
6
  data: {
@@ -11,6 +13,12 @@ interface IMessage {
11
13
  commands: Array<IMessageCommand>;
12
14
  isValid: boolean;
13
15
  }
16
+ export declare const downlinkCommandsById: {
17
+ [k: string]: typeof downlinkCommands.AddShortNameProfile | typeof downlinkCommands.GetArchiveProfile | typeof downlinkCommands.GetArchiveState | typeof downlinkCommands.GetContentByObis | typeof downlinkCommands.GetContentByShortName | typeof downlinkCommands.GetDate | typeof downlinkCommands.GetDeviceInfo | typeof downlinkCommands.GetLorawanInfo | typeof downlinkCommands.GetLorawanState | typeof downlinkCommands.GetReadoutState | typeof downlinkCommands.GetShortNameInfo | typeof downlinkCommands.GetShortNameProfile | typeof downlinkCommands.GetShortNames | typeof downlinkCommands.ReadArchive | typeof downlinkCommands.Reboot | typeof downlinkCommands.RemoveShortNameProfile | typeof downlinkCommands.SetArchiveProfile | typeof downlinkCommands.SetSerialPort | typeof downlinkCommands.SetShortName | typeof downlinkCommands.UpdateImageVerify | typeof downlinkCommands.UpdateImageWrite | typeof downlinkCommands.UpdateRun;
18
+ };
19
+ export declare const uplinkCommandsById: {
20
+ [k: string]: typeof uplinkCommands.AddShortNameProfileResponse | typeof uplinkCommands.GetArchiveProfileResponse | typeof uplinkCommands.GetArchiveStateResponse | typeof uplinkCommands.GetContentByObisResponse | typeof uplinkCommands.GetContentByShortNameResponse | typeof uplinkCommands.GetContentByShortNameStringResponse | typeof uplinkCommands.GetDateResponse | typeof uplinkCommands.GetDeviceInfoResponse | typeof uplinkCommands.GetLorawanInfoResponse | typeof uplinkCommands.GetLorawanStateResponse | typeof uplinkCommands.GetReadoutStateResponse | typeof uplinkCommands.GetShortNameInfoResponse | typeof uplinkCommands.GetShortNameProfileResponse | typeof uplinkCommands.GetShortNamesResponse | typeof uplinkCommands.ObservationReport | typeof uplinkCommands.ObservationReportString | typeof uplinkCommands.ReadArchiveResponse | typeof uplinkCommands.RebootResponse | typeof uplinkCommands.RemoveShortNameProfileResponse | typeof uplinkCommands.SetArchiveProfileResponse | typeof uplinkCommands.SetSerialPortResponse | typeof uplinkCommands.SetShortNameResponse | typeof uplinkCommands.UpdateImageVerifyResponse | typeof uplinkCommands.UpdateImageWriteResponse | typeof uplinkCommands.UpdateRunResponse;
21
+ };
14
22
  export declare const fromBytes: (commandsData: Uint8Array) => IMessage;
15
23
  export declare const fromHex: (data: string) => IMessage;
16
24
  export declare const fromBase64: (data: string) => IMessage;
@@ -5,9 +5,10 @@ import getBytesFromHex from '../utils/getBytesFromHex.js';
5
5
  import getBytesFromBase64 from '../utils/getBytesFromBase64.js';
6
6
  import getHexFromBytes from '../utils/getHexFromBytes.js';
7
7
  import getBase64FromBytes from '../utils/getBase64FromBytes.js';
8
+ import mergeUint8Arrays from '../utils/mergeUint8Arrays.js';
8
9
  const HEADER_SIZE = 1;
9
- const downlinkCommandsById = Object.fromEntries(Object.values(downlinkCommands).map(item => [item.id, item]));
10
- const uplinkCommandsById = Object.fromEntries(Object.values(uplinkCommands).map(item => [item.id, item]));
10
+ export const downlinkCommandsById = Object.fromEntries(Object.values(downlinkCommands).map(item => [item.id, item]));
11
+ export const uplinkCommandsById = Object.fromEntries(Object.values(uplinkCommands).map(item => [item.id, item]));
11
12
  const getCommand = (id, data) => {
12
13
  const command = downlinkCommandsById[id] || uplinkCommandsById[id];
13
14
  if (command) {
@@ -47,15 +48,8 @@ export const fromBytes = (commandsData) => {
47
48
  export const fromHex = (data) => (fromBytes(getBytesFromHex(data)));
48
49
  export const fromBase64 = (data) => (fromBytes(getBytesFromBase64(data)));
49
50
  export const toBytes = (commands) => {
50
- const arrays = commands.map(command => command.toBytes());
51
- const totalLength = arrays.reduce((accumulator, item) => (accumulator + item.length), 0);
52
- const result = new Uint8Array(totalLength);
53
- let offset = 0;
54
- arrays.forEach(item => {
55
- result.set(item, offset);
56
- offset += item.length;
57
- });
58
- return result;
51
+ const commandBytes = commands.map(command => command.toBytes());
52
+ return mergeUint8Arrays(...commandBytes);
59
53
  };
60
54
  export const toHex = (commands, options = {}) => getHexFromBytes(toBytes(commands), options);
61
55
  export const toBase64 = (commands) => getBase64FromBytes(toBytes(commands));
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/obis-observer/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/obis-observer/message.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ export { default as getBytesFromBase64 } from './getBytesFromBase64.js';
3
3
  export { default as getBytesFromHex } from './getBytesFromHex.js';
4
4
  export { default as getHexFromBytes } from './getHexFromBytes.js';
5
5
  export { default as getHexFromNumber } from './getHexFromNumber.js';
6
+ export { default as mergeUint8Arrays } from './mergeUint8Arrays.js';
6
7
  export * as time from './time.js';
@@ -3,5 +3,6 @@ export { default as getBytesFromBase64 } from './getBytesFromBase64.js';
3
3
  export { default as getBytesFromHex } from './getBytesFromHex.js';
4
4
  export { default as getHexFromBytes } from './getHexFromBytes.js';
5
5
  export { default as getHexFromNumber } from './getHexFromNumber.js';
6
+ export { default as mergeUint8Arrays } from './mergeUint8Arrays.js';
6
7
  export * as time from './time.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: (...arrays: Array<Uint8Array>) => Uint8Array;
2
+ export default _default;
@@ -0,0 +1,11 @@
1
+ export default (...arrays) => {
2
+ const totalLength = arrays.reduce((total, array) => total + array.length, 0);
3
+ const mergedArray = new Uint8Array(totalLength);
4
+ let offset = 0;
5
+ for (const array of arrays) {
6
+ mergedArray.set(array, offset);
7
+ offset += array.length;
8
+ }
9
+ return mergedArray;
10
+ };
11
+ //# sourceMappingURL=mergeUint8Arrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeUint8Arrays.js","sourceRoot":"","sources":["../../src/utils/mergeUint8Arrays.ts"],"names":[],"mappings":"AAGA,eAAe,CAAE,GAAG,MAAyB,EAAe,EAAE;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAM,MAAM,KAAK,IAAI,MAAM,EAAG;QAC1B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;KAC1B;IAED,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jooby-codec",
3
- "version": "2.13.0",
3
+ "version": "2.14.1",
4
4
  "description": "Jooby message encoders/decoders",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,6 +14,11 @@
14
14
  "./analog/commands/downlink": "./dist/analog/commands/downlink/index.js",
15
15
  "./analog/commands/uplink": "./dist/analog/commands/uplink/index.js",
16
16
  "./analog/constants": "./dist/analog/constants/index.js",
17
+ "./mtx": "./dist/mtx/index.js",
18
+ "./mtx/commands": "./dist/mtx/commands/index.js",
19
+ "./mtx/commands/downlink": "./dist/mtx/commands/downlink/index.js",
20
+ "./mtx/commands/uplink": "./dist/mtx/commands/uplink/index.js",
21
+ "./mtx/constants": "./dist/mtx/constants/index.js",
17
22
  "./obis-observer": "./dist/obis-observer/index.js",
18
23
  "./obis-observer/commands": "./dist/obis-observer/commands/index.js",
19
24
  "./obis-observer/commands/downlink": "./dist/obis-observer/commands/downlink/index.js",
@@ -30,5 +35,8 @@
30
35
  "npm": ">=9.0.0",
31
36
  "node": ">=18.0.0"
32
37
  },
38
+ "dependencies": {
39
+ "crypto-js": "^4.1.1"
40
+ },
33
41
  "license": "MIT"
34
42
  }