u8-mqtt 0.6.3 → 0.6.4

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 (96) hide show
  1. package/cjs/basic-v4.cjs +1 -1
  2. package/cjs/basic-v5.cjs +1 -1
  3. package/cjs/full-v4.cjs +44 -30
  4. package/cjs/full-v4.cjs.map +1 -1
  5. package/cjs/full-v5.cjs +44 -30
  6. package/cjs/full-v5.cjs.map +1 -1
  7. package/cjs/index.cjs +44 -30
  8. package/cjs/index.cjs.map +1 -1
  9. package/cjs/v4.cjs +44 -30
  10. package/cjs/v4.cjs.map +1 -1
  11. package/cjs/v5.cjs +44 -30
  12. package/cjs/v5.cjs.map +1 -1
  13. package/code/router_path.jsy +39 -28
  14. package/code/with_topic_router.jsy +4 -1
  15. package/esm/basic-v4.js +1 -1
  16. package/esm/basic-v5.js +1 -1
  17. package/esm/deno/basic-v4.js +1 -1
  18. package/esm/deno/basic-v5.js +1 -1
  19. package/esm/deno/full-v4.js +44 -30
  20. package/esm/deno/full-v4.js.map +1 -1
  21. package/esm/deno/full-v5.js +44 -30
  22. package/esm/deno/full-v5.js.map +1 -1
  23. package/esm/deno/index.js +44 -30
  24. package/esm/deno/index.js.map +1 -1
  25. package/esm/deno/v4.js +44 -30
  26. package/esm/deno/v4.js.map +1 -1
  27. package/esm/deno/v5.js +44 -30
  28. package/esm/deno/v5.js.map +1 -1
  29. package/esm/full-v4.js +44 -30
  30. package/esm/full-v4.js.map +1 -1
  31. package/esm/full-v5.js +44 -30
  32. package/esm/full-v5.js.map +1 -1
  33. package/esm/index.js +44 -30
  34. package/esm/index.js.map +1 -1
  35. package/esm/node/basic-v4.js +1 -1
  36. package/esm/node/basic-v4.mjs +1 -1
  37. package/esm/node/basic-v5.js +1 -1
  38. package/esm/node/basic-v5.mjs +1 -1
  39. package/esm/node/full-v4.js +44 -30
  40. package/esm/node/full-v4.js.map +1 -1
  41. package/esm/node/full-v4.mjs +44 -30
  42. package/esm/node/full-v4.mjs.map +1 -1
  43. package/esm/node/full-v5.js +44 -30
  44. package/esm/node/full-v5.js.map +1 -1
  45. package/esm/node/full-v5.mjs +44 -30
  46. package/esm/node/full-v5.mjs.map +1 -1
  47. package/esm/node/index.js +44 -30
  48. package/esm/node/index.js.map +1 -1
  49. package/esm/node/index.mjs +44 -30
  50. package/esm/node/index.mjs.map +1 -1
  51. package/esm/node/v4.js +44 -30
  52. package/esm/node/v4.js.map +1 -1
  53. package/esm/node/v4.mjs +44 -30
  54. package/esm/node/v4.mjs.map +1 -1
  55. package/esm/node/v5.js +44 -30
  56. package/esm/node/v5.js.map +1 -1
  57. package/esm/node/v5.mjs +44 -30
  58. package/esm/node/v5.mjs.map +1 -1
  59. package/esm/v4.js +44 -30
  60. package/esm/v4.js.map +1 -1
  61. package/esm/v5.js +44 -30
  62. package/esm/v5.js.map +1 -1
  63. package/esm/web/basic-v4.js +1 -1
  64. package/esm/web/basic-v4.min.js +1 -1
  65. package/esm/web/basic-v4.min.js.br +0 -0
  66. package/esm/web/basic-v4.min.js.gz +0 -0
  67. package/esm/web/basic-v5.js +1 -1
  68. package/esm/web/basic-v5.min.js +1 -1
  69. package/esm/web/basic-v5.min.js.br +0 -0
  70. package/esm/web/basic-v5.min.js.gz +0 -0
  71. package/esm/web/full-v4.js +44 -30
  72. package/esm/web/full-v4.js.map +1 -1
  73. package/esm/web/full-v4.min.js +1 -1
  74. package/esm/web/full-v4.min.js.br +0 -0
  75. package/esm/web/full-v4.min.js.gz +0 -0
  76. package/esm/web/full-v5.js +44 -30
  77. package/esm/web/full-v5.js.map +1 -1
  78. package/esm/web/full-v5.min.js +1 -1
  79. package/esm/web/full-v5.min.js.br +0 -0
  80. package/esm/web/full-v5.min.js.gz +0 -0
  81. package/esm/web/index.js +44 -30
  82. package/esm/web/index.js.map +1 -1
  83. package/esm/web/index.min.js +1 -1
  84. package/esm/web/index.min.js.br +0 -0
  85. package/esm/web/index.min.js.gz +0 -0
  86. package/esm/web/v4.js +44 -30
  87. package/esm/web/v4.js.map +1 -1
  88. package/esm/web/v4.min.js +1 -1
  89. package/esm/web/v4.min.js.br +0 -0
  90. package/esm/web/v4.min.js.gz +0 -0
  91. package/esm/web/v5.js +44 -30
  92. package/esm/web/v5.js.map +1 -1
  93. package/esm/web/v5.min.js +1 -1
  94. package/esm/web/v5.min.js.br +0 -0
  95. package/esm/web/v5.min.js.gz +0 -0
  96. package/package.json +4 -4
