u8-mqtt 0.0.26 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/cjs/index.cjs +36 -11
  2. package/cjs/index.cjs.map +1 -1
  3. package/cjs/v4.cjs +36 -11
  4. package/cjs/v4.cjs.map +1 -1
  5. package/cjs/v5.cjs +36 -11
  6. package/cjs/v5.cjs.map +1 -1
  7. package/code/_router.jsy +15 -1
  8. package/code/base.jsy +17 -7
  9. package/code/core.jsy +3 -3
  10. package/code/session.mjs +2 -1
  11. package/esm/deno/index.js +1471 -0
  12. package/esm/deno/index.js.map +1 -0
  13. package/esm/deno/index.mjs +37 -12
  14. package/esm/deno/index.mjs.map +1 -1
  15. package/esm/deno/v4.js +1465 -0
  16. package/esm/deno/v4.js.map +1 -0
  17. package/esm/deno/v4.mjs +37 -12
  18. package/esm/deno/v4.mjs.map +1 -1
  19. package/esm/deno/v5.js +1465 -0
  20. package/esm/deno/v5.js.map +1 -0
  21. package/esm/deno/v5.mjs +37 -12
  22. package/esm/deno/v5.mjs.map +1 -1
  23. package/esm/node/index.js +1473 -0
  24. package/esm/node/index.js.map +1 -0
  25. package/esm/node/index.mjs +36 -11
  26. package/esm/node/index.mjs.map +1 -1
  27. package/esm/node/v4.js +1467 -0
  28. package/esm/node/v4.js.map +1 -0
  29. package/esm/node/v4.mjs +36 -11
  30. package/esm/node/v4.mjs.map +1 -1
  31. package/esm/node/v5.js +1467 -0
  32. package/esm/node/v5.js.map +1 -0
  33. package/esm/node/v5.mjs +36 -11
  34. package/esm/node/v5.mjs.map +1 -1
  35. package/esm/web/index.js +1471 -0
  36. package/esm/web/index.js.map +1 -0
  37. package/esm/web/index.min.mjs +1 -1
  38. package/esm/web/index.mjs +35 -10
  39. package/esm/web/index.mjs.map +1 -1
  40. package/esm/web/v4.js +1465 -0
  41. package/esm/web/v4.js.map +1 -0
  42. package/esm/web/v4.min.mjs +1 -1
  43. package/esm/web/v4.mjs +35 -10
  44. package/esm/web/v4.mjs.map +1 -1
  45. package/esm/web/v5.js +1465 -0
  46. package/esm/web/v5.js.map +1 -0
  47. package/esm/web/v5.min.mjs +1 -1
  48. package/esm/web/v5.mjs +35 -10
  49. package/esm/web/v5.mjs.map +1 -1
  50. package/package.json +10 -10
