u8-mqtt 0.6.6 → 0.6.7
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/cjs/basic-v4.cjs +16 -11
- package/cjs/basic-v4.cjs.map +1 -1
- package/cjs/basic-v5.cjs +16 -11
- package/cjs/basic-v5.cjs.map +1 -1
- package/cjs/full-v4.cjs +17 -12
- package/cjs/full-v4.cjs.map +1 -1
- package/cjs/full-v5.cjs +17 -12
- package/cjs/full-v5.cjs.map +1 -1
- package/cjs/index.cjs +17 -12
- package/cjs/index.cjs.map +1 -1
- package/cjs/v4.cjs +17 -12
- package/cjs/v4.cjs.map +1 -1
- package/cjs/v5.cjs +17 -12
- package/cjs/v5.cjs.map +1 -1
- package/code/_conn.jsy +5 -4
- package/code/base.jsy +3 -2
- package/code/core.jsy +7 -4
- package/esm/basic-v4.js +16 -11
- package/esm/basic-v4.js.map +1 -1
- package/esm/basic-v5.js +16 -11
- package/esm/basic-v5.js.map +1 -1
- package/esm/deno/basic-v4.js +16 -11
- package/esm/deno/basic-v4.js.map +1 -1
- package/esm/deno/basic-v5.js +16 -11
- package/esm/deno/basic-v5.js.map +1 -1
- package/esm/deno/full-v4.js +17 -12
- package/esm/deno/full-v4.js.map +1 -1
- package/esm/deno/full-v5.js +17 -12
- package/esm/deno/full-v5.js.map +1 -1
- package/esm/deno/index.js +17 -12
- package/esm/deno/index.js.map +1 -1
- package/esm/deno/v4.js +17 -12
- package/esm/deno/v4.js.map +1 -1
- package/esm/deno/v5.js +17 -12
- package/esm/deno/v5.js.map +1 -1
- package/esm/full-v4.js +17 -12
- package/esm/full-v4.js.map +1 -1
- package/esm/full-v5.js +17 -12
- package/esm/full-v5.js.map +1 -1
- package/esm/index.js +17 -12
- package/esm/index.js.map +1 -1
- package/esm/node/basic-v4.js +16 -11
- package/esm/node/basic-v4.js.map +1 -1
- package/esm/node/basic-v4.mjs +16 -11
- package/esm/node/basic-v4.mjs.map +1 -1
- package/esm/node/basic-v5.js +16 -11
- package/esm/node/basic-v5.js.map +1 -1
- package/esm/node/basic-v5.mjs +16 -11
- package/esm/node/basic-v5.mjs.map +1 -1
- package/esm/node/full-v4.js +17 -12
- package/esm/node/full-v4.js.map +1 -1
- package/esm/node/full-v4.mjs +17 -12
- package/esm/node/full-v4.mjs.map +1 -1
- package/esm/node/full-v5.js +17 -12
- package/esm/node/full-v5.js.map +1 -1
- package/esm/node/full-v5.mjs +17 -12
- package/esm/node/full-v5.mjs.map +1 -1
- package/esm/node/index.js +17 -12
- package/esm/node/index.js.map +1 -1
- package/esm/node/index.mjs +17 -12
- package/esm/node/index.mjs.map +1 -1
- package/esm/node/v4.js +17 -12
- package/esm/node/v4.js.map +1 -1
- package/esm/node/v4.mjs +17 -12
- package/esm/node/v4.mjs.map +1 -1
- package/esm/node/v5.js +17 -12
- package/esm/node/v5.js.map +1 -1
- package/esm/node/v5.mjs +17 -12
- package/esm/node/v5.mjs.map +1 -1
- package/esm/v4.js +17 -12
- package/esm/v4.js.map +1 -1
- package/esm/v5.js +17 -12
- package/esm/v5.js.map +1 -1
- package/esm/web/basic-v4.js +16 -11
- package/esm/web/basic-v4.js.map +1 -1
- package/esm/web/basic-v4.min.js +1 -1
- package/esm/web/basic-v4.min.js.br +0 -0
- package/esm/web/basic-v4.min.js.gz +0 -0
- package/esm/web/basic-v5.js +16 -11
- package/esm/web/basic-v5.js.map +1 -1
- package/esm/web/basic-v5.min.js +1 -1
- package/esm/web/basic-v5.min.js.br +0 -0
- package/esm/web/basic-v5.min.js.gz +0 -0
- package/esm/web/full-v4.js +17 -12
- package/esm/web/full-v4.js.map +1 -1
- package/esm/web/full-v4.min.js +1 -1
- package/esm/web/full-v4.min.js.br +0 -0
- package/esm/web/full-v4.min.js.gz +0 -0
- package/esm/web/full-v5.js +17 -12
- package/esm/web/full-v5.js.map +1 -1
- package/esm/web/full-v5.min.js +1 -1
- package/esm/web/full-v5.min.js.br +0 -0
- package/esm/web/full-v5.min.js.gz +0 -0
- package/esm/web/index.js +17 -12
- package/esm/web/index.js.map +1 -1
- package/esm/web/index.min.js +1 -1
- package/esm/web/index.min.js.br +0 -0
- package/esm/web/index.min.js.gz +0 -0
- package/esm/web/v4.js +17 -12
- package/esm/web/v4.js.map +1 -1
- package/esm/web/v4.min.js +1 -1
- package/esm/web/v4.min.js.br +0 -0
- package/esm/web/v4.min.js.gz +0 -0
- package/esm/web/v5.js +17 -12
- package/esm/web/v5.js.map +1 -1
- package/esm/web/v5.min.js +1 -1
- package/esm/web/v5.min.js.br +0 -0
- package/esm/web/v5.min.js.gz +0 -0
- package/package.json +16 -17
package/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../node_modules/u8-mqtt-packet/esm/codec_v5_client.js","../node_modules/regexparam/dist/index.mjs","../code/_utils.jsy","../code/with_topic_router.jsy","../code/router_path.jsy","../node_modules/u8-mqtt-packet/esm/codec_bind.js","../code/_cmdid_dispatch.jsy","../code/_dispatch.jsy","../code/base.jsy","../code/_conn.jsy","../code/core.jsy","../code/v5.js"],"sourcesContent":["function encode_varint(n, a=[]) {\n a.push((n<0x80 ? 0 : 0x80) | (n & 0x7f));\n for(; ( n>>>=7 ) > 0 ;)\n a.push((n<0x80 ? 0 : 0x80) | (n & 0x7f));\n return a\n}\n\nfunction decode_varint(u8, i0=0, invalid) {\n let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);\n for(; b & 0x80;)\n n |= ((b=u8[i++]) & 0x7f) << (shift += 7);\n\n return (u8.length < i)\n ? [invalid, i0, i0] // fail: insuffecient u8 bytes to decode\n : [n, i, i0] // successful value\n}\n\nfunction add_mqtt_props(mqtt_props, entries) {\n for (let [id, type, name, obj] of entries) {\n obj = {id, type, name, ...obj};\n mqtt_props.set(id, obj).set(name, obj);\n }\n return mqtt_props\n}\n\n\nconst init_mqtt_props = () =>\n add_mqtt_props(new Map(), [\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_qos'],\n [ 0x25, 'u8', 'retain_available'],\n [ 0x26, 'pair', 'user_properties', {op: 'kv_obj'}],\n [ 0x27, 'u32', 'maximum_packet_size'],\n [ 0x28, 'u8', 'wildcard_subscription_available'],\n [ 0x29, 'u8', 'subscription_identifiers_available', {op: 'u8_vec'}],\n [ 0x2A, 'u8', 'shared_subscription_available'],\n ]);\n\n\nconst mqtt_props = /* #__PURE__ */\n init_mqtt_props();\n\nclass mqtt_reason extends Number {\n constructor(v, reason) {\n super(v);\n this.reason = `:${(this.ok = v<0x80) ? 'ok' : 'fail'}:${reason}`;\n }\n}\n\nclass mqtt_reader_v4 {\n static for(pkt, u8_body) { return new this().of(u8_body, {pkt}) }\n of(buf, opt) {\n let step = (width, k) => (k=0|step.k, step.k=k+width, k);\n return {__proto__: this, buf, step, ...opt}\n }\n\n has_more() {\n return this.buf.byteLength > (this.step.k|0)\n }\n\n u8() {\n return this.buf[this.step(1)]\n }\n\n u16() {\n let {buf, step} = this, i = step(2);\n return (buf[i]<<8) | buf[i+1]\n }\n\n u32() {\n let {buf, step} = this, i = step(4);\n return (buf[i]<<24) | (buf[i+1]<<16) | (buf[i+2]<<8) | buf[i+3]\n }\n\n vint() {\n let {buf, step} = this;\n let [n, vi, vi0] = decode_varint(buf, step.k|0);\n step(vi - vi0);\n return n\n }\n\n bin() {\n let {buf, step} = this, i = step(2);\n let len = (buf[i]<<8) | buf[i+1];\n i = step(len);\n return buf.subarray(i, i+len)\n }\n\n utf8() { return new TextDecoder('utf-8').decode(this.bin()) }\n pair() { return [ this.utf8(), this.utf8() ] }\n\n flags(FlagsType) { return new FlagsType(this.buf[this.step(1)]) }\n\n reason(pkt_kind) {\n let v = this.buf[this.step(1)];\n if (null != v)\n return new mqtt_reason(v, this._reason_for?.(v, pkt_kind))\n }\n\n flush() {\n let {buf, step} = this;\n this.step = this.buf = null;\n return buf.subarray(step.k|0)\n }\n\n}\n\nlet mqtt_reader_v5$1 = class mqtt_reader_v5 extends mqtt_reader_v4 {\n props() {\n let {buf, step} = this;\n let [n, vi, vi0] = decode_varint(buf, step.k|0, 0);\n step(n + vi - vi0);\n if (0 === n) return null\n\n let res={}, fork = this.of(buf.subarray(vi, step.k|0));\n while (fork.has_more()) {\n let v, pk = fork.u8(), pt = mqtt_props.get( pk );\n if (!pt) {\n res._unknown_ = pk;\n this.warn?.(`unknown property: ${pk}`);\n break\n }\n\n v = fork[pt.type]();\n res[pt.name] = !pt.op ? v\n : fork[pt.op](res[pt.name], v); // accumulate operation\n }\n return res\n }\n\n kv_obj(obj=Object.create(null), [k,v]) {\n obj[k] = v;\n return obj\n }\n u8_vec(vec=[], u8) {\n vec.push(u8);\n return vec\n }\n\n /*\n vbuf() {\n let {buf, step} = this\n let [n, vi, vi0] = decode_varint(buf, step.k|0)\n step(n + vi - vi0)\n return 0 === n ? null\n : buf.subarray(vi, step.k|0)\n }\n */\n};\n\nfunction with_reasons(mqtt_reader, by_kind) {\n for (let [k,lut] of Object.entries(by_kind))\n by_kind[k] = new Map(lut);\n\n return class extends mqtt_reader {\n _reason_for(v, pkt_kind) {\n return by_kind[pkt_kind]?.get(v) || by_kind.all.get(v)\n }\n warn(msg) {\n let pkt = this.pkt;\n pkt.warn ? pkt.warn(msg, pkt)\n : console.warn('[u8-mqtt-packet] '+msg);\n }\n }\n}\n\n\nconst reasons_v4 = {\n connack: [\n [ 0x01, 'conn refused: unacceptable protocol version'],\n [ 0x02, 'conn refused: identifier rejected'],\n [ 0x03, 'conn refused: server unavailable'],\n [ 0x04, 'conn refused: bad user name or password'],\n [ 0x05, 'conn refused: not authorized'],\n ],\n suback: [\n [ 0x00, 'qos=0'],\n [ 0x01, 'qos=1'],\n [ 0x02, 'qos=2'],\n ],\n unsuback: [\n [ 0x11, 'no subscription existed'],\n ],\n puback: [\n [ 0x10, 'no matching subscribers'],\n ],\n all: [\n [ 0, ''], // Success\n [ 0x80, 'unspecified error'], // disconnect puback suback unsuback\n [ 0x83, 'implementation specific error'], // connack disconnect puback suback unsuback\n [ 0x87, 'not authorized'], // connack disconnect puback suback unsuback\n [ 0x8F, 'topic filter invalid'], // disconnect suback unsuback\n [ 0x91, 'packet identifier in use'], // puback suback unsuback\n [ 0x92, 'packet identifier not found' ], // pubxxx\n ]};\n\nconst reasons_v5 = {\n ... reasons_v4,\n auth: [\n [ 0x18, 'continue authentication' ],\n [ 0x19, 're-authenticate' ],\n ],\n disconnect: [\n [ 0x04, 'disconnect with will message'],\n ],\n all: [\n ... reasons_v4.all,\n [ 0x81, 'malformed packet'], // connack disconnect\n [ 0x82, 'protocol error'], // connack disconnect\n [ 0x84, 'unsupported protocol version'], // connack\n [ 0x85, 'client identifier not valid'], // connack\n [ 0x86, 'bad user name or password'], // connack\n [ 0x88, 'server unavailable'], // connack\n [ 0x89, 'server busy'], // connack disconnect\n [ 0x8A, 'banned'], // connack\n [ 0x8B, 'server shutting down'], // disconnect\n [ 0x8C, 'bad authentication method'], // connack\n [ 0x8D, 'keep alive timeout'], // disconnect\n [ 0x8E, 'session taken over'], // disconnect\n [ 0x90, 'topic name invalid'], // connack disconnect puback\n [ 0x93, 'receive maximum exceeded'], // disconnect\n [ 0x94, 'topic alias invalid'], // disconnect\n [ 0x95, 'packet too large'], // connack disconnect\n [ 0x96, 'message rate too high'], // disconnect\n [ 0x97, 'quota exceeded'], // connack disconnect puback suback\n [ 0x98, 'administrative action'], // disconnect\n [ 0x99, 'payload format invalid'], // connack disconnect puback\n [ 0x9A, 'retain not supported'], // connack disconnect\n [ 0x9B, 'qoS not supported'], // connack disconnect\n [ 0x9C, 'use another server'], // connack disconnect\n [ 0x9D, 'server moved'], // connack disconnect\n [ 0x9E, 'shared subscriptions not supported'], // disconnect suback\n [ 0x9F, 'connection rate exceeded'], // connack disconnect\n [ 0xA0, 'maximum connect time'], // disconnect\n [ 0xA1, 'subscription identifiers not supported'], // disconnect suback\n [ 0xA2, 'wildcard subscriptions not supported'], // disconnect suback\n ]};\n\nconst mqtt_reader_v5 = /* #__PURE__ */\n with_reasons(mqtt_reader_v5$1, reasons_v5);\n\nclass mqtt_writer_v4 {\n static for(pkt) { return new this().of() }\n of() { return {__proto__: this, $:[]} }\n\n static init() { return this }\n\n as_pkt(pkt_id) { return this.pack([pkt_id]) }\n\n push(...z) { this.$.push(...z); }\n pack(hdr) {\n let z, i, n=0, parts = this.$;\n this.$ = false;\n for (z of parts) n += z.length;\n\n hdr = encode_varint(n, hdr);\n i = hdr.length;\n\n let pkt = new Uint8Array(i + n);\n pkt.set(hdr, 0);\n for (z of parts) {\n pkt.set(z, i);\n i += z.length;\n }\n return pkt\n }\n\n u8(v) { this.push([ v & 0xff ]); }\n u16(v) { this.push([ (v>>>8) & 0xff, v & 0xff ]); }\n u32(v) { this.push([ (v>>>24) & 0xff, (v>>>16) & 0xff, (v>>>8) & 0xff, v & 0xff ]); }\n vint(v) { this.push( encode_varint(v) );}\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\n this.u16(u8_buf.byteLength);\n this.push(u8_buf);\n }\n\n utf8(v) {\n let u8_buf = new TextEncoder('utf-8').encode(v);\n this.u16(u8_buf.byteLength);\n this.push(u8_buf);\n }\n pair(k,v) { this.utf8(k); this.utf8(v); }\n\n 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 reason(v) { this.push([v | 0]); }\n\n flush(buf) {\n if (null != buf)\n this.push(\n 'string' === typeof buf\n ? new TextEncoder('utf-8').encode(buf)\n : buf );\n\n this.push = false;\n }\n}\n\n\nclass mqtt_writer_v5 extends mqtt_writer_v4 {\n props(props) {\n if (! props)\n return this.u8(0)\n\n if (! Array.isArray(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 let fork = this.of();\n for (let [name, value] of props) {\n let pt = mqtt_props.get(name);\n if (!pt)\n throw new Error(`MQTT unknown property \"${name}\"`)\n\n fork[pt.op || 'one'](value, pt);\n }\n this.push(fork.pack());\n }\n\n one(value, pt) {\n this.u8(pt.id);\n this[pt.type](value);\n }\n kv_obj(obj, pt) {\n for (let kv of Object.entries(obj)) {\n this.u8(pt.id);\n this.pair(kv);\n }\n }\n u8_vec(vec, pt) {\n for (let v of vec) {\n this.u8(pt.id);\n this.u8(v);\n }\n }\n}\n\nfunction mqtt_encode_connect(ns, mqtt_writer) {\n const _c_mqtt_proto = new Uint8Array([\n 0, 4, 0x4d, 0x51, 0x54, 0x54 ]);\n\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 let wrt = mqtt_writer.for(pkt);\n\n wrt.push(_c_mqtt_proto);\n wrt.u8( mqtt_level );\n\n let {will, username, password} = pkt;\n let flags = wrt.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_decode_connack(ns, mqtt_reader) {\n class _connack_flags_ extends Number {\n get session_present() { return this & 0x01 !== 0 }\n }\n\n return ns[0x2] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.flags =\n rdr.flags(_connack_flags_);\n\n pkt.reason = rdr.reason(pkt.type);\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n return pkt }\n}\n\nfunction mqtt_encode_publish(ns, mqtt_writer) {\n return ns.publish = ( mqtt_level, pkt ) => {\n let qos = (pkt.qos & 0x3) << 1;\n let wrt = mqtt_writer.for(pkt);\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_decode_publish(ns, mqtt_reader) {\n return ns[0x3] = (pkt, u8_body) => {\n let {hdr} = pkt;\n pkt.dup = Boolean(hdr & 0x8);\n pkt.retain = Boolean(hdr & 0x1);\n let qos = pkt.qos = (hdr>>1) & 0x3;\n\n let rdr = mqtt_reader.for(pkt, u8_body);\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_encode_puback(ns, mqtt_writer) {\n return ns.puback = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level) {\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n }\n\n return wrt.as_pkt(0x40)\n }\n}\n\n\nfunction mqtt_decode_puback(ns, mqtt_reader) {\n return ns[0x4] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level) {\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n\n return pkt }\n}\n\nfunction mqtt_encode_subscribe(ns, mqtt_writer) {\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 let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n let f0 = _enc_subscribe_flags(pkt);\n for (let each of pkt.topics) {\n if ('string' === typeof each) {\n wrt.utf8(each);\n wrt.u8(f0);\n } else {\n let [topic, opts] =\n Array.isArray(each) ? each\n : [each.topic, each.opts];\n\n wrt.utf8(topic);\n if (undefined === opts) wrt.u8(f0);\n else wrt.flags(opts, _enc_subscribe_flags);\n }\n }\n\n return wrt.as_pkt(0x82)\n }\n}\n\nfunction mqtt_decode_xxsuback(ns, mqtt_reader) {\n return ns[0x9] = ns[0xb] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n let answers = pkt.answers = [];\n while (rdr.has_more())\n answers.push(\n rdr.reason(pkt.type) );\n\n return pkt }\n}\n\nfunction mqtt_encode_unsubscribe(ns, mqtt_writer) {\n return ns.unsubscribe = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n for (let 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\n\nfunction mqtt_decode_pingxxx(ns) {\n return ns[0xc] = ns[0xd] = pkt => pkt\n}\n\nfunction mqtt_encode_disconnect(ns, mqtt_writer) {\n return ns.disconnect = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n if (pkt && 5 <= mqtt_level) {\n if (pkt.reason || pkt.props) {\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n }\n }\n\n return wrt.as_pkt(0xe0)\n }\n}\n\n\nfunction mqtt_decode_disconnect(ns, mqtt_reader) {\n return ns[0xe] = (pkt, u8_body) => {\n if (u8_body && 5 <= pkt.mqtt_level) {\n let rdr = mqtt_reader.for(pkt, u8_body);\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nfunction mqtt_encode_auth(ns, mqtt_writer) {\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 let wrt = mqtt_writer.of(pkt);\n\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n\n return wrt.as_pkt(0xf0)\n }\n}\n\nfunction mqtt_decode_auth(ns, mqtt_reader) {\n return ns[0xf] = (pkt, u8_body) => {\n if ( 5 <= pkt.mqtt_level ) {\n let rdr = mqtt_reader.of(u8_body);\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nconst version = '0.4.1';\n\nconst mqtt_decode_v5 = [\n mqtt_decode_connack,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_xxsuback,\n mqtt_decode_pingxxx,\n mqtt_decode_disconnect,\n mqtt_decode_auth,\n];\n\n\nconst mqtt_encode_v5 = [\n mqtt_encode_connect,\n mqtt_encode_puback,\n mqtt_encode_publish,\n mqtt_encode_subscribe,\n mqtt_encode_unsubscribe,\n mqtt_encode_pingxxx,\n mqtt_encode_disconnect,\n mqtt_encode_auth,\n];\n\nconst mqtt_opts_v5 = \n { decode_fns: mqtt_decode_v5,\n mqtt_reader: mqtt_reader_v5,\n encode_fns: mqtt_encode_v5,\n mqtt_writer: mqtt_writer_v5, };\n\nexport { add_mqtt_props, mqtt_opts_v5 as default, init_mqtt_props, mqtt_decode_v5, mqtt_encode_v5, mqtt_opts_v5, mqtt_props, mqtt_reader_v5, mqtt_writer_v5, version };\n//# sourceMappingURL=codec_v5_client.js.map\n","/**\n * @param {string|RegExp} input The route pattern\n * @param {boolean} [loose] Allow open-ended matching. Ignored with `RegExp` input.\n */\nexport function parse(input, loose) {\n\tif (input instanceof RegExp) return { keys:false, pattern:input };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = input.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(c);\n\t\t\tpattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';\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 = /(\\/|^)([:*][^/]*?)(\\?)?(?=[/.]|$)/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=='*' ? key : key.substring(1)];\n\t\treturn x ? '/'+x : (optional || key=='*') ? '' : '/' + key;\n\t});\n}\n","export const _isfn = v => typeof v === 'function'\nexport const _isstr = v => typeof v === 'string'\n\nexport function _interval(fn_callback) ::\n let tid\n return @\\ td ::\n tid = clearInterval(tid)\n if td ::\n tid = setInterval(fn_callback, 1000 * td)\n #IF PLAT_DENO\n // ensure the interval allows the Deno event loop to exit\n Deno.unrefTimer(tid)\n #ELSE\n // ensure the interval allows the NodeJS event loop to exit\n tid.unref?.()\n return true\n\n","/*\nclass AbstractTopicRouter ::\n async invoke(pkt, ctx) ::\n add(topic_route, ...args) ::\n remove(topic_route, priority) ::\n count(topic_route) ::\n clear(priority) ::\n find(topic) :: // optional\n mqtt_topic(topic_route)\n*/\n\nexport const with_topic_router = mqtt_topic_router =>\n MQTTKlass => class extends MQTTKlass ::\n static _aliases() ::\n return super._aliases() +\n ' sub_topic:subscribe_topic unsub_topic:unsubscribe_topic'\n\n _init_router(opt, self, target) ::\n this._subs = []\n let router = this.router = target.router =\n mqtt_topic_router(opt, this, target)\n return router?.invoke\n\n on_sub(suback, pkt) ::\n suback.pkt = pkt\n this._subs.push(suback)\n return suback\n subs_settled() ::\n return Promise.allSettled @\n this._subs.splice(0,Infinity)\n\n // alias: sub_topic\n subscribe_topic(topic_route, ...args) ::\n let router = this.router\n router.add @ topic_route, true, args.pop() // handler\n let topic = router.mqtt_topic(topic_route)\n this.subscribe @ topic, ...args // ex, topic_prefix\n return this // fluent api -- return this and track side effects\n\n // alias: unsub_topic\n unsubscribe_topic(topic_route, ...args) ::\n let router = this.router\n\n let fn = args.at(-1)?.call ? args.pop() : null\n router.remove @ topic_route, true, fn\n if 0 !== router.count @ topic_route ::\n return null\n\n let topic = router.mqtt_topic(topic_route)\n return this.unsubscribe @ topic, ...args // topic_prefix\n\n // add topic handlers without corresponding subscribe packet\n on_topic(...args) ::\n this.router.add(...args)\n return this\n\n","// Use [regexparam][] for url-like topic parsing\n// [regexparam]: https://github.com/lukeed/regexparam\n\nimport {parse as _rxp_parse} from 'regexparam'\nimport {_isfn} from './_utils.jsy'\nimport {with_topic_router} from './with_topic_router.jsy'\n\nexport const with_topic_path_router = /* #__PURE__ */\n with_topic_router(mqtt_topic_path_router)\n\n\nconst mqtt_topic = topic_route =>\n topic_route\n .replace @ /[*].*$/, '#'\n .replace @ /:\\w[^\\/]*/g, '+'\n\n/* From the [MQTT v5 Spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Topic_Names_and)\n4.7.1.2 Multi-level wildcard -- (‘#’ U+0023)\n... MUST be specified either on its own or following a topic level separator.\nIn either case it MUST be the last character specified in the Topic Filter\n\n4.7.1.3 Single-level wildcard -- (‘+’ U+002B)\n...it MUST occupy an entire level of the filter.\n*/\n\nexport const as_topic_path = (topic_route, id) => @\n id=1,\n topic_route\n .replace @ /#$/, '*' // replace MQTT '#' multi-level wildcard at end\n .replace @ /\\+/g, () => `:$${id++}` // replace MQTT '+' single-level wildcards\n\nfunction _ignore(pkt, params, ctx) :: ctx.done = true\n\nfunction mqtt_topic_path_router() ::\n let pri_lsts = [[],[]], rm = Symbol()\n let find = topic => _routes_iter(pri_lsts, topic)\n\n // return duck-type compatible with AbstractTopicRouter in ./with_topic_router\n return @{} find, mqtt_topic,\n add(topic_route, ...args) ::\n let fn = args.pop()\n let priority = args.pop()\n\n if ! _isfn(fn) ::\n if fn :: throw new TypeError()\n fn = _ignore\n\n let route = _rxp_parse @ as_topic_path(topic_route)\n route.topic = topic_route\n route.tgt = fn\n pri_lsts[priority ? 0 : 1].push(route)\n return this\n\n remove(query, ...args) ::\n let lst = pri_lsts\n if ('boolean' === typeof args[0]) ::\n lst = [pri_lsts[args.shift() ? 0 : 1]]\n\n if ('string' === typeof query) ::\n query = @{} topic: query, tgt: args.pop()\n return _route_remove(lst, query)\n\n count(topic_route) ::\n if ! topic_route ::\n return pri_lsts.reduce((r,l) => r+l.length, 0)\n\n let count = 0\n for let lst of pri_lsts ::\n for let route of lst ::\n if topic_route === route.topic ::\n count++\n return count\n\n clear(priority) ::\n if null == priority ::\n pri_lsts = [[],[]] // null clears both lists\n else ::\n pri_lsts[priority ? 0 : 1] = []\n\n async invoke(pkt, ctx) ::\n ctx.idx = 0\n ctx.rm = rm\n\n for let [fn, params, route] of find(pkt.topic) ::\n let res = await fn(pkt, params, ctx)\n\n if rm === res ::\n _route_remove(pri_lsts, route)\n\n if ctx.done :: break\n else ctx.idx++\n\n if 1 === pkt.qos ::\n await ctx.mqtt.puback(pkt)\n\n\nconst _regexparam = @{}\n get wild() :: return this['*']\n set wild(v) :: return this['*']=wild\n\nfunction * _routes_iter(all_route_lists, topic) ::\n topic = topic.replace(/^[\\/]*/, '/') // ensure '/' prefix for regexparam library\n for let route of all_route_lists.flat() ::\n let match = route?.pattern.exec(topic)\n if match ::\n let keys = route.keys\n if (keys) ::\n let k, i=0, params={__proto__:_regexparam}\n for (k of keys) ::\n params[k] = match[++i]\n yield [route.tgt, params, route]\n else ::\n yield [route.tgt, match.groups ?? match, route]\n\n\nfunction _route_remove(all_route_lists, query) ::\n let n_removed = 0\n for let lst of all_route_lists ::\n let idx_tip = 0\n for let route of lst ::\n if route.topic === query.topic ::\n if null == query.tgt || route.tgt === query.tgt ::\n // skip matching routes to remove from compacted list\n n_removed++\n continue\n\n lst[idx_tip++] = route\n\n // truncate remaining list\n lst.length = idx_tip\n return n_removed\n","function decode_varint(u8, i0=0, invalid) {\n let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);\n for(; b & 0x80;)\n n |= ((b=u8[i++]) & 0x7f) << (shift += 7);\n\n return (u8.length < i)\n ? [invalid, i0, i0] // fail: insuffecient u8 bytes to decode\n : [n, i, i0] // successful value\n}\n\nfunction mqtt_raw_dispatch(opt) {\n let u8 = new Uint8Array(0), len_tip=0;\n return u8_buf => {\n u8 = 0 === u8.byteLength\n ? u8_buf : _u8_join(u8, u8_buf);\n\n let res = [];\n\n // wait for at least len_tip bytes for next (tip) message\n while ( u8.byteLength >= len_tip ) {\n\n // if varint is incomplete, return len_body=NaN\n let [len_body, len_vh] = decode_varint(u8, 1, NaN);\n let len_pkt = len_body + len_vh; // may be NaN\n\n if (!( len_pkt <= u8.byteLength )) {\n // incomplete packet cases:\n // - len_pkt is less than available bytes\n // - len_pkt is NaN from decode_varint() due to lack of data\n len_tip = len_pkt || 0; // 0 when NaN\n break\n }\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 let pkt = opt.decode_pkt(b0, u8_body, opt);\n if (null != pkt)\n res.push( pkt );\n }\n\n return res\n }\n}\n\nfunction _u8_join(a, b) {\n let alen = a.byteLength, r = new Uint8Array(alen + b.byteLength);\n r.set(a, 0);\n r.set(b, alen);\n return r\n}\n\nconst version = '0.4.1';\n\nconst _pkt_types = ['~', 'connect', 'connack', 'publish', 'puback', 'pubrec', 'pubrel', 'pubcomp', 'subscribe', 'suback', 'unsubscribe', 'unsuback', 'pingreq', 'pingresp', 'disconnect', 'auth'];\n\n\nfunction mqtt_pkt_ctx(mqtt_level, opts, pkt_api=opts.pkt_ctx) {\n let _as_pkt_ctx = pkt_api => ({\n __proto__: pkt_api,\n get hdr() { return this.b0 & 0xf },\n get id() { return this.b0 >>> 4 },\n get type() { return _pkt_types[this.b0 >>> 4] },\n mqtt_level });\n\n\n let op, _decode_by_id=[], _encode_by_type={};\n for (op of opts.encode_fns)\n op(_encode_by_type, opts.mqtt_writer);\n for (op of opts.decode_fns)\n op(_decode_by_id, opts.mqtt_reader);\n\n return {\n pkt_api, pkt_ctx: _as_pkt_ctx(pkt_api),\n\n encode_pkt: (type, pkt) =>\n _encode_by_type[type]( mqtt_level, pkt ),\n\n decode_pkt(b0, u8_body) {\n if (b0.map) // Uint8Array in first arg\n return mqtt_raw_dispatch(this)(b0)[0]\n\n let fn_decode = _decode_by_id[b0>>>4] || _decode_by_id[0];\n return fn_decode?.({__proto__: this.pkt_ctx, b0}, u8_body) },\n\n mqtt_stream(pkt_api=this.pkt_api) {\n let self = { __proto__: this, pkt_ctx: _as_pkt_ctx(pkt_api) };\n self.decode = mqtt_raw_dispatch(self);\n return self },\n }\n}\n\nexport { mqtt_pkt_ctx as default, mqtt_pkt_ctx, version };\n//# sourceMappingURL=codec_bind.js.map\n","\nasync function _mqtt_cmd_evt(target, answer, pkt, ctx) ::\n /* target : on_mqtt_type = {\n mqtt_pkt(pkt, ctx) {}, // generic\n\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 let pkt_fn = target[`mqtt_${pkt.type}`] || target.mqtt_pkt\n await pkt_fn?.call(target, pkt, ctx)\n\nfunction _mqtt_cmd_type(target, answer, pkt, ctx) ::\n answer(pkt.type, pkt)\n _mqtt_cmd_evt(target, answer, pkt, ctx)\n\nfunction _mqtt_cmd_id(target, answer, pkt) ::\n answer(pkt.pkt_id, pkt)\n\n\nexport const _mqtt_cmdids = @[]\n _ => {} // 0x0 reserved\n _mqtt_cmd_evt // 0x1 connect\n _mqtt_cmd_type // 0x2 connack\n _mqtt_cmd_evt // 0x3 publish\n _mqtt_cmd_id // 0x4 puback\n _mqtt_cmd_id // 0x5 pubrec\n _mqtt_cmd_id // 0x6 pubrel\n _mqtt_cmd_id // 0x7 pubcomp\n _mqtt_cmd_evt // 0x8 subscribe\n _mqtt_cmd_id // 0x9 suback\n _mqtt_cmd_evt // 0xa unsubscribe\n _mqtt_cmd_id // 0xb unsuback\n _mqtt_cmd_type // 0xc pingreq\n _mqtt_cmd_type // 0xd pingresp\n _mqtt_cmd_evt // 0xe disconnect\n _mqtt_cmd_type // 0xf auth\n\n","import { _isstr } from './_utils.jsy'\nimport {_mqtt_cmdids} from './_cmdid_dispatch.jsy'\n\nexport function _mqtt_dispatch(opt, target) ::\n let hashbelt=[], rotate_ts=0\n // default rotate at 1s across 5 buckets\n let { td: rotate_td=1000, n: rotate_n=5 } = opt?.rotate || {}\n\n // Promise / future scaffolding\n let _pkt_id=100, _ftr_key // use _ftr_key to reuse _by_key closure\n let _ftr_by_key = fn_answer => hashbelt[0].set(_ftr_key, fn_answer)\n\n on_mqtt([]) // init hashbelt and rotate_ts\n return [on_mqtt, pkt_future]\n\n\n function pkt_future(pkt_or_key) ::\n if ! _isstr(pkt_or_key) ::\n _pkt_id = (_pkt_id + 1) & 0xffff // 16-bit unsigned short\n _ftr_key = pkt_or_key.pkt_id = _pkt_id\n else _ftr_key = pkt_or_key\n\n return new Promise(_ftr_by_key)\n\n function answer(key, pkt) ::\n for let map of hashbelt ::\n let fn_answer = map.get(key)\n if fn_answer ::\n map.delete(key)\n\n fn_answer([pkt, /*err*/]) // option/maybe monad\n return true\n return false\n\n function on_mqtt(pkt_list, ctx) ::\n for let pkt of pkt_list ::\n _mqtt_cmdids[pkt.id](target, answer, pkt, ctx)\n\n // rotate after rotate_ts\n let now = Date.now()\n if now > rotate_ts ::\n rotate_ts = rotate_td + now\n hashbelt.unshift(new Map())\n while hashbelt.length > rotate_n ::\n for let fn_answer of hashbelt.pop().values() ::\n fn_answer([/*pkt*/, 'expired']) // option/maybe monad\n\n","import { _isfn, _isstr } from './_utils.jsy'\nimport { _mqtt_dispatch } from './_dispatch.jsy'\n\nexport class MQTTError extends Error ::\n constructor(mqtt_pkt, reason=mqtt_pkt.reason) ::\n // use hex-encoded reasons to match MQTT spec documentation\n super(`[0x${reason.toString(16)}] ${reason.reason}`)\n this.mqtt_pkt = mqtt_pkt\n this.reason = reason\n\nexport class MQTTBase ::\n // Handshaking Packets\n async connect(pkt={}) ::\n let cid = pkt.client_id\n if ! _isstr(cid) ::\n // see init_client_id implementation in core.jsy\n pkt.client_id = cid = this.client_id || this.init_client_id(cid)\n this.client_id = cid\n\n if null == pkt.keep_alive ::\n pkt.keep_alive = 60\n\n let response = await this._send0('connect', pkt, 'connack')\n if 0 != response[0].reason :: // compare to 0 to coerce to number\n throw new this.MQTTError(response[0])\n return this.conn.on_conn(pkt, response)\n\n async disconnect(pkt={}) ::\n let response = await this._send0('disconnect', pkt)\n return this.conn.on_dis(pkt, response)\n\n async auth(pkt={}) ::\n let response = await this._send0('auth', pkt, 'auth')\n if response[0].reason ::\n throw new this.MQTTError(response[0])\n return this.conn.on_auth(pkt, response)\n\n ping() :: return this._send('pingreq', null, 'pingresp')\n puback({pkt_id}) :: return this._send('puback', {pkt_id})\n\n // alias: sub\n subscribe(pkt, ex, topic_prefix) ::\n pkt = _as_topics(pkt, ex, topic_prefix)\n let suback = this._send('subscribe', pkt, pkt)\n return this.on_sub?.(suback, pkt) ?? suback\n\n // alias: unsub\n unsubscribe(pkt, ex, topic_prefix) ::\n pkt = _as_topics(pkt, ex, topic_prefix)\n return this._send('unsubscribe', pkt, pkt)\n\n\n post(topic, payload, pub_opt) :: // qos:0\n return this.pub({topic, payload, qos:0}, pub_opt)\n send(topic, payload, pub_opt) :: // qos:1\n return this.pub({topic, payload, qos:1}, pub_opt)\n store(topic, payload, pub_opt) :: // qos:1, retain: 1\n return this.pub({topic, payload, qos:1, retain: 1}, pub_opt)\n\n // alias: json_post\n obj_post(topic, msg, pub_opt) :: // qos:0\n return this.pub({topic, msg, arg: 'msg', qos:0}, pub_opt)\n // alias: json_send\n obj_send(topic, msg, pub_opt) :: // qos:1\n return this.pub({topic, msg, arg: 'msg', qos:1}, pub_opt)\n // alias: json_store\n obj_store(topic, msg, pub_opt) :: // qos:1, retain: 1\n return this.pub({topic, msg, arg: 'msg', qos:1, retain: 1}, pub_opt)\n\n // alias: publish -- because 'pub' is shorter for semantic aliases above\n async pub(pkt, pub_opt) ::\n if undefined === pkt.payload ::\n if _isfn(pub_opt) ::\n // pub_opt as a function is fn_encode value\n pub_opt = {fn_encode: pub_opt}\n\n let msg = pkt.msg, fn_encode = pub_opt?.fn_encode\n if null == msg || _isfn(msg) ::\n // when msg is a function, return closure using fn_encode\n if msg :: pub_opt = {...pub_opt, fn_encode: msg}\n // return a single-value closure to publish packets\n return v => this.pub({...pkt, [pkt.arg || 'payload']: v}, pub_opt)\n\n // Encode payload from msg; fn_encode allows alternative to JSON.stringify\n pkt.payload = fn_encode\n ? await fn_encode(msg)\n : JSON.stringify(msg)\n\n if pub_opt ::\n if pub_opt.props ::\n pkt.props = pub_opt.props\n if pub_opt.xform ::\n pkt = pub_opt.xform(pkt) || pkt\n\n return this._send @ 'publish', pkt,\n pkt.qos ? pkt : null // key\n\n\n // Internal API\n\n /* async _send0(type, pkt) -- provided by conn and transport */\n /* async _send(type, pkt) -- provided by conn and transport */\n\n _init_dispatch(opt) ::\n this.constructor?._once_()\n let target = @{} __proto__: opt.on_mqtt_type\n target.mqtt_publish ||=\n this._init_router?.(opt, this, target)\n return _mqtt_dispatch(opt, target)\n\n static _aliases() ::\n return ' publish:pub sub:subscribe unsub:unsubscribe json_post:obj_post json_send:obj_send json_store:obj_store'\n\n static _once_(klass=this) ::\n klass._once_ = _=>0\n var alias, name, p = klass.prototype\n p.MQTTError = MQTTError\n for alias of klass._aliases().split(/\\s+/) ::\n [alias, name] = alias.split(':')\n p[alias] = p[name]\n\n\nfunction _as_topics(pkt, ex, topic_prefix) ::\n if ex?.trim :: // string\n topic_prefix = ex\n ex = null\n\n pkt = @\n pkt.trim // string\n ? {topics:[pkt], ... ex}\n : pkt[Symbol.iterator]\n ? {topics:[... pkt], ... ex}\n : ex ? {...pkt, ...ex}\n : pkt\n\n if topic_prefix ::\n // particularly useful with shared queues, e.g.\n // topic_prefix = '$share/some-queue-name/'\n let _prefix_topics = v =>\n v.trim ? topic_prefix+v : v.map(_prefix_topics)\n\n pkt.topics = pkt.topics.map(_prefix_topics)\n return pkt\n\n","import { _interval } from './_utils.jsy'\n\nconst _defer_obj = o => @\n o.p = new Promise @ (a,e) => { o.a=a; o.e=e }\n , o\n\nfunction _dfn_reset(client, attr, fn_after) ::\n // a resetable deferred for a function\n let self = {set}, afn = async (...args) => (await self.p)(...args)\n return set()\n\n function set() ::\n if afn !== client[attr] ::\n _defer_obj(self).p.then(fn_after, _=>0)\n client[attr] = afn\n return self\n\nexport function _mqtt_conn(opt, client, [on_mqtt, pkt_future]) ::\n let _abort\n let _dfn_send0 = _dfn_reset @ client, '_send0', // client._send0 getter/setter\n _=> client.conn_emit('on_live', conn.has_connected)\n let _dfn_ready = _dfn_reset @ client, '_send', // client._send getter/setter\n _=> client.conn_emit('on_ready')\n let _keep_alive_ival = _interval @=> client._send0('pingreq') // resettable interval for keep_alive ping\n\n let conn = Object.create @:\n ping: (td=conn.keep_alive) => _keep_alive_ival(td)\n\n on_conn(pkt, response) ::\n conn.has_connected = true\n conn.keep_alive = opt.keep_alive || response[0].props?.server_keep_alive || pkt.keep_alive\n client.conn_emit('on_conn')\n return opt.use_auth\n ? response // wait on enhanced authentication step\n : conn.on_auth(null, response) // otherwise, connect is also auth\n\n on_auth(pkt, response) ::\n _dfn_ready.a(_dfn_send0.p)\n if 0 != opt.keep_alive ::\n conn.ping()\n client.conn_emit('on_auth', !pkt)\n return response\n\n on_dis(pkt, response) ::\n conn.reset(false)\n return response\n\n reset(err) ::\n if err ::\n _dfn_send0.e(err) // send error to uses of _send0 (connect, auth)\n _abort.e(err) // abort in-progress connections\n\n delete conn.is_set\n conn.ready = handshake()\n client.conn_emit('on_disconnect', false===err, err)\n\n abort() ::\n _dfn_ready.e(err) // abort all messages awaiting ready state\n return conn.reset(err)\n\n async setup(gate, send_u8_pkt, init_msg_loop) ::\n if conn.is_set ::\n throw new Error() // already in-progress\n\n conn.is_set = true\n await gate\n\n // setup send/recv MQTT parsing context\n let mqtt_ctx = client.mqtt_ctx.mqtt_stream()\n\n :: // setup inbound message loop\n let sess_ctx = {mqtt: client} // mutable session context\n let on_mqtt_chunk = u8 => on_mqtt(mqtt_ctx.decode(u8), sess_ctx)\n init_msg_loop(on_mqtt_chunk, conn)\n\n // setup outbound message path and transport connection\n send_u8_pkt = await send_u8_pkt\n _dfn_send0.a @\n async (type, pkt, key) => ::\n let res = undefined !== key\n ? pkt_future(key) : true\n\n await send_u8_pkt @\n mqtt_ctx.encode_pkt(type, pkt)\n return res\n\n conn.ready = handshake()\n return conn\n\n async function handshake() ::\n _abort = _defer_obj({})\n\n _keep_alive_ival(0) // clearInterval on keep alive ping\n _dfn_send0.set() // reset client._send0 if necessary\n _dfn_ready.set() // reset client._send if necessary\n\n try ::\n // set client._send0 as passtrhough after transport connection\n client._send0 = await Promise.race @# _dfn_send0.p, _abort.p\n\n // set client._send as passtrhough after ready\n client._send = await Promise.race @# _dfn_ready.p, _abort.p\n return true\n catch err ::\n return false\n\n","import mqtt_pkt_ctx from 'u8-mqtt-packet/esm/codec_bind.js'\nimport { _isfn } from './_utils.jsy'\nimport { MQTTBase } from './base.jsy'\nimport { _mqtt_conn } from './_conn.jsy'\n\n#IF PLAT_NODEJS\n import {connect as tcp_connect} from 'node:net'\n import {connect as tls_connect} from 'node:tls'\n\nconst pkt_api = @{}\n utf8(u8) :: return new TextDecoder('utf-8').decode(u8 || this.payload )\n json(u8) :: return JSON.parse( this.utf8(u8) || null )\n text(u8) :: return this.utf8(u8)\n\nconst opt_default = @{}\n sess_stg: globalThis.sessionStorage\n\nexport class MQTTCore extends MQTTBase ::\n constructor(opt) ::\n opt = {...opt_default, ...opt}\n super()\n this.with(opt)\n // settings for MQTTCore\n this.sess_stg = opt.sess_stg\n // setup connection and dispatch\n this.conn = _mqtt_conn @ opt, this,\n this._init_dispatch(opt)\n\n with(fns_ns) ::\n for let [k,v] of Object.entries(fns_ns) ::\n if _isfn(v) :: this[k] = v\n return this\n\n\n static mqtt_ctx(mqtt_level, mqtt_opts, pkt_ctx=pkt_api) ::\n let klass = class extends this {}\n klass.prototype.mqtt_ctx =\n mqtt_pkt_ctx(mqtt_level, mqtt_opts, pkt_ctx)\n return klass\n\n\n async conn_emit(evt, arg, err_arg) ::\n this.log_conn?.(evt, arg, err_arg)\n try ::\n let fn_evt = this[await evt] // microtask break using `await evt`\n if fn_evt ::\n await fn_evt.call(this, this, arg, err_arg)\n else if err_arg :: throw err_arg\n catch err ::\n this.on_error(err, evt)\n\n on_error(err, evt) ::\n console.warn @ '[[u8-mqtt error: %s]]', evt, err\n log_conn(evt, arg, err_arg) ::\n console.info @ '[[u8-mqtt conn: %s]]', evt, arg, err_arg\n\n\n // automatic Client Id for connect()\n init_client_id(parts=['u8-mqtt--','']) ::\n let sess_stg = this.sess_stg\n let key, cid = sess_stg?.getItem(key=parts.join(' '))\n if ! cid ::\n cid = parts.join @ Math.random().toString(36).slice(2)\n sess_stg?.setItem(key, cid)\n return cid\n\n\n on_live(client, is_reconnect) ::\n if is_reconnect ::\n return client.connect()\n\n // on_ready(client) ::\n // on_reconnect(client) ::\n on_disconnect(client, intentional) ::\n if ! intentional ::\n return client.on_reconnect?.()\n\n _use_conn(fn_reconnect) ::\n return (this.reconnect = fn_reconnect)?.()\n with_autoreconnect(opt=2000) ::\n if opt.toFixed :: opt = @{} delay: opt\n return this.with @:\n on_reconnect() ::\n this.delay(opt.delay || 2000)\n .then(this.reconnect)\n .then(opt.reconnect, opt.error)\n\n delay(ms) ::\n return new Promise @ done => setTimeout(done, ms)\n\n with_async_iter(async_iter, write_u8_pkt) ::\n this.conn.setup @ async_iter,\n write_u8_pkt,\n async (on_mqtt_chunk, conn) => ::\n try ::\n async_iter = await async_iter\n for await (let chunk of async_iter)\n on_mqtt_chunk(chunk)\n conn.reset()\n catch err ::\n conn.reset(err)\n return this\n\n\n\n #IF PLAT_DENO\n with_tcp(...opt) ::\n opt = this._conn_opt(opt)\n opt.transport = 'tcp'\n return this._use_conn @=>\n this.with_deno_iter @\n Deno.connect(opt)\n\n with_tls(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_deno_iter @\n Deno.connectTls(opt)\n\n with_deno_iter(transport) ::\n return this.with_async_iter @\n transport.then(Deno.iter),\n transport.then @ write_stream =>\n u8_pkt => write_stream.write(u8_pkt)\n\n _conn_opt([a0, a1, a2]) ::\n // (port, hostname, options) or (url, options)\n if Number.isFinite(a0) ::\n return {...a2, port: a0, hostname: a1}\n\n a0 = new URL(a0)\n return {...a1, port: a0.port, hostname: a0.hostname}\n\n #IF PLAT_NODEJS\n with_tcp(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_stream @\n tcp_connect(opt)\n\n with_tls(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_stream @\n tls_connect(opt)\n\n _conn_opt([a0, a1, a2]) ::\n // (port, hostname, options) or (url, options)\n if Number.isFinite(a0) ::\n return {...a2, port: a0, host: a1}\n a0 = new URL(a0)\n return {...a1, port: a0.port, host: a0.hostname}\n\n\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 with_websock(websock) ::\n if ! websock?.send ::\n websock = new URL(websock || 'ws://127.0.0.1:9001')\n return this._use_conn @=>\n this.with_websock @\n new WebSocket(websock, ['mqtt'])\n\n websock.binaryType = 'arraybuffer'\n\n let ws_ready, readyState = websock.readyState\n if 1 !== readyState ::\n if 0 !== readyState ::\n throw new Error @ 'WS readyState'\n\n ws_ready = new Promise @ ready => websock.onopen = ready\n\n this.conn.setup @ ws_ready,\n u8_pkt => websock.send(u8_pkt),\n (on_mqtt_chunk, conn) => ::\n websock.onmessage = evt => @\n on_mqtt_chunk @ new Uint8Array(evt.data)\n\n websock.onclose = evt => ::\n if ! evt.wasClean ::\n var err = new Error('websocket close')\n err.code = evt.code\n err.reason = evt.reason\n\n conn.reset(err)\n\n return this\n\nexport { MQTTCore as default }\n","import mqtt_opts_v5 from 'u8-mqtt-packet/esm/codec_v5_client.js'\nimport {with_topic_path_router} from './router_path.jsy'\nimport MQTTCore from './core.jsy'\nexport * from './version.js'\n\nconst MQTTClient_v4 = /* #__PURE__ */\n with_topic_path_router(\n MQTTCore.mqtt_ctx(4, mqtt_opts_v5) )\n\nconst MQTTClient_v5 = /* #__PURE__ */\n with_topic_path_router(\n MQTTCore.mqtt_ctx(5, mqtt_opts_v5) )\n\nconst mqtt_v4 = opt =>\n new MQTTClient_v4(opt)\n\nconst mqtt_v5 = opt =>\n new MQTTClient_v5(opt)\n\nexport {\n MQTTClient_v4,\n MQTTClient_v5,\n MQTTClient_v5 as MQTTClient,\n\n mqtt_v4,\n mqtt_v5,\n mqtt_v5 as mqtt,\n mqtt_v5 as default,\n}\n"],"names":["decode_varint","_rxp_parse","tcp_connect","tls_connect"],"mappings":"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","x_google_ignoreList":[0,1,5]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../node_modules/u8-mqtt-packet/esm/codec_v5_client.js","../node_modules/regexparam/dist/index.mjs","../code/_utils.jsy","../code/with_topic_router.jsy","../code/router_path.jsy","../node_modules/u8-mqtt-packet/esm/codec_bind.js","../code/_cmdid_dispatch.jsy","../code/_dispatch.jsy","../code/base.jsy","../code/_conn.jsy","../code/core.jsy","../code/v5.js"],"sourcesContent":["function encode_varint(n, a=[]) {\n a.push((n<0x80 ? 0 : 0x80) | (n & 0x7f));\n for(; ( n>>>=7 ) > 0 ;)\n a.push((n<0x80 ? 0 : 0x80) | (n & 0x7f));\n return a\n}\n\nfunction decode_varint(u8, i0=0, invalid) {\n let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);\n for(; b & 0x80;)\n n |= ((b=u8[i++]) & 0x7f) << (shift += 7);\n\n return (u8.length < i)\n ? [invalid, i0, i0] // fail: insuffecient u8 bytes to decode\n : [n, i, i0] // successful value\n}\n\nfunction add_mqtt_props(mqtt_props, entries) {\n for (let [id, type, name, obj] of entries) {\n obj = {id, type, name, ...obj};\n mqtt_props.set(id, obj).set(name, obj);\n }\n return mqtt_props\n}\n\n\nconst init_mqtt_props = () =>\n add_mqtt_props(new Map(), [\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_qos'],\n [ 0x25, 'u8', 'retain_available'],\n [ 0x26, 'pair', 'user_properties', {op: 'kv_obj'}],\n [ 0x27, 'u32', 'maximum_packet_size'],\n [ 0x28, 'u8', 'wildcard_subscription_available'],\n [ 0x29, 'u8', 'subscription_identifiers_available', {op: 'u8_vec'}],\n [ 0x2A, 'u8', 'shared_subscription_available'],\n ]);\n\n\nconst mqtt_props = /* #__PURE__ */\n init_mqtt_props();\n\nclass mqtt_reason extends Number {\n constructor(v, reason) {\n super(v);\n this.reason = `:${(this.ok = v<0x80) ? 'ok' : 'fail'}:${reason}`;\n }\n}\n\nclass mqtt_reader_v4 {\n static for(pkt, u8_body) { return new this().of(u8_body, {pkt}) }\n of(buf, opt) {\n let step = (width, k) => (k=0|step.k, step.k=k+width, k);\n return {__proto__: this, buf, step, ...opt}\n }\n\n has_more() {\n return this.buf.byteLength > (this.step.k|0)\n }\n\n u8() {\n return this.buf[this.step(1)]\n }\n\n u16() {\n let {buf, step} = this, i = step(2);\n return (buf[i]<<8) | buf[i+1]\n }\n\n u32() {\n let {buf, step} = this, i = step(4);\n return (buf[i]<<24) | (buf[i+1]<<16) | (buf[i+2]<<8) | buf[i+3]\n }\n\n vint() {\n let {buf, step} = this;\n let [n, vi, vi0] = decode_varint(buf, step.k|0);\n step(vi - vi0);\n return n\n }\n\n bin() {\n let {buf, step} = this, i = step(2);\n let len = (buf[i]<<8) | buf[i+1];\n i = step(len);\n return buf.subarray(i, i+len)\n }\n\n utf8() { return new TextDecoder('utf-8').decode(this.bin()) }\n pair() { return [ this.utf8(), this.utf8() ] }\n\n flags(FlagsType) { return new FlagsType(this.buf[this.step(1)]) }\n\n reason(pkt_kind) {\n let v = this.buf[this.step(1)];\n if (null != v)\n return new mqtt_reason(v, this._reason_for?.(v, pkt_kind))\n }\n\n flush() {\n let {buf, step} = this;\n this.step = this.buf = null;\n return buf.subarray(step.k|0)\n }\n\n}\n\nlet mqtt_reader_v5$1 = class mqtt_reader_v5 extends mqtt_reader_v4 {\n props() {\n let {buf, step} = this;\n let [n, vi, vi0] = decode_varint(buf, step.k|0, 0);\n step(n + vi - vi0);\n if (0 === n) return null\n\n let res={}, fork = this.of(buf.subarray(vi, step.k|0));\n while (fork.has_more()) {\n let v, pk = fork.u8(), pt = mqtt_props.get( pk );\n if (!pt) {\n res._unknown_ = pk;\n this.warn?.(`unknown property: ${pk}`);\n break\n }\n\n v = fork[pt.type]();\n res[pt.name] = !pt.op ? v\n : fork[pt.op](res[pt.name], v); // accumulate operation\n }\n return res\n }\n\n kv_obj(obj=Object.create(null), [k,v]) {\n obj[k] = v;\n return obj\n }\n u8_vec(vec=[], u8) {\n vec.push(u8);\n return vec\n }\n\n /*\n vbuf() {\n let {buf, step} = this\n let [n, vi, vi0] = decode_varint(buf, step.k|0)\n step(n + vi - vi0)\n return 0 === n ? null\n : buf.subarray(vi, step.k|0)\n }\n */\n};\n\nfunction with_reasons(mqtt_reader, by_kind) {\n for (let [k,lut] of Object.entries(by_kind))\n by_kind[k] = new Map(lut);\n\n return class extends mqtt_reader {\n _reason_for(v, pkt_kind) {\n return by_kind[pkt_kind]?.get(v) || by_kind.all.get(v)\n }\n warn(msg) {\n let pkt = this.pkt;\n pkt.warn ? pkt.warn(msg, pkt)\n : console.warn('[u8-mqtt-packet] '+msg);\n }\n }\n}\n\n\nconst reasons_v4 = {\n connack: [\n [ 0x01, 'conn refused: unacceptable protocol version'],\n [ 0x02, 'conn refused: identifier rejected'],\n [ 0x03, 'conn refused: server unavailable'],\n [ 0x04, 'conn refused: bad user name or password'],\n [ 0x05, 'conn refused: not authorized'],\n ],\n suback: [\n [ 0x00, 'qos=0'],\n [ 0x01, 'qos=1'],\n [ 0x02, 'qos=2'],\n ],\n unsuback: [\n [ 0x11, 'no subscription existed'],\n ],\n puback: [\n [ 0x10, 'no matching subscribers'],\n ],\n all: [\n [ 0, ''], // Success\n [ 0x80, 'unspecified error'], // disconnect puback suback unsuback\n [ 0x83, 'implementation specific error'], // connack disconnect puback suback unsuback\n [ 0x87, 'not authorized'], // connack disconnect puback suback unsuback\n [ 0x8F, 'topic filter invalid'], // disconnect suback unsuback\n [ 0x91, 'packet identifier in use'], // puback suback unsuback\n [ 0x92, 'packet identifier not found' ], // pubxxx\n ]};\n\nconst reasons_v5 = {\n ... reasons_v4,\n auth: [\n [ 0x18, 'continue authentication' ],\n [ 0x19, 're-authenticate' ],\n ],\n disconnect: [\n [ 0x04, 'disconnect with will message'],\n ],\n all: [\n ... reasons_v4.all,\n [ 0x81, 'malformed packet'], // connack disconnect\n [ 0x82, 'protocol error'], // connack disconnect\n [ 0x84, 'unsupported protocol version'], // connack\n [ 0x85, 'client identifier not valid'], // connack\n [ 0x86, 'bad user name or password'], // connack\n [ 0x88, 'server unavailable'], // connack\n [ 0x89, 'server busy'], // connack disconnect\n [ 0x8A, 'banned'], // connack\n [ 0x8B, 'server shutting down'], // disconnect\n [ 0x8C, 'bad authentication method'], // connack\n [ 0x8D, 'keep alive timeout'], // disconnect\n [ 0x8E, 'session taken over'], // disconnect\n [ 0x90, 'topic name invalid'], // connack disconnect puback\n [ 0x93, 'receive maximum exceeded'], // disconnect\n [ 0x94, 'topic alias invalid'], // disconnect\n [ 0x95, 'packet too large'], // connack disconnect\n [ 0x96, 'message rate too high'], // disconnect\n [ 0x97, 'quota exceeded'], // connack disconnect puback suback\n [ 0x98, 'administrative action'], // disconnect\n [ 0x99, 'payload format invalid'], // connack disconnect puback\n [ 0x9A, 'retain not supported'], // connack disconnect\n [ 0x9B, 'qoS not supported'], // connack disconnect\n [ 0x9C, 'use another server'], // connack disconnect\n [ 0x9D, 'server moved'], // connack disconnect\n [ 0x9E, 'shared subscriptions not supported'], // disconnect suback\n [ 0x9F, 'connection rate exceeded'], // connack disconnect\n [ 0xA0, 'maximum connect time'], // disconnect\n [ 0xA1, 'subscription identifiers not supported'], // disconnect suback\n [ 0xA2, 'wildcard subscriptions not supported'], // disconnect suback\n ]};\n\nconst mqtt_reader_v5 = /* #__PURE__ */\n with_reasons(mqtt_reader_v5$1, reasons_v5);\n\nclass mqtt_writer_v4 {\n static for(pkt) { return new this().of() }\n of() { return {__proto__: this, $:[]} }\n\n static init() { return this }\n\n as_pkt(pkt_id) { return this.pack([pkt_id]) }\n\n push(...z) { this.$.push(...z); }\n pack(hdr) {\n let z, i, n=0, parts = this.$;\n this.$ = false;\n for (z of parts) n += z.length;\n\n hdr = encode_varint(n, hdr);\n i = hdr.length;\n\n let pkt = new Uint8Array(i + n);\n pkt.set(hdr, 0);\n for (z of parts) {\n pkt.set(z, i);\n i += z.length;\n }\n return pkt\n }\n\n u8(v) { this.push([ v & 0xff ]); }\n u16(v) { this.push([ (v>>>8) & 0xff, v & 0xff ]); }\n u32(v) { this.push([ (v>>>24) & 0xff, (v>>>16) & 0xff, (v>>>8) & 0xff, v & 0xff ]); }\n vint(v) { this.push( encode_varint(v) );}\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\n this.u16(u8_buf.byteLength);\n this.push(u8_buf);\n }\n\n utf8(v) {\n let u8_buf = new TextEncoder('utf-8').encode(v);\n this.u16(u8_buf.byteLength);\n this.push(u8_buf);\n }\n pair(k,v) { this.utf8(k); this.utf8(v); }\n\n 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 reason(v) { this.push([v | 0]); }\n\n flush(buf) {\n if (null != buf)\n this.push(\n 'string' === typeof buf\n ? new TextEncoder('utf-8').encode(buf)\n : buf );\n\n this.push = false;\n }\n}\n\n\nclass mqtt_writer_v5 extends mqtt_writer_v4 {\n props(props) {\n if (! props)\n return this.u8(0)\n\n if (! Array.isArray(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 let fork = this.of();\n for (let [name, value] of props) {\n let pt = mqtt_props.get(name);\n if (!pt)\n throw new Error(`MQTT unknown property \"${name}\"`)\n\n fork[pt.op || 'one'](value, pt);\n }\n this.push(fork.pack());\n }\n\n one(value, pt) {\n this.u8(pt.id);\n this[pt.type](value);\n }\n kv_obj(obj, pt) {\n for (let kv of Object.entries(obj)) {\n this.u8(pt.id);\n this.pair(kv);\n }\n }\n u8_vec(vec, pt) {\n for (let v of vec) {\n this.u8(pt.id);\n this.u8(v);\n }\n }\n}\n\nfunction mqtt_encode_connect(ns, mqtt_writer) {\n const _c_mqtt_proto = new Uint8Array([\n 0, 4, 0x4d, 0x51, 0x54, 0x54 ]);\n\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 let wrt = mqtt_writer.for(pkt);\n\n wrt.push(_c_mqtt_proto);\n wrt.u8( mqtt_level );\n\n let {will, username, password} = pkt;\n let flags = wrt.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_decode_connack(ns, mqtt_reader) {\n class _connack_flags_ extends Number {\n get session_present() { return this & 0x01 !== 0 }\n }\n\n return ns[0x2] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.flags =\n rdr.flags(_connack_flags_);\n\n pkt.reason = rdr.reason(pkt.type);\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n return pkt }\n}\n\nfunction mqtt_encode_publish(ns, mqtt_writer) {\n return ns.publish = ( mqtt_level, pkt ) => {\n let qos = (pkt.qos & 0x3) << 1;\n let wrt = mqtt_writer.for(pkt);\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_decode_publish(ns, mqtt_reader) {\n return ns[0x3] = (pkt, u8_body) => {\n let {hdr} = pkt;\n pkt.dup = Boolean(hdr & 0x8);\n pkt.retain = Boolean(hdr & 0x1);\n let qos = pkt.qos = (hdr>>1) & 0x3;\n\n let rdr = mqtt_reader.for(pkt, u8_body);\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_encode_puback(ns, mqtt_writer) {\n return ns.puback = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level) {\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n }\n\n return wrt.as_pkt(0x40)\n }\n}\n\n\nfunction mqtt_decode_puback(ns, mqtt_reader) {\n return ns[0x4] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level) {\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n\n return pkt }\n}\n\nfunction mqtt_encode_subscribe(ns, mqtt_writer) {\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 let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n let f0 = _enc_subscribe_flags(pkt);\n for (let each of pkt.topics) {\n if ('string' === typeof each) {\n wrt.utf8(each);\n wrt.u8(f0);\n } else {\n let [topic, opts] =\n Array.isArray(each) ? each\n : [each.topic, each.opts];\n\n wrt.utf8(topic);\n if (undefined === opts) wrt.u8(f0);\n else wrt.flags(opts, _enc_subscribe_flags);\n }\n }\n\n return wrt.as_pkt(0x82)\n }\n}\n\nfunction mqtt_decode_xxsuback(ns, mqtt_reader) {\n return ns[0x9] = ns[0xb] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n let answers = pkt.answers = [];\n while (rdr.has_more())\n answers.push(\n rdr.reason(pkt.type) );\n\n return pkt }\n}\n\nfunction mqtt_encode_unsubscribe(ns, mqtt_writer) {\n return ns.unsubscribe = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n for (let 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\n\nfunction mqtt_decode_pingxxx(ns) {\n return ns[0xc] = ns[0xd] = pkt => pkt\n}\n\nfunction mqtt_encode_disconnect(ns, mqtt_writer) {\n return ns.disconnect = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n if (pkt && 5 <= mqtt_level) {\n if (pkt.reason || pkt.props) {\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n }\n }\n\n return wrt.as_pkt(0xe0)\n }\n}\n\n\nfunction mqtt_decode_disconnect(ns, mqtt_reader) {\n return ns[0xe] = (pkt, u8_body) => {\n if (u8_body && 5 <= pkt.mqtt_level) {\n let rdr = mqtt_reader.for(pkt, u8_body);\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nfunction mqtt_encode_auth(ns, mqtt_writer) {\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 let wrt = mqtt_writer.of(pkt);\n\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n\n return wrt.as_pkt(0xf0)\n }\n}\n\nfunction mqtt_decode_auth(ns, mqtt_reader) {\n return ns[0xf] = (pkt, u8_body) => {\n if ( 5 <= pkt.mqtt_level ) {\n let rdr = mqtt_reader.of(u8_body);\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nconst version = '0.4.1';\n\nconst mqtt_decode_v5 = [\n mqtt_decode_connack,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_xxsuback,\n mqtt_decode_pingxxx,\n mqtt_decode_disconnect,\n mqtt_decode_auth,\n];\n\n\nconst mqtt_encode_v5 = [\n mqtt_encode_connect,\n mqtt_encode_puback,\n mqtt_encode_publish,\n mqtt_encode_subscribe,\n mqtt_encode_unsubscribe,\n mqtt_encode_pingxxx,\n mqtt_encode_disconnect,\n mqtt_encode_auth,\n];\n\nconst mqtt_opts_v5 = \n { decode_fns: mqtt_decode_v5,\n mqtt_reader: mqtt_reader_v5,\n encode_fns: mqtt_encode_v5,\n mqtt_writer: mqtt_writer_v5, };\n\nexport { add_mqtt_props, mqtt_opts_v5 as default, init_mqtt_props, mqtt_decode_v5, mqtt_encode_v5, mqtt_opts_v5, mqtt_props, mqtt_reader_v5, mqtt_writer_v5, version };\n//# sourceMappingURL=codec_v5_client.js.map\n","/**\n * @param {string|RegExp} input The route pattern\n * @param {boolean} [loose] Allow open-ended matching. Ignored with `RegExp` input.\n */\nexport function parse(input, loose) {\n\tif (input instanceof RegExp) return { keys:false, pattern:input };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = input.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(c);\n\t\t\tpattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';\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 = /(\\/|^)([:*][^/]*?)(\\?)?(?=[/.]|$)/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=='*' ? key : key.substring(1)];\n\t\treturn x ? '/'+x : (optional || key=='*') ? '' : '/' + key;\n\t});\n}\n","export const _isfn = v => typeof v === 'function'\nexport const _isstr = v => typeof v === 'string'\n\nexport function _interval(fn_callback) ::\n let tid\n return @\\ td ::\n tid = clearInterval(tid)\n if td ::\n tid = setInterval(fn_callback, 1000 * td)\n #IF PLAT_DENO\n // ensure the interval allows the Deno event loop to exit\n Deno.unrefTimer(tid)\n #ELSE\n // ensure the interval allows the NodeJS event loop to exit\n tid.unref?.()\n return true\n\n","/*\nclass AbstractTopicRouter ::\n async invoke(pkt, ctx) ::\n add(topic_route, ...args) ::\n remove(topic_route, priority) ::\n count(topic_route) ::\n clear(priority) ::\n find(topic) :: // optional\n mqtt_topic(topic_route)\n*/\n\nexport const with_topic_router = mqtt_topic_router =>\n MQTTKlass => class extends MQTTKlass ::\n static _aliases() ::\n return super._aliases() +\n ' sub_topic:subscribe_topic unsub_topic:unsubscribe_topic'\n\n _init_router(opt, self, target) ::\n this._subs = []\n let router = this.router = target.router =\n mqtt_topic_router(opt, this, target)\n return router?.invoke\n\n on_sub(suback, pkt) ::\n suback.pkt = pkt\n this._subs.push(suback)\n return suback\n subs_settled() ::\n return Promise.allSettled @\n this._subs.splice(0,Infinity)\n\n // alias: sub_topic\n subscribe_topic(topic_route, ...args) ::\n let router = this.router\n router.add @ topic_route, true, args.pop() // handler\n let topic = router.mqtt_topic(topic_route)\n this.subscribe @ topic, ...args // ex, topic_prefix\n return this // fluent api -- return this and track side effects\n\n // alias: unsub_topic\n unsubscribe_topic(topic_route, ...args) ::\n let router = this.router\n\n let fn = args.at(-1)?.call ? args.pop() : null\n router.remove @ topic_route, true, fn\n if 0 !== router.count @ topic_route ::\n return null\n\n let topic = router.mqtt_topic(topic_route)\n return this.unsubscribe @ topic, ...args // topic_prefix\n\n // add topic handlers without corresponding subscribe packet\n on_topic(...args) ::\n this.router.add(...args)\n return this\n\n","// Use [regexparam][] for url-like topic parsing\n// [regexparam]: https://github.com/lukeed/regexparam\n\nimport {parse as _rxp_parse} from 'regexparam'\nimport {_isfn} from './_utils.jsy'\nimport {with_topic_router} from './with_topic_router.jsy'\n\nexport const with_topic_path_router = /* #__PURE__ */\n with_topic_router(mqtt_topic_path_router)\n\n\nconst mqtt_topic = topic_route =>\n topic_route\n .replace @ /[*].*$/, '#'\n .replace @ /:\\w[^\\/]*/g, '+'\n\n/* From the [MQTT v5 Spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Topic_Names_and)\n4.7.1.2 Multi-level wildcard -- (‘#’ U+0023)\n... MUST be specified either on its own or following a topic level separator.\nIn either case it MUST be the last character specified in the Topic Filter\n\n4.7.1.3 Single-level wildcard -- (‘+’ U+002B)\n...it MUST occupy an entire level of the filter.\n*/\n\nexport const as_topic_path = (topic_route, id) => @\n id=1,\n topic_route\n .replace @ /#$/, '*' // replace MQTT '#' multi-level wildcard at end\n .replace @ /\\+/g, () => `:$${id++}` // replace MQTT '+' single-level wildcards\n\nfunction _ignore(pkt, params, ctx) :: ctx.done = true\n\nfunction mqtt_topic_path_router() ::\n let pri_lsts = [[],[]], rm = Symbol()\n let find = topic => _routes_iter(pri_lsts, topic)\n\n // return duck-type compatible with AbstractTopicRouter in ./with_topic_router\n return @{} find, mqtt_topic,\n add(topic_route, ...args) ::\n let fn = args.pop()\n let priority = args.pop()\n\n if ! _isfn(fn) ::\n if fn :: throw new TypeError()\n fn = _ignore\n\n let route = _rxp_parse @ as_topic_path(topic_route)\n route.topic = topic_route\n route.tgt = fn\n pri_lsts[priority ? 0 : 1].push(route)\n return this\n\n remove(query, ...args) ::\n let lst = pri_lsts\n if ('boolean' === typeof args[0]) ::\n lst = [pri_lsts[args.shift() ? 0 : 1]]\n\n if ('string' === typeof query) ::\n query = @{} topic: query, tgt: args.pop()\n return _route_remove(lst, query)\n\n count(topic_route) ::\n if ! topic_route ::\n return pri_lsts.reduce((r,l) => r+l.length, 0)\n\n let count = 0\n for let lst of pri_lsts ::\n for let route of lst ::\n if topic_route === route.topic ::\n count++\n return count\n\n clear(priority) ::\n if null == priority ::\n pri_lsts = [[],[]] // null clears both lists\n else ::\n pri_lsts[priority ? 0 : 1] = []\n\n async invoke(pkt, ctx) ::\n ctx.idx = 0\n ctx.rm = rm\n\n for let [fn, params, route] of find(pkt.topic) ::\n let res = await fn(pkt, params, ctx)\n\n if rm === res ::\n _route_remove(pri_lsts, route)\n\n if ctx.done :: break\n else ctx.idx++\n\n if 1 === pkt.qos ::\n await ctx.mqtt.puback(pkt)\n\n\nconst _regexparam = @{}\n get wild() :: return this['*']\n set wild(v) :: return this['*']=wild\n\nfunction * _routes_iter(all_route_lists, topic) ::\n topic = topic.replace(/^[\\/]*/, '/') // ensure '/' prefix for regexparam library\n for let route of all_route_lists.flat() ::\n let match = route?.pattern.exec(topic)\n if match ::\n let keys = route.keys\n if (keys) ::\n let k, i=0, params={__proto__:_regexparam}\n for (k of keys) ::\n params[k] = match[++i]\n yield [route.tgt, params, route]\n else ::\n yield [route.tgt, match.groups ?? match, route]\n\n\nfunction _route_remove(all_route_lists, query) ::\n let n_removed = 0\n for let lst of all_route_lists ::\n let idx_tip = 0\n for let route of lst ::\n if route.topic === query.topic ::\n if null == query.tgt || route.tgt === query.tgt ::\n // skip matching routes to remove from compacted list\n n_removed++\n continue\n\n lst[idx_tip++] = route\n\n // truncate remaining list\n lst.length = idx_tip\n return n_removed\n","function decode_varint(u8, i0=0, invalid) {\n let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);\n for(; b & 0x80;)\n n |= ((b=u8[i++]) & 0x7f) << (shift += 7);\n\n return (u8.length < i)\n ? [invalid, i0, i0] // fail: insuffecient u8 bytes to decode\n : [n, i, i0] // successful value\n}\n\nfunction mqtt_raw_dispatch(opt) {\n let u8 = new Uint8Array(0), len_tip=0;\n return u8_buf => {\n u8 = 0 === u8.byteLength\n ? u8_buf : _u8_join(u8, u8_buf);\n\n let res = [];\n\n // wait for at least len_tip bytes for next (tip) message\n while ( u8.byteLength >= len_tip ) {\n\n // if varint is incomplete, return len_body=NaN\n let [len_body, len_vh] = decode_varint(u8, 1, NaN);\n let len_pkt = len_body + len_vh; // may be NaN\n\n if (!( len_pkt <= u8.byteLength )) {\n // incomplete packet cases:\n // - len_pkt is less than available bytes\n // - len_pkt is NaN from decode_varint() due to lack of data\n len_tip = len_pkt || 0; // 0 when NaN\n break\n }\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 let pkt = opt.decode_pkt(b0, u8_body, opt);\n if (null != pkt)\n res.push( pkt );\n }\n\n return res\n }\n}\n\nfunction _u8_join(a, b) {\n let alen = a.byteLength, r = new Uint8Array(alen + b.byteLength);\n r.set(a, 0);\n r.set(b, alen);\n return r\n}\n\nconst version = '0.4.1';\n\nconst _pkt_types = ['~', 'connect', 'connack', 'publish', 'puback', 'pubrec', 'pubrel', 'pubcomp', 'subscribe', 'suback', 'unsubscribe', 'unsuback', 'pingreq', 'pingresp', 'disconnect', 'auth'];\n\n\nfunction mqtt_pkt_ctx(mqtt_level, opts, pkt_api=opts.pkt_ctx) {\n let _as_pkt_ctx = pkt_api => ({\n __proto__: pkt_api,\n get hdr() { return this.b0 & 0xf },\n get id() { return this.b0 >>> 4 },\n get type() { return _pkt_types[this.b0 >>> 4] },\n mqtt_level });\n\n\n let op, _decode_by_id=[], _encode_by_type={};\n for (op of opts.encode_fns)\n op(_encode_by_type, opts.mqtt_writer);\n for (op of opts.decode_fns)\n op(_decode_by_id, opts.mqtt_reader);\n\n return {\n pkt_api, pkt_ctx: _as_pkt_ctx(pkt_api),\n\n encode_pkt: (type, pkt) =>\n _encode_by_type[type]( mqtt_level, pkt ),\n\n decode_pkt(b0, u8_body) {\n if (b0.map) // Uint8Array in first arg\n return mqtt_raw_dispatch(this)(b0)[0]\n\n let fn_decode = _decode_by_id[b0>>>4] || _decode_by_id[0];\n return fn_decode?.({__proto__: this.pkt_ctx, b0}, u8_body) },\n\n mqtt_stream(pkt_api=this.pkt_api) {\n let self = { __proto__: this, pkt_ctx: _as_pkt_ctx(pkt_api) };\n self.decode = mqtt_raw_dispatch(self);\n return self },\n }\n}\n\nexport { mqtt_pkt_ctx as default, mqtt_pkt_ctx, version };\n//# sourceMappingURL=codec_bind.js.map\n","\nasync function _mqtt_cmd_evt(target, answer, pkt, ctx) ::\n /* target : on_mqtt_type = {\n mqtt_pkt(pkt, ctx) {}, // generic\n\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 let pkt_fn = target[`mqtt_${pkt.type}`] || target.mqtt_pkt\n await pkt_fn?.call(target, pkt, ctx)\n\nfunction _mqtt_cmd_type(target, answer, pkt, ctx) ::\n answer(pkt.type, pkt)\n _mqtt_cmd_evt(target, answer, pkt, ctx)\n\nfunction _mqtt_cmd_id(target, answer, pkt) ::\n answer(pkt.pkt_id, pkt)\n\n\nexport const _mqtt_cmdids = @[]\n _ => {} // 0x0 reserved\n _mqtt_cmd_evt // 0x1 connect\n _mqtt_cmd_type // 0x2 connack\n _mqtt_cmd_evt // 0x3 publish\n _mqtt_cmd_id // 0x4 puback\n _mqtt_cmd_id // 0x5 pubrec\n _mqtt_cmd_id // 0x6 pubrel\n _mqtt_cmd_id // 0x7 pubcomp\n _mqtt_cmd_evt // 0x8 subscribe\n _mqtt_cmd_id // 0x9 suback\n _mqtt_cmd_evt // 0xa unsubscribe\n _mqtt_cmd_id // 0xb unsuback\n _mqtt_cmd_type // 0xc pingreq\n _mqtt_cmd_type // 0xd pingresp\n _mqtt_cmd_evt // 0xe disconnect\n _mqtt_cmd_type // 0xf auth\n\n","import { _isstr } from './_utils.jsy'\nimport {_mqtt_cmdids} from './_cmdid_dispatch.jsy'\n\nexport function _mqtt_dispatch(opt, target) ::\n let hashbelt=[], rotate_ts=0\n // default rotate at 1s across 5 buckets\n let { td: rotate_td=1000, n: rotate_n=5 } = opt?.rotate || {}\n\n // Promise / future scaffolding\n let _pkt_id=100, _ftr_key // use _ftr_key to reuse _by_key closure\n let _ftr_by_key = fn_answer => hashbelt[0].set(_ftr_key, fn_answer)\n\n on_mqtt([]) // init hashbelt and rotate_ts\n return [on_mqtt, pkt_future]\n\n\n function pkt_future(pkt_or_key) ::\n if ! _isstr(pkt_or_key) ::\n _pkt_id = (_pkt_id + 1) & 0xffff // 16-bit unsigned short\n _ftr_key = pkt_or_key.pkt_id = _pkt_id\n else _ftr_key = pkt_or_key\n\n return new Promise(_ftr_by_key)\n\n function answer(key, pkt) ::\n for let map of hashbelt ::\n let fn_answer = map.get(key)\n if fn_answer ::\n map.delete(key)\n\n fn_answer([pkt, /*err*/]) // option/maybe monad\n return true\n return false\n\n function on_mqtt(pkt_list, ctx) ::\n for let pkt of pkt_list ::\n _mqtt_cmdids[pkt.id](target, answer, pkt, ctx)\n\n // rotate after rotate_ts\n let now = Date.now()\n if now > rotate_ts ::\n rotate_ts = rotate_td + now\n hashbelt.unshift(new Map())\n while hashbelt.length > rotate_n ::\n for let fn_answer of hashbelt.pop().values() ::\n fn_answer([/*pkt*/, 'expired']) // option/maybe monad\n\n","import { _isfn, _isstr } from './_utils.jsy'\nimport { _mqtt_dispatch } from './_dispatch.jsy'\n\nexport class MQTTError extends Error ::\n constructor(mqtt_pkt, reason=mqtt_pkt.reason) ::\n // use hex-encoded reasons to match MQTT spec documentation\n super(`[0x${reason.toString(16)}] ${reason.reason}`)\n this.mqtt_pkt = mqtt_pkt\n this.reason = reason\n\nexport class MQTTBase ::\n // Handshaking Packets\n async connect(pkt={}) ::\n let cid = pkt.client_id\n if ! _isstr(cid) ::\n // see init_client_id implementation in core.jsy\n pkt.client_id = cid = this.client_id || this.init_client_id(cid)\n this.client_id = cid\n\n if null == pkt.keep_alive ::\n pkt.keep_alive = 60\n\n let response = await this._send0('connect', pkt, 'connack')\n if 0 != response[0].reason :: // compare to 0 to coerce to number\n throw new this.MQTTError(response[0])\n return this.conn.on_conn(pkt, response)\n\n async disconnect(pkt={}) ::\n let response = this._send0('disconnect', pkt)\n await this.conn.on_dis(pkt, response)\n return await response\n\n async auth(pkt={}) ::\n let response = await this._send0('auth', pkt, 'auth')\n if response[0].reason ::\n throw new this.MQTTError(response[0])\n return this.conn.on_auth(pkt, response)\n\n ping() :: return this._send('pingreq', null, 'pingresp')\n puback({pkt_id}) :: return this._send('puback', {pkt_id})\n\n // alias: sub\n subscribe(pkt, ex, topic_prefix) ::\n pkt = _as_topics(pkt, ex, topic_prefix)\n let suback = this._send('subscribe', pkt, pkt)\n return this.on_sub?.(suback, pkt) ?? suback\n\n // alias: unsub\n unsubscribe(pkt, ex, topic_prefix) ::\n pkt = _as_topics(pkt, ex, topic_prefix)\n return this._send('unsubscribe', pkt, pkt)\n\n\n post(topic, payload, pub_opt) :: // qos:0\n return this.pub({topic, payload, qos:0}, pub_opt)\n send(topic, payload, pub_opt) :: // qos:1\n return this.pub({topic, payload, qos:1}, pub_opt)\n store(topic, payload, pub_opt) :: // qos:1, retain: 1\n return this.pub({topic, payload, qos:1, retain: 1}, pub_opt)\n\n // alias: json_post\n obj_post(topic, msg, pub_opt) :: // qos:0\n return this.pub({topic, msg, arg: 'msg', qos:0}, pub_opt)\n // alias: json_send\n obj_send(topic, msg, pub_opt) :: // qos:1\n return this.pub({topic, msg, arg: 'msg', qos:1}, pub_opt)\n // alias: json_store\n obj_store(topic, msg, pub_opt) :: // qos:1, retain: 1\n return this.pub({topic, msg, arg: 'msg', qos:1, retain: 1}, pub_opt)\n\n // alias: publish -- because 'pub' is shorter for semantic aliases above\n async pub(pkt, pub_opt) ::\n if undefined === pkt.payload ::\n if _isfn(pub_opt) ::\n // pub_opt as a function is fn_encode value\n pub_opt = {fn_encode: pub_opt}\n\n let msg = pkt.msg, fn_encode = pub_opt?.fn_encode\n if null == msg || _isfn(msg) ::\n // when msg is a function, return closure using fn_encode\n if msg :: pub_opt = {...pub_opt, fn_encode: msg}\n // return a single-value closure to publish packets\n return v => this.pub({...pkt, [pkt.arg || 'payload']: v}, pub_opt)\n\n // Encode payload from msg; fn_encode allows alternative to JSON.stringify\n pkt.payload = fn_encode\n ? await fn_encode(msg)\n : JSON.stringify(msg)\n\n if pub_opt ::\n if pub_opt.props ::\n pkt.props = pub_opt.props\n if pub_opt.xform ::\n pkt = pub_opt.xform(pkt) || pkt\n\n return this._send @ 'publish', pkt,\n pkt.qos ? pkt : null // key\n\n\n // Internal API\n\n /* async _send0(type, pkt) -- provided by conn and transport */\n /* async _send(type, pkt) -- provided by conn and transport */\n\n _init_dispatch(opt) ::\n this.constructor?._once_()\n let target = @{} __proto__: opt.on_mqtt_type\n target.mqtt_publish ||=\n this._init_router?.(opt, this, target)\n return _mqtt_dispatch(opt, target)\n\n static _aliases() ::\n return ' publish:pub sub:subscribe unsub:unsubscribe json_post:obj_post json_send:obj_send json_store:obj_store'\n\n static _once_(klass=this) ::\n klass._once_ = _=>0\n var alias, name, p = klass.prototype\n p.MQTTError = MQTTError\n for alias of klass._aliases().split(/\\s+/) ::\n [alias, name] = alias.split(':')\n p[alias] = p[name]\n\n\nfunction _as_topics(pkt, ex, topic_prefix) ::\n if ex?.trim :: // string\n topic_prefix = ex\n ex = null\n\n pkt = @\n pkt.trim // string\n ? {topics:[pkt], ... ex}\n : pkt[Symbol.iterator]\n ? {topics:[... pkt], ... ex}\n : ex ? {...pkt, ...ex}\n : pkt\n\n if topic_prefix ::\n // particularly useful with shared queues, e.g.\n // topic_prefix = '$share/some-queue-name/'\n let _prefix_topics = v =>\n v.trim ? topic_prefix+v : v.map(_prefix_topics)\n\n pkt.topics = pkt.topics.map(_prefix_topics)\n return pkt\n\n","import { _interval } from './_utils.jsy'\n\nconst _defer_obj = o => @\n o.p = new Promise @ (a,e) => { o.a=a; o.e=e }\n , o\n\nfunction _dfn_reset(client, attr, fn_after) ::\n // a resetable deferred for a function\n let self = {set}, afn = async (...args) => (await self.p)(...args)\n return set()\n\n function set() ::\n if afn !== client[attr] ::\n _defer_obj(self).p.then(fn_after, _=>0)\n client[attr] = afn\n return self\n\nexport function _mqtt_conn(opt, client, [on_mqtt, pkt_future]) ::\n let _abort\n let _dfn_send0 = _dfn_reset @ client, '_send0', // client._send0 getter/setter\n _=> client.conn_emit('on_live', conn.has_connected)\n let _dfn_ready = _dfn_reset @ client, '_send', // client._send getter/setter\n _=> client.conn_emit('on_ready')\n let _keep_alive_ival = _interval @=> client._send0('pingreq') // resettable interval for keep_alive ping\n\n let conn = Object.create @:\n ping: (td=conn.keep_alive) => _keep_alive_ival(td)\n\n on_conn(pkt, response) ::\n conn.has_connected = true\n conn.keep_alive = opt.keep_alive || response[0].props?.server_keep_alive || pkt.keep_alive\n client.conn_emit('on_conn')\n return opt.use_auth\n ? response // wait on enhanced authentication step\n : conn.on_auth(null, response) // otherwise, connect is also auth\n\n on_auth(pkt, response) ::\n _dfn_ready.a(_dfn_send0.p)\n if 0 != opt.keep_alive ::\n conn.ping()\n client.conn_emit('on_auth', !pkt)\n return response\n\n on_dis(pkt, response) ::\n conn.reset(false)\n return response\n\n reset(err) ::\n if err ::\n _dfn_send0.e(err) // send error to uses of _send0 (connect, auth)\n _abort.e(err) // abort in-progress connections\n\n if conn.is_set ::\n delete conn.is_set\n conn.ready = handshake()\n client.conn_emit('on_disconnect', false===err, err)\n\n abort(err) ::\n _dfn_ready.e(err) // abort all messages awaiting ready state\n return conn.reset(err)\n\n async setup(gate, send_u8_pkt, init_msg_loop) ::\n if conn.is_set ::\n throw new Error() // already in-progress\n\n conn.is_set = true\n await gate\n\n // setup send/recv MQTT parsing context\n let mqtt_ctx = client.mqtt_ctx.mqtt_stream()\n\n :: // setup inbound message loop\n let sess_ctx = {mqtt: client} // mutable session context\n let on_mqtt_chunk = u8 => on_mqtt(mqtt_ctx.decode(u8), sess_ctx)\n init_msg_loop(on_mqtt_chunk, conn)\n\n // setup outbound message path and transport connection\n send_u8_pkt = await send_u8_pkt\n _dfn_send0.a @\n async (type, pkt, key) => ::\n let res = undefined !== key\n ? pkt_future(key) : true\n\n await send_u8_pkt @\n mqtt_ctx.encode_pkt(type, pkt)\n return res\n\n conn.ready = handshake()\n return conn\n\n async function handshake() ::\n _abort = _defer_obj({})\n\n _keep_alive_ival(0) // clearInterval on keep alive ping\n _dfn_send0.set() // reset client._send0 if necessary\n _dfn_ready.set() // reset client._send if necessary\n\n try ::\n // set client._send0 as passtrhough after transport connection\n client._send0 = await Promise.race @# _dfn_send0.p, _abort.p\n\n // set client._send as passtrhough after ready\n client._send = await Promise.race @# _dfn_ready.p, _abort.p\n return true\n catch err ::\n return false\n\n","import mqtt_pkt_ctx from 'u8-mqtt-packet/esm/codec_bind.js'\nimport { _isfn } from './_utils.jsy'\nimport { MQTTBase } from './base.jsy'\nimport { _mqtt_conn } from './_conn.jsy'\n\n#IF PLAT_NODEJS\n import {connect as tcp_connect} from 'node:net'\n import {connect as tls_connect} from 'node:tls'\n\nconst pkt_api = @{}\n utf8(u8) :: return new TextDecoder('utf-8').decode(u8 || this.payload )\n json(u8) :: return JSON.parse( this.utf8(u8) || null )\n text(u8) :: return this.utf8(u8)\n\nconst opt_default = @{}\n sess_stg: globalThis.sessionStorage\n\nexport class MQTTCore extends MQTTBase ::\n constructor(opt) ::\n opt = {...opt_default, ...opt}\n super()\n this.with(opt)\n // settings for MQTTCore\n this.sess_stg = opt.sess_stg\n // setup connection and dispatch\n this.conn = _mqtt_conn @ opt, this,\n this._init_dispatch(opt)\n\n with(fns_ns) ::\n for let [k,v] of Object.entries(fns_ns) ::\n if _isfn(v) :: this[k] = v\n return this\n\n\n static mqtt_ctx(mqtt_level, mqtt_opts, pkt_ctx=pkt_api) ::\n let klass = class extends this {}\n klass.prototype.mqtt_ctx =\n mqtt_pkt_ctx(mqtt_level, mqtt_opts, pkt_ctx)\n return klass\n\n\n async conn_emit(evt, arg, err_arg) ::\n this.log_conn?.(evt, arg, err_arg)\n try ::\n let fn_evt = this[await evt] // microtask break using `await evt`\n if fn_evt ::\n await fn_evt.call(this, this, arg, err_arg)\n else if err_arg :: throw err_arg\n catch err ::\n this.on_error(err, evt)\n\n on_error(err, evt) ::\n console.warn @ '[[u8-mqtt error: %s]]', evt, err\n log_conn(evt, arg, err_arg) ::\n console.info @ '[[u8-mqtt conn: %s]]', evt, arg, err_arg\n\n\n // automatic Client Id for connect()\n init_client_id(parts=['u8-mqtt--','']) ::\n let sess_stg = this.sess_stg\n let key, cid = sess_stg?.getItem(key=parts.join(' '))\n if ! cid ::\n cid = parts.join @ Math.random().toString(36).slice(2)\n sess_stg?.setItem(key, cid)\n return cid\n\n\n on_live(client, is_reconnect) ::\n if is_reconnect ::\n return client.connect()\n\n // on_ready(client) ::\n // on_reconnect(client) ::\n on_disconnect(client, intentional, err) ::\n if ! intentional ::\n return client.on_reconnect?.()\n\n _use_conn(fn_reconnect) ::\n return (this.reconnect = fn_reconnect)?.()\n with_autoreconnect(opt=2000) ::\n if opt.toFixed :: opt = @{} delay: opt\n return this.with @:\n on_reconnect() ::\n this.delay(opt.delay || 2000, opt.jitter)\n .then(this.reconnect)\n .then(opt.reconnect, opt.error)\n\n delay(ms, ms_jitter=0.2*ms) ::\n return new Promise @ done => setTimeout(done, 0 | (ms + ms_jitter*Math.random()))\n\n with_async_iter(async_iter, write_u8_pkt) ::\n this.conn.setup @ async_iter,\n write_u8_pkt,\n async (on_mqtt_chunk, conn) => ::\n try ::\n async_iter = await async_iter\n for await (let chunk of async_iter)\n on_mqtt_chunk(chunk)\n conn.reset()\n catch err ::\n conn.reset(err)\n return this\n\n\n\n #IF PLAT_DENO\n with_tcp(...opt) ::\n opt = this._conn_opt(opt)\n opt.transport = 'tcp'\n return this._use_conn @=>\n this.with_deno_iter @\n Deno.connect(opt)\n\n with_tls(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_deno_iter @\n Deno.connectTls(opt)\n\n with_deno_iter(transport) ::\n return this.with_async_iter @\n transport.then(Deno.iter),\n transport.then @ write_stream =>\n u8_pkt => write_stream.write(u8_pkt)\n\n _conn_opt([a0, a1, a2]) ::\n // (port, hostname, options) or (url, options)\n if Number.isFinite(a0) ::\n return {...a2, port: a0, hostname: a1}\n\n a0 = new URL(a0)\n return {...a1, port: a0.port, hostname: a0.hostname}\n\n #IF PLAT_NODEJS\n with_tcp(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_stream @\n tcp_connect(opt)\n\n with_tls(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_stream @\n tls_connect(opt)\n\n _conn_opt([a0, a1, a2]) ::\n // (port, hostname, options) or (url, options)\n if Number.isFinite(a0) ::\n return {...a2, port: a0, host: a1}\n a0 = new URL(a0)\n return {...a1, port: a0.port, host: a0.hostname}\n\n\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 with_websock(websock) ::\n if ! websock?.send ::\n websock = new URL(websock || 'ws://127.0.0.1:9001')\n return this._use_conn @=>\n this.with_websock @\n new WebSocket(websock, ['mqtt'])\n\n websock.binaryType = 'arraybuffer'\n\n let ws_ready, readyState = websock.readyState\n if 1 !== readyState ::\n if 0 !== readyState ::\n throw new Error @ 'WS readyState'\n\n ws_ready = new Promise @ ready => websock.onopen = ready\n\n this.conn.setup @ ws_ready,\n u8_pkt => websock.send(u8_pkt),\n (on_mqtt_chunk, conn) => ::\n websock.onmessage = evt => @\n on_mqtt_chunk @ new Uint8Array(evt.data)\n\n websock.onerror = evt => ::\n conn.reset(new Error('websocket error'))\n\n websock.onclose = evt => ::\n if ! evt.wasClean ::\n var err = new Error('websocket close')\n err.code = evt.code\n err.reason = evt.reason\n\n conn.reset(err)\n\n return this\n\nexport { MQTTCore as default }\n","import mqtt_opts_v5 from 'u8-mqtt-packet/esm/codec_v5_client.js'\nimport {with_topic_path_router} from './router_path.jsy'\nimport MQTTCore from './core.jsy'\nexport * from './version.js'\n\nconst MQTTClient_v4 = /* #__PURE__ */\n with_topic_path_router(\n MQTTCore.mqtt_ctx(4, mqtt_opts_v5) )\n\nconst MQTTClient_v5 = /* #__PURE__ */\n with_topic_path_router(\n MQTTCore.mqtt_ctx(5, mqtt_opts_v5) )\n\nconst mqtt_v4 = opt =>\n new MQTTClient_v4(opt)\n\nconst mqtt_v5 = opt =>\n new MQTTClient_v5(opt)\n\nexport {\n MQTTClient_v4,\n MQTTClient_v5,\n MQTTClient_v5 as MQTTClient,\n\n mqtt_v4,\n mqtt_v5,\n mqtt_v5 as mqtt,\n mqtt_v5 as default,\n}\n"],"names":["decode_varint","_rxp_parse","tcp_connect","tls_connect"],"mappings":"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","x_google_ignoreList":[0,1,5]}
|
package/cjs/v4.cjs
CHANGED
|
@@ -506,7 +506,7 @@ function parse(input, loose) {
|
|
|
506
506
|
|
|
507
507
|
return {
|
|
508
508
|
keys: keys,
|
|
509
|
-
pattern: new RegExp('^' + pattern + (
|
|
509
|
+
pattern: new RegExp('^' + pattern + ('\/?$'), 'i')
|
|
510
510
|
};
|
|
511
511
|
}
|
|
512
512
|
|
|
@@ -920,8 +920,9 @@ class MQTTBase {
|
|
|
920
920
|
return this.conn.on_conn(pkt, response)}
|
|
921
921
|
|
|
922
922
|
async disconnect(pkt={}) {
|
|
923
|
-
let response =
|
|
924
|
-
|
|
923
|
+
let response = this._send0('disconnect', pkt);
|
|
924
|
+
await this.conn.on_dis(pkt, response);
|
|
925
|
+
return await response}
|
|
925
926
|
|
|
926
927
|
async auth(pkt={}) {
|
|
927
928
|
let response = await this._send0('auth', pkt, 'auth');
|
|
@@ -1086,11 +1087,12 @@ function _mqtt_conn(opt, client, [on_mqtt, pkt_future]) {
|
|
|
1086
1087
|
_dfn_send0.e(err); }// send error to uses of _send0 (connect, auth)
|
|
1087
1088
|
_abort.e(err); // abort in-progress connections
|
|
1088
1089
|
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1090
|
+
if (conn.is_set) {
|
|
1091
|
+
delete conn.is_set;
|
|
1092
|
+
conn.ready = handshake();
|
|
1093
|
+
client.conn_emit('on_disconnect', false===err, err);} }
|
|
1092
1094
|
|
|
1093
|
-
, abort() {
|
|
1095
|
+
, abort(err) {
|
|
1094
1096
|
_dfn_ready.e(err); // abort all messages awaiting ready state
|
|
1095
1097
|
return conn.reset(err)}
|
|
1096
1098
|
|
|
@@ -1204,7 +1206,7 @@ class MQTTCore extends MQTTBase {
|
|
|
1204
1206
|
|
|
1205
1207
|
// on_ready(client) ::
|
|
1206
1208
|
// on_reconnect(client) ::
|
|
1207
|
-
on_disconnect(client, intentional) {
|
|
1209
|
+
on_disconnect(client, intentional, err) {
|
|
1208
1210
|
if (! intentional) {
|
|
1209
1211
|
return client.on_reconnect?.()} }
|
|
1210
1212
|
|
|
@@ -1214,12 +1216,12 @@ class MQTTCore extends MQTTBase {
|
|
|
1214
1216
|
if (opt.toFixed) {opt ={delay: opt};}
|
|
1215
1217
|
return this.with({
|
|
1216
1218
|
on_reconnect() {
|
|
1217
|
-
this.delay(opt.delay || 2000)
|
|
1219
|
+
this.delay(opt.delay || 2000, opt.jitter)
|
|
1218
1220
|
.then(this.reconnect)
|
|
1219
1221
|
.then(opt.reconnect, opt.error);} }) }
|
|
1220
1222
|
|
|
1221
|
-
delay(ms) {
|
|
1222
|
-
return new Promise(done => setTimeout(done, ms)) }
|
|
1223
|
+
delay(ms, ms_jitter=0.2*ms) {
|
|
1224
|
+
return new Promise(done => setTimeout(done, 0 | (ms + ms_jitter*Math.random()))) }
|
|
1223
1225
|
|
|
1224
1226
|
with_async_iter(async_iter, write_u8_pkt) {
|
|
1225
1227
|
this.conn.setup(async_iter,
|
|
@@ -1315,6 +1317,9 @@ class MQTTCore extends MQTTBase {
|
|
|
1315
1317
|
websock.onmessage = evt =>(
|
|
1316
1318
|
on_mqtt_chunk(new Uint8Array(evt.data)) );
|
|
1317
1319
|
|
|
1320
|
+
websock.onerror = evt => {
|
|
1321
|
+
conn.reset(new Error('websocket error'));};
|
|
1322
|
+
|
|
1318
1323
|
websock.onclose = evt => {
|
|
1319
1324
|
if (! evt.wasClean) {
|
|
1320
1325
|
var err = new Error('websocket close');
|
|
@@ -1325,7 +1330,7 @@ class MQTTCore extends MQTTBase {
|
|
|
1325
1330
|
|
|
1326
1331
|
return this} }
|
|
1327
1332
|
|
|
1328
|
-
const version = '0.6.
|
|
1333
|
+
const version = '0.6.7-node';
|
|
1329
1334
|
|
|
1330
1335
|
const MQTTClient_v4 = /* #__PURE__ */
|
|
1331
1336
|
with_topic_path_router(
|