package/cjs/full-v5.cjs CHANGED
@@ -933,7 +933,10 @@ const with_topic_router = mqtt_topic_router =>
933
933
  // alias: unsub_topic
934
934
  unsubscribe_topic(topic_route, ...args) {
935
935
  let router = this.router;
936
- router.remove(topic_route, true);
936
+
937
+ let fn = args.at(-1)?.call ? args.pop() : null;
938
+ router.remove(topic_route, true, fn);
939
+
937
940
  let topic = router.mqtt_topic(topic_route);
938
941
  return this.unsubscribe(topic, ...args ) }// topic_prefix
939
942
 
@@ -986,34 +989,38 @@ function mqtt_topic_path_router() {
986
989
  if (fn) {throw new TypeError()}
987
990
  fn = _ignore;}
988
991
 
989
- let rte = parse(as_topic_path(topic_route));
990
-
991
- rte.key = topic_route;
992
- rte.tgt = fn;
993
- pri_lsts[priority ? 0 : 1].push(rte);
992
+ let route = parse(as_topic_path(topic_route));
993
+ route.topic = topic_route;
994
+ route.tgt = fn;
995
+ pri_lsts[priority ? 0 : 1].push(route);
994
996
  return this}
995
997
 
996
- , remove(topic_route, priority) {
997
- let lst = pri_lsts[priority ? 0 : 1];
998
- return _route_remove([lst], topic_route)}
998
+ , remove(query, ...args) {
999
+ let lst = pri_lsts;
1000
+ if ('boolean' === typeof args[0]) {
1001
+ lst = [pri_lsts[args.shift() ? 0 : 1]];}
1002
+
1003
+ if ('string' === typeof query) {
1004
+ query ={topic: query, tgt: args.pop()}; }
1005
+ return _route_remove(lst, query)}
999
1006
 
1000
1007
  , clear(priority) {
1001
- pri_lsts[priority ? 0 : 1] = [];
1002
1008
  if (null == priority) {
1003
- pri_lsts[1] = []; } }// null clears both lists
1009
+ pri_lsts = [[],[]]; }// null clears both lists
1010
+ else {
1011
+ pri_lsts[priority ? 0 : 1] = [];} }
1004
1012
 
1005
1013
  , async invoke(pkt, ctx) {
1006
1014
  ctx.idx = 0;
1007
1015
  ctx.rm = rm;
1008
1016
 
1009
- for (let [fn, params] of find(pkt.topic)) {
1017
+ for (let [fn, params, route] of find(pkt.topic)) {
1010
1018
  let res = await fn(pkt, params, ctx);
1011
1019
 
1012
1020
  if (rm === res) {
1013
- _route_remove(pri_lsts, fn);}
1021
+ _route_remove(pri_lsts, route);}
1014
1022
 
1015
- if (ctx.done) {
1016
- break}
1023
+ if (ctx.done) {break}
1017
1024
  else ctx.idx++;}
1018
1025
 
1019
1026
  if (1 === pkt.qos) {
@@ -1023,28 +1030,35 @@ function mqtt_topic_path_router() {
1023
1030
  function * _routes_iter(all_route_lists, topic) {
1024
1031
  topic = topic.replace(/^[\/]*/, '/'); // ensure '/' prefix for regexparam library
1025
1032
  for (let route_list of all_route_lists) {
1026
- for (let {keys, pattern, tgt} of route_list) {
1027
- let match = pattern.exec(topic);
1033
+ for (let route of route_list) {
1034
+ let match = route.pattern.exec(topic);
1028
1035
  if (match) {
1029
- let params = keys
1030
- ? keys.reduce(
1036
+ let params = route.keys
1037
+ ? route.keys.reduce(
1031
1038
  (o, k, i) => (o[k] = match[1+i], o)
1032
1039
  , {})
1033
1040
  : match.groups ?? match;
1034
- yield [tgt, params];} } } }
1041
+ yield [route.tgt, params, route];} } } }
1035
1042
 
1036
1043
 
1037
1044
  function _route_remove(all_route_lists, query) {
1038
- let fn_match = route =>(
1039
- route===query
1040
- || route.tgt===query
1041
- || route.key===query);
1045
+ let ans = false;
1042
1046
  for (let lst of all_route_lists) {
1043
- let i = lst.findIndex(fn_match);
1044
- if (0 <= i) {
1045
- lst.splice(i,1);
1046
- return true} }
1047
- return false}
1047
+ let idx_tip = 0;
1048
+ for (let route of lst) {
1049
+ // skip matching routes to remove from compacted list
1050
+ if (route === query) continue
1051
+ if (route.topic === query.topic) {
1052
+ if (null == query.tgt) continue
1053
+ if (route.tgt === query.tgt) continue}
1054
+
1055
+ lst[idx_tip++] = route;}
1056
+
1057
+ // truncate remaining list
1058
+ if (lst.splice(idx_tip).length)
1059
+ ans = true;}
1060
+
1061
+ return ans}
1048
1062
 
1049
1063
  function decode_varint(u8, i0=0, invalid) {
1050
1064
  let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);
@@ -1659,7 +1673,7 @@ class MQTTCore extends MQTTBase {
1659
1673
 
1660
1674
  return this} }
1661
1675
 
1662
- const version = '0.6.3-node';
1676
+ const version = '0.6.4-node';
1663
1677
 
1664
1678
  const MQTTClient_v4 = /* #__PURE__ */
1665
1679
  with_topic_path_router(