u8-mqtt 0.6.4 → 0.6.5

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 (95) hide show
  1. package/cjs/basic-v4.cjs +1 -1
  2. package/cjs/basic-v5.cjs +1 -1
  3. package/cjs/full-v4.cjs +30 -23
  4. package/cjs/full-v4.cjs.map +1 -1
  5. package/cjs/full-v5.cjs +30 -23
  6. package/cjs/full-v5.cjs.map +1 -1
  7. package/cjs/index.cjs +30 -23
  8. package/cjs/index.cjs.map +1 -1
  9. package/cjs/v4.cjs +30 -23
  10. package/cjs/v4.cjs.map +1 -1
  11. package/cjs/v5.cjs +30 -23
  12. package/cjs/v5.cjs.map +1 -1
  13. package/code/router_path.jsy +19 -16
  14. package/esm/basic-v4.js +1 -1
  15. package/esm/basic-v5.js +1 -1
  16. package/esm/deno/basic-v4.js +1 -1
  17. package/esm/deno/basic-v5.js +1 -1
  18. package/esm/deno/full-v4.js +30 -23
  19. package/esm/deno/full-v4.js.map +1 -1
  20. package/esm/deno/full-v5.js +30 -23
  21. package/esm/deno/full-v5.js.map +1 -1
  22. package/esm/deno/index.js +30 -23
  23. package/esm/deno/index.js.map +1 -1
  24. package/esm/deno/v4.js +30 -23
  25. package/esm/deno/v4.js.map +1 -1
  26. package/esm/deno/v5.js +30 -23
  27. package/esm/deno/v5.js.map +1 -1
  28. package/esm/full-v4.js +30 -23
  29. package/esm/full-v4.js.map +1 -1
  30. package/esm/full-v5.js +30 -23
  31. package/esm/full-v5.js.map +1 -1
  32. package/esm/index.js +30 -23
  33. package/esm/index.js.map +1 -1
  34. package/esm/node/basic-v4.js +1 -1
  35. package/esm/node/basic-v4.mjs +1 -1
  36. package/esm/node/basic-v5.js +1 -1
  37. package/esm/node/basic-v5.mjs +1 -1
  38. package/esm/node/full-v4.js +30 -23
  39. package/esm/node/full-v4.js.map +1 -1
  40. package/esm/node/full-v4.mjs +30 -23
  41. package/esm/node/full-v4.mjs.map +1 -1
  42. package/esm/node/full-v5.js +30 -23
  43. package/esm/node/full-v5.js.map +1 -1
  44. package/esm/node/full-v5.mjs +30 -23
  45. package/esm/node/full-v5.mjs.map +1 -1
  46. package/esm/node/index.js +30 -23
  47. package/esm/node/index.js.map +1 -1
  48. package/esm/node/index.mjs +30 -23
  49. package/esm/node/index.mjs.map +1 -1
  50. package/esm/node/v4.js +30 -23
  51. package/esm/node/v4.js.map +1 -1
  52. package/esm/node/v4.mjs +30 -23
  53. package/esm/node/v4.mjs.map +1 -1
  54. package/esm/node/v5.js +30 -23
  55. package/esm/node/v5.js.map +1 -1
  56. package/esm/node/v5.mjs +30 -23
  57. package/esm/node/v5.mjs.map +1 -1
  58. package/esm/v4.js +30 -23
  59. package/esm/v4.js.map +1 -1
  60. package/esm/v5.js +30 -23
  61. package/esm/v5.js.map +1 -1
  62. package/esm/web/basic-v4.js +1 -1
  63. package/esm/web/basic-v4.min.js +1 -1
  64. package/esm/web/basic-v4.min.js.br +0 -0
  65. package/esm/web/basic-v4.min.js.gz +0 -0
  66. package/esm/web/basic-v5.js +1 -1
  67. package/esm/web/basic-v5.min.js +1 -1
  68. package/esm/web/basic-v5.min.js.br +0 -0
  69. package/esm/web/basic-v5.min.js.gz +0 -0
  70. package/esm/web/full-v4.js +30 -23
  71. package/esm/web/full-v4.js.map +1 -1
  72. package/esm/web/full-v4.min.js +1 -1
  73. package/esm/web/full-v4.min.js.br +0 -0
  74. package/esm/web/full-v4.min.js.gz +0 -0
  75. package/esm/web/full-v5.js +30 -23
  76. package/esm/web/full-v5.js.map +1 -1
  77. package/esm/web/full-v5.min.js +1 -1
  78. package/esm/web/full-v5.min.js.br +0 -0
  79. package/esm/web/full-v5.min.js.gz +0 -0
  80. package/esm/web/index.js +30 -23
  81. package/esm/web/index.js.map +1 -1
  82. package/esm/web/index.min.js +1 -1
  83. package/esm/web/index.min.js.br +0 -0
  84. package/esm/web/index.min.js.gz +0 -0
  85. package/esm/web/v4.js +30 -23
  86. package/esm/web/v4.js.map +1 -1
  87. package/esm/web/v4.min.js +1 -1
  88. package/esm/web/v4.min.js.br +0 -0
  89. package/esm/web/v4.min.js.gz +0 -0
  90. package/esm/web/v5.js +30 -23
  91. package/esm/web/v5.js.map +1 -1
  92. package/esm/web/v5.min.js +1 -1
  93. package/esm/web/v5.min.js.br +0 -0
  94. package/esm/web/v5.min.js.gz +0 -0
  95. package/package.json +2 -2
