u8-mqtt 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +3 -3
  2. package/cjs/basic-v4.cjs +5 -10
  3. package/cjs/basic-v4.cjs.map +1 -1
  4. package/cjs/basic-v5.cjs +5 -10
  5. package/cjs/basic-v5.cjs.map +1 -1
  6. package/cjs/index.cjs +22 -20
  7. package/cjs/index.cjs.map +1 -1
  8. package/cjs/v4.cjs +22 -20
  9. package/cjs/v4.cjs.map +1 -1
  10. package/cjs/v5.cjs +22 -20
  11. package/cjs/v5.cjs.map +1 -1
  12. package/code/base.jsy +4 -9
  13. package/code/router_path.jsy +15 -9
  14. package/code/with_topic_router.jsy +4 -3
  15. package/esm/deno/basic-v4.js +5 -10
  16. package/esm/deno/basic-v4.js.map +1 -1
  17. package/esm/deno/basic-v5.js +5 -10
  18. package/esm/deno/basic-v5.js.map +1 -1
  19. package/esm/deno/index.js +22 -20
  20. package/esm/deno/index.js.map +1 -1
  21. package/esm/deno/v4.js +22 -20
  22. package/esm/deno/v4.js.map +1 -1
  23. package/esm/deno/v5.js +22 -20
  24. package/esm/deno/v5.js.map +1 -1
  25. package/esm/node/basic-v4.js +5 -10
  26. package/esm/node/basic-v4.js.map +1 -1
  27. package/esm/node/basic-v4.mjs +5 -10
  28. package/esm/node/basic-v4.mjs.map +1 -1
  29. package/esm/node/basic-v5.js +5 -10
  30. package/esm/node/basic-v5.js.map +1 -1
  31. package/esm/node/basic-v5.mjs +5 -10
  32. package/esm/node/basic-v5.mjs.map +1 -1
  33. package/esm/node/index.js +22 -20
  34. package/esm/node/index.js.map +1 -1
  35. package/esm/node/index.mjs +22 -20
  36. package/esm/node/index.mjs.map +1 -1
  37. package/esm/node/v4.js +22 -20
  38. package/esm/node/v4.js.map +1 -1
  39. package/esm/node/v4.mjs +22 -20
  40. package/esm/node/v4.mjs.map +1 -1
  41. package/esm/node/v5.js +22 -20
  42. package/esm/node/v5.js.map +1 -1
  43. package/esm/node/v5.mjs +22 -20
  44. package/esm/node/v5.mjs.map +1 -1
  45. package/esm/web/basic-v4.js +5 -10
  46. package/esm/web/basic-v4.js.map +1 -1
  47. package/esm/web/basic-v4.min.js +1 -1
  48. package/esm/web/basic-v4.min.js.br +0 -0
  49. package/esm/web/basic-v4.min.js.gz +0 -0
  50. package/esm/web/basic-v5.js +5 -10
  51. package/esm/web/basic-v5.js.map +1 -1
  52. package/esm/web/basic-v5.min.js +1 -1
  53. package/esm/web/basic-v5.min.js.br +0 -0
  54. package/esm/web/basic-v5.min.js.gz +0 -0
  55. package/esm/web/index.js +22 -20
  56. package/esm/web/index.js.map +1 -1
  57. package/esm/web/index.min.js +1 -1
  58. package/esm/web/index.min.js.br +0 -0
  59. package/esm/web/index.min.js.gz +0 -0
  60. package/esm/web/v4.js +22 -20
  61. package/esm/web/v4.js.map +1 -1
  62. package/esm/web/v4.min.js +1 -1
  63. package/esm/web/v4.min.js.br +0 -0
  64. package/esm/web/v4.min.js.gz +0 -0
  65. package/esm/web/v5.js +22 -20
  66. package/esm/web/v5.js.map +1 -1
  67. package/esm/web/v5.min.js +1 -1
  68. package/esm/web/v5.min.js.br +0 -0
  69. package/esm/web/v5.min.js.gz +0 -0
  70. package/package.json +1 -1
package/esm/node/v5.js CHANGED
@@ -815,9 +815,10 @@ const with_topic_router = mqtt_topic_router =>
815
815
  return super._aliases() +
816
816
  ' sub_topic:subscribe_topic unsub_topic:unsubscribe_topic'}
817
817
 
818
- _init_router(opt) {
819
- return mqtt_topic_router(opt, this)}
820
-
818
+ _init_router(opt, client, target) {
819
+ let router = this.router = target.router =
820
+ mqtt_topic_router(opt, this);
821
+ return router?.invoke}
821
822
  get on_topic() {return this.router.add}
822
823
 
823
824
  _sub_chain(topic, ex, topic_prefix) {
@@ -853,14 +854,20 @@ const mqtt_topic = topic_route =>
853
854
  .replace(/[*].*$/, '#')
854
855
  .replace(/:\w+\??/g, '+');
855
856
 
856
- const as_topic_path = topic_route =>(
857
+ /* From the [MQTT v5 Spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Topic_Names_and)
858
+ 4.7.1.2 Multi-level wildcard -- (‘#’ U+0023)
859
+ ... MUST be specified either on its own or following a topic level separator.
860
+ In either case it MUST be the last character specified in the Topic Filter
861
+
862
+ 4.7.1.3 Single-level wildcard -- (‘+’ U+002B)
863
+ ...it MUST occupy an entire level of the filter.
864
+ */
865
+
866
+ const as_topic_path = (topic_route, id) =>(
867
+ id=1,
857
868
  topic_route
858
- .replace(/#$/, '*') // replace MQTT # wildcard at end
859
- .split(/([^\/]*[+][^\/]*)/) // split on MQTT + match tokens
860
- .reduce (( sz, v, idx ) => sz +(
861
- idx & 1 // even entires are body, odd are MQTT + tokens
862
- ? `:$${1 + idx>>1}` // replace with `:$#` sequential ids, using ? for partial entries
863
- : v ) ) );// pass through body
869
+ .replace(/#$/, '*' )// replace MQTT '#' multi-level wildcard at end
870
+ .replace(/\+/g, () => `:$${id++}` ) );// replace MQTT '+' single-level wildcards
864
871
 
865
872
  function _ignore(pkt, params, ctx) {ctx.done = true;}
866
873
 
@@ -1354,15 +1361,10 @@ class MQTTBase {
1354
1361
 
1355
1362
  _init_dispatch(opt) {
1356
1363
  this.constructor?._once_();
1357
- let router = this.router =
1358
- this._init_router?.(opt, this);
1359
-
1360
- let tgt ={
1361
- __proto__: opt.on_mqtt_type || {}
1362
- , router};
1363
-
1364
- tgt.mqtt_publish ||= router?.invoke;
1365
- return _mqtt_dispatch(this, tgt)}
1364
+ let target ={__proto__: opt.on_mqtt_type};
1365
+ target.mqtt_publish ||=
1366
+ this._init_router?.(opt, this, target);
1367
+ return _mqtt_dispatch(this, target)}
1366
1368
 
1367
1369
  static _aliases() {
1368
1370
  return ' pub:publish sub:subscribe unsub:unsubscribe '}
@@ -1625,7 +1627,7 @@ class MQTTCore extends MQTTBase {
1625
1627
 
1626
1628
  return this} }
1627
1629
 
1628
- const version = '0.4.0';
1630
+ const version = '0.4.1';
1629
1631
 
1630
1632
  const MQTTClient_v4 = /* #__PURE__ */
1631
1633
  with_topic_path_router(