tscommons-esm-network 0.0.2
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.
- package/dist/enums/etransmission-method.d.mts +10 -0
- package/dist/enums/etransmission-method.mjs +48 -0
- package/dist/enums/etransmission-method.mjs.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -0
- package/dist/interfaces/icommons-network-handshake.d.mts +7 -0
- package/dist/interfaces/icommons-network-handshake.mjs +9 -0
- package/dist/interfaces/icommons-network-handshake.mjs.map +1 -0
- package/dist/interfaces/icommons-network-packet.d.mts +22 -0
- package/dist/interfaces/icommons-network-packet.mjs +50 -0
- package/dist/interfaces/icommons-network-packet.mjs.map +1 -0
- package/dist/types/tcommons-network-packet-compressed.d.mts +19 -0
- package/dist/types/tcommons-network-packet-compressed.mjs +121 -0
- package/dist/types/tcommons-network-packet-compressed.mjs.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare enum ETransmissionMethod {
|
|
2
|
+
BROADCAST = "broadcast",
|
|
3
|
+
DIRECT = "direct",
|
|
4
|
+
MULTICAST = "multicast"
|
|
5
|
+
}
|
|
6
|
+
export declare function toETransmissionMethod(type: string): ETransmissionMethod | undefined;
|
|
7
|
+
export declare function fromETransmissionMethod(type: ETransmissionMethod): string;
|
|
8
|
+
export declare function isETransmissionMethod(test: unknown): test is ETransmissionMethod;
|
|
9
|
+
export declare function keyToETransmissionMethod(key: string): ETransmissionMethod;
|
|
10
|
+
export declare const ETRANSMISSION_METHODS: ETransmissionMethod[];
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { commonsTypeIsString } from 'tscommons-esm-core';
|
|
2
|
+
export var ETransmissionMethod;
|
|
3
|
+
(function (ETransmissionMethod) {
|
|
4
|
+
ETransmissionMethod["BROADCAST"] = "broadcast";
|
|
5
|
+
ETransmissionMethod["DIRECT"] = "direct";
|
|
6
|
+
ETransmissionMethod["MULTICAST"] = "multicast";
|
|
7
|
+
})(ETransmissionMethod || (ETransmissionMethod = {}));
|
|
8
|
+
export function toETransmissionMethod(type) {
|
|
9
|
+
switch (type) {
|
|
10
|
+
case ETransmissionMethod.BROADCAST.toString():
|
|
11
|
+
return ETransmissionMethod.BROADCAST;
|
|
12
|
+
case ETransmissionMethod.DIRECT.toString():
|
|
13
|
+
return ETransmissionMethod.DIRECT;
|
|
14
|
+
case ETransmissionMethod.MULTICAST.toString():
|
|
15
|
+
return ETransmissionMethod.MULTICAST;
|
|
16
|
+
}
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
export function fromETransmissionMethod(type) {
|
|
20
|
+
switch (type) {
|
|
21
|
+
case ETransmissionMethod.BROADCAST:
|
|
22
|
+
return ETransmissionMethod.BROADCAST.toString();
|
|
23
|
+
case ETransmissionMethod.DIRECT:
|
|
24
|
+
return ETransmissionMethod.DIRECT.toString();
|
|
25
|
+
case ETransmissionMethod.MULTICAST:
|
|
26
|
+
return ETransmissionMethod.MULTICAST.toString();
|
|
27
|
+
}
|
|
28
|
+
throw new Error('Unknown ETransmissionMethod');
|
|
29
|
+
}
|
|
30
|
+
export function isETransmissionMethod(test) {
|
|
31
|
+
if (!commonsTypeIsString(test))
|
|
32
|
+
return false;
|
|
33
|
+
return toETransmissionMethod(test) !== undefined;
|
|
34
|
+
}
|
|
35
|
+
export function keyToETransmissionMethod(key) {
|
|
36
|
+
switch (key) {
|
|
37
|
+
case 'BROADCAST':
|
|
38
|
+
return ETransmissionMethod.BROADCAST;
|
|
39
|
+
case 'DIRECT':
|
|
40
|
+
return ETransmissionMethod.DIRECT;
|
|
41
|
+
case 'MULTICAST':
|
|
42
|
+
return ETransmissionMethod.MULTICAST;
|
|
43
|
+
}
|
|
44
|
+
throw new Error(`Unable to obtain ETransmissionMethod for key: ${key}`);
|
|
45
|
+
}
|
|
46
|
+
export const ETRANSMISSION_METHODS = Object.keys(ETransmissionMethod)
|
|
47
|
+
.map((e) => keyToETransmissionMethod(e));
|
|
48
|
+
//# sourceMappingURL=etransmission-method.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"etransmission-method.mjs","sourceRoot":"","sources":["../../src/enums/etransmission-method.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,8CAAuB,CAAA;IACvB,wCAAiB,CAAA;IACjB,8CAAuB,CAAA;AACzB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IACjD,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC5C,OAAO,mBAAmB,CAAC,SAAS,CAAC;QACtC,KAAK,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE;YACzC,OAAO,mBAAmB,CAAC,MAAM,CAAC;QACnC,KAAK,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC5C,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACvC,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAyB;IAChE,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,mBAAmB,CAAC,SAAS;YACjC,OAAO,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACjD,KAAK,mBAAmB,CAAC,MAAM;YAC9B,OAAO,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC9C,KAAK,mBAAmB,CAAC,SAAS;YACjC,OAAO,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAa;IAClD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7C,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAW;IACnD,QAAQ,GAAG,EAAE,CAAC;QACb,KAAK,WAAW;YACf,OAAO,mBAAmB,CAAC,SAAS,CAAC;QACtC,KAAK,QAAQ;YACZ,OAAO,mBAAmB,CAAC,MAAM,CAAC;QACnC,KAAK,WAAW;YACf,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAA0B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;KACzF,GAAG,CAAC,CAAC,CAAS,EAAuB,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ETransmissionMethod, toETransmissionMethod, fromETransmissionMethod, isETransmissionMethod, keyToETransmissionMethod, ETRANSMISSION_METHODS } from './enums/etransmission-method.mjs';
|
|
2
|
+
import { TCommonsNetworkPacketCompressed, isTCommonsNetworkPacketCompressed, compressPacket, decompressPacket } from './types/tcommons-network-packet-compressed.mjs';
|
|
3
|
+
import { ICommonsNetworkHandshake, isICommonsNetworkHandshake } from './interfaces/icommons-network-handshake.mjs';
|
|
4
|
+
import { REGEX_PATTERN_NS, REGEX_PATTERN_COMMAND, TChannel, TDeviceId, ICommonsNetworkPacket, isICommonsNetworkPacket } from './interfaces/icommons-network-packet.mjs';
|
|
5
|
+
export { ETransmissionMethod, toETransmissionMethod, fromETransmissionMethod, isETransmissionMethod, keyToETransmissionMethod, ETRANSMISSION_METHODS, TCommonsNetworkPacketCompressed, isTCommonsNetworkPacketCompressed, compressPacket, decompressPacket, ICommonsNetworkHandshake, isICommonsNetworkHandshake, REGEX_PATTERN_NS, REGEX_PATTERN_COMMAND, TChannel, TDeviceId, ICommonsNetworkPacket, isICommonsNetworkPacket };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ETransmissionMethod, toETransmissionMethod, fromETransmissionMethod, isETransmissionMethod, keyToETransmissionMethod, ETRANSMISSION_METHODS } from './enums/etransmission-method.mjs';
|
|
2
|
+
import { isTCommonsNetworkPacketCompressed, compressPacket, decompressPacket } from './types/tcommons-network-packet-compressed.mjs';
|
|
3
|
+
import { isICommonsNetworkHandshake } from './interfaces/icommons-network-handshake.mjs';
|
|
4
|
+
import { REGEX_PATTERN_NS, REGEX_PATTERN_COMMAND, isICommonsNetworkPacket } from './interfaces/icommons-network-packet.mjs';
|
|
5
|
+
export { ETransmissionMethod, toETransmissionMethod, fromETransmissionMethod, isETransmissionMethod, keyToETransmissionMethod, ETRANSMISSION_METHODS, isTCommonsNetworkPacketCompressed, compressPacket, decompressPacket, isICommonsNetworkHandshake, REGEX_PATTERN_NS, REGEX_PATTERN_COMMAND, isICommonsNetworkPacket };
|
|
6
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,iCAAiC,EACjC,cAAc,EACd,gBAAgB,EACjB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAA4B,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACnH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EAIrB,uBAAuB,EACxB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EAErB,iCAAiC,EACjC,cAAc,EACd,gBAAgB,EAEhB,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,EAIrB,uBAAuB,EACvB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TChannel, TDeviceId } from './icommons-network-packet.mjs';
|
|
2
|
+
export interface ICommonsNetworkHandshake {
|
|
3
|
+
channel: TChannel;
|
|
4
|
+
deviceId: TDeviceId;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare function isICommonsNetworkHandshake(test: unknown): test is ICommonsNetworkHandshake;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { commonsBase62HasPropertyId } from 'tscommons-esm-core';
|
|
2
|
+
export function isICommonsNetworkHandshake(test) {
|
|
3
|
+
if (!commonsBase62HasPropertyId(test, 'channel'))
|
|
4
|
+
return false;
|
|
5
|
+
if (!commonsBase62HasPropertyId(test, 'deviceId'))
|
|
6
|
+
return false;
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=icommons-network-handshake.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icommons-network-handshake.mjs","sourceRoot":"","sources":["../../src/interfaces/icommons-network-handshake.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAUhE,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACvD,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhE,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TEncoded } from 'tscommons-esm-core';
|
|
2
|
+
import { ETransmissionMethod } from '../enums/etransmission-method.mjs';
|
|
3
|
+
export declare const REGEX_PATTERN_NS = "^[A-Za-z](-?[0-9A-Za-z]+)*$";
|
|
4
|
+
export declare const REGEX_PATTERN_COMMAND = "^[A-Za-z](-?[0-9A-Za-z]+)*$";
|
|
5
|
+
export type TChannel = string;
|
|
6
|
+
export type TDeviceId = string;
|
|
7
|
+
export interface ICommonsNetworkPacket {
|
|
8
|
+
id: string;
|
|
9
|
+
method: ETransmissionMethod;
|
|
10
|
+
channel: TChannel;
|
|
11
|
+
destination?: TDeviceId;
|
|
12
|
+
destinations?: TDeviceId[];
|
|
13
|
+
source: TDeviceId;
|
|
14
|
+
ignoreOwn?: boolean;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
expiry?: number;
|
|
17
|
+
ns: string;
|
|
18
|
+
command: string;
|
|
19
|
+
data?: TEncoded;
|
|
20
|
+
replay?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function isICommonsNetworkPacket(test: unknown): test is ICommonsNetworkPacket;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { commonsBase62HasPropertyId, commonsBase62HasPropertyIdArrayOrUndefined, commonsBase62HasPropertyIdOrUndefined, commonsTypeHasProperty, commonsTypeHasPropertyBooleanOrUndefined, commonsTypeHasPropertyEnum, commonsTypeHasPropertyNumber, commonsTypeHasPropertyNumberOrUndefined, commonsTypeHasPropertyString } from 'tscommons-esm-core';
|
|
2
|
+
import { ETransmissionMethod, isETransmissionMethod } from '../enums/etransmission-method.mjs';
|
|
3
|
+
export const REGEX_PATTERN_NS = '^[A-Za-z](-?[0-9A-Za-z]+)*$';
|
|
4
|
+
export const REGEX_PATTERN_COMMAND = '^[A-Za-z](-?[0-9A-Za-z]+)*$';
|
|
5
|
+
export function isICommonsNetworkPacket(test) {
|
|
6
|
+
if (!commonsBase62HasPropertyId(test, 'id'))
|
|
7
|
+
return false;
|
|
8
|
+
if (!commonsTypeHasPropertyEnum(test, 'method', isETransmissionMethod))
|
|
9
|
+
return false;
|
|
10
|
+
if (!commonsBase62HasPropertyId(test, 'channel'))
|
|
11
|
+
return false;
|
|
12
|
+
if (!commonsBase62HasPropertyId(test, 'source'))
|
|
13
|
+
return false;
|
|
14
|
+
if (!commonsTypeHasPropertyString(test, 'ns'))
|
|
15
|
+
return false;
|
|
16
|
+
if (!commonsBase62HasPropertyIdOrUndefined(test, 'destination'))
|
|
17
|
+
return false;
|
|
18
|
+
if (!commonsBase62HasPropertyIdArrayOrUndefined(test, 'destinations'))
|
|
19
|
+
return false;
|
|
20
|
+
if (!commonsTypeHasPropertyNumber(test, 'timestamp'))
|
|
21
|
+
return false;
|
|
22
|
+
if (!commonsTypeHasPropertyNumberOrUndefined(test, 'expiry'))
|
|
23
|
+
return false;
|
|
24
|
+
switch (test.method) {
|
|
25
|
+
case ETransmissionMethod.BROADCAST:
|
|
26
|
+
if (commonsTypeHasProperty(test, 'destination') || commonsTypeHasProperty(test, 'destinations'))
|
|
27
|
+
return false;
|
|
28
|
+
break;
|
|
29
|
+
case ETransmissionMethod.DIRECT:
|
|
30
|
+
if (!commonsTypeHasProperty(test, 'destination') || commonsTypeHasProperty(test, 'destinations'))
|
|
31
|
+
return false;
|
|
32
|
+
break;
|
|
33
|
+
case ETransmissionMethod.MULTICAST:
|
|
34
|
+
if (commonsTypeHasProperty(test, 'destination') || !commonsTypeHasProperty(test, 'destinations'))
|
|
35
|
+
return false;
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
const regexNs = new RegExp(REGEX_PATTERN_NS);
|
|
39
|
+
if (!regexNs.test(test.ns))
|
|
40
|
+
return false;
|
|
41
|
+
const regexCommand = new RegExp(REGEX_PATTERN_COMMAND);
|
|
42
|
+
if (!regexCommand.test(test.command))
|
|
43
|
+
return false;
|
|
44
|
+
if (!commonsTypeHasPropertyBooleanOrUndefined(test, 'ignoreOwn'))
|
|
45
|
+
return false;
|
|
46
|
+
if (!commonsTypeHasPropertyBooleanOrUndefined(test, 'replay'))
|
|
47
|
+
return false;
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=icommons-network-packet.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icommons-network-packet.mjs","sourceRoot":"","sources":["../../src/interfaces/icommons-network-packet.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,0CAA0C,EAC1C,qCAAqC,EACrC,sBAAsB,EACtB,wCAAwC,EACxC,0BAA0B,EAC1B,4BAA4B,EAC5B,uCAAuC,EACvC,4BAA4B,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/F,MAAM,CAAC,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAqBnE,MAAM,UAAU,uBAAuB,CAAC,IAAa;IACpD,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,CAAC,0BAA0B,CAAsB,IAAI,EAAE,QAAQ,EAAE,qBAAqB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1G,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5D,IAAI,CAAC,qCAAqC,CAAC,IAAI,EAAE,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC,0CAA0C,CAAC,IAAI,EAAE,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpF,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,IAAI,CAAC,uCAAuC,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3E,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,mBAAmB,CAAC,SAAS;YACjC,IAAI,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9G,MAAM;QACP,KAAK,mBAAmB,CAAC,MAAM;YAC9B,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC/G,MAAM;QACP,KAAK,mBAAmB,CAAC,SAAS;YACjC,IAAI,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC/G,MAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAW,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnD,MAAM,YAAY,GAAW,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC/D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAiB,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7D,IAAI,CAAC,wCAAwC,CAAC,IAAI,EAAE,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,CAAC,wCAAwC,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5E,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TEncoded } from 'tscommons-esm-core';
|
|
2
|
+
import { ICommonsNetworkPacket, TChannel, TDeviceId } from '../interfaces/icommons-network-packet.mjs';
|
|
3
|
+
export type TCommonsNetworkPacketCompressed = {
|
|
4
|
+
i: string;
|
|
5
|
+
m: string;
|
|
6
|
+
c: TChannel;
|
|
7
|
+
d?: string;
|
|
8
|
+
s: TDeviceId;
|
|
9
|
+
o?: number;
|
|
10
|
+
t: number;
|
|
11
|
+
e?: number;
|
|
12
|
+
n: string;
|
|
13
|
+
x: string;
|
|
14
|
+
z?: TEncoded;
|
|
15
|
+
r?: number;
|
|
16
|
+
};
|
|
17
|
+
export declare function isTCommonsNetworkPacketCompressed(test: unknown): test is TCommonsNetworkPacketCompressed;
|
|
18
|
+
export declare function compressPacket(packet: ICommonsNetworkPacket): TCommonsNetworkPacketCompressed;
|
|
19
|
+
export declare function decompressPacket(compressed: TCommonsNetworkPacketCompressed): ICommonsNetworkPacket;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { commonsBase62HasPropertyId, commonsBase62IsId, commonsTypeHasProperty, commonsTypeHasPropertyNumber, commonsTypeHasPropertyNumberOrUndefined, commonsTypeHasPropertyString, commonsTypeHasPropertyStringOrUndefined, commonsTypeIsEncoded } from 'tscommons-esm-core';
|
|
2
|
+
import { REGEX_PATTERN_COMMAND, REGEX_PATTERN_NS } from '../interfaces/icommons-network-packet.mjs';
|
|
3
|
+
import { ETransmissionMethod } from '../enums/etransmission-method.mjs';
|
|
4
|
+
export function isTCommonsNetworkPacketCompressed(test) {
|
|
5
|
+
if (!commonsBase62HasPropertyId(test, 'i'))
|
|
6
|
+
return false;
|
|
7
|
+
if (!commonsTypeHasPropertyString(test, 'm') || !['b', 'd', 'm'].includes(test.m))
|
|
8
|
+
return false;
|
|
9
|
+
if (!commonsBase62HasPropertyId(test, 'c'))
|
|
10
|
+
return false;
|
|
11
|
+
if (!commonsTypeHasPropertyStringOrUndefined(test, 'd'))
|
|
12
|
+
return false;
|
|
13
|
+
if (!commonsBase62HasPropertyId(test, 's'))
|
|
14
|
+
return false;
|
|
15
|
+
if (!commonsTypeHasPropertyNumberOrUndefined(test, 'o'))
|
|
16
|
+
return false;
|
|
17
|
+
if (!commonsTypeHasPropertyNumber(test, 't'))
|
|
18
|
+
return false;
|
|
19
|
+
if (!commonsTypeHasPropertyNumberOrUndefined(test, 'e'))
|
|
20
|
+
return false;
|
|
21
|
+
if (!commonsTypeHasPropertyString(test, 'n'))
|
|
22
|
+
return false;
|
|
23
|
+
if (!commonsTypeHasPropertyString(test, 'x'))
|
|
24
|
+
return false;
|
|
25
|
+
if (commonsTypeHasProperty(test, 'z') && !commonsTypeIsEncoded(test['z']))
|
|
26
|
+
return false;
|
|
27
|
+
if (!commonsTypeHasPropertyNumberOrUndefined(test, 'r'))
|
|
28
|
+
return false;
|
|
29
|
+
switch (test.m) {
|
|
30
|
+
case 'b':
|
|
31
|
+
break;
|
|
32
|
+
case 'd':
|
|
33
|
+
if (!commonsBase62HasPropertyId(test, 'd'))
|
|
34
|
+
return false;
|
|
35
|
+
break;
|
|
36
|
+
case 'm': {
|
|
37
|
+
if (!commonsTypeHasPropertyString(test, 'd'))
|
|
38
|
+
return false;
|
|
39
|
+
const destinations = test.d.split(',');
|
|
40
|
+
for (const destination of destinations) {
|
|
41
|
+
if (!commonsBase62IsId(destination))
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const regexNs = new RegExp(REGEX_PATTERN_NS);
|
|
48
|
+
if (!regexNs.test(test.n))
|
|
49
|
+
return false;
|
|
50
|
+
const regexCommand = new RegExp(REGEX_PATTERN_COMMAND);
|
|
51
|
+
if (!regexCommand.test(test.x))
|
|
52
|
+
return false;
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
export function compressPacket(packet) {
|
|
56
|
+
const compressed = {
|
|
57
|
+
i: packet.id,
|
|
58
|
+
m: '',
|
|
59
|
+
c: packet.channel,
|
|
60
|
+
s: packet.source,
|
|
61
|
+
t: packet.timestamp,
|
|
62
|
+
n: packet.ns,
|
|
63
|
+
x: packet.command
|
|
64
|
+
};
|
|
65
|
+
switch (packet.method) {
|
|
66
|
+
case ETransmissionMethod.BROADCAST:
|
|
67
|
+
compressed.m = 'b';
|
|
68
|
+
break;
|
|
69
|
+
case ETransmissionMethod.DIRECT:
|
|
70
|
+
compressed.m = 'd';
|
|
71
|
+
compressed.d = packet.destination;
|
|
72
|
+
break;
|
|
73
|
+
case ETransmissionMethod.MULTICAST:
|
|
74
|
+
compressed.m = 'm';
|
|
75
|
+
compressed.d = packet.destinations.join(',');
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
if (packet.ignoreOwn)
|
|
79
|
+
compressed.o = 1;
|
|
80
|
+
if (packet.expiry !== undefined)
|
|
81
|
+
compressed.e = packet.expiry;
|
|
82
|
+
if (packet.data !== undefined)
|
|
83
|
+
compressed.z = packet.data;
|
|
84
|
+
if (packet.replay !== undefined)
|
|
85
|
+
compressed.r = packet.replay ? 1 : 0;
|
|
86
|
+
return compressed;
|
|
87
|
+
}
|
|
88
|
+
export function decompressPacket(compressed) {
|
|
89
|
+
const packet = {
|
|
90
|
+
id: compressed.i,
|
|
91
|
+
method: ETransmissionMethod.BROADCAST,
|
|
92
|
+
channel: compressed.c,
|
|
93
|
+
source: compressed.s,
|
|
94
|
+
timestamp: compressed.t,
|
|
95
|
+
ns: compressed.n,
|
|
96
|
+
command: compressed.x
|
|
97
|
+
};
|
|
98
|
+
switch (compressed.m) {
|
|
99
|
+
case 'b':
|
|
100
|
+
packet.method = ETransmissionMethod.BROADCAST;
|
|
101
|
+
break;
|
|
102
|
+
case 'd':
|
|
103
|
+
packet.method = ETransmissionMethod.DIRECT;
|
|
104
|
+
packet.destination = compressed.d;
|
|
105
|
+
break;
|
|
106
|
+
case 'm':
|
|
107
|
+
packet.method = ETransmissionMethod.MULTICAST;
|
|
108
|
+
packet.destinations = compressed.d.split(',');
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
if (compressed.o === 1)
|
|
112
|
+
packet.ignoreOwn = true;
|
|
113
|
+
if (compressed.e !== undefined)
|
|
114
|
+
packet.expiry = compressed.e;
|
|
115
|
+
if (compressed.z !== undefined)
|
|
116
|
+
packet.data = compressed.z;
|
|
117
|
+
if (compressed.r !== undefined)
|
|
118
|
+
packet.replay = compressed.r === 1;
|
|
119
|
+
return packet;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=tcommons-network-packet-compressed.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcommons-network-packet-compressed.mjs","sourceRoot":"","sources":["../../src/types/tcommons-network-packet-compressed.mts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tscommons-esm-network",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"tsc": "./node_modules/typescript/bin/tsc",
|
|
7
|
+
"preprepare": "rm -rf ./dist; php ~/Dev/etim.php src/ && npm run tsc",
|
|
8
|
+
"publish-major": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version major && npm install && npm publish && git add . && git commit -m 'publish'",
|
|
9
|
+
"publish-minor": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version minor && npm install && npm publish && git add . && git commit -m 'publish'",
|
|
10
|
+
"publish-patch": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version patch && npm install && npm publish && git add . && git commit -m 'publish'"
|
|
11
|
+
},
|
|
12
|
+
"main": "dist/index.mjs",
|
|
13
|
+
"types": "dist/index.d.mjs",
|
|
14
|
+
"type": "module",
|
|
15
|
+
"author": "Pete Morris",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@stylistic/eslint-plugin-ts": "^2.10.1",
|
|
19
|
+
"eslint-plugin-import": "^2.31.0",
|
|
20
|
+
"eslint-plugin-prefer-arrow-functions": "^3.4.1",
|
|
21
|
+
"typescript": "^5.6.3",
|
|
22
|
+
"typescript-eslint": "^8.14.0"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist/**/*"
|
|
26
|
+
],
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"tscommons-esm-core": "^0.0.2"
|
|
29
|
+
}
|
|
30
|
+
}
|