@@ -844,16 +844,20 @@ const mqtt_opts_v5 =
844
844
  encode_fns: mqtt_encode_v5,
845
845
  mqtt_writer: mqtt_writer_v5, };
846
846
 
847
- function parse(str, loose) {
848
- if (str instanceof RegExp) return { keys:false, pattern:str };
849
- var c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');
847
+ /**
848
+ * @param {string|RegExp} input The route pattern
849
+ * @param {boolean} [loose] Allow open-ended matching. Ignored with `RegExp` input.
850
+ */
851
+ function parse(input, loose) {
852
+ if (input instanceof RegExp) return { keys:false, pattern:input };
853
+ var c, o, tmp, ext, keys=[], pattern='', arr = input.split('/');
850
854
  arr[0] || arr.shift();
851
855
 
852
856
  while (tmp = arr.shift()) {
853
857
  c = tmp[0];
854
858
  if (c === '*') {
855
- keys.push('wild');
856
- pattern += '/(.*)';
859
+ keys.push(c);
860
+ pattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';
857
861
  } else if (c === ':') {
858
862
  o = tmp.indexOf('?', 1);
859
863
  ext = tmp.indexOf('.', 1);
@@ -1023,18 +1027,23 @@ function mqtt_topic_path_router() {
1023
1027
  await ctx.mqtt.puback(pkt);} } } }
1024
1028
 
1025
1029
 
1030
+ const _regexparam ={
1031
+ get wild() {return this['*']}
1032
+ , set wild(v) {return this['*']=wild} };
1033
+
1026
1034
  function * _routes_iter(all_route_lists, topic) {
1027
1035
  topic = topic.replace(/^[\/]*/, '/'); // ensure '/' prefix for regexparam library
1028
- for (let route_list of all_route_lists) {
1029
- for (let route of route_list) {
1030
- let match = route.pattern.exec(topic);
1031
- if (match) {
1032
- let params = route.keys
1033
- ? route.keys.reduce(
1034
- (o, k, i) => (o[k] = match[1+i], o)
1035
- , {})
1036
- : match.groups ?? match;
1037
- yield [route.tgt, params, route];} } } }
1036
+ for (let route of all_route_lists.flat()) {
1037
+ let match = route?.pattern.exec(topic);
1038
+ if (match) {
1039
+ let keys = route.keys;
1040
+ if (keys) {
1041
+ let k, i=0, params={__proto__:_regexparam};
1042
+ for (k of keys) {
1043
+ params[k] = match[++i];}
1044
+ yield [route.tgt, params, route];}
1045
+ else {
1046
+ yield [route.tgt, match.groups ?? match, route];} } } }
1038
1047
 
1039
1048
 
1040
1049
  function _route_remove(all_route_lists, query) {
@@ -1043,16 +1052,14 @@ function _route_remove(all_route_lists, query) {
1043
1052
  let idx_tip = 0;
1044
1053
  for (let route of lst) {
1045
1054
  // 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}
1055
+ let skip = route === query;
1056
+ if (!skip && route.topic === query.topic)
1057
+ skip = (null == query.tgt) || (route.tgt === query.tgt);
1050
1058
 
1051
- lst[idx_tip++] = route;}
1059
+ if (!skip) lst[idx_tip++] = route;}
1052
1060
 
1053
1061
  // truncate remaining list
1054
- if (lst.splice(idx_tip).length)
1055
- ans = true;}
1062
+ lst.length = idx_tip;}
1056
1063
 
1057
1064
  return ans}
1058
1065
 
@@ -1669,7 +1676,7 @@ class MQTTCore extends MQTTBase {
1669
1676
 
1670
1677
  return this} }
1671
1678
 
1672
- const version = '0.6.4-node';
1679
+ const version = '0.6.5-node';
1673
1680
 
1674
1681
  const MQTTClient_v4 = /* #__PURE__ */
1675
1682
  with_topic_path_router(