{"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]}