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
@@ -929,7 +929,10 @@ const with_topic_router = mqtt_topic_router =>
929
929
  // alias: unsub_topic
930
930
  unsubscribe_topic(topic_route, ...args) {
931
931
  let router = this.router;
932
- router.remove(topic_route, true);
932
+
933
+ let fn = args.at(-1)?.call ? args.pop() : null;
934
+ router.remove(topic_route, true, fn);
935
+
933
936
  let topic = router.mqtt_topic(topic_route);
934
937
  return this.unsubscribe(topic, ...args ) }// topic_prefix
935
938
 
@@ -982,34 +985,38 @@ function mqtt_topic_path_router() {
982
985
  if (fn) {throw new TypeError()}
983
986
  fn = _ignore;}
984
987
 
985
- let rte = parse(as_topic_path(topic_route));
986
-
987
- rte.key = topic_route;
988
- rte.tgt = fn;
989
- pri_lsts[priority ? 0 : 1].push(rte);
988
+ let route = parse(as_topic_path(topic_route));
989
+ route.topic = topic_route;
990
+ route.tgt = fn;
991
+ pri_lsts[priority ? 0 : 1].push(route);
990
992
  return this}
991
993
 
992
- , remove(topic_route, priority) {
993
- let lst = pri_lsts[priority ? 0 : 1];
994
- return _route_remove([lst], topic_route)}
994
+ , remove(query, ...args) {
995
+ let lst = pri_lsts;
996
+ if ('boolean' === typeof args[0]) {
997
+ lst = [pri_lsts[args.shift() ? 0 : 1]];}
998
+
999
+ if ('string' === typeof query) {
1000
+ query ={topic: query, tgt: args.pop()}; }
1001
+ return _route_remove(lst, query)}
995
1002
 
996
1003
  , clear(priority) {
997
- pri_lsts[priority ? 0 : 1] = [];
998
1004
  if (null == priority) {
999
- pri_lsts[1] = []; } }// null clears both lists
1005
+ pri_lsts = [[],[]]; }// null clears both lists
1006
+ else {
1007
+ pri_lsts[priority ? 0 : 1] = [];} }
1000
1008
 
1001
1009
  , async invoke(pkt, ctx) {
1002
1010
  ctx.idx = 0;
1003
1011
  ctx.rm = rm;
1004
1012
 
1005
- for (let [fn, params] of find(pkt.topic)) {
1013
+ for (let [fn, params, route] of find(pkt.topic)) {
1006
1014
  let res = await fn(pkt, params, ctx);
1007
1015
 
1008
1016
  if (rm === res) {
1009
- _route_remove(pri_lsts, fn);}
1017
+ _route_remove(pri_lsts, route);}
1010
1018
 
1011
- if (ctx.done) {
1012
- break}
1019
+ if (ctx.done) {break}
1013
1020
  else ctx.idx++;}
1014
1021
 
1015
1022
  if (1 === pkt.qos) {
@@ -1019,28 +1026,35 @@ function mqtt_topic_path_router() {
1019
1026
  function * _routes_iter(all_route_lists, topic) {
1020
1027
  topic = topic.replace(/^[\/]*/, '/'); // ensure '/' prefix for regexparam library
1021
1028
  for (let route_list of all_route_lists) {
1022
- for (let {keys, pattern, tgt} of route_list) {
1023
- let match = pattern.exec(topic);
1029
+ for (let route of route_list) {
1030
+ let match = route.pattern.exec(topic);
1024
1031
  if (match) {
1025
- let params = keys
1026
- ? keys.reduce(
1032
+ let params = route.keys
1033
+ ? route.keys.reduce(
1027
1034
  (o, k, i) => (o[k] = match[1+i], o)
1028
1035
  , {})
1029
1036
  : match.groups ?? match;
1030
- yield [tgt, params];} } } }
1037
+ yield [route.tgt, params, route];} } } }
1031
1038
 
1032
1039
 
1033
1040
  function _route_remove(all_route_lists, query) {
1034
- let fn_match = route =>(
1035
- route===query
1036
- || route.tgt===query
1037
- || route.key===query);
1041
+ let ans = false;
1038
1042
  for (let lst of all_route_lists) {
1039
- let i = lst.findIndex(fn_match);
1040
- if (0 <= i) {
1041
- lst.splice(i,1);
1042
- return true} }
1043
- return false}
1043
+ let idx_tip = 0;
1044
+ for (let route of lst) {
1045
+ // skip matching routes to remove from compacted list
1046
+ if (route === query) continue
1047
+ if (route.topic === query.topic) {
1048
+ if (null == query.tgt) continue
1049
+ if (route.tgt === query.tgt) continue}
1050
+
1051
+ lst[idx_tip++] = route;}
1052
+
1053
+ // truncate remaining list
1054
+ if (lst.splice(idx_tip).length)
1055
+ ans = true;}
1056
+
1057
+ return ans}
1044
1058
 
1045
1059
  function decode_varint(u8, i0=0, invalid) {
1046
1060
  let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);
@@ -1655,7 +1669,7 @@ class MQTTCore extends MQTTBase {
1655
1669
 
1656
1670
  return this} }
1657
1671
 
1658
- const version = '0.6.3-node';
1672
+ const version = '0.6.4-node';
1659
1673
 
1660
1674
  const MQTTClient_v4 = /* #__PURE__ */
1661
1675
  with_topic_path_router(