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
@@ -841,16 +841,20 @@ const mqtt_opts_v5 =
841
841
  encode_fns: mqtt_encode_v5,
842
842
  mqtt_writer: mqtt_writer_v5, };
843
843
 
844
- function parse(str, loose) {
845
- if (str instanceof RegExp) return { keys:false, pattern:str };
846
- var c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');
844
+ /**
845
+ * @param {string|RegExp} input The route pattern
846
+ * @param {boolean} [loose] Allow open-ended matching. Ignored with `RegExp` input.
847
+ */
848
+ function parse(input, loose) {
849
+ if (input instanceof RegExp) return { keys:false, pattern:input };
850
+ var c, o, tmp, ext, keys=[], pattern='', arr = input.split('/');
847
851
  arr[0] || arr.shift();
848
852
 
849
853
  while (tmp = arr.shift()) {
850
854
  c = tmp[0];
851
855
  if (c === '*') {
852
- keys.push('wild');
853
- pattern += '/(.*)';
856
+ keys.push(c);
857
+ pattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';
854
858
  } else if (c === ':') {
855
859
  o = tmp.indexOf('?', 1);
856
860
  ext = tmp.indexOf('.', 1);
@@ -1020,18 +1024,23 @@ function mqtt_topic_path_router() {
1020
1024
  await ctx.mqtt.puback(pkt);} } } }
1021
1025
 
1022
1026
 
1027
+ const _regexparam ={
1028
+ get wild() {return this['*']}
1029
+ , set wild(v) {return this['*']=wild} };
1030
+
1023
1031
  function * _routes_iter(all_route_lists, topic) {
1024
1032
  topic = topic.replace(/^[\/]*/, '/'); // ensure '/' prefix for regexparam library
1025
- for (let route_list of all_route_lists) {
1026
- for (let route of route_list) {
1027
- let match = route.pattern.exec(topic);
1028
- if (match) {
1029
- let params = route.keys
1030
- ? route.keys.reduce(
1031
- (o, k, i) => (o[k] = match[1+i], o)
1032
- , {})
1033
- : match.groups ?? match;
1034
- yield [route.tgt, params, route];} } } }
1033
+ for (let route of all_route_lists.flat()) {
1034
+ let match = route?.pattern.exec(topic);
1035
+ if (match) {
1036
+ let keys = route.keys;
1037
+ if (keys) {
1038
+ let k, i=0, params={__proto__:_regexparam};
1039
+ for (k of keys) {
1040
+ params[k] = match[++i];}
1041
+ yield [route.tgt, params, route];}
1042
+ else {
1043
+ yield [route.tgt, match.groups ?? match, route];} } } }
1035
1044
 
1036
1045
 
1037
1046
  function _route_remove(all_route_lists, query) {
@@ -1040,16 +1049,14 @@ function _route_remove(all_route_lists, query) {
1040
1049
  let idx_tip = 0;
1041
1050
  for (let route of lst) {
1042
1051
  // skip matching routes to remove from compacted list
1043
- if (route === query) continue
1044
- if (route.topic === query.topic) {
1045
- if (null == query.tgt) continue
1046
- if (route.tgt === query.tgt) continue}
1052
+ let skip = route === query;
1053
+ if (!skip && route.topic === query.topic)
1054
+ skip = (null == query.tgt) || (route.tgt === query.tgt);
1047
1055
 
1048
- lst[idx_tip++] = route;}
1056
+ if (!skip) lst[idx_tip++] = route;}
1049
1057
 
1050
1058
  // truncate remaining list
1051
- if (lst.splice(idx_tip).length)
1052
- ans = true;}
1059
+ lst.length = idx_tip;}
1053
1060
 
1054
1061
  return ans}
1055
1062
 
@@ -1666,7 +1673,7 @@ class MQTTCore extends MQTTBase {
1666
1673
 
1667
1674
  return this} }
1668
1675
 
1669
- const version = '0.6.4-deno';
1676
+ const version = '0.6.5-deno';
1670
1677
 
1671
1678
  const MQTTClient_v4 = /* #__PURE__ */
1672
1679
  with_topic_path_router(