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/cjs/v5.cjs CHANGED
@@ -819,9 +819,10 @@ const with_topic_router = mqtt_topic_router =>
819
819
  return super._aliases() +
820
820
  ' sub_topic:subscribe_topic unsub_topic:unsubscribe_topic'}
821
821
 
822
- _init_router(opt) {
823
- return mqtt_topic_router(opt, this)}
824
-
822
+ _init_router(opt, client, target) {
823
+ let router = this.router = target.router =
824
+ mqtt_topic_router(opt, this);
825
+ return router?.invoke}
825
826
  get on_topic() {return this.router.add}
826
827
 
827
828
  _sub_chain(topic, ex, topic_prefix) {
@@ -857,14 +858,20 @@ const mqtt_topic = topic_route =>
857
858
  .replace(/[*].*$/, '#')
858
859
  .replace(/:\w+\??/g, '+');
859
860
 
860
- const as_topic_path = topic_route =>(
861
+ /* From the [MQTT v5 Spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Topic_Names_and)
862
+ 4.7.1.2 Multi-level wildcard -- (‘#’ U+0023)
863
+ ... MUST be specified either on its own or following a topic level separator.
864
+ In either case it MUST be the last character specified in the Topic Filter
865
+
866
+ 4.7.1.3 Single-level wildcard -- (‘+’ U+002B)
867
+ ...it MUST occupy an entire level of the filter.
868
+ */
869
+
870
+ const as_topic_path = (topic_route, id) =>(
871
+ id=1,
861
872
  topic_route
862
- .replace(/#$/, '*') // replace MQTT # wildcard at end
863
- .split(/([^\/]*[+][^\/]*)/) // split on MQTT + match tokens
864
- .reduce (( sz, v, idx ) => sz +(
865
- idx & 1 // even entires are body, odd are MQTT + tokens
866
- ? `:$${1 + idx>>1}` // replace with `:$#` sequential ids, using ? for partial entries
867
- : v ) ) );// pass through body
873
+ .replace(/#$/, '*' )// replace MQTT '#' multi-level wildcard at end
874
+ .replace(/\+/g, () => `:$${id++}` ) );// replace MQTT '+' single-level wildcards
868
875
 
869
876
  function _ignore(pkt, params, ctx) {ctx.done = true;}
870
877
 
@@ -1358,15 +1365,10 @@ class MQTTBase {
1358
1365
 
1359
1366
  _init_dispatch(opt) {
1360
1367
  this.constructor?._once_();
1361
- let router = this.router =
1362
- this._init_router?.(opt, this);
1363
-
1364
- let tgt ={
1365
- __proto__: opt.on_mqtt_type || {}
1366
- , router};
1367
-
1368
- tgt.mqtt_publish ||= router?.invoke;
1369
- return _mqtt_dispatch(this, tgt)}
1368
+ let target ={__proto__: opt.on_mqtt_type};
1369
+ target.mqtt_publish ||=
1370
+ this._init_router?.(opt, this, target);
1371
+ return _mqtt_dispatch(this, target)}
1370
1372
 
1371
1373
  static _aliases() {
1372
1374
  return ' pub:publish sub:subscribe unsub:unsubscribe '}
@@ -1629,7 +1631,7 @@ class MQTTCore extends MQTTBase {
1629
1631
 
1630
1632
  return this} }
1631
1633
 
1632
- const version = '0.4.0';
1634
+ const version = '0.4.1';
1633
1635
 
1634
1636
  const MQTTClient_v4 = /* #__PURE__ */
1635
1637
  with_topic_path_router(