@cnhongwei/react-native-mqtt 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +169 -2
- package/README.zh-CN.md +100 -0
- package/ReactNativeMqtt.podspec +28 -0
- package/THIRD_PARTY_NOTICES.md +17 -0
- package/android/build.gradle +70 -0
- package/android/consumer-rules.pro +10 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/com/cnhongwei/reactnativemqtt/MqttOptionsParser.kt +176 -0
- package/android/src/main/java/com/cnhongwei/reactnativemqtt/MqttSession.kt +1006 -0
- package/android/src/main/java/com/cnhongwei/reactnativemqtt/PahoLogger.java +44 -0
- package/android/src/main/java/com/cnhongwei/reactnativemqtt/PahoMqttTransport.kt +399 -0
- package/android/src/main/java/com/cnhongwei/reactnativemqtt/ReactNativeMqttModule.kt +619 -0
- package/android/src/main/java/com/cnhongwei/reactnativemqtt/ReactNativeMqttPackage.kt +31 -0
- package/ios/ReactNativeMqtt.h +15 -0
- package/ios/ReactNativeMqtt.mm +1184 -0
- package/ios/ReactNativeMqttCocoaTransport.swift +782 -0
- package/ios/ReactNativeMqttConnAckProbe.swift +87 -0
- package/ios/ReactNativeMqttSession.swift +420 -0
- package/lib/module/NativeReactNativeMqtt.js +5 -0
- package/lib/module/NativeReactNativeMqtt.js.map +1 -0
- package/lib/module/client.js +555 -0
- package/lib/module/client.js.map +1 -0
- package/lib/module/errors.js +20 -0
- package/lib/module/errors.js.map +1 -0
- package/lib/module/helpers.js +116 -0
- package/lib/module/helpers.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/validation.js +306 -0
- package/lib/module/validation.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/NativeReactNativeMqtt.d.ts +154 -0
- package/lib/typescript/src/NativeReactNativeMqtt.d.ts.map +1 -0
- package/lib/typescript/src/client.d.ts +3 -0
- package/lib/typescript/src/client.d.ts.map +1 -0
- package/lib/typescript/src/errors.d.ts +18 -0
- package/lib/typescript/src/errors.d.ts.map +1 -0
- package/lib/typescript/src/helpers.d.ts +5 -0
- package/lib/typescript/src/helpers.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +9 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +161 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/validation.d.ts +13 -0
- package/lib/typescript/src/validation.d.ts.map +1 -0
- package/package.json +188 -4
- package/react-native.config.js +1 -0
- package/src/NativeReactNativeMqtt.ts +173 -0
- package/src/client.ts +859 -0
- package/src/errors.ts +51 -0
- package/src/helpers.ts +151 -0
- package/src/index.ts +30 -0
- package/src/types.ts +184 -0
- package/src/validation.ts +735 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { MqttError } from "./errors.js";
|
|
4
|
+
const textEncoder = () => {
|
|
5
|
+
const ctor = globalThis.TextEncoder;
|
|
6
|
+
return ctor === undefined ? undefined : new ctor();
|
|
7
|
+
};
|
|
8
|
+
const textDecoder = () => {
|
|
9
|
+
const ctor = globalThis.TextDecoder;
|
|
10
|
+
return ctor === undefined ? undefined : new ctor('utf-8', {
|
|
11
|
+
fatal: true
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
function invalidPayload(message) {
|
|
15
|
+
return new MqttError('ERR_INVALID_PAYLOAD', message, {
|
|
16
|
+
outcome: 'not-sent'
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function encodeUtf8(text) {
|
|
20
|
+
const encoder = textEncoder();
|
|
21
|
+
if (encoder === undefined) throw invalidPayload('TextEncoder is unavailable');
|
|
22
|
+
return encoder.encode(text);
|
|
23
|
+
}
|
|
24
|
+
export function decodeUtf8(bytes) {
|
|
25
|
+
const decoder = textDecoder();
|
|
26
|
+
if (decoder !== undefined) {
|
|
27
|
+
try {
|
|
28
|
+
return decoder.decode(bytes);
|
|
29
|
+
} catch {
|
|
30
|
+
throw invalidPayload('Payload is not valid UTF-8');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Hermes/RN versions without TextDecoder still need a deterministic,
|
|
35
|
+
// strict decoder for incoming MQTT payloads.
|
|
36
|
+
let result = '';
|
|
37
|
+
const codePoints = [];
|
|
38
|
+
const flush = () => {
|
|
39
|
+
if (codePoints.length === 0) return;
|
|
40
|
+
result += String.fromCodePoint(...codePoints);
|
|
41
|
+
codePoints.length = 0;
|
|
42
|
+
};
|
|
43
|
+
const continuation = index => {
|
|
44
|
+
const value = bytes[index];
|
|
45
|
+
if (value === undefined || (value & 0xc0) !== 0x80) throw invalidPayload('Payload is not valid UTF-8');
|
|
46
|
+
return value & 0x3f;
|
|
47
|
+
};
|
|
48
|
+
for (let index = 0; index < bytes.length; index += 1) {
|
|
49
|
+
const first = bytes[index];
|
|
50
|
+
if (first === undefined) throw invalidPayload('Payload is not valid UTF-8');
|
|
51
|
+
if (first <= 0x7f) {
|
|
52
|
+
codePoints.push(first);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
let codePoint;
|
|
56
|
+
if (first >= 0xc2 && first <= 0xdf) {
|
|
57
|
+
codePoint = (first & 0x1f) << 6 | continuation(index + 1);
|
|
58
|
+
index += 1;
|
|
59
|
+
} else if (first >= 0xe0 && first <= 0xef) {
|
|
60
|
+
const second = bytes[index + 1];
|
|
61
|
+
if (second === undefined || (second & 0xc0) !== 0x80 || first === 0xe0 && second < 0xa0 || first === 0xed && second > 0x9f) throw invalidPayload('Payload is not valid UTF-8');
|
|
62
|
+
codePoint = (first & 0x0f) << 12 | (second & 0x3f) << 6 | continuation(index + 2);
|
|
63
|
+
index += 2;
|
|
64
|
+
} else if (first >= 0xf0 && first <= 0xf4) {
|
|
65
|
+
const second = bytes[index + 1];
|
|
66
|
+
if (second === undefined || (second & 0xc0) !== 0x80 || first === 0xf0 && second < 0x90 || first === 0xf4 && second > 0x8f) throw invalidPayload('Payload is not valid UTF-8');
|
|
67
|
+
codePoint = (first & 0x07) << 18 | (second & 0x3f) << 12 | continuation(index + 2) << 6 | continuation(index + 3);
|
|
68
|
+
index += 3;
|
|
69
|
+
} else {
|
|
70
|
+
throw invalidPayload('Payload is not valid UTF-8');
|
|
71
|
+
}
|
|
72
|
+
codePoints.push(codePoint);
|
|
73
|
+
if (codePoints.length >= 0x4000) flush();
|
|
74
|
+
}
|
|
75
|
+
flush();
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
const base64Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
79
|
+
export function encodeBase64(bytes) {
|
|
80
|
+
let result = '';
|
|
81
|
+
for (let index = 0; index < bytes.length; index += 3) {
|
|
82
|
+
const a = bytes[index] ?? 0;
|
|
83
|
+
const b = bytes[index + 1];
|
|
84
|
+
const c = bytes[index + 2];
|
|
85
|
+
result += base64Alphabet[a >> 2];
|
|
86
|
+
result += base64Alphabet[(a & 3) << 4 | (b ?? 0) >> 4];
|
|
87
|
+
result += b === undefined ? '=' : base64Alphabet[(b & 15) << 2 | (c ?? 0) >> 6];
|
|
88
|
+
result += c === undefined ? '=' : base64Alphabet[c & 63];
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
export function decodeBase64(text) {
|
|
93
|
+
if (text.length % 4 !== 0 || /[^A-Za-z0-9+/=]/.test(text)) throw invalidPayload('Base64 must use RFC 4648 alphabet and padding');
|
|
94
|
+
const padding = text.endsWith('==') ? 2 : text.endsWith('=') ? 1 : 0;
|
|
95
|
+
const firstPadding = text.indexOf('=');
|
|
96
|
+
if (firstPadding >= 0 && firstPadding < text.length - padding) throw invalidPayload('Base64 padding is invalid');
|
|
97
|
+
const output = new Uint8Array(text.length / 4 * 3 - padding);
|
|
98
|
+
let outputIndex = 0;
|
|
99
|
+
for (let index = 0; index < text.length; index += 4) {
|
|
100
|
+
const chars = text.slice(index, index + 4);
|
|
101
|
+
const values = chars.split('').map(char => char === '=' ? 0 : base64Alphabet.indexOf(char));
|
|
102
|
+
const v0 = values[0] ?? -1;
|
|
103
|
+
const v1 = values[1] ?? -1;
|
|
104
|
+
const v2 = values[2] ?? -1;
|
|
105
|
+
const v3 = values[3] ?? -1;
|
|
106
|
+
if ([v0, v1, v2, v3].some(value => value < 0)) throw invalidPayload('Base64 contains an invalid character');
|
|
107
|
+
if (chars[2] === '=' && (v1 & 15) !== 0) throw invalidPayload('Base64 has non-zero trailing bits');
|
|
108
|
+
if (chars[3] === '=' && chars[2] !== '=' && (v2 & 3) !== 0) throw invalidPayload('Base64 has non-zero trailing bits');
|
|
109
|
+
const combined = v0 << 18 | v1 << 12 | v2 << 6 | v3;
|
|
110
|
+
if (outputIndex < output.length) output[outputIndex++] = combined >> 16 & 255;
|
|
111
|
+
if (outputIndex < output.length) output[outputIndex++] = combined >> 8 & 255;
|
|
112
|
+
if (outputIndex < output.length) output[outputIndex++] = combined & 255;
|
|
113
|
+
}
|
|
114
|
+
return output;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MqttError","textEncoder","ctor","globalThis","TextEncoder","undefined","textDecoder","TextDecoder","fatal","invalidPayload","message","outcome","encodeUtf8","text","encoder","encode","decodeUtf8","bytes","decoder","decode","result","codePoints","flush","length","String","fromCodePoint","continuation","index","value","first","push","codePoint","second","base64Alphabet","encodeBase64","a","b","c","decodeBase64","test","padding","endsWith","firstPadding","indexOf","output","Uint8Array","outputIndex","chars","slice","values","split","map","char","v0","v1","v2","v3","some","combined"],"sourceRoot":"../../src","sources":["helpers.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,aAAU;AAGpC,MAAMC,WAAW,GAAGA,CAAA,KAAmC;EACrD,MAAMC,IAAI,GACRC,UAAU,CACVC,WAAW;EACb,OAAOF,IAAI,KAAKG,SAAS,GAAGA,SAAS,GAAG,IAAIH,IAAI,CAAC,CAAC;AACpD,CAAC;AACD,MAAMI,WAAW,GAAGA,CAAA,KAAmC;EACrD,MAAMJ,IAAI,GACRC,UAAU,CAMVI,WAAW;EACb,OAAOL,IAAI,KAAKG,SAAS,GAAGA,SAAS,GAAG,IAAIH,IAAI,CAAC,OAAO,EAAE;IAAEM,KAAK,EAAE;EAAK,CAAC,CAAC;AAC5E,CAAC;AACD,SAASC,cAAcA,CAACC,OAAe,EAAa;EAClD,OAAO,IAAIV,SAAS,CAAC,qBAAqB,EAAEU,OAAO,EAAE;IAAEC,OAAO,EAAE;EAAW,CAAC,CAAC;AAC/E;AACA,OAAO,SAASC,UAAUA,CAACC,IAAY,EAAc;EACnD,MAAMC,OAAO,GAAGb,WAAW,CAAC,CAAC;EAC7B,IAAIa,OAAO,KAAKT,SAAS,EAAE,MAAMI,cAAc,CAAC,4BAA4B,CAAC;EAC7E,OAAOK,OAAO,CAACC,MAAM,CAACF,IAAI,CAAC;AAC7B;AACA,OAAO,SAASG,UAAUA,CAACC,KAAiB,EAAU;EACpD,MAAMC,OAAO,GAAGZ,WAAW,CAAC,CAAC;EAC7B,IAAIY,OAAO,KAAKb,SAAS,EAAE;IACzB,IAAI;MACF,OAAOa,OAAO,CAACC,MAAM,CAACF,KAAK,CAAC;IAC9B,CAAC,CAAC,MAAM;MACN,MAAMR,cAAc,CAAC,4BAA4B,CAAC;IACpD;EACF;;EAEA;EACA;EACA,IAAIW,MAAM,GAAG,EAAE;EACf,MAAMC,UAAoB,GAAG,EAAE;EAC/B,MAAMC,KAAK,GAAGA,CAAA,KAAY;IACxB,IAAID,UAAU,CAACE,MAAM,KAAK,CAAC,EAAE;IAC7BH,MAAM,IAAII,MAAM,CAACC,aAAa,CAAC,GAAGJ,UAAU,CAAC;IAC7CA,UAAU,CAACE,MAAM,GAAG,CAAC;EACvB,CAAC;EACD,MAAMG,YAAY,GAAIC,KAAa,IAAa;IAC9C,MAAMC,KAAK,GAAGX,KAAK,CAACU,KAAK,CAAC;IAC1B,IAAIC,KAAK,KAAKvB,SAAS,IAAI,CAACuB,KAAK,GAAG,IAAI,MAAM,IAAI,EAChD,MAAMnB,cAAc,CAAC,4BAA4B,CAAC;IACpD,OAAOmB,KAAK,GAAG,IAAI;EACrB,CAAC;EACD,KAAK,IAAID,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGV,KAAK,CAACM,MAAM,EAAEI,KAAK,IAAI,CAAC,EAAE;IACpD,MAAME,KAAK,GAAGZ,KAAK,CAACU,KAAK,CAAC;IAC1B,IAAIE,KAAK,KAAKxB,SAAS,EAAE,MAAMI,cAAc,CAAC,4BAA4B,CAAC;IAC3E,IAAIoB,KAAK,IAAI,IAAI,EAAE;MACjBR,UAAU,CAACS,IAAI,CAACD,KAAK,CAAC;MACtB;IACF;IACA,IAAIE,SAAiB;IACrB,IAAIF,KAAK,IAAI,IAAI,IAAIA,KAAK,IAAI,IAAI,EAAE;MAClCE,SAAS,GAAI,CAACF,KAAK,GAAG,IAAI,KAAK,CAAC,GAAIH,YAAY,CAACC,KAAK,GAAG,CAAC,CAAC;MAC3DA,KAAK,IAAI,CAAC;IACZ,CAAC,MAAM,IAAIE,KAAK,IAAI,IAAI,IAAIA,KAAK,IAAI,IAAI,EAAE;MACzC,MAAMG,MAAM,GAAGf,KAAK,CAACU,KAAK,GAAG,CAAC,CAAC;MAC/B,IACEK,MAAM,KAAK3B,SAAS,IACpB,CAAC2B,MAAM,GAAG,IAAI,MAAM,IAAI,IACvBH,KAAK,KAAK,IAAI,IAAIG,MAAM,GAAG,IAAK,IAChCH,KAAK,KAAK,IAAI,IAAIG,MAAM,GAAG,IAAK,EAEjC,MAAMvB,cAAc,CAAC,4BAA4B,CAAC;MACpDsB,SAAS,GACN,CAACF,KAAK,GAAG,IAAI,KAAK,EAAE,GACpB,CAACG,MAAM,GAAG,IAAI,KAAK,CAAE,GACtBN,YAAY,CAACC,KAAK,GAAG,CAAC,CAAC;MACzBA,KAAK,IAAI,CAAC;IACZ,CAAC,MAAM,IAAIE,KAAK,IAAI,IAAI,IAAIA,KAAK,IAAI,IAAI,EAAE;MACzC,MAAMG,MAAM,GAAGf,KAAK,CAACU,KAAK,GAAG,CAAC,CAAC;MAC/B,IACEK,MAAM,KAAK3B,SAAS,IACpB,CAAC2B,MAAM,GAAG,IAAI,MAAM,IAAI,IACvBH,KAAK,KAAK,IAAI,IAAIG,MAAM,GAAG,IAAK,IAChCH,KAAK,KAAK,IAAI,IAAIG,MAAM,GAAG,IAAK,EAEjC,MAAMvB,cAAc,CAAC,4BAA4B,CAAC;MACpDsB,SAAS,GACN,CAACF,KAAK,GAAG,IAAI,KAAK,EAAE,GACpB,CAACG,MAAM,GAAG,IAAI,KAAK,EAAG,GACtBN,YAAY,CAACC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAE,GAC9BD,YAAY,CAACC,KAAK,GAAG,CAAC,CAAC;MACzBA,KAAK,IAAI,CAAC;IACZ,CAAC,MAAM;MACL,MAAMlB,cAAc,CAAC,4BAA4B,CAAC;IACpD;IACAY,UAAU,CAACS,IAAI,CAACC,SAAS,CAAC;IAC1B,IAAIV,UAAU,CAACE,MAAM,IAAI,MAAM,EAAED,KAAK,CAAC,CAAC;EAC1C;EACAA,KAAK,CAAC,CAAC;EACP,OAAOF,MAAM;AACf;AACA,MAAMa,cAAc,GAClB,kEAAkE;AACpE,OAAO,SAASC,YAAYA,CAACjB,KAAiB,EAAU;EACtD,IAAIG,MAAM,GAAG,EAAE;EACf,KAAK,IAAIO,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGV,KAAK,CAACM,MAAM,EAAEI,KAAK,IAAI,CAAC,EAAE;IACpD,MAAMQ,CAAC,GAAGlB,KAAK,CAACU,KAAK,CAAC,IAAI,CAAC;IAC3B,MAAMS,CAAC,GAAGnB,KAAK,CAACU,KAAK,GAAG,CAAC,CAAC;IAC1B,MAAMU,CAAC,GAAGpB,KAAK,CAACU,KAAK,GAAG,CAAC,CAAC;IAC1BP,MAAM,IAAIa,cAAc,CAACE,CAAC,IAAI,CAAC,CAAC;IAChCf,MAAM,IAAIa,cAAc,CAAE,CAACE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAK,CAACC,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;IAC1DhB,MAAM,IACJgB,CAAC,KAAK/B,SAAS,GAAG,GAAG,GAAG4B,cAAc,CAAE,CAACG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAK,CAACC,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;IAC3EjB,MAAM,IAAIiB,CAAC,KAAKhC,SAAS,GAAG,GAAG,GAAG4B,cAAc,CAACI,CAAC,GAAG,EAAE,CAAC;EAC1D;EACA,OAAOjB,MAAM;AACf;AACA,OAAO,SAASkB,YAAYA,CAACzB,IAAY,EAAc;EACrD,IAAIA,IAAI,CAACU,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAACgB,IAAI,CAAC1B,IAAI,CAAC,EACvD,MAAMJ,cAAc,CAAC,+CAA+C,CAAC;EACvE,MAAM+B,OAAO,GAAG3B,IAAI,CAAC4B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG5B,IAAI,CAAC4B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EACpE,MAAMC,YAAY,GAAG7B,IAAI,CAAC8B,OAAO,CAAC,GAAG,CAAC;EACtC,IAAID,YAAY,IAAI,CAAC,IAAIA,YAAY,GAAG7B,IAAI,CAACU,MAAM,GAAGiB,OAAO,EAC3D,MAAM/B,cAAc,CAAC,2BAA2B,CAAC;EACnD,MAAMmC,MAAM,GAAG,IAAIC,UAAU,CAAEhC,IAAI,CAACU,MAAM,GAAG,CAAC,GAAI,CAAC,GAAGiB,OAAO,CAAC;EAC9D,IAAIM,WAAW,GAAG,CAAC;EACnB,KAAK,IAAInB,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGd,IAAI,CAACU,MAAM,EAAEI,KAAK,IAAI,CAAC,EAAE;IACnD,MAAMoB,KAAK,GAAGlC,IAAI,CAACmC,KAAK,CAACrB,KAAK,EAAEA,KAAK,GAAG,CAAC,CAAC;IAC1C,MAAMsB,MAAM,GAAGF,KAAK,CACjBG,KAAK,CAAC,EAAE,CAAC,CACTC,GAAG,CAAEC,IAAI,IAAMA,IAAI,KAAK,GAAG,GAAG,CAAC,GAAGnB,cAAc,CAACU,OAAO,CAACS,IAAI,CAAE,CAAC;IACnE,MAAMC,EAAE,GAAGJ,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAMK,EAAE,GAAGL,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAMM,EAAE,GAAGN,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAMO,EAAE,GAAGP,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAACI,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,CAACC,IAAI,CAAE7B,KAAK,IAAKA,KAAK,GAAG,CAAC,CAAC,EAC7C,MAAMnB,cAAc,CAAC,sCAAsC,CAAC;IAC9D,IAAIsC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAACO,EAAE,GAAG,EAAE,MAAM,CAAC,EACrC,MAAM7C,cAAc,CAAC,mCAAmC,CAAC;IAC3D,IAAIsC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAACQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACxD,MAAM9C,cAAc,CAAC,mCAAmC,CAAC;IAC3D,MAAMiD,QAAQ,GAAIL,EAAE,IAAI,EAAE,GAAKC,EAAE,IAAI,EAAG,GAAIC,EAAE,IAAI,CAAE,GAAGC,EAAE;IACzD,IAAIV,WAAW,GAAGF,MAAM,CAACrB,MAAM,EAC7BqB,MAAM,CAACE,WAAW,EAAE,CAAC,GAAIY,QAAQ,IAAI,EAAE,GAAI,GAAG;IAChD,IAAIZ,WAAW,GAAGF,MAAM,CAACrB,MAAM,EAC7BqB,MAAM,CAACE,WAAW,EAAE,CAAC,GAAIY,QAAQ,IAAI,CAAC,GAAI,GAAG;IAC/C,IAAIZ,WAAW,GAAGF,MAAM,CAACrB,MAAM,EAAEqB,MAAM,CAACE,WAAW,EAAE,CAAC,GAAGY,QAAQ,GAAG,GAAG;EACzE;EACA,OAAOd,MAAM;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { MqttError } from "./errors.js";
|
|
4
|
+
export { createMqttClient } from "./client.js";
|
|
5
|
+
export { decodeBase64, decodeUtf8, encodeBase64, encodeUtf8 } from "./helpers.js";
|
|
6
|
+
export const packageName = '@cnhongwei/react-native-mqtt';
|
|
7
|
+
export const packageVersion = '0.1.0';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MqttError","createMqttClient","decodeBase64","decodeUtf8","encodeBase64","encodeUtf8","packageName","packageVersion"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AACA,SAASA,SAAS,QAAQ,aAAU;AAEpC,SAASC,gBAAgB,QAAQ,aAAU;AAC3C,SAASC,YAAY,EAAEC,UAAU,EAAEC,YAAY,EAAEC,UAAU,QAAQ,cAAW;AAwB9E,OAAO,MAAMC,WAAW,GAAG,8BAAuC;AAClE,OAAO,MAAMC,cAAc,GAAG,OAAgB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { invalidOptions } from "./errors.js";
|
|
4
|
+
import { decodeBase64, decodeUtf8, encodeBase64, encodeUtf8 } from "./helpers.js";
|
|
5
|
+
const ownKeys = value => Object.keys(value);
|
|
6
|
+
function object(value, name) {
|
|
7
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
8
|
+
throw invalidOptions(`${name} must be an object`);
|
|
9
|
+
}
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
function exactKeys(value, allowed, name) {
|
|
13
|
+
const unknown = ownKeys(value).find(key => !allowed.includes(key));
|
|
14
|
+
if (unknown !== undefined) throw invalidOptions(`${name}.${unknown} is not supported`);
|
|
15
|
+
}
|
|
16
|
+
function stringValue(value, name, allowEmpty = true) {
|
|
17
|
+
if (typeof value !== 'string' || !allowEmpty && value.length === 0) throw invalidOptions(`${name} must be a string`);
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
function wellFormedMqttText(value) {
|
|
21
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
22
|
+
const code = value.charCodeAt(index);
|
|
23
|
+
if (code === 0 || code >= 0xd800 && code <= 0xdfff) {
|
|
24
|
+
if (code < 0xdc00 && index + 1 < value.length) {
|
|
25
|
+
const next = value.charCodeAt(index + 1);
|
|
26
|
+
if (next >= 0xdc00 && next <= 0xdfff) {
|
|
27
|
+
index += 1;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
function mqttString(value, name, allowEmpty = true) {
|
|
37
|
+
const result = stringValue(value, name, allowEmpty);
|
|
38
|
+
if (!wellFormedMqttText(result)) throw invalidOptions(`${name} is not a valid MQTT UTF-8 string`);
|
|
39
|
+
if (encodeUtf8(result).length > 65535) throw invalidOptions(`${name} exceeds the MQTT UTF-8 string limit`);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
function boolValue(value, name) {
|
|
43
|
+
if (typeof value !== 'boolean') throw invalidOptions(`${name} must be a boolean`);
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
function integer(value, name, min, max) {
|
|
47
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < min || value > max) throw invalidOptions(`${name} must be an integer in ${min}..${max}`);
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
function ratio(value, name) {
|
|
51
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0 || value > 1) throw invalidOptions(`${name} must be a number in 0..1`);
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
function propertyPairs(value, name) {
|
|
55
|
+
if (!Array.isArray(value)) throw invalidOptions(`${name} must be an array`);
|
|
56
|
+
return value.map((item, index) => {
|
|
57
|
+
const pair = object(item, `${name}[${index}]`);
|
|
58
|
+
exactKeys(pair, ['key', 'value'], `${name}[${index}]`);
|
|
59
|
+
return {
|
|
60
|
+
key: mqttString(pair.key, `${name}[${index}].key`),
|
|
61
|
+
value: mqttString(pair.value, `${name}[${index}].value`)
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function base64(value, name) {
|
|
66
|
+
const text = stringValue(value, name);
|
|
67
|
+
decodeBase64(text);
|
|
68
|
+
return text;
|
|
69
|
+
}
|
|
70
|
+
function validateTls(value) {
|
|
71
|
+
if (value === undefined) return undefined;
|
|
72
|
+
const tls = object(value, 'tls');
|
|
73
|
+
exactKeys(tls, ['caBase64', 'p12Base64', 'p12Password', 'insecure', 'allowInvalidHostnameForTesting'], 'tls');
|
|
74
|
+
const result = {};
|
|
75
|
+
if (tls.caBase64 !== undefined) result.caBase64 = base64(tls.caBase64, 'tls.caBase64');
|
|
76
|
+
if (tls.p12Base64 !== undefined) result.p12Base64 = base64(tls.p12Base64, 'tls.p12Base64');
|
|
77
|
+
if (tls.p12Password !== undefined) result.p12Password = stringValue(tls.p12Password, 'tls.p12Password');
|
|
78
|
+
if (tls.insecure !== undefined) result.insecure = boolValue(tls.insecure, 'tls.insecure');
|
|
79
|
+
if (tls.allowInvalidHostnameForTesting !== undefined) result.allowInvalidHostnameForTesting = boolValue(tls.allowInvalidHostnameForTesting, 'tls.allowInvalidHostnameForTesting');
|
|
80
|
+
if (result.p12Password !== undefined && result.p12Base64 === undefined) throw invalidOptions('tls.p12Password requires tls.p12Base64');
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
function validateReconnect(value) {
|
|
84
|
+
if (value === undefined) return {
|
|
85
|
+
enabled: true,
|
|
86
|
+
initialDelayMs: 1000,
|
|
87
|
+
maxDelayMs: 30000,
|
|
88
|
+
jitterRatio: 0.2
|
|
89
|
+
};
|
|
90
|
+
const reconnect = object(value, 'reconnect');
|
|
91
|
+
exactKeys(reconnect, ['enabled', 'initialDelayMs', 'maxDelayMs', 'jitterRatio'], 'reconnect');
|
|
92
|
+
const result = {
|
|
93
|
+
enabled: reconnect.enabled === undefined ? true : boolValue(reconnect.enabled, 'reconnect.enabled'),
|
|
94
|
+
initialDelayMs: reconnect.initialDelayMs === undefined ? 1000 : integer(reconnect.initialDelayMs, 'reconnect.initialDelayMs', 1, Number.MAX_SAFE_INTEGER),
|
|
95
|
+
maxDelayMs: reconnect.maxDelayMs === undefined ? 30000 : integer(reconnect.maxDelayMs, 'reconnect.maxDelayMs', 1, Number.MAX_SAFE_INTEGER),
|
|
96
|
+
jitterRatio: reconnect.jitterRatio === undefined ? 0.2 : ratio(reconnect.jitterRatio, 'reconnect.jitterRatio')
|
|
97
|
+
};
|
|
98
|
+
if ((result.maxDelayMs ?? 0) < (result.initialDelayMs ?? 0)) throw invalidOptions('reconnect.maxDelayMs must be >= initialDelayMs');
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
function validateDelivery(value) {
|
|
102
|
+
if (value === undefined) return {
|
|
103
|
+
maxQueuedMessages: 1024,
|
|
104
|
+
maxQueuedBytes: 8388608,
|
|
105
|
+
maxMessageBytes: 1048576,
|
|
106
|
+
batchMaxMessages: 64,
|
|
107
|
+
batchMaxBytes: 262144,
|
|
108
|
+
batchAckTimeoutMs: 15000,
|
|
109
|
+
overflowPolicy: 'disconnect'
|
|
110
|
+
};
|
|
111
|
+
const delivery = object(value, 'delivery');
|
|
112
|
+
exactKeys(delivery, ['maxQueuedMessages', 'maxQueuedBytes', 'maxMessageBytes', 'batchMaxMessages', 'batchMaxBytes', 'batchAckTimeoutMs', 'overflowPolicy'], 'delivery');
|
|
113
|
+
const result = {
|
|
114
|
+
maxQueuedMessages: delivery.maxQueuedMessages === undefined ? 1024 : integer(delivery.maxQueuedMessages, 'delivery.maxQueuedMessages', 1, Number.MAX_SAFE_INTEGER),
|
|
115
|
+
maxQueuedBytes: delivery.maxQueuedBytes === undefined ? 8388608 : integer(delivery.maxQueuedBytes, 'delivery.maxQueuedBytes', 1, Number.MAX_SAFE_INTEGER),
|
|
116
|
+
maxMessageBytes: delivery.maxMessageBytes === undefined ? 1048576 : integer(delivery.maxMessageBytes, 'delivery.maxMessageBytes', 1, Number.MAX_SAFE_INTEGER),
|
|
117
|
+
batchMaxMessages: delivery.batchMaxMessages === undefined ? 64 : integer(delivery.batchMaxMessages, 'delivery.batchMaxMessages', 1, Number.MAX_SAFE_INTEGER),
|
|
118
|
+
batchMaxBytes: delivery.batchMaxBytes === undefined ? 262144 : integer(delivery.batchMaxBytes, 'delivery.batchMaxBytes', 1, Number.MAX_SAFE_INTEGER),
|
|
119
|
+
batchAckTimeoutMs: delivery.batchAckTimeoutMs === undefined ? 15000 : integer(delivery.batchAckTimeoutMs, 'delivery.batchAckTimeoutMs', 1, Number.MAX_SAFE_INTEGER),
|
|
120
|
+
overflowPolicy: delivery.overflowPolicy === undefined ? 'disconnect' : delivery.overflowPolicy === 'drop-newest' ? 'drop-newest' : delivery.overflowPolicy === 'disconnect' ? 'disconnect' : undefined
|
|
121
|
+
};
|
|
122
|
+
if (result.overflowPolicy === undefined) throw invalidOptions('delivery.overflowPolicy is invalid');
|
|
123
|
+
if ((result.maxMessageBytes ?? 0) > (result.maxQueuedBytes ?? 0)) throw invalidOptions('delivery.maxMessageBytes must be <= maxQueuedBytes');
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
function validateWill(value) {
|
|
127
|
+
if (value === undefined) return undefined;
|
|
128
|
+
const will = object(value, 'will');
|
|
129
|
+
exactKeys(will, ['topic', 'payloadBase64', 'qos', 'retained'], 'will');
|
|
130
|
+
const result = {
|
|
131
|
+
topic: mqttString(will.topic, 'will.topic', false),
|
|
132
|
+
payloadBase64: base64(will.payloadBase64, 'will.payloadBase64'),
|
|
133
|
+
qos: will.qos === undefined ? 0 : integer(will.qos, 'will.qos', 0, 2),
|
|
134
|
+
retained: will.retained === undefined ? false : boolValue(will.retained, 'will.retained')
|
|
135
|
+
};
|
|
136
|
+
validateTopicName(result.topic);
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
function common(value) {
|
|
140
|
+
exactKeys(value, ['host', 'port', 'transport', 'path', 'clientId', 'username', 'password', 'keepAliveSeconds', 'connectTimeoutMs', 'operationTimeoutMs', 'disconnectTimeoutMs', 'reconnect', 'tls', 'will', 'delivery', 'protocolVersion', 'cleanSession', 'cleanStart', 'sessionExpiryIntervalSeconds', 'receiveMaximum', 'userProperties'], 'options');
|
|
141
|
+
const transport = value.transport === undefined ? 'tcp' : value.transport;
|
|
142
|
+
if (transport !== 'tcp' && transport !== 'tls' && transport !== 'ws' && transport !== 'wss') throw invalidOptions('transport is invalid');
|
|
143
|
+
const result = {
|
|
144
|
+
host: stringValue(value.host, 'host', false),
|
|
145
|
+
port: integer(value.port, 'port', 1, 65535),
|
|
146
|
+
transport: transport,
|
|
147
|
+
path: value.path === undefined ? undefined : stringValue(value.path, 'path', false),
|
|
148
|
+
clientId: value.clientId === undefined ? undefined : mqttString(value.clientId, 'clientId'),
|
|
149
|
+
username: value.username === undefined ? undefined : mqttString(value.username, 'username'),
|
|
150
|
+
password: value.password === undefined ? undefined : mqttString(value.password, 'password'),
|
|
151
|
+
keepAliveSeconds: value.keepAliveSeconds === undefined ? 60 : integer(value.keepAliveSeconds, 'keepAliveSeconds', 0, 65535),
|
|
152
|
+
connectTimeoutMs: value.connectTimeoutMs === undefined ? 30000 : integer(value.connectTimeoutMs, 'connectTimeoutMs', 1, Number.MAX_SAFE_INTEGER),
|
|
153
|
+
operationTimeoutMs: value.operationTimeoutMs === undefined ? 30000 : integer(value.operationTimeoutMs, 'operationTimeoutMs', 1, Number.MAX_SAFE_INTEGER),
|
|
154
|
+
disconnectTimeoutMs: value.disconnectTimeoutMs === undefined ? 5000 : integer(value.disconnectTimeoutMs, 'disconnectTimeoutMs', 1, Number.MAX_SAFE_INTEGER),
|
|
155
|
+
reconnect: validateReconnect(value.reconnect),
|
|
156
|
+
tls: validateTls(value.tls),
|
|
157
|
+
will: validateWill(value.will),
|
|
158
|
+
delivery: validateDelivery(value.delivery)
|
|
159
|
+
};
|
|
160
|
+
if (result.path !== undefined !== (transport === 'ws' || transport === 'wss') && result.path !== undefined) throw invalidOptions('path is only valid for ws/wss');
|
|
161
|
+
if ((transport === 'ws' || transport === 'wss') && result.path === undefined) result.path = '/mqtt';
|
|
162
|
+
if (result.tls !== undefined && transport !== 'tls' && transport !== 'wss') throw invalidOptions('tls options are only valid for tls/wss');
|
|
163
|
+
if (result.password !== undefined && result.username === undefined) throw invalidOptions('password requires username');
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
export function normalizeOptions(input) {
|
|
167
|
+
const value = object(input, 'options');
|
|
168
|
+
const result = common(value);
|
|
169
|
+
if (result.clientId !== undefined && encodeUtf8(result.clientId).length > 65535) throw invalidOptions('clientId exceeds the MQTT UTF-8 string limit');
|
|
170
|
+
const protocolVersion = value.protocolVersion === undefined ? 4 : value.protocolVersion;
|
|
171
|
+
if (protocolVersion !== 4 && protocolVersion !== 5) throw invalidOptions('protocolVersion must be 4 or 5');
|
|
172
|
+
if (protocolVersion === 4) {
|
|
173
|
+
if (result.clientId === '') throw invalidOptions('empty clientId is only valid for MQTT5 cleanStart');
|
|
174
|
+
if (value.cleanStart !== undefined || value.sessionExpiryIntervalSeconds !== undefined || value.receiveMaximum !== undefined || value.userProperties !== undefined) throw invalidOptions('MQTT5 options are not valid for protocolVersion 4');
|
|
175
|
+
return {
|
|
176
|
+
...result,
|
|
177
|
+
protocolVersion: 4,
|
|
178
|
+
cleanSession: value.cleanSession === undefined ? true : boolValue(value.cleanSession, 'cleanSession')
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
if (value.cleanSession !== undefined) throw invalidOptions('cleanSession is not valid for protocolVersion 5');
|
|
182
|
+
const sessionExpiry = value.sessionExpiryIntervalSeconds === undefined ? 0 : integer(value.sessionExpiryIntervalSeconds, 'sessionExpiryIntervalSeconds', 0, 4294967295);
|
|
183
|
+
const receiveMaximum = value.receiveMaximum === undefined ? 65535 : integer(value.receiveMaximum, 'receiveMaximum', 1, 65535);
|
|
184
|
+
const cleanStart = value.cleanStart === undefined ? true : boolValue(value.cleanStart, 'cleanStart');
|
|
185
|
+
if (result.clientId === '' && !cleanStart) throw invalidOptions('empty clientId requires MQTT5 cleanStart');
|
|
186
|
+
return {
|
|
187
|
+
...result,
|
|
188
|
+
protocolVersion: 5,
|
|
189
|
+
cleanStart,
|
|
190
|
+
sessionExpiryIntervalSeconds: sessionExpiry,
|
|
191
|
+
receiveMaximum,
|
|
192
|
+
userProperties: value.userProperties === undefined ? undefined : propertyPairs(value.userProperties, 'userProperties')
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
export function validateTopicName(topic) {
|
|
196
|
+
if (topic.length === 0 || topic.includes('\0') || topic.includes('+') || topic.includes('#') || !wellFormedMqttText(topic) || encodeUtf8(topic).length > 65535) throw invalidOptions('topic name is invalid');
|
|
197
|
+
}
|
|
198
|
+
export function validateTopicFilter(filter) {
|
|
199
|
+
if (filter.length === 0 || filter.includes('\0') || !wellFormedMqttText(filter) || encodeUtf8(filter).length > 65535 || filter.split('/').some((part, index, parts) => part.includes('+') && part !== '+' || part.includes('#') && (part !== '#' || index !== parts.length - 1))) throw invalidOptions('topic filter is invalid');
|
|
200
|
+
if (filter.startsWith('$share/')) throw invalidOptions('shared subscriptions are not supported');
|
|
201
|
+
}
|
|
202
|
+
export function normalizeSubscribeOptions(input, protocolVersion = 5) {
|
|
203
|
+
const value = input === undefined ? {} : object(input, 'subscribe options');
|
|
204
|
+
exactKeys(value, ['qos', 'noLocal', 'retainAsPublished', 'retainHandling'], 'subscribe options');
|
|
205
|
+
if (protocolVersion === 4 && (value.noLocal !== undefined || value.retainAsPublished !== undefined || value.retainHandling !== undefined)) throw invalidOptions('MQTT5 subscription options are not valid for protocolVersion 4');
|
|
206
|
+
return {
|
|
207
|
+
qos: value.qos === undefined ? 1 : integer(value.qos, 'subscribe options.qos', 0, 2),
|
|
208
|
+
noLocal: value.noLocal === undefined ? false : boolValue(value.noLocal, 'subscribe options.noLocal'),
|
|
209
|
+
retainAsPublished: value.retainAsPublished === undefined ? false : boolValue(value.retainAsPublished, 'subscribe options.retainAsPublished'),
|
|
210
|
+
retainHandling: value.retainHandling === undefined ? 0 : integer(value.retainHandling, 'subscribe options.retainHandling', 0, 2)
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
export function normalizePublishOptions(input, protocolVersion = 5) {
|
|
214
|
+
const value = input === undefined ? {} : object(input, 'publish options');
|
|
215
|
+
exactKeys(value, ['qos', 'retained', 'userProperties', 'contentType', 'responseTopic', 'correlationDataBase64', 'messageExpiryIntervalSeconds', 'payloadFormatIndicator'], 'publish options');
|
|
216
|
+
if (protocolVersion === 4 && (value.userProperties !== undefined || value.contentType !== undefined || value.responseTopic !== undefined || value.correlationDataBase64 !== undefined || value.messageExpiryIntervalSeconds !== undefined || value.payloadFormatIndicator !== undefined)) throw invalidOptions('MQTT5 publish options are not valid for protocolVersion 4');
|
|
217
|
+
return {
|
|
218
|
+
qos: value.qos === undefined ? 1 : integer(value.qos, 'publish options.qos', 0, 2),
|
|
219
|
+
retained: value.retained === undefined ? false : boolValue(value.retained, 'publish options.retained'),
|
|
220
|
+
userProperties: value.userProperties === undefined ? undefined : propertyPairs(value.userProperties, 'publish options.userProperties'),
|
|
221
|
+
contentType: value.contentType === undefined ? undefined : mqttString(value.contentType, 'publish options.contentType'),
|
|
222
|
+
responseTopic: value.responseTopic === undefined ? undefined : mqttString(value.responseTopic, 'publish options.responseTopic', false),
|
|
223
|
+
correlationDataBase64: value.correlationDataBase64 === undefined ? undefined : base64(value.correlationDataBase64, 'publish options.correlationDataBase64'),
|
|
224
|
+
messageExpiryIntervalSeconds: value.messageExpiryIntervalSeconds === undefined ? undefined : integer(value.messageExpiryIntervalSeconds, 'publish options.messageExpiryIntervalSeconds', 0, 4294967295),
|
|
225
|
+
payloadFormatIndicator: value.payloadFormatIndicator === undefined ? undefined : integer(value.payloadFormatIndicator, 'publish options.payloadFormatIndicator', 0, 1)
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
export function toWireSessionOptions(options) {
|
|
229
|
+
const normalized = normalizeOptions(options);
|
|
230
|
+
const wire = {
|
|
231
|
+
host: normalized.host,
|
|
232
|
+
port: normalized.port,
|
|
233
|
+
protocolVersion: normalized.protocolVersion,
|
|
234
|
+
transport: normalized.transport,
|
|
235
|
+
path: normalized.path,
|
|
236
|
+
clientId: normalized.clientId,
|
|
237
|
+
username: normalized.username,
|
|
238
|
+
password: normalized.password,
|
|
239
|
+
keepAliveSeconds: normalized.keepAliveSeconds,
|
|
240
|
+
connectTimeoutMs: normalized.connectTimeoutMs,
|
|
241
|
+
operationTimeoutMs: normalized.operationTimeoutMs,
|
|
242
|
+
disconnectTimeoutMs: normalized.disconnectTimeoutMs,
|
|
243
|
+
reconnectEnabled: normalized.reconnect?.enabled,
|
|
244
|
+
reconnectInitialDelayMs: normalized.reconnect?.initialDelayMs,
|
|
245
|
+
reconnectMaxDelayMs: normalized.reconnect?.maxDelayMs,
|
|
246
|
+
reconnectJitterRatio: normalized.reconnect?.jitterRatio,
|
|
247
|
+
tlsCaBase64: normalized.tls?.caBase64,
|
|
248
|
+
tlsP12Base64: normalized.tls?.p12Base64,
|
|
249
|
+
tlsP12Password: normalized.tls?.p12Password,
|
|
250
|
+
tlsInsecure: normalized.tls?.insecure,
|
|
251
|
+
tlsAllowInvalidHostnameForTesting: normalized.tls?.allowInvalidHostnameForTesting,
|
|
252
|
+
willTopic: normalized.will?.topic,
|
|
253
|
+
willPayloadBase64: normalized.will?.payloadBase64,
|
|
254
|
+
willQos: normalized.will?.qos,
|
|
255
|
+
willRetained: normalized.will?.retained,
|
|
256
|
+
cleanSession: normalized.protocolVersion === 4 ? normalized.cleanSession : undefined,
|
|
257
|
+
cleanStart: normalized.protocolVersion === 5 ? normalized.cleanStart : undefined,
|
|
258
|
+
sessionExpiryIntervalSeconds: normalized.protocolVersion === 5 ? normalized.sessionExpiryIntervalSeconds : undefined,
|
|
259
|
+
receiveMaximum: normalized.protocolVersion === 5 ? normalized.receiveMaximum : undefined,
|
|
260
|
+
userProperties: normalized.protocolVersion === 5 ? normalized.userProperties?.map(toWireProperty) : undefined,
|
|
261
|
+
maxQueuedMessages: normalized.delivery?.maxQueuedMessages,
|
|
262
|
+
maxQueuedBytes: normalized.delivery?.maxQueuedBytes,
|
|
263
|
+
maxMessageBytes: normalized.delivery?.maxMessageBytes,
|
|
264
|
+
batchMaxMessages: normalized.delivery?.batchMaxMessages,
|
|
265
|
+
batchMaxBytes: normalized.delivery?.batchMaxBytes,
|
|
266
|
+
batchAckTimeoutMs: normalized.delivery?.batchAckTimeoutMs,
|
|
267
|
+
overflowPolicy: normalized.delivery?.overflowPolicy
|
|
268
|
+
};
|
|
269
|
+
return wire;
|
|
270
|
+
}
|
|
271
|
+
function toWireProperty(property) {
|
|
272
|
+
return {
|
|
273
|
+
key: property.key,
|
|
274
|
+
value: property.value
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
export function toWireSubscribeOptions(options) {
|
|
278
|
+
const normalized = normalizeSubscribeOptions(options);
|
|
279
|
+
return {
|
|
280
|
+
qos: normalized.qos,
|
|
281
|
+
noLocal: normalized.noLocal,
|
|
282
|
+
retainAsPublished: normalized.retainAsPublished,
|
|
283
|
+
retainHandling: normalized.retainHandling
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
export function toWirePublishRequest(topic, payloadBase64, options, protocolVersion = 5) {
|
|
287
|
+
validateTopicName(topic);
|
|
288
|
+
const normalized = normalizePublishOptions(options, protocolVersion);
|
|
289
|
+
if (normalized.responseTopic !== undefined) validateTopicName(normalized.responseTopic);
|
|
290
|
+
const payload = decodeBase64(payloadBase64);
|
|
291
|
+
if (normalized.payloadFormatIndicator === 1) decodeUtf8(payload);
|
|
292
|
+
return {
|
|
293
|
+
topic,
|
|
294
|
+
payloadBase64: encodeBase64(payload),
|
|
295
|
+
qos: normalized.qos,
|
|
296
|
+
retained: normalized.retained,
|
|
297
|
+
userProperties: normalized.userProperties?.map(toWireProperty),
|
|
298
|
+
contentType: normalized.contentType,
|
|
299
|
+
responseTopic: normalized.responseTopic,
|
|
300
|
+
correlationDataBase64: normalized.correlationDataBase64,
|
|
301
|
+
messageExpiryIntervalSeconds: normalized.messageExpiryIntervalSeconds,
|
|
302
|
+
payloadFormatIndicator: normalized.payloadFormatIndicator
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
export { encodeBase64 };
|
|
306
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["invalidOptions","decodeBase64","decodeUtf8","encodeBase64","encodeUtf8","ownKeys","value","Object","keys","object","name","Array","isArray","exactKeys","allowed","unknown","find","key","includes","undefined","stringValue","allowEmpty","length","wellFormedMqttText","index","code","charCodeAt","next","mqttString","result","boolValue","integer","min","max","Number","isSafeInteger","ratio","isFinite","propertyPairs","map","item","pair","base64","text","validateTls","tls","caBase64","p12Base64","p12Password","insecure","allowInvalidHostnameForTesting","validateReconnect","enabled","initialDelayMs","maxDelayMs","jitterRatio","reconnect","MAX_SAFE_INTEGER","validateDelivery","maxQueuedMessages","maxQueuedBytes","maxMessageBytes","batchMaxMessages","batchMaxBytes","batchAckTimeoutMs","overflowPolicy","delivery","validateWill","will","topic","payloadBase64","qos","retained","validateTopicName","common","transport","host","port","path","clientId","username","password","keepAliveSeconds","connectTimeoutMs","operationTimeoutMs","disconnectTimeoutMs","normalizeOptions","input","protocolVersion","cleanStart","sessionExpiryIntervalSeconds","receiveMaximum","userProperties","cleanSession","sessionExpiry","validateTopicFilter","filter","split","some","part","parts","startsWith","normalizeSubscribeOptions","noLocal","retainAsPublished","retainHandling","normalizePublishOptions","contentType","responseTopic","correlationDataBase64","messageExpiryIntervalSeconds","payloadFormatIndicator","toWireSessionOptions","options","normalized","wire","reconnectEnabled","reconnectInitialDelayMs","reconnectMaxDelayMs","reconnectJitterRatio","tlsCaBase64","tlsP12Base64","tlsP12Password","tlsInsecure","tlsAllowInvalidHostnameForTesting","willTopic","willPayloadBase64","willQos","willRetained","toWireProperty","property","toWireSubscribeOptions","toWirePublishRequest","payload"],"sourceRoot":"../../src","sources":["validation.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|