package/cjs/v4.cjs CHANGED
@@ -823,7 +823,8 @@ function mqtt_session_ctx(mqtt_level) {
823
823
 
824
824
  let std_pkt_api = {
825
825
  utf8(u8) { return as_utf8( u8 || this.payload ) },
826
- json(u8) { return JSON.parse( as_utf8( u8 || this.payload ) || null ) },
826
+ json(u8) { return JSON.parse( this.utf8(u8) || null ) },
827
+ text(u8) { return this.utf8(u8) },
827
828
  };
828
829
 
829
830
  mqtt_session_ctx.ctx = ctx =
@@ -988,10 +989,21 @@ function _mqtt_topic_router() {
988
989
  let rte = parse(
989
990
  topic_route.replace(/[+#]$/, '*'));
990
991
 
992
+ rte.key = topic_route;
991
993
  rte.tgt = fn;
992
994
  pri_lsts[priority ? 0 : 1].push(rte);
993
995
  return this}
994
996
 
997
+ , remove(topic_route, priority) {
998
+ let lst = pri_lsts[priority ? 0 : 1];
999
+ lst = lst.filter(e => e.key !== topic_route);
1000
+ pri_lsts[priority ? 0 : 1] = lst;}
1001
+
1002
+ , clear(priority) {
1003
+ pri_lsts[priority ? 0 : 1] = [];
1004
+ if (null == priority) {
1005
+ pri_lsts[1] = [];} }
1006
+
995
1007
  , async invoke(pkt, ctx) {
996
1008
  ctx.idx = 0;
997
1009
 
@@ -1016,7 +1028,10 @@ function * _mqtt_routes_iter(all_route_lists, topic) {
1016
1028
 
1017
1029
 
1018
1030
  function _mqtt_route_match_one(topic, {keys, pattern, tgt}) {
1019
- let match = pattern.exec('/'+topic);
1031
+ let match = '/' !== topic[0]
1032
+ ? pattern.exec('/'+topic)
1033
+ : pattern.exec(topic);
1034
+
1020
1035
  if (null === match) {
1021
1036
  return}
1022
1037
 
@@ -1177,13 +1192,24 @@ class MQTTBaseClient {
1177
1192
  pkt = _as_topics(pkt, ex);
1178
1193
  return this._send('unsubscribe', pkt, pkt)}
1179
1194
 
1195
+ get on_topic() {return this.router.add}
1196
+
1180
1197
  // alias: sub_topic
1181
1198
  subscribe_topic(topic_route, ...args) {
1182
- let topic = topic_route.replace(/[:*].*$/, '#');
1183
- this.on_topic(topic_route, true, args.pop() );// handler
1199
+ let topic = this.topic_for(topic_route);
1200
+ this.router.add(topic_route, true, args.pop() );// handler
1184
1201
  this.subscribe([[ topic ]], args.pop() );// ex
1185
1202
  return this}
1186
1203
 
1204
+ // alias: unsub_topic
1205
+ unsubscribe_topic(topic_route) {
1206
+ let topic = this.topic_for(topic_route);
1207
+ this.router.remove(topic_route, true);
1208
+ return this.unsubscribe([[ topic ]]) }
1209
+
1210
+ topic_for(topic_route) {
1211
+ return topic_route.replace(/[:*].*$/, '#')}
1212
+
1187
1213
 
1188
1214
  // alias: pub
1189
1215
  publish(pkt, fn_encode) {return _pub(this, pkt, fn_encode)}
@@ -1234,9 +1260,7 @@ class MQTTBaseClient {
1234
1260
  /* async _send(type, pkt) -- provided by _conn_ and transport */
1235
1261
 
1236
1262
  _init_router(opt) {
1237
- let router = _mqtt_topic_router();
1238
- this.on_topic = router.add;
1239
- return this.router = router}
1263
+ return this.router = _mqtt_topic_router()}
1240
1264
 
1241
1265
  _init_dispatch(opt) {
1242
1266
  let router = this._init_router(opt, this);
@@ -1257,7 +1281,8 @@ class MQTTBaseClient {
1257
1281
  pub: p.publish
1258
1282
  , sub: p.subscribe
1259
1283
  , unsub: p.unsubscribe
1260
- , sub_topic: p.subscribe_topic} );
1284
+ , sub_topic: p.subscribe_topic
1285
+ , unsub_topic: p.unsubscribe_topic} );
1261
1286
 
1262
1287
  /*
1263
1288
  p.on_mqtt_type = {
@@ -1284,7 +1309,7 @@ function _as_topics(pkt, ex) {
1284
1309
  return ex ? {...pkt, ...ex} : pkt}
1285
1310
 
1286
1311
 
1287
- function _pub(self, pkt, fn_encode) {
1312
+ async function _pub(self, pkt, fn_encode) {
1288
1313
  if (undefined === pkt.payload) {
1289
1314
  let {msg} = pkt;
1290
1315
  switch (typeof msg) {
@@ -1298,7 +1323,7 @@ function _pub(self, pkt, fn_encode) {
1298
1323
 
1299
1324
  default:
1300
1325
  pkt.payload = fn_encode
1301
- ? fn_encode(msg)
1326
+ ? await fn_encode(msg)
1302
1327
  : JSON.stringify(msg);} }
1303
1328
 
1304
1329
  return self._send('publish', pkt,
@@ -1381,7 +1406,7 @@ class MQTTCoreClient extends MQTTBaseClient {
1381
1406
 
1382
1407
  with_tcp(port, hostname) {
1383
1408
  if (!Number.isFinite(port)) {
1384
- ({port, host: hostname} = port);}
1409
+ ({port, hostname} = new URL(port));}
1385
1410
 
1386
1411
  let sock = net.connect(port, hostname);
1387
1412
  return this.with_stream(sock)}
package/cjs/v4.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"v4.cjs","sources":["../node_modules/u8-mqtt-packet/esm/index.mjs","../code/session.mjs","../code/_conn.jsy","../node_modules/regexparam/dist/index.mjs","../code/_router.jsy","../code/_cmdid_dispatch.jsy","../code/_dispatch.jsy","../code/base.jsy","../code/core.jsy","../code/v4.mjs"],"sourcesContent":["function encode_varint(n, a=[]) {\n do {\n const ni = n & 0x7f;\n n >>>= 7;\n a.push( ni | (0===n ? 0 : 0x80) );\n } while (n > 0)\n return a\n}\n\n\n/*\nexport function decode_varint_loop(u8, i=0) {\n let i0 = i\n let shift = 0, n = (u8[i] & 0x7f)\n while ( 0x80 & u8[i++] )\n n |= (u8[i] & 0x7f) << (shift += 7)\n\n return [n, i, i0]\n}\n*/\n\n\nfunction decode_varint(u8, i=0) {\n let i0 = i;\n // unrolled for a max of 4 chains\n let n = (u8[i] & 0x7f) << 0;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 7;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 14;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 21;\n }\n }\n }\n return [n, i, i0]\n}\n\nfunction _mqtt_raw_pkt_dispatch(decode_raw_pkt) {\n let u8 = new Uint8Array(0);\n return u8_buf => {\n u8 = 0 === u8.byteLength\n ? u8_buf : _u8_join(u8, u8_buf);\n\n const res = [];\n while (1) {\n const [len_body, len_vh] = decode_varint(u8, 1);\n const len_pkt = len_body + len_vh;\n\n if ( u8.byteLength < len_pkt )\n return res\n\n let b0 = u8[0];\n let u8_body = 0 === len_body ? null\n : u8.subarray(len_vh, len_pkt);\n\n u8 = u8.subarray(len_pkt);\n\n const pkt = decode_raw_pkt(b0, u8_body);\n if (undefined !== pkt && null !== pkt)\n res.push( pkt );\n }\n }\n}\n\nfunction mqtt_raw_packets() {\n let u8 = new Uint8Array(0);\n return u8_buf => {\n u8 = 0 === u8.byteLength\n ? u8_buf : _u8_join(u8, u8_buf);\n\n const res = [];\n while (1) {\n const [len_body, len_vh] = decode_varint(u8, 1);\n const len_pkt = len_body + len_vh;\n if ( u8.byteLength < len_pkt )\n return res\n\n res.push({\n b0: u8[0],\n u8_body: u8.subarray(len_vh, len_pkt),\n u8_raw: u8.subarray(0, len_pkt) });\n\n u8 = u8.subarray(len_pkt);\n }\n }\n}\n\nfunction _u8_join(a, b) {\n const alen = a.byteLength;\n const r = new Uint8Array(alen + b.byteLength);\n r.set(a, 0);\n r.set(b, alen);\n return r\n}\n\nconst mqtt_props = new Map(); \n\n{\n const entries = [\n [ 0x01, 'u8', 'payload_format_indicator'],\n [ 0x02, 'u32', 'message_expiry_interval'],\n [ 0x03, 'utf8', 'content_type'],\n [ 0x08, 'utf8', 'response_topic'],\n [ 0x09, 'bin', 'correlation_data'],\n [ 0x0B, 'vint', 'subscription_identifier'],\n [ 0x11, 'u32', 'session_expiry_interval'],\n [ 0x12, 'utf8', 'assigned_client_identifier'],\n [ 0x13, 'u16', 'server_keep_alive'],\n [ 0x15, 'utf8', 'authentication_method'],\n [ 0x16, 'bin', 'authentication_data'],\n [ 0x17, 'u8', 'request_problem_information'],\n [ 0x18, 'u32', 'will_delay_interval'],\n [ 0x19, 'u8', 'request_response_information'],\n [ 0x1A, 'utf8', 'response_information'],\n [ 0x1C, 'utf8', 'server_reference'],\n [ 0x1F, 'utf8', 'reason_string'],\n [ 0x21, 'u16', 'receive_maximum'],\n [ 0x22, 'u16', 'topic_alias_maximum'],\n [ 0x23, 'u16', 'topic_alias'],\n [ 0x24, 'u8', 'maximum_qo_s'],\n [ 0x25, 'u8', 'retain_available'],\n [ 0x26, 'pair', 'user_properties', true],\n [ 0x27, 'u32', 'maximum_packet_size'],\n [ 0x28, 'u8', 'wildcard_subscription_available'],\n [ 0x29, 'u8', 'subscription_identifiers_available', true],\n [ 0x2A, 'u8', 'shared_subscription_available'],\n ];\n\n for (const [id, type, name, plural] of entries) {\n const prop_obj = {id, type, name};\n if (plural) prop_obj.plural = plural;\n mqtt_props.set(prop_obj.id, prop_obj);\n mqtt_props.set(prop_obj.name, prop_obj);\n }\n}\n\nconst as_utf8 = u8 =>\n new TextDecoder('utf-8').decode(u8);\n\nconst step_from = idx =>\n (width, r) => ( r = idx, idx += width, r );\n\nclass mqtt_type_reader {\n constructor(buf, idx=0) {\n this.buf = buf;\n this.step = step_from(idx);\n }\n\n _fork(buf, idx) {\n return { __proto__: this, buf, step: step_from(idx) }\n }\n\n has_more() {\n const {buf, step} = this;\n return buf.byteLength > step(0)\n }\n\n u8() {\n const {buf, step} = this;\n return buf[step(1)]\n }\n\n u16() {\n const {buf, step} = this;\n const i = step(2);\n return (buf[i]<<8) | buf[i+1]\n }\n\n u32() {\n const {buf, step} = this;\n const i = step(4);\n return (buf[i]<<24) | (buf[i+1]<<16) | (buf[i+2]<<8) | buf[i+3]\n }\n\n vint() {\n const {buf, step} = this;\n const [n, vi, vi0] = decode_varint(buf, step(0));\n step(vi - vi0);\n return n\n }\n\n vbuf() {\n const {buf, step} = this;\n const [n, vi, vi0] = decode_varint(buf, step(0));\n step(n + vi - vi0);\n return 0 === n ? null\n : buf.subarray(vi, step(0))\n }\n\n bin() {\n const {buf, step} = this;\n const i = step(2);\n const len = (buf[i]<<8) | buf[i+1];\n const i0 = step(len);\n return buf.subarray(i0, i0+len)\n }\n\n utf8() { return as_utf8(this.bin()) }\n pair() { return [ as_utf8(this.bin()), as_utf8(this.bin()) ] }\n\n u8_flags(FlagsType) {\n const {buf, step} = this;\n return new FlagsType(buf[step(1)])\n }\n\n u8_reason(fn_reason) {\n const {buf, step} = this;\n return fn_reason( buf[step(1)] )\n }\n\n flush() {\n const {buf, step} = this;\n this.step = this.buf = null;\n return buf.subarray(step(0))\n }\n\n props() {\n let sub = this.vbuf();\n return null === sub ? null\n : this._fork(sub, 0)._read_props([])\n }\n\n _read_props(lst) {\n while (this.has_more()) {\n let k = this.u8();\n let p = mqtt_props.get( k );\n let v = this[p.type]();\n lst.push([p.name, v]);\n }\n return lst\n }\n}\n\n\n\nclass U8_Reason extends Number {\n constructor(u8, reason) { super(u8); this.reason = reason; }\n}\n\nfunction bind_reason_lookup(reason_entries) {\n const reason_map = new Map();\n for (const [u8, reason] of reason_entries)\n reason_map.set( u8, new U8_Reason(u8, reason) );\n\n return reason_map.get.bind(reason_map)\n}\n\nfunction mqtt_decode_connect(ns) {\n class _connect_flags_ extends Number {\n get reserved() { return this & 0x01 !== 0 }\n get clean_start() { return this & 0x02 !== 0 }\n get will_flag() { return this & 0x04 !== 0 }\n get will_qos() { return (this >>> 3) & 0x3 }\n get will_retain() { return this & 0x20 !== 0 }\n get password() { return this & 0x40 !== 0 }\n get username() { return this & 0x80 !== 0 }\n }\n\n\n return ns[0x1] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n if ('MQTT' !== rdr.utf8())\n throw new Error('Invalid mqtt_connect packet')\n\n pkt._base_.mqtt_level = pkt.mqtt_level = rdr.u8();\n\n const flags = pkt.flags =\n rdr.u8_flags(_connect_flags_);\n\n pkt.keep_alive = rdr.u16();\n\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n\n\n pkt.client_id = rdr.utf8();\n if (flags.will_flag) {\n const will = pkt.will = {};\n if (5 <= pkt.mqtt_level)\n will.props = rdr.props();\n\n will.topic = rdr.utf8();\n will.payload = rdr.bin();\n will.qos = flags.will_qos;\n will.retain = flags.will_retain;\n }\n\n if (flags.username)\n pkt.username = rdr.utf8();\n\n if (flags.password)\n pkt.password = rdr.bin();\n return pkt }\n}\n\nfunction mqtt_decode_connack(ns) {\n class _connack_flags_ extends Number {\n get session_present() { return this & 0x01 !== 0 }\n }\n\n const _connack_reason_ = bind_reason_lookup([\n // MQTT 3.1.1\n [ 0x00, 'Success'],\n [ 0x01, 'Connection refused, unacceptable protocol version'],\n [ 0x02, 'Connection refused, identifier rejected'],\n [ 0x03, 'Connection refused, server unavailable'],\n [ 0x04, 'Connection refused, bad user name or password'],\n [ 0x05, 'Connection refused, not authorized'],\n\n // MQTT 5.0\n [ 0x81, 'Malformed Packet'],\n [ 0x82, 'Protocol Error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x84, 'Unsupported Protocol Version'],\n [ 0x85, 'Client Identifier not valid'],\n [ 0x86, 'Bad User Name or Password'],\n [ 0x87, 'Not authorized'],\n [ 0x88, 'Server unavailable'],\n [ 0x89, 'Server busy'],\n [ 0x8A, 'Banned'],\n [ 0x8C, 'Bad authentication method'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x95, 'Packet too large'],\n [ 0x97, 'Quota exceeded'],\n [ 0x99, 'Payload format invalid'],\n [ 0x9A, 'Retain not supported'],\n [ 0x9B, 'QoS not supported'],\n [ 0x9C, 'Use another server'],\n [ 0x9D, 'Server moved'],\n [ 0x9F, 'Connection rate exceeded'],\n ]);\n\n\n return ns[0x2] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.flags =\n rdr.u8_flags(_connack_flags_);\n\n pkt.reason = rdr.u8_reason(_connack_reason_);\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n return pkt }\n}\n\nfunction mqtt_decode_publish(ns) {\n return ns[0x3] = (pkt, u8_body) => {\n const {hdr} = pkt;\n pkt.dup = Boolean(hdr & 0x8);\n pkt.retain = Boolean(hdr & 0x1);\n const qos = pkt.qos = (hdr>>1) & 0x3;\n\n const rdr = new mqtt_type_reader(u8_body, 0);\n pkt.topic = rdr.utf8();\n if (0 !== qos)\n pkt.pkt_id = rdr.u16();\n\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n pkt.payload = rdr.flush();\n return pkt }\n}\n\nfunction mqtt_decode_puback(ns) {\n const _puback_reason_ = bind_reason_lookup([\n [ 0x00, 'Success'],\n\n // MQTT 5.0\n [ 0x10, 'No matching subscribers'],\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x91, 'Packet identifier in use'],\n [ 0x97, 'Quota exceeded'],\n [ 0x99, 'Payload format invalid'],\n ]);\n\n\n return ns[0x4] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level) {\n pkt.reason = rdr.u8_reason(_puback_reason_);\n pkt.props = rdr.props();\n }\n\n return pkt }\n}\n\nfunction mqtt_decode_pubxxx(ns) {\n const _pubxxx_reason_ = bind_reason_lookup([\n [ 0x00, 'Success' ],\n [ 0x92, 'Packet Identifier not found' ],\n ]);\n\n return ns[0x5] = ns[0x6] = ns[0x7] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n pkt.reason = rdr.u8_reason(_pubxxx_reason_);\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n return pkt }\n}\n\nfunction mqtt_decode_subscribe(ns) {\n class _subscription_options_ extends Number {\n get qos() { return this & 0x3 }\n get retain() { return this & 0x4 !== 0 }\n get retain_handling() { return (this >> 2) & 0x3 }\n }\n\n return ns[0x8] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n const topic_list = pkt.topics = [];\n while (rdr.has_more()) {\n let topic = rdr.utf8();\n let opts = rdr.u8_flags(_subscription_options_);\n topic_list.push({topic, opts});\n }\n\n return pkt }\n}\n\nfunction _mqtt_decode_suback(_ack_reason_) {\n return (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n const answers = pkt.answers = [];\n while (rdr.has_more())\n answers.push(\n rdr.u8_reason(_ack_reason_) );\n\n return pkt }\n}\n\nfunction mqtt_decode_suback(ns) {\n const _suback_reason_ = bind_reason_lookup([\n // MQTT 3.1.1\n [ 0x00, 'Granted QoS 0'],\n [ 0x01, 'Granted QoS 1'],\n [ 0x02, 'Granted QoS 2'],\n\n // MQTT 5.0\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x91, 'Packet Identifier in use'],\n [ 0x97, 'Quota exceeded'],\n [ 0x9E, 'Shared Subscriptions not supported'],\n [ 0xA1, 'Subscription Identifiers not supported'],\n [ 0xA2, 'Wildcard Subscriptions not supported'],\n ]);\n\n return ns[0x9] = _mqtt_decode_suback(_suback_reason_)\n}\n\nfunction mqtt_decode_unsubscribe(ns) {\n return ns[0xa] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n const topic_list = pkt.topics = [];\n while (rdr.has_more())\n topic_list.push(rdr.utf8());\n\n return pkt }\n}\n\nfunction mqtt_decode_unsuback(ns) {\n const _unsuback_reason_ = bind_reason_lookup([\n [ 0x00, 'Success'],\n [ 0x11, 'No subscription existed'],\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x91, 'Packet Identifier in use'],\n ]);\n\n return ns[0xb] = _mqtt_decode_suback(_unsuback_reason_)\n}\n\nfunction mqtt_decode_pingxxx(ns) {\n return ns[0xc] = ns[0xd] = pkt => pkt\n}\n\nfunction mqtt_decode_disconnect(ns) {\n const _disconnect_reason_ = bind_reason_lookup([\n // MQTT 5.0\n [ 0x00, 'Normal disconnection'],\n [ 0x04, 'Disconnect with Will Message'],\n [ 0x80, 'Unspecified error'],\n [ 0x81, 'Malformed Packet'],\n [ 0x82, 'Protocol Error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x89, 'Server busy'],\n [ 0x8B, 'Server shutting down'],\n [ 0x8D, 'Keep Alive timeout'],\n [ 0x8E, 'Session taken over'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x93, 'Receive Maximum exceeded'],\n [ 0x94, 'Topic Alias invalid'],\n [ 0x95, 'Packet too large'],\n [ 0x96, 'Message rate too high'],\n [ 0x97, 'Quota exceeded'],\n [ 0x98, 'Administrative action'],\n [ 0x99, 'Payload format invalid'],\n [ 0x9A, 'Retain not supported'],\n [ 0x9B, 'QoS not supported'],\n [ 0x9C, 'Use another server'],\n [ 0x9D, 'Server moved'],\n [ 0x9E, 'Shared Subscriptions not supported'],\n [ 0x9F, 'Connection rate exceeded'],\n [ 0xA0, 'Maximum connect time'],\n [ 0xA1, 'Subscription Identifiers not supported'],\n [ 0xA2, 'Wildcard Subscriptions not supported'],\n ]);\n\n\n return ns[0xe] = (pkt, u8_body) => {\n if (u8_body && 5 <= pkt.mqtt_level) {\n const rdr = new mqtt_type_reader(u8_body, 0);\n pkt.reason = rdr.u8_reason(_disconnect_reason_);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nfunction mqtt_decode_auth(ns) {\n const _auth_reason_ = bind_reason_lookup([\n // MQTT 5.0\n [ 0x00, 'Success' ],\n [ 0x18, 'Continue authentication' ],\n [ 0x19, 'Re-authenticate' ],\n ]);\n\n return ns[0xf] = (pkt, u8_body) => {\n if ( 5 <= pkt.mqtt_level ) {\n const rdr = new mqtt_type_reader(u8_body, 0);\n pkt.reason = rdr.u8_reason(_auth_reason_);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nfunction mqtt_pkt_writer_pool() {\n const _pool_ = [];\n return host =>\n 0 === _pool_.length\n ? mqtt_pkt_writer(host, _pool_)\n : _pool_.pop()(host)\n}\n\nfunction mqtt_pkt_writer(host, _pool_) {\n // avoid GCing push/pull when they can be reused\n let n=0, rope=[];\n return install(host)\n\n function install(_host) {\n host = _host;\n host.push = push;\n host.pack = pack;\n }\n\n function push(u8) {\n rope.push(u8);\n n += u8.length;\n }\n\n function pack(hdr) {\n host = host.push = host.pack = null;\n\n const res = _mqtt_pkt_rope(hdr, n, rope);\n n=0; rope=[];\n if (undefined !== _pool_)\n _pool_.push(install);\n\n return res\n }\n}\n\n\nfunction _mqtt_pkt_rope(hdr, n, rope) {\n const header = encode_varint(n, hdr);\n let i = header.length;\n\n const pkt = new Uint8Array(n + i);\n pkt.set(header, 0);\n for (const vec of rope) {\n pkt.set(vec, i);\n i += vec.length;\n }\n return pkt\n}\n\nconst _is_array = Array.isArray;\nconst pack_utf8 = v => new TextEncoder('utf-8').encode(v);\nconst pack_u16 = v => [ (v>>>8) & 0xff, v & 0xff ];\nconst pack_u32 = v => [ (v>>>24) & 0xff, (v>>>16) & 0xff, (v>>>8) & 0xff, v & 0xff ];\n\nclass mqtt_type_writer {\n constructor() {\n this._pkt_writer(this);\n }\n\n as_pkt(hdr) { return this.pack([hdr]) }\n\n u8(v) { this.push([ v & 0xff ]);}\n u16(v) { this.push( pack_u16(v) );}\n u32(v) { this.push( pack_u32(v) );}\n vint(v) { this.push( encode_varint(v) );}\n\n _u16_bin(u8_buf) {\n const {push} = this;\n push( pack_u16( u8_buf.byteLength ));\n push( u8_buf );\n }\n\n flush(buf) {\n if (null != buf)\n this.push(\n 'string' === typeof buf\n ? pack_utf8(buf) : buf );\n\n this.push = false;\n }\n\n bin(u8_buf) {\n if (! u8_buf) return this.u16(0)\n if ('string' === typeof u8_buf)\n return this.utf8(u8_buf)\n\n if (u8_buf.length !== u8_buf.byteLength)\n u8_buf = new Uint8Array(u8_buf);\n this._u16_bin(u8_buf);\n }\n\n utf8(v) { this._u16_bin( new TextEncoder('utf-8').encode(v) ); }\n\n pair(k,v) {\n this.utf8(k);\n this.utf8(v);\n }\n\n u8_flags(v, enc_flags, b0=0) {\n if (undefined !== v && isNaN(+v))\n v = enc_flags(v, 0);\n\n v |= b0;\n this.push([v]);\n return v\n }\n\n u8_reason(v) { this.push([v | 0]); }\n\n props(props) {\n if (! props)\n return this.u8(0)\n\n if (! _is_array(props))\n props = props.entries\n ? Array.from(props.entries())\n : Object.entries(props);\n\n if (0 === props.length)\n return this.u8(0)\n\n const wrt = this._fork();\n for (const [name, value] of props) {\n const {id, type} = mqtt_props.get(name);\n wrt.u8(id);\n wrt[type](value);\n }\n\n this.push(wrt.pack([]));\n }\n\n _fork() {\n let self = { __proto__: this };\n this._pkt_writer(self);\n return self\n }\n}\n\nmqtt_type_writer.prototype._pkt_writer = \n mqtt_pkt_writer_pool();\n\nconst _c_mqtt_proto = new Uint8Array([\n 0, 4, 0x4d, 0x51, 0x54, 0x54 ]);\n\nfunction mqtt_encode_connect(ns) {\n const _enc_flags_connect = flags => 0\n | ( flags.reserved ? 0x01 : 0 )\n | ( (flags.will_qos & 0x3) << 3 )\n | ( flags.clean_start ? 0x02 : 0 )\n | ( flags.will_flag ? 0x04 : 0 )\n | ( flags.will_retain ? 0x20 : 0 )\n | ( flags.password ? 0x40 : 0 )\n | ( flags.username ? 0x80 : 0 );\n\n const _enc_flags_will = will => 0x4\n | ( (will.qos & 0x3) << 3 )\n | ( will.retain ? 0x20 : 0 );\n\n return ns.connect = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.push(_c_mqtt_proto);\n wrt.u8( mqtt_level );\n\n const {will, username, password} = pkt;\n const flags = wrt.u8_flags(\n pkt.flags,\n _enc_flags_connect,\n 0 | (username ? 0x80 : 0)\n | (password ? 0x40 : 0)\n | (will ? _enc_flags_will(will) : 0) );\n\n wrt.u16(pkt.keep_alive);\n\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n\n wrt.utf8(pkt.client_id);\n if (flags & 0x04) { // .will_flag\n if (5 <= mqtt_level)\n wrt.props(will.props);\n\n wrt.utf8(will.topic);\n wrt.bin(will.payload);\n }\n\n if (flags & 0x80) // .username\n wrt.utf8(username);\n\n if (flags & 0x40) // .password\n wrt.bin(password);\n\n return wrt.as_pkt(0x10)\n }\n}\n\nfunction mqtt_encode_connack(ns) {\n const _enc_flags_connack = flags =>\n flags.session_present ? 1 : 0;\n\n return ns.connack = (mqtt_level, pkt) => {\n const wrt = new mqtt_type_writer();\n wrt.u8_flags( pkt.flags, _enc_flags_connack );\n\n if (5 <= mqtt_level) {\n wrt.u8_reason( pkt.reason );\n wrt.props( pkt.props );\n\n } else {\n wrt.u8_reason( pkt.return_code || pkt.reason );\n }\n\n return wrt.as_pkt(0x20)\n }\n}\n\nfunction mqtt_encode_publish(ns) {\n return ns.publish = ( mqtt_level, pkt ) => {\n const qos = (pkt.qos & 0x3) << 1;\n const wrt = new mqtt_type_writer();\n\n wrt.utf8(pkt.topic);\n if (0 !== qos)\n wrt.u16(pkt.pkt_id);\n\n if ( 5 <= mqtt_level) {\n wrt.props(pkt.props);\n wrt.flush(pkt.payload);\n } else {\n wrt.flush(pkt.payload);\n }\n\n return wrt.as_pkt(\n 0x30 | qos | (pkt.dup ? 0x8 : 0) | (pkt.retain ? 0x1 : 0) )\n }\n}\n\nfunction mqtt_encode_puback(ns) {\n return ns.puback = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level) {\n wrt.u8_reason(pkt.reason);\n wrt.props(pkt.props);\n }\n\n return wrt.as_pkt(0x40)\n }\n}\n\nfunction mqtt_encode_pubxxx(ns) {\n ns.pubrec = _enc_pubxxx(0x50);\n ns.pubrel = _enc_pubxxx(0x62);\n ns.pubcomp = _enc_pubxxx(0x70);\n\n\n function _enc_pubxxx(hdr) {\n return ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level) {\n wrt.props(pkt.props);\n wrt.u8_reason(pkt.reason);\n\n } else {\n wrt.u8_reason( pkt.return_code || pkt.reason );\n }\n\n return wrt.as_pkt(hdr)\n }\n }\n}\n\nfunction mqtt_encode_subscribe(ns) {\n const _enc_subscribe_flags = opts => 0\n | ( opts.qos & 0x3 )\n | ( opts.retain ? 0x4 : 0 )\n | ( (opts.retain_handling & 0x3) << 2 );\n\n return ns.subscribe = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n const f0 = _enc_subscribe_flags(pkt);\n for (const each of pkt.topics) {\n if ('string' === typeof each) {\n wrt.utf8(each);\n wrt.u8(f0);\n } else {\n let [topic, opts] =\n _is_array(each) ? each\n : [each.topic, each.opts];\n\n wrt.utf8(topic);\n if (undefined === opts) wrt.u8(f0);\n else wrt.u8_flags(opts, _enc_subscribe_flags);\n }\n }\n\n return wrt.as_pkt(0x82)\n }\n}\n\nfunction mqtt_encode_xxsuback(ns) {\n ns.suback = _enc_xxsuback(0x90);\n ns.unsuback = _enc_xxsuback(0xb0);\n\n\n function _enc_xxsuback(hdr) {\n return ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n for (const ans of pkt.answers)\n wrt.u8_reason(ans);\n\n return wrt.as_pkt(hdr)\n }\n }\n}\n\nfunction mqtt_encode_unsubscribe(ns) {\n return ns.unsubscribe = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n for (const topic of pkt.topics)\n wrt.utf8(topic);\n\n return wrt.as_pkt(0xa2)\n }\n}\n\nfunction mqtt_encode_pingxxx(ns) {\n ns.pingreq = () => new Uint8Array([ 0xc0, 0 ]);\n ns.pingresp = () => new Uint8Array([ 0xd0, 0 ]);\n}\n\nfunction mqtt_encode_disconnect(ns) {\n return ns.disconnect = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n if (pkt && 5 <= mqtt_level) {\n if (pkt.reason || pkt.props) {\n wrt.u8_reason(pkt.reason);\n wrt.props(pkt.props);\n }\n }\n\n return wrt.as_pkt(0xe0)\n }\n}\n\nfunction mqtt_encode_auth(ns) {\n return ns.auth = ( mqtt_level, pkt ) => {\n if (5 > mqtt_level)\n throw new Error('Auth packets are only available after MQTT 5.x')\n\n const wrt = new mqtt_type_writer();\n\n wrt.u8_reason(pkt.reason);\n wrt.props(pkt.props);\n\n return wrt.as_pkt(0xf0)\n }\n}\n\nconst mqtt_decode_zero = ns => (ns[0] = pkt => pkt);\n\n\nfunction _bind_mqtt_decode(lst_decode_ops) {\n const by_id = [];\n for (const op of lst_decode_ops) op(by_id);\n\n return _pkt_ctx_ => _mqtt_raw_pkt_dispatch(\n (b0, u8_body) => {\n const decode_pkt = by_id[b0>>>4] || by_id[0];\n if (undefined !== decode_pkt)\n return decode_pkt({__proto__: _pkt_ctx_, b0}, u8_body)\n })\n}\n\n\nfunction _bind_mqtt_encode(lst_encode_ops) {\n const by_type = {};\n for (const op of lst_encode_ops) op(by_type);\n\n return ({mqtt_level}) => (type, pkt) =>\n by_type[type]( mqtt_level, pkt )\n}\n\n\nconst _pkt_types = ['reserved', 'connect', 'connack', 'publish', 'puback', 'pubrec', 'pubrel', 'pubcomp', 'subscribe', 'suback', 'unsubscribe', 'unsuback', 'pingreq', 'pingresp', 'disconnect', 'auth'];\nconst _bind_pkt_ctx = _pkt_ctx_ =>\n Object.defineProperties(_pkt_ctx_ || {}, {\n hdr: {get() { return this.b0 & 0xf }},\n id: {get() { return this.b0 >>> 4 }},\n type: {get() { return _pkt_types[this.b0 >>> 4] }},\n });\n\nfunction _bind_mqtt_session_ctx(sess_decode, sess_encode, _pkt_ctx_) {\n sess_decode = _bind_mqtt_decode(sess_decode);\n sess_encode = _bind_mqtt_encode(sess_encode);\n _pkt_ctx_ = _bind_pkt_ctx(_pkt_ctx_);\n\n return mqtt_level => _base_ => {\n _base_ = _base_ || {__proto__: _pkt_ctx_, mqtt_level, get _base_() { return _base_ }};\n return [ sess_decode(_base_), sess_encode(_base_), _base_ ] }\n}\n\nfunction mqtt_session_ctx(mqtt_level) {\n let {ctx} = mqtt_session_ctx;\n if ( undefined === ctx ) {\n mqtt_session_ctx.ctx = ctx =\n _bind_mqtt_session_ctx(\n [ // lst_decode_ops = [\n mqtt_decode_zero,\n mqtt_decode_connect,\n mqtt_decode_connack,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_pubxxx,\n mqtt_decode_subscribe,\n mqtt_decode_suback,\n mqtt_decode_unsubscribe,\n mqtt_decode_unsuback,\n mqtt_decode_pingxxx,\n mqtt_decode_disconnect,\n mqtt_decode_auth, ],\n [ // lst_encode_ops = [\n mqtt_encode_connect,\n mqtt_encode_connack,\n mqtt_encode_publish,\n mqtt_encode_puback,\n mqtt_encode_pubxxx,\n mqtt_encode_subscribe,\n mqtt_encode_xxsuback,\n mqtt_encode_unsubscribe,\n mqtt_encode_pingxxx,\n mqtt_encode_disconnect,\n mqtt_encode_auth, ]);\n }\n\n return ctx(mqtt_level)\n}\n\nconst mqtt_session = ()=> mqtt_session_ctx('?')();\nconst mqtt_session_v4 = ()=> mqtt_session_ctx(4)();\nconst mqtt_session_v5 = ()=> mqtt_session_ctx(5)();\n\nexport { _bind_mqtt_decode, _bind_mqtt_encode, _bind_mqtt_session_ctx, _bind_pkt_ctx, _is_array, _mqtt_pkt_rope, _mqtt_raw_pkt_dispatch, bind_reason_lookup, decode_varint, encode_varint, mqtt_decode_auth, mqtt_decode_connack, mqtt_decode_connect, mqtt_decode_disconnect, mqtt_decode_pingxxx, mqtt_decode_puback, mqtt_decode_publish, mqtt_decode_pubxxx, mqtt_decode_suback, mqtt_decode_subscribe, mqtt_decode_unsuback, mqtt_decode_unsubscribe, mqtt_decode_zero, mqtt_encode_auth, mqtt_encode_connack, mqtt_encode_connect, mqtt_encode_disconnect, mqtt_encode_pingxxx, mqtt_encode_puback, mqtt_encode_publish, mqtt_encode_pubxxx, mqtt_encode_subscribe, mqtt_encode_unsubscribe, mqtt_encode_xxsuback, mqtt_pkt_writer, mqtt_pkt_writer_pool, mqtt_props, mqtt_raw_packets, mqtt_session, mqtt_session_ctx, mqtt_session_v4, mqtt_session_v5, mqtt_type_reader, mqtt_type_writer };\n//# sourceMappingURL=index.mjs.map\n","import {\n _bind_mqtt_session_ctx,\n\n mqtt_decode_connack,\n mqtt_decode_disconnect,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_pubxxx,\n mqtt_decode_pingxxx,\n mqtt_decode_suback,\n mqtt_decode_unsuback,\n mqtt_decode_auth,\n\n mqtt_encode_connect,\n mqtt_encode_disconnect,\n mqtt_encode_publish,\n mqtt_encode_puback,\n mqtt_encode_pingxxx,\n mqtt_encode_subscribe,\n mqtt_encode_unsubscribe,\n mqtt_encode_auth,\n} from 'u8-mqtt-packet'\n\n\nexport function mqtt_session_ctx(mqtt_level) {\n let {ctx} = mqtt_session_ctx\n if (undefined === ctx ) {\n let as_utf8 = u8 =>\n new TextDecoder('utf-8').decode(u8)\n\n let std_pkt_api = {\n utf8(u8) { return as_utf8( u8 || this.payload ) },\n json(u8) { return JSON.parse( as_utf8( u8 || this.payload ) || null ) },\n }\n\n mqtt_session_ctx.ctx = ctx =\n _bind_mqtt_session_ctx(\n [ // lst_decode_ops\n mqtt_decode_connack,\n mqtt_decode_disconnect,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_pubxxx,\n mqtt_decode_pingxxx,\n mqtt_decode_suback,\n mqtt_decode_unsuback,\n mqtt_decode_auth, ],\n\n [ // lst_encode_ops\n mqtt_encode_connect,\n mqtt_encode_disconnect,\n mqtt_encode_publish,\n mqtt_encode_puback,\n mqtt_encode_pingxxx,\n mqtt_encode_subscribe,\n mqtt_encode_unsubscribe,\n mqtt_encode_auth, ],\n\n std_pkt_api )\n }\n\n return ctx(mqtt_level)\n}\n\n","export function _mqtt_conn(client, [on_mqtt, pkt_future]) ::\n let q0 = _tiny_deferred_queue()\n let q = _tiny_deferred_queue()\n\n let _asy_send = async (...args) =>\n (await q)(...args)\n let _send = client._send = _asy_send\n\n let _ping = () => client._send('pingreq')\n let tid_ping, _is_set = false\n\n return @{}\n is_live: @=> _asy_send !== _send\n is_set: @=> _is_set\n\n reset() ::\n tid_ping = clearInterval(tid_ping)\n client._send = _send = _asy_send\n _is_set = false\n\n // call client.on_reconnect in next promise microtask\n _async_evt(client, client.on_reconnect)\n\n ping(td) ::\n tid_ping = clearInterval(tid_ping)\n if td ::\n tid_ping = setInterval(_ping, 1000 * td)\n if tid_ping.unref ::\n tid_ping.unref()\n\n async send_connect(... args) ::\n if _asy_send === _send ::\n _send = await q0\n\n // await connack response\n let res = await _send(...args)\n\n client._send = _send\n q.notify(_send)\n return res\n\n set(mqtt_session, send_u8_pkt) ::\n _is_set = true\n\n let [mqtt_decode, mqtt_encode] = mqtt_session\n\n let on_mqtt_chunk = u8_buf =>\n on_mqtt(\n mqtt_decode(u8_buf),\n {mqtt: client})\n\n _send = async (type, pkt, key) => ::\n let res = undefined !== key\n ? pkt_future(key) : true\n\n await send_u8_pkt @\n mqtt_encode(type, pkt)\n\n return res\n\n\n q0.notify(_send)\n\n // call client.on_live in next promise microtask\n _async_evt(client, client.on_live)\n\n return on_mqtt_chunk\n\n\nasync function _async_evt(obj, evt) {\n // microtask break lookup\n if (undefined !== evt) {\n await evt.call(obj, await obj)\n }\n}\nfunction _tiny_deferred_queue() {\n let q = [] // tiny resetting deferred queue\n q.then = y => { q.push(y) }\n q.notify = v => {\n for (let fn of q.splice(0,q.length))\n fn(v) }\n return q\n}\n","export function parse(str, loose) {\n\tif (str instanceof RegExp) return { keys:false, pattern:str };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');\n\tarr[0] || arr.shift();\n\n\twhile (tmp = arr.shift()) {\n\t\tc = tmp[0];\n\t\tif (c === '*') {\n\t\t\tkeys.push('wild');\n\t\t\tpattern += '/(.*)';\n\t\t} else if (c === ':') {\n\t\t\to = tmp.indexOf('?', 1);\n\t\t\text = tmp.indexOf('.', 1);\n\t\t\tkeys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );\n\t\t\tpattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n\t\t\tif (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n\t\t} else {\n\t\t\tpattern += '/' + tmp;\n\t\t}\n\t}\n\n\treturn {\n\t\tkeys: keys,\n\t\tpattern: new RegExp('^' + pattern + (loose ? '(?=$|\\/)' : '\\/?$'), 'i')\n\t};\n}\n\nvar RGX = /*#__PURE__*/ /(\\/|^)([:*][^/]*?)(\\?)?(?=[/.]|$)/g;\n\n// error if key missing?\nexport function inject(route, values) {\n\treturn route.replace(RGX, (x, lead, key, optional) => {\n\t\tx = values[key=='*' ? 'wild' : key.substring(1)];\n\t\treturn x ? '/'+x : (optional || key=='*') ? '' : '/' + key;\n\t});\n}\n","// Use [regexparam][] for url-like topic parsing\n// [regexparam]: https://github.com/lukeed/regexparam\n\nimport {parse as _rxp_parse} from 'regexparam'\n\nfunction _ignore(pkt, params, ctx) :: ctx.done = true\n\nexport function _mqtt_topic_router() ::\n let pri_lsts = [[],[]]\n let find = topic => _mqtt_routes_iter(pri_lsts, topic)\n\n return @{} find,\n\n add(topic_route, ...args) ::\n let fn = args.pop()\n let priority = args.pop()\n\n if 'function' !== typeof fn ::\n if false === fn ::\n fn = _ignore\n else throw new TypeError()\n\n let rte = _rxp_parse @\n topic_route.replace(/[+#]$/, '*')\n\n rte.tgt = fn\n pri_lsts[priority ? 0 : 1].push(rte)\n return this\n\n async invoke(pkt, ctx) ::\n ctx.idx = 0\n\n for let [fn, params] of find(pkt.topic) ::\n await fn(pkt, params, ctx)\n\n if ctx.done ::\n break\n else ctx.idx++\n\n let {pkt_id, qos} = pkt\n if 1 === qos ::\n await ctx.mqtt._send('puback', {pkt_id})\n\n\nexport function * _mqtt_routes_iter(all_route_lists, topic) ::\n for let route_list of all_route_lists ::\n for let route of route_list ::\n let res = _mqtt_route_match_one(topic, route)\n if undefined !== res ::\n yield res\n\n\nexport function _mqtt_route_match_one(topic, {keys, pattern, tgt}) ::\n let match = pattern.exec('/'+topic)\n if null === match ::\n return\n\n if false === keys ::\n let {groups} = match\n if ! groups ::\n return [tgt]\n\n let params = {}\n for let k in groups ::\n params[k] = groups[k]\n\n return [tgt, params]\n\n if 0 === keys.length ::\n return [tgt]\n\n let params = {}\n for let i=0; i<keys.length; i++ ::\n params[ keys[i] ] = match[1+i]\n return [tgt, params]\n\n","\nexport const _mqtt_cmdid_dispatch = @{}\n create(target) ::\n return @{} __proto__: this, target, hashbelt: [new Map()]\n\n bind_pkt_future(_pkt_id=100) ::\n let {hashbelt} = this\n\n let _tmp_ // use _tmp_ to reuse _by_key closure\n let _by_key = answer_monad =>\n hashbelt[0].set(_tmp_, answer_monad)\n\n return @\\ pkt_or_key ::\n if 'string' === typeof pkt_or_key ::\n _tmp_ = pkt_or_key\n else ::\n _pkt_id = (_pkt_id + 1) & 0xffff\n _tmp_ = pkt_or_key.pkt_id = _pkt_id\n\n return new Promise(_by_key)\n\n answer(key, pkt) ::\n for let map of this.hashbelt ::\n let answer_monad = map.get(key)\n if undefined !== answer_monad ::\n map.delete(key)\n\n answer_monad([pkt, /*err*/]) // option/maybe monad\n return true\n return false\n\n rotate_belt(n) ::\n let {hashbelt} = this\n hashbelt.unshift @ new Map()\n for let old of hashbelt.splice(n || 5) ::\n for let answer_monad of old.values() ::\n answer_monad([/*pkt*/, 'expired']) // option/maybe monad\n\n cmdids: @!\n return @[]\n @=>{} // 0x0 reserved\n by_evt // 0x1 connect\n by_type // 0x2 connack\n by_evt // 0x3 publish\n by_id // 0x4 puback\n by_id // 0x5 pubrec\n by_id // 0x6 pubrel\n by_id // 0x7 pubcomp\n by_evt // 0x8 subscribe\n by_id // 0x9 suback\n by_evt // 0xa unsubscribe\n by_id // 0xb unsuback\n by_type // 0xc pingreq\n by_type // 0xd pingresp\n by_evt // 0xe disconnect\n by_type // 0xf auth\n\n\n function by_id(disp, pkt) ::\n disp.answer @ pkt.pkt_id, pkt\n\n function by_type(disp, pkt, ctx) ::\n disp.answer @ pkt.type, pkt\n by_evt(disp, pkt, ctx)\n\n async function by_evt({target}, pkt, ctx) ::\n let fn = target[`mqtt_${pkt.type}`]\n || target.mqtt_pkt\n\n if undefined !== fn ::\n await fn.call(target, pkt, ctx)\n\n\n","import {_mqtt_cmdid_dispatch} from './_cmdid_dispatch.jsy'\n\nexport function _mqtt_dispatch(opt, target) ::\n let _disp_ = _mqtt_cmdid_dispatch.create(target)\n let { cmdids } = _disp_\n\n // default rotate at 1s across 5 buckets\n let { td: rotate_td=1000, n: rotate_n=5 } =\n opt && opt.rotate || {}\n\n let rotate_ts = rotate_td + Date.now()\n\n return @[] on_mqtt,\n _disp_.bind_pkt_future()\n\n function on_mqtt(pkt_list, ctx) ::\n for let pkt of pkt_list ::\n cmdids[pkt.id] @ _disp_, pkt, ctx\n\n if Date.now() > rotate_ts ::\n _disp_.rotate_belt(rotate_n)\n rotate_ts = rotate_td + Date.now()\n\n","import {_mqtt_conn} from './_conn.jsy'\nimport {_mqtt_topic_router} from './_router.jsy'\nimport {_mqtt_dispatch} from './_dispatch.jsy'\n\nexport class MQTTBaseClient ::\n constructor(opt={}) ::\n this._conn_ = _mqtt_conn @ this,\n this._init_dispatch(opt, this)\n\n // Handshaking Packets\n\n async connect(pkt={}) ::\n let {client_id: cid} = pkt\n if ! cid ::\n pkt.client_id = cid = this.init_client_id(['u8-mqtt--', ''])\n else if Array.isArray(cid) ::\n pkt.client_id = cid = this.init_client_id(cid)\n else :: this.client_id = cid\n\n if null == pkt.keep_alive ::\n pkt.keep_alive = 60\n\n let res = await this._conn_\n .send_connect('connect', pkt, 'connack')\n\n // TODO: merge with server's keep_alive frequency\n this._conn_.ping(pkt.keep_alive)\n return res\n\n async disconnect(pkt={}) ::\n let res = await this._send('disconnect', pkt)\n this._conn_.reset()\n return res\n\n auth(pkt={}) ::\n return this._send('auth', pkt, 'auth')\n\n ping() :: return this._send('pingreq', null, 'pingresp')\n\n\n // alias: sub\n subscribe(pkt, ex) ::\n pkt = _as_topics(pkt, ex)\n return this._send('subscribe', pkt, pkt)\n\n // alias: unsub\n unsubscribe(pkt, ex) ::\n pkt = _as_topics(pkt, ex)\n return this._send('unsubscribe', pkt, pkt)\n\n // alias: sub_topic\n subscribe_topic(topic_route, ...args) ::\n let topic = topic_route.replace(/[:*].*$/, '#')\n this.on_topic @ topic_route, true, args.pop() // handler\n this.subscribe @ [[ topic ]], args.pop() // ex\n return this\n\n\n // alias: pub\n publish(pkt, fn_encode) :: return _pub(this, pkt, fn_encode)\n post(topic, payload) :: return _pub.m(this, topic, payload)\n send(topic, payload) :: return _pub.mq(this, topic, payload)\n store(topic, payload) :: return _pub.mqr(this, topic, payload)\n\n json_post(topic, msg) :: return _pub.o(this, topic, msg)\n json_send(topic, msg) :: return _pub.oq(this, topic, msg)\n json_store(topic, msg) :: return _pub.oqr(this, topic, msg)\n\n obj_post(topic, msg, fn_encode) :: return _pub.o(this, topic, msg, fn_encode)\n obj_send(topic, msg, fn_encode) :: return _pub.oq(this, topic, msg, fn_encode)\n obj_store(topic, msg, fn_encode) :: return _pub.oqr(this, topic, msg, fn_encode)\n\n\n\n // Utility Methods\n\n init_client_id(parts) ::\n let cid = this.client_id\n\n if undefined === cid ::\n this.client_id = cid = (\n #IF PLAT_WEB\n this.sess_client_id(parts)\n #ELSE\n this.new_client_id(parts)\n )\n\n return cid\n\n new_client_id(parts) ::\n return [parts[0], Math.random().toString(36).slice(2), parts[1]].join('')\n\n #IF PLAT_WEB\n sess_client_id(parts) ::\n let key = `client_id ${parts.join('')}`\n let cid = sessionStorage.getItem(key)\n if null == cid ::\n cid = this.new_client_id(parts)\n sessionStorage.setItem(key, cid)\n return cid\n\n\n // Internal API\n\n /* async _send(type, pkt) -- provided by _conn_ and transport */\n\n _init_router(opt) ::\n let router = _mqtt_topic_router(this)\n this.on_topic = router.add\n return this.router = router\n\n _init_dispatch(opt) ::\n let router = this._init_router(opt, this)\n\n let tgt = @{}\n __proto__: opt.on_mqtt_type || {}\n router\n\n if ! tgt.mqtt_publish ::\n tgt.mqtt_publish = router.invoke\n\n return _mqtt_dispatch(this, tgt)\n\n\n::\n let p = MQTTBaseClient.prototype\n Object.assign @ p, @{}\n pub: p.publish\n sub: p.subscribe\n unsub: p.unsubscribe\n sub_topic: p.subscribe_topic\n\n /*\n p.on_mqtt_type = {\n mqtt_auth(pkt, ctx) ::\n mqtt_connect(pkt, ctx) ::\n mqtt_connack(pkt, ctx) ::\n mqtt_disconnect(pkt, ctx) ::\n\n mqtt_publish(pkt, ctx)\n mqtt_subscribe(pkt, ctx) ::\n mqtt_unsubscribe(pkt, ctx) ::\n\n mqtt_pingreq(pkt, ctx) ::\n mqtt_pingresp(pkt, ctx) ::\n }\n */\n\n\nfunction _as_topics(pkt, ex) ::\n if 'string' === typeof pkt ::\n return {topics:[pkt], ... ex}\n if pkt[Symbol.iterator] ::\n return {topics:[... pkt], ... ex}\n return ex ? {...pkt, ...ex} : pkt\n\n\nfunction _pub(self, pkt, fn_encode) ::\n if undefined === pkt.payload ::\n let {msg} = pkt\n switch typeof msg ::\n case 'function':\n fn_encode = msg\n msg = undefined\n\n case 'undefined':\n let arg = pkt.arg || 'payload'\n return v => _pub(self, {...pkt, [arg]: v}, fn_encode)\n\n default:\n pkt.payload = fn_encode\n ? fn_encode(msg)\n : JSON.stringify(msg)\n\n return self._send @ 'publish', pkt,\n pkt.qos ? pkt : void 0 // key\n\n::\n Object.assign @ _pub, @{}\n m: (self, topic, payload) =>\n _pub(self, {topic, payload, qos:0})\n mq: (self, topic, payload) =>\n _pub(self, {topic, payload, qos:1})\n mqr: (self, topic, payload) =>\n _pub(self, {topic, payload, qos:1, retain: 1})\n\n o: (self, topic, msg, fn_encode) =>\n _pub(self, {topic, msg, arg: 'msg', qos:0}, fn_encode)\n oq: (self, topic, msg, fn_encode) =>\n _pub(self, {topic, msg, arg: 'msg', qos:1}, fn_encode)\n oqr: (self, topic, msg, fn_encode) =>\n _pub(self, {topic, msg, arg: 'msg', qos:1, retain: 1}, fn_encode)\n\n","import {MQTTBaseClient} from './base.jsy'\n\n#IF PLAT_NODEJS\n import {connect as tcp_connect} from 'net'\n\n\nexport class MQTTCoreClient extends MQTTBaseClient ::\n static _with_session(mqtt_session) ::\n this.prototype._mqtt_session = mqtt_session\n\n constructor(opt={}) ::\n super(opt)\n this.with_live(opt.on_live)\n this.with_reconnect(opt.on_reconnect)\n\n\n // on_live(client) ::\n with_live(on_live) ::\n if on_live ::\n this.on_live = on_live\n\n return this\n\n // on_reconnect(client) ::\n with_reconnect(on_reconnect) ::\n if on_reconnect ::\n this.on_reconnect = on_reconnect\n\n if ! this._conn_.is_set ::\n on_reconnect(this)\n\n return this\n\n\n with_async_iter(async_iter, write_u8_pkt) ::\n let on_mqtt_chunk = this._conn_.set @\n this._mqtt_session(),\n write_u8_pkt\n\n this._msg_loop = @!>\n async_iter = await async_iter\n for await (let chunk of async_iter)\n on_mqtt_chunk(chunk)\n\n this._conn_.reset()\n\n return this\n\n\n #IF PLAT_DENO\n with_tcp(port, hostname) ::\n if !Number.isFinite(port) ::\n ({port, host: hostname} = port)\n\n Deno.connect @:\n port: port || 1883, hostname, transport: 'tcp'\n .then @\\ conn =>\n this.with_async_iter @\n Deno.iter(conn),\n u8_pkt => conn.write(u8_pkt)\n\n return this\n\n\n #IF PLAT_NODEJS\n with_tcp(port, hostname) ::\n if !Number.isFinite(port) ::\n ({port, host: hostname} = port)\n\n let sock = tcp_connect(port, hostname)\n return this.with_stream(sock)\n\n\n #IF HAS_STREAM\n with_stream(read_stream, write_stream) ::\n if undefined === write_stream ::\n write_stream = read_stream\n\n return this.with_async_iter @ read_stream,\n u8_pkt => write_stream.write(u8_pkt)\n\n\n\n\n with_websock(websock) ::\n if null == websock ::\n websock = 'ws://127.0.0.1:9001'\n\n if websock.origin || 'string' === typeof websock ::\n websock = new WebSocket(new URL(websock), ['mqtt'])\n\n websock.binaryType = 'arraybuffer'\n\n let ready, {readyState} = websock\n if 1 !== readyState ::\n if 0 !== readyState ::\n throw new Error @ 'Invalid WebSocket readyState'\n\n ready = new Promise( y =>\n websock.addEventListener('open', y, {once: true}))\n\n\n let {_conn_} = this\n let on_mqtt_chunk = _conn_.set @\n this._mqtt_session(),\n async u8_pkt => @\n await ready\n websock.send(u8_pkt)\n\n websock.addEventListener @ 'close',\n @::\n delete websock.onmessage\n _conn_.reset()\n\n {once: true}\n\n websock.onmessage = evt =>\n on_mqtt_chunk @\n new Uint8Array(evt.data)\n\n return this\n\n","import {mqtt_session_ctx} from './session.mjs'\nimport {MQTTCoreClient} from './core.jsy'\n\nclass MQTTClient_v4 extends MQTTCoreClient {\n _mqtt_session() { return mqtt_session_ctx(4)() }\n}\n\nconst mqtt_v4 = opt => new MQTTClient_v4(opt)\n\nexport {\n MQTTClient_v4,\n MQTTClient_v4 as MQTTClient,\n\n mqtt_v4,\n mqtt_v4 as mqtt,\n mqtt_v4 as default,\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v4.cjs","sources":["../node_modules/u8-mqtt-packet/esm/index.mjs","../code/session.mjs","../code/_conn.jsy","../node_modules/regexparam/dist/index.mjs","../code/_router.jsy","../code/_cmdid_dispatch.jsy","../code/_dispatch.jsy","../code/base.jsy","../code/core.jsy","../code/v4.mjs"],"sourcesContent":["function encode_varint(n, a=[]) {\n do {\n const ni = n & 0x7f;\n n >>>= 7;\n a.push( ni | (0===n ? 0 : 0x80) );\n } while (n > 0)\n return a\n}\n\n\n/*\nexport function decode_varint_loop(u8, i=0) {\n let i0 = i\n let shift = 0, n = (u8[i] & 0x7f)\n while ( 0x80 & u8[i++] )\n n |= (u8[i] & 0x7f) << (shift += 7)\n\n return [n, i, i0]\n}\n*/\n\n\nfunction decode_varint(u8, i=0) {\n let i0 = i;\n // unrolled for a max of 4 chains\n let n = (u8[i] & 0x7f) << 0;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 7;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 14;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 21;\n }\n }\n }\n return [n, i, i0]\n}\n\nfunction _mqtt_raw_pkt_dispatch(decode_raw_pkt) {\n let u8 = new Uint8Array(0);\n return u8_buf => {\n u8 = 0 === u8.byteLength\n ? u8_buf : _u8_join(u8, u8_buf);\n\n const res = [];\n while (1) {\n const [len_body, len_vh] = decode_varint(u8, 1);\n const len_pkt = len_body + len_vh;\n\n if ( u8.byteLength < len_pkt )\n return res\n\n let b0 = u8[0];\n let u8_body = 0 === len_body ? null\n : u8.subarray(len_vh, len_pkt);\n\n u8 = u8.subarray(len_pkt);\n\n const pkt = decode_raw_pkt(b0, u8_body);\n if (undefined !== pkt && null !== pkt)\n res.push( pkt );\n }\n }\n}\n\nfunction mqtt_raw_packets() {\n let u8 = new Uint8Array(0);\n return u8_buf => {\n u8 = 0 === u8.byteLength\n ? u8_buf : _u8_join(u8, u8_buf);\n\n const res = [];\n while (1) {\n const [len_body, len_vh] = decode_varint(u8, 1);\n const len_pkt = len_body + len_vh;\n if ( u8.byteLength < len_pkt )\n return res\n\n res.push({\n b0: u8[0],\n u8_body: u8.subarray(len_vh, len_pkt),\n u8_raw: u8.subarray(0, len_pkt) });\n\n u8 = u8.subarray(len_pkt);\n }\n }\n}\n\nfunction _u8_join(a, b) {\n const alen = a.byteLength;\n const r = new Uint8Array(alen + b.byteLength);\n r.set(a, 0);\n r.set(b, alen);\n return r\n}\n\nconst mqtt_props = new Map(); \n\n{\n const entries = [\n [ 0x01, 'u8', 'payload_format_indicator'],\n [ 0x02, 'u32', 'message_expiry_interval'],\n [ 0x03, 'utf8', 'content_type'],\n [ 0x08, 'utf8', 'response_topic'],\n [ 0x09, 'bin', 'correlation_data'],\n [ 0x0B, 'vint', 'subscription_identifier'],\n [ 0x11, 'u32', 'session_expiry_interval'],\n [ 0x12, 'utf8', 'assigned_client_identifier'],\n [ 0x13, 'u16', 'server_keep_alive'],\n [ 0x15, 'utf8', 'authentication_method'],\n [ 0x16, 'bin', 'authentication_data'],\n [ 0x17, 'u8', 'request_problem_information'],\n [ 0x18, 'u32', 'will_delay_interval'],\n [ 0x19, 'u8', 'request_response_information'],\n [ 0x1A, 'utf8', 'response_information'],\n [ 0x1C, 'utf8', 'server_reference'],\n [ 0x1F, 'utf8', 'reason_string'],\n [ 0x21, 'u16', 'receive_maximum'],\n [ 0x22, 'u16', 'topic_alias_maximum'],\n [ 0x23, 'u16', 'topic_alias'],\n [ 0x24, 'u8', 'maximum_qo_s'],\n [ 0x25, 'u8', 'retain_available'],\n [ 0x26, 'pair', 'user_properties', true],\n [ 0x27, 'u32', 'maximum_packet_size'],\n [ 0x28, 'u8', 'wildcard_subscription_available'],\n [ 0x29, 'u8', 'subscription_identifiers_available', true],\n [ 0x2A, 'u8', 'shared_subscription_available'],\n ];\n\n for (const [id, type, name, plural] of entries) {\n const prop_obj = {id, type, name};\n if (plural) prop_obj.plural = plural;\n mqtt_props.set(prop_obj.id, prop_obj);\n mqtt_props.set(prop_obj.name, prop_obj);\n }\n}\n\nconst as_utf8 = u8 =>\n new TextDecoder('utf-8').decode(u8);\n\nconst step_from = idx =>\n (width, r) => ( r = idx, idx += width, r );\n\nclass mqtt_type_reader {\n constructor(buf, idx=0) {\n this.buf = buf;\n this.step = step_from(idx);\n }\n\n _fork(buf, idx) {\n return { __proto__: this, buf, step: step_from(idx) }\n }\n\n has_more() {\n const {buf, step} = this;\n return buf.byteLength > step(0)\n }\n\n u8() {\n const {buf, step} = this;\n return buf[step(1)]\n }\n\n u16() {\n const {buf, step} = this;\n const i = step(2);\n return (buf[i]<<8) | buf[i+1]\n }\n\n u32() {\n const {buf, step} = this;\n const i = step(4);\n return (buf[i]<<24) | (buf[i+1]<<16) | (buf[i+2]<<8) | buf[i+3]\n }\n\n vint() {\n const {buf, step} = this;\n const [n, vi, vi0] = decode_varint(buf, step(0));\n step(vi - vi0);\n return n\n }\n\n vbuf() {\n const {buf, step} = this;\n const [n, vi, vi0] = decode_varint(buf, step(0));\n step(n + vi - vi0);\n return 0 === n ? null\n : buf.subarray(vi, step(0))\n }\n\n bin() {\n const {buf, step} = this;\n const i = step(2);\n const len = (buf[i]<<8) | buf[i+1];\n const i0 = step(len);\n return buf.subarray(i0, i0+len)\n }\n\n utf8() { return as_utf8(this.bin()) }\n pair() { return [ as_utf8(this.bin()), as_utf8(this.bin()) ] }\n\n u8_flags(FlagsType) {\n const {buf, step} = this;\n return new FlagsType(buf[step(1)])\n }\n\n u8_reason(fn_reason) {\n const {buf, step} = this;\n return fn_reason( buf[step(1)] )\n }\n\n flush() {\n const {buf, step} = this;\n this.step = this.buf = null;\n return buf.subarray(step(0))\n }\n\n props() {\n let sub = this.vbuf();\n return null === sub ? null\n : this._fork(sub, 0)._read_props([])\n }\n\n _read_props(lst) {\n while (this.has_more()) {\n let k = this.u8();\n let p = mqtt_props.get( k );\n let v = this[p.type]();\n lst.push([p.name, v]);\n }\n return lst\n }\n}\n\n\n\nclass U8_Reason extends Number {\n constructor(u8, reason) { super(u8); this.reason = reason; }\n}\n\nfunction bind_reason_lookup(reason_entries) {\n const reason_map = new Map();\n for (const [u8, reason] of reason_entries)\n reason_map.set( u8, new U8_Reason(u8, reason) );\n\n return reason_map.get.bind(reason_map)\n}\n\nfunction mqtt_decode_connect(ns) {\n class _connect_flags_ extends Number {\n get reserved() { return this & 0x01 !== 0 }\n get clean_start() { return this & 0x02 !== 0 }\n get will_flag() { return this & 0x04 !== 0 }\n get will_qos() { return (this >>> 3) & 0x3 }\n get will_retain() { return this & 0x20 !== 0 }\n get password() { return this & 0x40 !== 0 }\n get username() { return this & 0x80 !== 0 }\n }\n\n\n return ns[0x1] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n if ('MQTT' !== rdr.utf8())\n throw new Error('Invalid mqtt_connect packet')\n\n pkt._base_.mqtt_level = pkt.mqtt_level = rdr.u8();\n\n const flags = pkt.flags =\n rdr.u8_flags(_connect_flags_);\n\n pkt.keep_alive = rdr.u16();\n\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n\n\n pkt.client_id = rdr.utf8();\n if (flags.will_flag) {\n const will = pkt.will = {};\n if (5 <= pkt.mqtt_level)\n will.props = rdr.props();\n\n will.topic = rdr.utf8();\n will.payload = rdr.bin();\n will.qos = flags.will_qos;\n will.retain = flags.will_retain;\n }\n\n if (flags.username)\n pkt.username = rdr.utf8();\n\n if (flags.password)\n pkt.password = rdr.bin();\n return pkt }\n}\n\nfunction mqtt_decode_connack(ns) {\n class _connack_flags_ extends Number {\n get session_present() { return this & 0x01 !== 0 }\n }\n\n const _connack_reason_ = bind_reason_lookup([\n // MQTT 3.1.1\n [ 0x00, 'Success'],\n [ 0x01, 'Connection refused, unacceptable protocol version'],\n [ 0x02, 'Connection refused, identifier rejected'],\n [ 0x03, 'Connection refused, server unavailable'],\n [ 0x04, 'Connection refused, bad user name or password'],\n [ 0x05, 'Connection refused, not authorized'],\n\n // MQTT 5.0\n [ 0x81, 'Malformed Packet'],\n [ 0x82, 'Protocol Error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x84, 'Unsupported Protocol Version'],\n [ 0x85, 'Client Identifier not valid'],\n [ 0x86, 'Bad User Name or Password'],\n [ 0x87, 'Not authorized'],\n [ 0x88, 'Server unavailable'],\n [ 0x89, 'Server busy'],\n [ 0x8A, 'Banned'],\n [ 0x8C, 'Bad authentication method'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x95, 'Packet too large'],\n [ 0x97, 'Quota exceeded'],\n [ 0x99, 'Payload format invalid'],\n [ 0x9A, 'Retain not supported'],\n [ 0x9B, 'QoS not supported'],\n [ 0x9C, 'Use another server'],\n [ 0x9D, 'Server moved'],\n [ 0x9F, 'Connection rate exceeded'],\n ]);\n\n\n return ns[0x2] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.flags =\n rdr.u8_flags(_connack_flags_);\n\n pkt.reason = rdr.u8_reason(_connack_reason_);\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n return pkt }\n}\n\nfunction mqtt_decode_publish(ns) {\n return ns[0x3] = (pkt, u8_body) => {\n const {hdr} = pkt;\n pkt.dup = Boolean(hdr & 0x8);\n pkt.retain = Boolean(hdr & 0x1);\n const qos = pkt.qos = (hdr>>1) & 0x3;\n\n const rdr = new mqtt_type_reader(u8_body, 0);\n pkt.topic = rdr.utf8();\n if (0 !== qos)\n pkt.pkt_id = rdr.u16();\n\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n pkt.payload = rdr.flush();\n return pkt }\n}\n\nfunction mqtt_decode_puback(ns) {\n const _puback_reason_ = bind_reason_lookup([\n [ 0x00, 'Success'],\n\n // MQTT 5.0\n [ 0x10, 'No matching subscribers'],\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x91, 'Packet identifier in use'],\n [ 0x97, 'Quota exceeded'],\n [ 0x99, 'Payload format invalid'],\n ]);\n\n\n return ns[0x4] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level) {\n pkt.reason = rdr.u8_reason(_puback_reason_);\n pkt.props = rdr.props();\n }\n\n return pkt }\n}\n\nfunction mqtt_decode_pubxxx(ns) {\n const _pubxxx_reason_ = bind_reason_lookup([\n [ 0x00, 'Success' ],\n [ 0x92, 'Packet Identifier not found' ],\n ]);\n\n return ns[0x5] = ns[0x6] = ns[0x7] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n pkt.reason = rdr.u8_reason(_pubxxx_reason_);\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n return pkt }\n}\n\nfunction mqtt_decode_subscribe(ns) {\n class _subscription_options_ extends Number {\n get qos() { return this & 0x3 }\n get retain() { return this & 0x4 !== 0 }\n get retain_handling() { return (this >> 2) & 0x3 }\n }\n\n return ns[0x8] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n const topic_list = pkt.topics = [];\n while (rdr.has_more()) {\n let topic = rdr.utf8();\n let opts = rdr.u8_flags(_subscription_options_);\n topic_list.push({topic, opts});\n }\n\n return pkt }\n}\n\nfunction _mqtt_decode_suback(_ack_reason_) {\n return (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n const answers = pkt.answers = [];\n while (rdr.has_more())\n answers.push(\n rdr.u8_reason(_ack_reason_) );\n\n return pkt }\n}\n\nfunction mqtt_decode_suback(ns) {\n const _suback_reason_ = bind_reason_lookup([\n // MQTT 3.1.1\n [ 0x00, 'Granted QoS 0'],\n [ 0x01, 'Granted QoS 1'],\n [ 0x02, 'Granted QoS 2'],\n\n // MQTT 5.0\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x91, 'Packet Identifier in use'],\n [ 0x97, 'Quota exceeded'],\n [ 0x9E, 'Shared Subscriptions not supported'],\n [ 0xA1, 'Subscription Identifiers not supported'],\n [ 0xA2, 'Wildcard Subscriptions not supported'],\n ]);\n\n return ns[0x9] = _mqtt_decode_suback(_suback_reason_)\n}\n\nfunction mqtt_decode_unsubscribe(ns) {\n return ns[0xa] = (pkt, u8_body) => {\n const rdr = new mqtt_type_reader(u8_body, 0);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n const topic_list = pkt.topics = [];\n while (rdr.has_more())\n topic_list.push(rdr.utf8());\n\n return pkt }\n}\n\nfunction mqtt_decode_unsuback(ns) {\n const _unsuback_reason_ = bind_reason_lookup([\n [ 0x00, 'Success'],\n [ 0x11, 'No subscription existed'],\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x91, 'Packet Identifier in use'],\n ]);\n\n return ns[0xb] = _mqtt_decode_suback(_unsuback_reason_)\n}\n\nfunction mqtt_decode_pingxxx(ns) {\n return ns[0xc] = ns[0xd] = pkt => pkt\n}\n\nfunction mqtt_decode_disconnect(ns) {\n const _disconnect_reason_ = bind_reason_lookup([\n // MQTT 5.0\n [ 0x00, 'Normal disconnection'],\n [ 0x04, 'Disconnect with Will Message'],\n [ 0x80, 'Unspecified error'],\n [ 0x81, 'Malformed Packet'],\n [ 0x82, 'Protocol Error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x89, 'Server busy'],\n [ 0x8B, 'Server shutting down'],\n [ 0x8D, 'Keep Alive timeout'],\n [ 0x8E, 'Session taken over'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x93, 'Receive Maximum exceeded'],\n [ 0x94, 'Topic Alias invalid'],\n [ 0x95, 'Packet too large'],\n [ 0x96, 'Message rate too high'],\n [ 0x97, 'Quota exceeded'],\n [ 0x98, 'Administrative action'],\n [ 0x99, 'Payload format invalid'],\n [ 0x9A, 'Retain not supported'],\n [ 0x9B, 'QoS not supported'],\n [ 0x9C, 'Use another server'],\n [ 0x9D, 'Server moved'],\n [ 0x9E, 'Shared Subscriptions not supported'],\n [ 0x9F, 'Connection rate exceeded'],\n [ 0xA0, 'Maximum connect time'],\n [ 0xA1, 'Subscription Identifiers not supported'],\n [ 0xA2, 'Wildcard Subscriptions not supported'],\n ]);\n\n\n return ns[0xe] = (pkt, u8_body) => {\n if (u8_body && 5 <= pkt.mqtt_level) {\n const rdr = new mqtt_type_reader(u8_body, 0);\n pkt.reason = rdr.u8_reason(_disconnect_reason_);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nfunction mqtt_decode_auth(ns) {\n const _auth_reason_ = bind_reason_lookup([\n // MQTT 5.0\n [ 0x00, 'Success' ],\n [ 0x18, 'Continue authentication' ],\n [ 0x19, 'Re-authenticate' ],\n ]);\n\n return ns[0xf] = (pkt, u8_body) => {\n if ( 5 <= pkt.mqtt_level ) {\n const rdr = new mqtt_type_reader(u8_body, 0);\n pkt.reason = rdr.u8_reason(_auth_reason_);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nfunction mqtt_pkt_writer_pool() {\n const _pool_ = [];\n return host =>\n 0 === _pool_.length\n ? mqtt_pkt_writer(host, _pool_)\n : _pool_.pop()(host)\n}\n\nfunction mqtt_pkt_writer(host, _pool_) {\n // avoid GCing push/pull when they can be reused\n let n=0, rope=[];\n return install(host)\n\n function install(_host) {\n host = _host;\n host.push = push;\n host.pack = pack;\n }\n\n function push(u8) {\n rope.push(u8);\n n += u8.length;\n }\n\n function pack(hdr) {\n host = host.push = host.pack = null;\n\n const res = _mqtt_pkt_rope(hdr, n, rope);\n n=0; rope=[];\n if (undefined !== _pool_)\n _pool_.push(install);\n\n return res\n }\n}\n\n\nfunction _mqtt_pkt_rope(hdr, n, rope) {\n const header = encode_varint(n, hdr);\n let i = header.length;\n\n const pkt = new Uint8Array(n + i);\n pkt.set(header, 0);\n for (const vec of rope) {\n pkt.set(vec, i);\n i += vec.length;\n }\n return pkt\n}\n\nconst _is_array = Array.isArray;\nconst pack_utf8 = v => new TextEncoder('utf-8').encode(v);\nconst pack_u16 = v => [ (v>>>8) & 0xff, v & 0xff ];\nconst pack_u32 = v => [ (v>>>24) & 0xff, (v>>>16) & 0xff, (v>>>8) & 0xff, v & 0xff ];\n\nclass mqtt_type_writer {\n constructor() {\n this._pkt_writer(this);\n }\n\n as_pkt(hdr) { return this.pack([hdr]) }\n\n u8(v) { this.push([ v & 0xff ]);}\n u16(v) { this.push( pack_u16(v) );}\n u32(v) { this.push( pack_u32(v) );}\n vint(v) { this.push( encode_varint(v) );}\n\n _u16_bin(u8_buf) {\n const {push} = this;\n push( pack_u16( u8_buf.byteLength ));\n push( u8_buf );\n }\n\n flush(buf) {\n if (null != buf)\n this.push(\n 'string' === typeof buf\n ? pack_utf8(buf) : buf );\n\n this.push = false;\n }\n\n bin(u8_buf) {\n if (! u8_buf) return this.u16(0)\n if ('string' === typeof u8_buf)\n return this.utf8(u8_buf)\n\n if (u8_buf.length !== u8_buf.byteLength)\n u8_buf = new Uint8Array(u8_buf);\n this._u16_bin(u8_buf);\n }\n\n utf8(v) { this._u16_bin( new TextEncoder('utf-8').encode(v) ); }\n\n pair(k,v) {\n this.utf8(k);\n this.utf8(v);\n }\n\n u8_flags(v, enc_flags, b0=0) {\n if (undefined !== v && isNaN(+v))\n v = enc_flags(v, 0);\n\n v |= b0;\n this.push([v]);\n return v\n }\n\n u8_reason(v) { this.push([v | 0]); }\n\n props(props) {\n if (! props)\n return this.u8(0)\n\n if (! _is_array(props))\n props = props.entries\n ? Array.from(props.entries())\n : Object.entries(props);\n\n if (0 === props.length)\n return this.u8(0)\n\n const wrt = this._fork();\n for (const [name, value] of props) {\n const {id, type} = mqtt_props.get(name);\n wrt.u8(id);\n wrt[type](value);\n }\n\n this.push(wrt.pack([]));\n }\n\n _fork() {\n let self = { __proto__: this };\n this._pkt_writer(self);\n return self\n }\n}\n\nmqtt_type_writer.prototype._pkt_writer = \n mqtt_pkt_writer_pool();\n\nconst _c_mqtt_proto = new Uint8Array([\n 0, 4, 0x4d, 0x51, 0x54, 0x54 ]);\n\nfunction mqtt_encode_connect(ns) {\n const _enc_flags_connect = flags => 0\n | ( flags.reserved ? 0x01 : 0 )\n | ( (flags.will_qos & 0x3) << 3 )\n | ( flags.clean_start ? 0x02 : 0 )\n | ( flags.will_flag ? 0x04 : 0 )\n | ( flags.will_retain ? 0x20 : 0 )\n | ( flags.password ? 0x40 : 0 )\n | ( flags.username ? 0x80 : 0 );\n\n const _enc_flags_will = will => 0x4\n | ( (will.qos & 0x3) << 3 )\n | ( will.retain ? 0x20 : 0 );\n\n return ns.connect = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.push(_c_mqtt_proto);\n wrt.u8( mqtt_level );\n\n const {will, username, password} = pkt;\n const flags = wrt.u8_flags(\n pkt.flags,\n _enc_flags_connect,\n 0 | (username ? 0x80 : 0)\n | (password ? 0x40 : 0)\n | (will ? _enc_flags_will(will) : 0) );\n\n wrt.u16(pkt.keep_alive);\n\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n\n wrt.utf8(pkt.client_id);\n if (flags & 0x04) { // .will_flag\n if (5 <= mqtt_level)\n wrt.props(will.props);\n\n wrt.utf8(will.topic);\n wrt.bin(will.payload);\n }\n\n if (flags & 0x80) // .username\n wrt.utf8(username);\n\n if (flags & 0x40) // .password\n wrt.bin(password);\n\n return wrt.as_pkt(0x10)\n }\n}\n\nfunction mqtt_encode_connack(ns) {\n const _enc_flags_connack = flags =>\n flags.session_present ? 1 : 0;\n\n return ns.connack = (mqtt_level, pkt) => {\n const wrt = new mqtt_type_writer();\n wrt.u8_flags( pkt.flags, _enc_flags_connack );\n\n if (5 <= mqtt_level) {\n wrt.u8_reason( pkt.reason );\n wrt.props( pkt.props );\n\n } else {\n wrt.u8_reason( pkt.return_code || pkt.reason );\n }\n\n return wrt.as_pkt(0x20)\n }\n}\n\nfunction mqtt_encode_publish(ns) {\n return ns.publish = ( mqtt_level, pkt ) => {\n const qos = (pkt.qos & 0x3) << 1;\n const wrt = new mqtt_type_writer();\n\n wrt.utf8(pkt.topic);\n if (0 !== qos)\n wrt.u16(pkt.pkt_id);\n\n if ( 5 <= mqtt_level) {\n wrt.props(pkt.props);\n wrt.flush(pkt.payload);\n } else {\n wrt.flush(pkt.payload);\n }\n\n return wrt.as_pkt(\n 0x30 | qos | (pkt.dup ? 0x8 : 0) | (pkt.retain ? 0x1 : 0) )\n }\n}\n\nfunction mqtt_encode_puback(ns) {\n return ns.puback = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level) {\n wrt.u8_reason(pkt.reason);\n wrt.props(pkt.props);\n }\n\n return wrt.as_pkt(0x40)\n }\n}\n\nfunction mqtt_encode_pubxxx(ns) {\n ns.pubrec = _enc_pubxxx(0x50);\n ns.pubrel = _enc_pubxxx(0x62);\n ns.pubcomp = _enc_pubxxx(0x70);\n\n\n function _enc_pubxxx(hdr) {\n return ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level) {\n wrt.props(pkt.props);\n wrt.u8_reason(pkt.reason);\n\n } else {\n wrt.u8_reason( pkt.return_code || pkt.reason );\n }\n\n return wrt.as_pkt(hdr)\n }\n }\n}\n\nfunction mqtt_encode_subscribe(ns) {\n const _enc_subscribe_flags = opts => 0\n | ( opts.qos & 0x3 )\n | ( opts.retain ? 0x4 : 0 )\n | ( (opts.retain_handling & 0x3) << 2 );\n\n return ns.subscribe = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n const f0 = _enc_subscribe_flags(pkt);\n for (const each of pkt.topics) {\n if ('string' === typeof each) {\n wrt.utf8(each);\n wrt.u8(f0);\n } else {\n let [topic, opts] =\n _is_array(each) ? each\n : [each.topic, each.opts];\n\n wrt.utf8(topic);\n if (undefined === opts) wrt.u8(f0);\n else wrt.u8_flags(opts, _enc_subscribe_flags);\n }\n }\n\n return wrt.as_pkt(0x82)\n }\n}\n\nfunction mqtt_encode_xxsuback(ns) {\n ns.suback = _enc_xxsuback(0x90);\n ns.unsuback = _enc_xxsuback(0xb0);\n\n\n function _enc_xxsuback(hdr) {\n return ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n for (const ans of pkt.answers)\n wrt.u8_reason(ans);\n\n return wrt.as_pkt(hdr)\n }\n }\n}\n\nfunction mqtt_encode_unsubscribe(ns) {\n return ns.unsubscribe = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n for (const topic of pkt.topics)\n wrt.utf8(topic);\n\n return wrt.as_pkt(0xa2)\n }\n}\n\nfunction mqtt_encode_pingxxx(ns) {\n ns.pingreq = () => new Uint8Array([ 0xc0, 0 ]);\n ns.pingresp = () => new Uint8Array([ 0xd0, 0 ]);\n}\n\nfunction mqtt_encode_disconnect(ns) {\n return ns.disconnect = ( mqtt_level, pkt ) => {\n const wrt = new mqtt_type_writer();\n\n if (pkt && 5 <= mqtt_level) {\n if (pkt.reason || pkt.props) {\n wrt.u8_reason(pkt.reason);\n wrt.props(pkt.props);\n }\n }\n\n return wrt.as_pkt(0xe0)\n }\n}\n\nfunction mqtt_encode_auth(ns) {\n return ns.auth = ( mqtt_level, pkt ) => {\n if (5 > mqtt_level)\n throw new Error('Auth packets are only available after MQTT 5.x')\n\n const wrt = new mqtt_type_writer();\n\n wrt.u8_reason(pkt.reason);\n wrt.props(pkt.props);\n\n return wrt.as_pkt(0xf0)\n }\n}\n\nconst mqtt_decode_zero = ns => (ns[0] = pkt => pkt);\n\n\nfunction _bind_mqtt_decode(lst_decode_ops) {\n const by_id = [];\n for (const op of lst_decode_ops) op(by_id);\n\n return _pkt_ctx_ => _mqtt_raw_pkt_dispatch(\n (b0, u8_body) => {\n const decode_pkt = by_id[b0>>>4] || by_id[0];\n if (undefined !== decode_pkt)\n return decode_pkt({__proto__: _pkt_ctx_, b0}, u8_body)\n })\n}\n\n\nfunction _bind_mqtt_encode(lst_encode_ops) {\n const by_type = {};\n for (const op of lst_encode_ops) op(by_type);\n\n return ({mqtt_level}) => (type, pkt) =>\n by_type[type]( mqtt_level, pkt )\n}\n\n\nconst _pkt_types = ['reserved', 'connect', 'connack', 'publish', 'puback', 'pubrec', 'pubrel', 'pubcomp', 'subscribe', 'suback', 'unsubscribe', 'unsuback', 'pingreq', 'pingresp', 'disconnect', 'auth'];\nconst _bind_pkt_ctx = _pkt_ctx_ =>\n Object.defineProperties(_pkt_ctx_ || {}, {\n hdr: {get() { return this.b0 & 0xf }},\n id: {get() { return this.b0 >>> 4 }},\n type: {get() { return _pkt_types[this.b0 >>> 4] }},\n });\n\nfunction _bind_mqtt_session_ctx(sess_decode, sess_encode, _pkt_ctx_) {\n sess_decode = _bind_mqtt_decode(sess_decode);\n sess_encode = _bind_mqtt_encode(sess_encode);\n _pkt_ctx_ = _bind_pkt_ctx(_pkt_ctx_);\n\n return mqtt_level => _base_ => {\n _base_ = _base_ || {__proto__: _pkt_ctx_, mqtt_level, get _base_() { return _base_ }};\n return [ sess_decode(_base_), sess_encode(_base_), _base_ ] }\n}\n\nfunction mqtt_session_ctx(mqtt_level) {\n let {ctx} = mqtt_session_ctx;\n if ( undefined === ctx ) {\n mqtt_session_ctx.ctx = ctx =\n _bind_mqtt_session_ctx(\n [ // lst_decode_ops = [\n mqtt_decode_zero,\n mqtt_decode_connect,\n mqtt_decode_connack,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_pubxxx,\n mqtt_decode_subscribe,\n mqtt_decode_suback,\n mqtt_decode_unsubscribe,\n mqtt_decode_unsuback,\n mqtt_decode_pingxxx,\n mqtt_decode_disconnect,\n mqtt_decode_auth, ],\n [ // lst_encode_ops = [\n mqtt_encode_connect,\n mqtt_encode_connack,\n mqtt_encode_publish,\n mqtt_encode_puback,\n mqtt_encode_pubxxx,\n mqtt_encode_subscribe,\n mqtt_encode_xxsuback,\n mqtt_encode_unsubscribe,\n mqtt_encode_pingxxx,\n mqtt_encode_disconnect,\n mqtt_encode_auth, ]);\n }\n\n return ctx(mqtt_level)\n}\n\nconst mqtt_session = ()=> mqtt_session_ctx('?')();\nconst mqtt_session_v4 = ()=> mqtt_session_ctx(4)();\nconst mqtt_session_v5 = ()=> mqtt_session_ctx(5)();\n\nexport { _bind_mqtt_decode, _bind_mqtt_encode, _bind_mqtt_session_ctx, _bind_pkt_ctx, _is_array, _mqtt_pkt_rope, _mqtt_raw_pkt_dispatch, bind_reason_lookup, decode_varint, encode_varint, mqtt_decode_auth, mqtt_decode_connack, mqtt_decode_connect, mqtt_decode_disconnect, mqtt_decode_pingxxx, mqtt_decode_puback, mqtt_decode_publish, mqtt_decode_pubxxx, mqtt_decode_suback, mqtt_decode_subscribe, mqtt_decode_unsuback, mqtt_decode_unsubscribe, mqtt_decode_zero, mqtt_encode_auth, mqtt_encode_connack, mqtt_encode_connect, mqtt_encode_disconnect, mqtt_encode_pingxxx, mqtt_encode_puback, mqtt_encode_publish, mqtt_encode_pubxxx, mqtt_encode_subscribe, mqtt_encode_unsubscribe, mqtt_encode_xxsuback, mqtt_pkt_writer, mqtt_pkt_writer_pool, mqtt_props, mqtt_raw_packets, mqtt_session, mqtt_session_ctx, mqtt_session_v4, mqtt_session_v5, mqtt_type_reader, mqtt_type_writer };\n//# sourceMappingURL=index.mjs.map\n","import {\n _bind_mqtt_session_ctx,\n\n mqtt_decode_connack,\n mqtt_decode_disconnect,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_pubxxx,\n mqtt_decode_pingxxx,\n mqtt_decode_suback,\n mqtt_decode_unsuback,\n mqtt_decode_auth,\n\n mqtt_encode_connect,\n mqtt_encode_disconnect,\n mqtt_encode_publish,\n mqtt_encode_puback,\n mqtt_encode_pingxxx,\n mqtt_encode_subscribe,\n mqtt_encode_unsubscribe,\n mqtt_encode_auth,\n} from 'u8-mqtt-packet'\n\n\nexport function mqtt_session_ctx(mqtt_level) {\n let {ctx} = mqtt_session_ctx\n if (undefined === ctx ) {\n let as_utf8 = u8 =>\n new TextDecoder('utf-8').decode(u8)\n\n let std_pkt_api = {\n utf8(u8) { return as_utf8( u8 || this.payload ) },\n json(u8) { return JSON.parse( this.utf8(u8) || null ) },\n text(u8) { return this.utf8(u8) },\n }\n\n mqtt_session_ctx.ctx = ctx =\n _bind_mqtt_session_ctx(\n [ // lst_decode_ops\n mqtt_decode_connack,\n mqtt_decode_disconnect,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_pubxxx,\n mqtt_decode_pingxxx,\n mqtt_decode_suback,\n mqtt_decode_unsuback,\n mqtt_decode_auth, ],\n\n [ // lst_encode_ops\n mqtt_encode_connect,\n mqtt_encode_disconnect,\n mqtt_encode_publish,\n mqtt_encode_puback,\n mqtt_encode_pingxxx,\n mqtt_encode_subscribe,\n mqtt_encode_unsubscribe,\n mqtt_encode_auth, ],\n\n std_pkt_api )\n }\n\n return ctx(mqtt_level)\n}\n\n","export function _mqtt_conn(client, [on_mqtt, pkt_future]) ::\n let q0 = _tiny_deferred_queue()\n let q = _tiny_deferred_queue()\n\n let _asy_send = async (...args) =>\n (await q)(...args)\n let _send = client._send = _asy_send\n\n let _ping = () => client._send('pingreq')\n let tid_ping, _is_set = false\n\n return @{}\n is_live: @=> _asy_send !== _send\n is_set: @=> _is_set\n\n reset() ::\n tid_ping = clearInterval(tid_ping)\n client._send = _send = _asy_send\n _is_set = false\n\n // call client.on_reconnect in next promise microtask\n _async_evt(client, client.on_reconnect)\n\n ping(td) ::\n tid_ping = clearInterval(tid_ping)\n if td ::\n tid_ping = setInterval(_ping, 1000 * td)\n if tid_ping.unref ::\n tid_ping.unref()\n\n async send_connect(... args) ::\n if _asy_send === _send ::\n _send = await q0\n\n // await connack response\n let res = await _send(...args)\n\n client._send = _send\n q.notify(_send)\n return res\n\n set(mqtt_session, send_u8_pkt) ::\n _is_set = true\n\n let [mqtt_decode, mqtt_encode] = mqtt_session\n\n let on_mqtt_chunk = u8_buf =>\n on_mqtt(\n mqtt_decode(u8_buf),\n {mqtt: client})\n\n _send = async (type, pkt, key) => ::\n let res = undefined !== key\n ? pkt_future(key) : true\n\n await send_u8_pkt @\n mqtt_encode(type, pkt)\n\n return res\n\n\n q0.notify(_send)\n\n // call client.on_live in next promise microtask\n _async_evt(client, client.on_live)\n\n return on_mqtt_chunk\n\n\nasync function _async_evt(obj, evt) {\n // microtask break lookup\n if (undefined !== evt) {\n await evt.call(obj, await obj)\n }\n}\nfunction _tiny_deferred_queue() {\n let q = [] // tiny resetting deferred queue\n q.then = y => { q.push(y) }\n q.notify = v => {\n for (let fn of q.splice(0,q.length))\n fn(v) }\n return q\n}\n","export function parse(str, loose) {\n\tif (str instanceof RegExp) return { keys:false, pattern:str };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');\n\tarr[0] || arr.shift();\n\n\twhile (tmp = arr.shift()) {\n\t\tc = tmp[0];\n\t\tif (c === '*') {\n\t\t\tkeys.push('wild');\n\t\t\tpattern += '/(.*)';\n\t\t} else if (c === ':') {\n\t\t\to = tmp.indexOf('?', 1);\n\t\t\text = tmp.indexOf('.', 1);\n\t\t\tkeys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );\n\t\t\tpattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n\t\t\tif (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n\t\t} else {\n\t\t\tpattern += '/' + tmp;\n\t\t}\n\t}\n\n\treturn {\n\t\tkeys: keys,\n\t\tpattern: new RegExp('^' + pattern + (loose ? '(?=$|\\/)' : '\\/?$'), 'i')\n\t};\n}\n\nvar RGX = /*#__PURE__*/ /(\\/|^)([:*][^/]*?)(\\?)?(?=[/.]|$)/g;\n\n// error if key missing?\nexport function inject(route, values) {\n\treturn route.replace(RGX, (x, lead, key, optional) => {\n\t\tx = values[key=='*' ? 'wild' : key.substring(1)];\n\t\treturn x ? '/'+x : (optional || key=='*') ? '' : '/' + key;\n\t});\n}\n","// Use [regexparam][] for url-like topic parsing\n// [regexparam]: https://github.com/lukeed/regexparam\n\nimport {parse as _rxp_parse} from 'regexparam'\n\nfunction _ignore(pkt, params, ctx) :: ctx.done = true\n\nexport function _mqtt_topic_router() ::\n let pri_lsts = [[],[]]\n let find = topic => _mqtt_routes_iter(pri_lsts, topic)\n\n return @{} find,\n\n add(topic_route, ...args) ::\n let fn = args.pop()\n let priority = args.pop()\n\n if 'function' !== typeof fn ::\n if false === fn ::\n fn = _ignore\n else throw new TypeError()\n\n let rte = _rxp_parse @\n topic_route.replace(/[+#]$/, '*')\n\n rte.key = topic_route\n rte.tgt = fn\n pri_lsts[priority ? 0 : 1].push(rte)\n return this\n\n remove(topic_route, priority) ::\n let lst = pri_lsts[priority ? 0 : 1]\n lst = lst.filter @ e => e.key !== topic_route\n pri_lsts[priority ? 0 : 1] = lst\n\n clear(priority) ::\n pri_lsts[priority ? 0 : 1] = []\n if null == priority ::\n pri_lsts[1] = []\n\n async invoke(pkt, ctx) ::\n ctx.idx = 0\n\n for let [fn, params] of find(pkt.topic) ::\n await fn(pkt, params, ctx)\n\n if ctx.done ::\n break\n else ctx.idx++\n\n let {pkt_id, qos} = pkt\n if 1 === qos ::\n await ctx.mqtt._send('puback', {pkt_id})\n\n\nexport function * _mqtt_routes_iter(all_route_lists, topic) ::\n for let route_list of all_route_lists ::\n for let route of route_list ::\n let res = _mqtt_route_match_one(topic, route)\n if undefined !== res ::\n yield res\n\n\nexport function _mqtt_route_match_one(topic, {keys, pattern, tgt}) ::\n let match = '/' !== topic[0]\n ? pattern.exec('/'+topic)\n : pattern.exec(topic)\n\n if null === match ::\n return\n\n if false === keys ::\n let {groups} = match\n if ! groups ::\n return [tgt]\n\n let params = {}\n for let k in groups ::\n params[k] = groups[k]\n\n return [tgt, params]\n\n if 0 === keys.length ::\n return [tgt]\n\n let params = {}\n for let i=0; i<keys.length; i++ ::\n params[ keys[i] ] = match[1+i]\n return [tgt, params]\n\n","\nexport const _mqtt_cmdid_dispatch = @{}\n create(target) ::\n return @{} __proto__: this, target, hashbelt: [new Map()]\n\n bind_pkt_future(_pkt_id=100) ::\n let {hashbelt} = this\n\n let _tmp_ // use _tmp_ to reuse _by_key closure\n let _by_key = answer_monad =>\n hashbelt[0].set(_tmp_, answer_monad)\n\n return @\\ pkt_or_key ::\n if 'string' === typeof pkt_or_key ::\n _tmp_ = pkt_or_key\n else ::\n _pkt_id = (_pkt_id + 1) & 0xffff\n _tmp_ = pkt_or_key.pkt_id = _pkt_id\n\n return new Promise(_by_key)\n\n answer(key, pkt) ::\n for let map of this.hashbelt ::\n let answer_monad = map.get(key)\n if undefined !== answer_monad ::\n map.delete(key)\n\n answer_monad([pkt, /*err*/]) // option/maybe monad\n return true\n return false\n\n rotate_belt(n) ::\n let {hashbelt} = this\n hashbelt.unshift @ new Map()\n for let old of hashbelt.splice(n || 5) ::\n for let answer_monad of old.values() ::\n answer_monad([/*pkt*/, 'expired']) // option/maybe monad\n\n cmdids: @!\n return @[]\n @=>{} // 0x0 reserved\n by_evt // 0x1 connect\n by_type // 0x2 connack\n by_evt // 0x3 publish\n by_id // 0x4 puback\n by_id // 0x5 pubrec\n by_id // 0x6 pubrel\n by_id // 0x7 pubcomp\n by_evt // 0x8 subscribe\n by_id // 0x9 suback\n by_evt // 0xa unsubscribe\n by_id // 0xb unsuback\n by_type // 0xc pingreq\n by_type // 0xd pingresp\n by_evt // 0xe disconnect\n by_type // 0xf auth\n\n\n function by_id(disp, pkt) ::\n disp.answer @ pkt.pkt_id, pkt\n\n function by_type(disp, pkt, ctx) ::\n disp.answer @ pkt.type, pkt\n by_evt(disp, pkt, ctx)\n\n async function by_evt({target}, pkt, ctx) ::\n let fn = target[`mqtt_${pkt.type}`]\n || target.mqtt_pkt\n\n if undefined !== fn ::\n await fn.call(target, pkt, ctx)\n\n\n","import {_mqtt_cmdid_dispatch} from './_cmdid_dispatch.jsy'\n\nexport function _mqtt_dispatch(opt, target) ::\n let _disp_ = _mqtt_cmdid_dispatch.create(target)\n let { cmdids } = _disp_\n\n // default rotate at 1s across 5 buckets\n let { td: rotate_td=1000, n: rotate_n=5 } =\n opt && opt.rotate || {}\n\n let rotate_ts = rotate_td + Date.now()\n\n return @[] on_mqtt,\n _disp_.bind_pkt_future()\n\n function on_mqtt(pkt_list, ctx) ::\n for let pkt of pkt_list ::\n cmdids[pkt.id] @ _disp_, pkt, ctx\n\n if Date.now() > rotate_ts ::\n _disp_.rotate_belt(rotate_n)\n rotate_ts = rotate_td + Date.now()\n\n","import {_mqtt_conn} from './_conn.jsy'\nimport {_mqtt_topic_router} from './_router.jsy'\nimport {_mqtt_dispatch} from './_dispatch.jsy'\n\nexport class MQTTBaseClient ::\n constructor(opt={}) ::\n this._conn_ = _mqtt_conn @ this,\n this._init_dispatch(opt, this)\n\n // Handshaking Packets\n\n async connect(pkt={}) ::\n let {client_id: cid} = pkt\n if ! cid ::\n pkt.client_id = cid = this.init_client_id(['u8-mqtt--', ''])\n else if Array.isArray(cid) ::\n pkt.client_id = cid = this.init_client_id(cid)\n else :: this.client_id = cid\n\n if null == pkt.keep_alive ::\n pkt.keep_alive = 60\n\n let res = await this._conn_\n .send_connect('connect', pkt, 'connack')\n\n // TODO: merge with server's keep_alive frequency\n this._conn_.ping(pkt.keep_alive)\n return res\n\n async disconnect(pkt={}) ::\n let res = await this._send('disconnect', pkt)\n this._conn_.reset()\n return res\n\n auth(pkt={}) ::\n return this._send('auth', pkt, 'auth')\n\n ping() :: return this._send('pingreq', null, 'pingresp')\n\n\n // alias: sub\n subscribe(pkt, ex) ::\n pkt = _as_topics(pkt, ex)\n return this._send('subscribe', pkt, pkt)\n\n // alias: unsub\n unsubscribe(pkt, ex) ::\n pkt = _as_topics(pkt, ex)\n return this._send('unsubscribe', pkt, pkt)\n\n get on_topic() :: return this.router.add\n\n // alias: sub_topic\n subscribe_topic(topic_route, ...args) ::\n let topic = this.topic_for(topic_route)\n this.router.add @ topic_route, true, args.pop() // handler\n this.subscribe @ [[ topic ]], args.pop() // ex\n return this\n\n // alias: unsub_topic\n unsubscribe_topic(topic_route) ::\n let topic = this.topic_for(topic_route)\n this.router.remove @ topic_route, true\n return this.unsubscribe @ [[ topic ]]\n\n topic_for(topic_route) ::\n return topic_route.replace(/[:*].*$/, '#')\n\n\n // alias: pub\n publish(pkt, fn_encode) :: return _pub(this, pkt, fn_encode)\n post(topic, payload) :: return _pub.m(this, topic, payload)\n send(topic, payload) :: return _pub.mq(this, topic, payload)\n store(topic, payload) :: return _pub.mqr(this, topic, payload)\n\n json_post(topic, msg) :: return _pub.o(this, topic, msg)\n json_send(topic, msg) :: return _pub.oq(this, topic, msg)\n json_store(topic, msg) :: return _pub.oqr(this, topic, msg)\n\n obj_post(topic, msg, fn_encode) :: return _pub.o(this, topic, msg, fn_encode)\n obj_send(topic, msg, fn_encode) :: return _pub.oq(this, topic, msg, fn_encode)\n obj_store(topic, msg, fn_encode) :: return _pub.oqr(this, topic, msg, fn_encode)\n\n\n\n // Utility Methods\n\n init_client_id(parts) ::\n let cid = this.client_id\n\n if undefined === cid ::\n this.client_id = cid = (\n #IF PLAT_WEB\n this.sess_client_id(parts)\n #ELSE\n this.new_client_id(parts)\n )\n\n return cid\n\n new_client_id(parts) ::\n return [parts[0], Math.random().toString(36).slice(2), parts[1]].join('')\n\n #IF PLAT_WEB\n sess_client_id(parts) ::\n let key = `client_id ${parts.join('')}`\n let cid = sessionStorage.getItem(key)\n if null == cid ::\n cid = this.new_client_id(parts)\n sessionStorage.setItem(key, cid)\n return cid\n\n\n // Internal API\n\n /* async _send(type, pkt) -- provided by _conn_ and transport */\n\n _init_router(opt) ::\n return this.router = _mqtt_topic_router(this)\n\n _init_dispatch(opt) ::\n let router = this._init_router(opt, this)\n\n let tgt = @{}\n __proto__: opt.on_mqtt_type || {}\n router\n\n if ! tgt.mqtt_publish ::\n tgt.mqtt_publish = router.invoke\n\n return _mqtt_dispatch(this, tgt)\n\n\n::\n let p = MQTTBaseClient.prototype\n Object.assign @ p, @{}\n pub: p.publish\n sub: p.subscribe\n unsub: p.unsubscribe\n sub_topic: p.subscribe_topic\n unsub_topic: p.unsubscribe_topic\n\n /*\n p.on_mqtt_type = {\n mqtt_auth(pkt, ctx) ::\n mqtt_connect(pkt, ctx) ::\n mqtt_connack(pkt, ctx) ::\n mqtt_disconnect(pkt, ctx) ::\n\n mqtt_publish(pkt, ctx)\n mqtt_subscribe(pkt, ctx) ::\n mqtt_unsubscribe(pkt, ctx) ::\n\n mqtt_pingreq(pkt, ctx) ::\n mqtt_pingresp(pkt, ctx) ::\n }\n */\n\n\nfunction _as_topics(pkt, ex) ::\n if 'string' === typeof pkt ::\n return {topics:[pkt], ... ex}\n if pkt[Symbol.iterator] ::\n return {topics:[... pkt], ... ex}\n return ex ? {...pkt, ...ex} : pkt\n\n\nasync function _pub(self, pkt, fn_encode) ::\n if undefined === pkt.payload ::\n let {msg} = pkt\n switch typeof msg ::\n case 'function':\n fn_encode = msg\n msg = undefined\n\n case 'undefined':\n let arg = pkt.arg || 'payload'\n return v => _pub(self, {...pkt, [arg]: v}, fn_encode)\n\n default:\n pkt.payload = fn_encode\n ? await fn_encode(msg)\n : JSON.stringify(msg)\n\n return self._send @ 'publish', pkt,\n pkt.qos ? pkt : void 0 // key\n\n::\n Object.assign @ _pub, @{}\n m: (self, topic, payload) =>\n _pub(self, {topic, payload, qos:0})\n mq: (self, topic, payload) =>\n _pub(self, {topic, payload, qos:1})\n mqr: (self, topic, payload) =>\n _pub(self, {topic, payload, qos:1, retain: 1})\n\n o: (self, topic, msg, fn_encode) =>\n _pub(self, {topic, msg, arg: 'msg', qos:0}, fn_encode)\n oq: (self, topic, msg, fn_encode) =>\n _pub(self, {topic, msg, arg: 'msg', qos:1}, fn_encode)\n oqr: (self, topic, msg, fn_encode) =>\n _pub(self, {topic, msg, arg: 'msg', qos:1, retain: 1}, fn_encode)\n\n","import {MQTTBaseClient} from './base.jsy'\n\n#IF PLAT_NODEJS\n import {connect as tcp_connect} from 'net'\n\n\nexport class MQTTCoreClient extends MQTTBaseClient ::\n static _with_session(mqtt_session) ::\n this.prototype._mqtt_session = mqtt_session\n\n constructor(opt={}) ::\n super(opt)\n this.with_live(opt.on_live)\n this.with_reconnect(opt.on_reconnect)\n\n\n // on_live(client) ::\n with_live(on_live) ::\n if on_live ::\n this.on_live = on_live\n\n return this\n\n // on_reconnect(client) ::\n with_reconnect(on_reconnect) ::\n if on_reconnect ::\n this.on_reconnect = on_reconnect\n\n if ! this._conn_.is_set ::\n on_reconnect(this)\n\n return this\n\n\n with_async_iter(async_iter, write_u8_pkt) ::\n let on_mqtt_chunk = this._conn_.set @\n this._mqtt_session(),\n write_u8_pkt\n\n this._msg_loop = @!>\n async_iter = await async_iter\n for await (let chunk of async_iter)\n on_mqtt_chunk(chunk)\n\n this._conn_.reset()\n\n return this\n\n\n #IF PLAT_DENO\n with_tcp(port, hostname) ::\n if !Number.isFinite(port) ::\n ({port, hostname} = new URL(port))\n\n Deno.connect @:\n port, hostname, transport: 'tcp'\n .then @\\ conn =>\n this.with_async_iter @\n Deno.iter(conn),\n u8_pkt => conn.write(u8_pkt)\n\n return this\n\n\n #IF PLAT_NODEJS\n with_tcp(port, hostname) ::\n if !Number.isFinite(port) ::\n ({port, hostname} = new URL(port))\n\n let sock = tcp_connect(port, hostname)\n return this.with_stream(sock)\n\n\n #IF HAS_STREAM\n with_stream(read_stream, write_stream) ::\n if undefined === write_stream ::\n write_stream = read_stream\n\n return this.with_async_iter @ read_stream,\n u8_pkt => write_stream.write(u8_pkt)\n\n\n\n\n with_websock(websock) ::\n if null == websock ::\n websock = 'ws://127.0.0.1:9001'\n\n if websock.origin || 'string' === typeof websock ::\n websock = new WebSocket(new URL(websock), ['mqtt'])\n\n websock.binaryType = 'arraybuffer'\n\n let ready, {readyState} = websock\n if 1 !== readyState ::\n if 0 !== readyState ::\n throw new Error @ 'Invalid WebSocket readyState'\n\n ready = new Promise( y =>\n websock.addEventListener('open', y, {once: true}))\n\n\n let {_conn_} = this\n let on_mqtt_chunk = _conn_.set @\n this._mqtt_session(),\n async u8_pkt => @\n await ready\n websock.send(u8_pkt)\n\n websock.addEventListener @ 'close',\n @::\n delete websock.onmessage\n _conn_.reset()\n\n {once: true}\n\n websock.onmessage = evt =>\n on_mqtt_chunk @\n new Uint8Array(evt.data)\n\n return this\n\n","import {mqtt_session_ctx} from './session.mjs'\nimport {MQTTCoreClient} from './core.jsy'\n\nclass MQTTClient_v4 extends MQTTCoreClient {\n _mqtt_session() { return mqtt_session_ctx(4)() }\n}\n\nconst mqtt_v4 = opt => new MQTTClient_v4(opt)\n\nexport {\n MQTTClient_v4,\n MQTTClient_v4 as MQTTClient,\n\n mqtt_v4,\n mqtt_v4 as mqtt,\n mqtt_v4 as default,\n}\n"],"names":["_rxp_parse","tcp_connect"],"mappings":"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"}