u8-mqtt 0.6.4 → 0.6.6
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.
- package/cjs/basic-v4.cjs +1 -1
- package/cjs/basic-v5.cjs +1 -1
- package/cjs/full-v4.cjs +46 -25
- package/cjs/full-v4.cjs.map +1 -1
- package/cjs/full-v5.cjs +46 -25
- package/cjs/full-v5.cjs.map +1 -1
- package/cjs/index.cjs +46 -25
- package/cjs/index.cjs.map +1 -1
- package/cjs/v4.cjs +46 -25
- package/cjs/v4.cjs.map +1 -1
- package/cjs/v5.cjs +46 -25
- package/cjs/v5.cjs.map +1 -1
- package/code/router_path.jsy +34 -21
- package/code/with_topic_router.jsy +3 -0
- package/esm/basic-v4.js +1 -1
- package/esm/basic-v5.js +1 -1
- package/esm/deno/basic-v4.js +1 -1
- package/esm/deno/basic-v5.js +1 -1
- package/esm/deno/full-v4.js +46 -25
- package/esm/deno/full-v4.js.map +1 -1
- package/esm/deno/full-v5.js +46 -25
- package/esm/deno/full-v5.js.map +1 -1
- package/esm/deno/index.js +46 -25
- package/esm/deno/index.js.map +1 -1
- package/esm/deno/v4.js +46 -25
- package/esm/deno/v4.js.map +1 -1
- package/esm/deno/v5.js +46 -25
- package/esm/deno/v5.js.map +1 -1
- package/esm/full-v4.js +46 -25
- package/esm/full-v4.js.map +1 -1
- package/esm/full-v5.js +46 -25
- package/esm/full-v5.js.map +1 -1
- package/esm/index.js +46 -25
- package/esm/index.js.map +1 -1
- package/esm/node/basic-v4.js +1 -1
- package/esm/node/basic-v4.mjs +1 -1
- package/esm/node/basic-v5.js +1 -1
- package/esm/node/basic-v5.mjs +1 -1
- package/esm/node/full-v4.js +46 -25
- package/esm/node/full-v4.js.map +1 -1
- package/esm/node/full-v4.mjs +46 -25
- package/esm/node/full-v4.mjs.map +1 -1
- package/esm/node/full-v5.js +46 -25
- package/esm/node/full-v5.js.map +1 -1
- package/esm/node/full-v5.mjs +46 -25
- package/esm/node/full-v5.mjs.map +1 -1
- package/esm/node/index.js +46 -25
- package/esm/node/index.js.map +1 -1
- package/esm/node/index.mjs +46 -25
- package/esm/node/index.mjs.map +1 -1
- package/esm/node/v4.js +46 -25
- package/esm/node/v4.js.map +1 -1
- package/esm/node/v4.mjs +46 -25
- package/esm/node/v4.mjs.map +1 -1
- package/esm/node/v5.js +46 -25
- package/esm/node/v5.js.map +1 -1
- package/esm/node/v5.mjs +46 -25
- package/esm/node/v5.mjs.map +1 -1
- package/esm/v4.js +46 -25
- package/esm/v4.js.map +1 -1
- package/esm/v5.js +46 -25
- package/esm/v5.js.map +1 -1
- package/esm/web/basic-v4.js +1 -1
- package/esm/web/basic-v4.min.js +1 -1
- package/esm/web/basic-v4.min.js.br +0 -0
- package/esm/web/basic-v4.min.js.gz +0 -0
- package/esm/web/basic-v5.js +1 -1
- package/esm/web/basic-v5.min.js +1 -1
- package/esm/web/basic-v5.min.js.br +0 -0
- package/esm/web/basic-v5.min.js.gz +0 -0
- package/esm/web/full-v4.js +46 -25
- package/esm/web/full-v4.js.map +1 -1
- package/esm/web/full-v4.min.js +1 -1
- package/esm/web/full-v4.min.js.br +0 -0
- package/esm/web/full-v4.min.js.gz +0 -0
- package/esm/web/full-v5.js +46 -25
- package/esm/web/full-v5.js.map +1 -1
- package/esm/web/full-v5.min.js +1 -1
- package/esm/web/full-v5.min.js.br +0 -0
- package/esm/web/full-v5.min.js.gz +0 -0
- package/esm/web/index.js +46 -25
- package/esm/web/index.js.map +1 -1
- package/esm/web/index.min.js +1 -1
- package/esm/web/index.min.js.br +0 -0
- package/esm/web/index.min.js.gz +0 -0
- package/esm/web/v4.js +46 -25
- package/esm/web/v4.js.map +1 -1
- package/esm/web/v4.min.js +1 -1
- package/esm/web/v4.min.js.br +0 -0
- package/esm/web/v4.min.js.gz +0 -0
- package/esm/web/v5.js +46 -25
- package/esm/web/v5.js.map +1 -1
- package/esm/web/v5.min.js +1 -1
- package/esm/web/v5.min.js.br +0 -0
- package/esm/web/v5.min.js.gz +0 -0
- package/package.json +2 -2
package/esm/node/full-v5.mjs
CHANGED
|
@@ -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
|
-
|
|
848
|
-
|
|
849
|
-
|
|
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(
|
|
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);
|
|
@@ -893,6 +897,7 @@ class AbstractTopicRouter ::
|
|
|
893
897
|
async invoke(pkt, ctx) ::
|
|
894
898
|
add(topic_route, ...args) ::
|
|
895
899
|
remove(topic_route, priority) ::
|
|
900
|
+
count(topic_route) ::
|
|
896
901
|
clear(priority) ::
|
|
897
902
|
find(topic) :: // optional
|
|
898
903
|
mqtt_topic(topic_route)
|
|
@@ -932,6 +937,8 @@ const with_topic_router = mqtt_topic_router =>
|
|
|
932
937
|
|
|
933
938
|
let fn = args.at(-1)?.call ? args.pop() : null;
|
|
934
939
|
router.remove(topic_route, true, fn);
|
|
940
|
+
if (0 !== router.count(topic_route) ) {
|
|
941
|
+
return null}
|
|
935
942
|
|
|
936
943
|
let topic = router.mqtt_topic(topic_route);
|
|
937
944
|
return this.unsubscribe(topic, ...args ) }// topic_prefix
|
|
@@ -1000,6 +1007,17 @@ function mqtt_topic_path_router() {
|
|
|
1000
1007
|
query ={topic: query, tgt: args.pop()}; }
|
|
1001
1008
|
return _route_remove(lst, query)}
|
|
1002
1009
|
|
|
1010
|
+
, count(topic_route) {
|
|
1011
|
+
if (! topic_route) {
|
|
1012
|
+
return pri_lsts.reduce((r,l) => r+l.length, 0)}
|
|
1013
|
+
|
|
1014
|
+
let count = 0;
|
|
1015
|
+
for (let lst of pri_lsts) {
|
|
1016
|
+
for (let route of lst) {
|
|
1017
|
+
if (topic_route === route.topic) {
|
|
1018
|
+
count++;} } }
|
|
1019
|
+
return count}
|
|
1020
|
+
|
|
1003
1021
|
, clear(priority) {
|
|
1004
1022
|
if (null == priority) {
|
|
1005
1023
|
pri_lsts = [[],[]]; }// null clears both lists
|
|
@@ -1023,38 +1041,41 @@ function mqtt_topic_path_router() {
|
|
|
1023
1041
|
await ctx.mqtt.puback(pkt);} } } }
|
|
1024
1042
|
|
|
1025
1043
|
|
|
1044
|
+
const _regexparam ={
|
|
1045
|
+
get wild() {return this['*']}
|
|
1046
|
+
, set wild(v) {return this['*']=wild} };
|
|
1047
|
+
|
|
1026
1048
|
function * _routes_iter(all_route_lists, topic) {
|
|
1027
1049
|
topic = topic.replace(/^[\/]*/, '/'); // ensure '/' prefix for regexparam library
|
|
1028
|
-
for (let
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1050
|
+
for (let route of all_route_lists.flat()) {
|
|
1051
|
+
let match = route?.pattern.exec(topic);
|
|
1052
|
+
if (match) {
|
|
1053
|
+
let keys = route.keys;
|
|
1054
|
+
if (keys) {
|
|
1055
|
+
let k, i=0, params={__proto__:_regexparam};
|
|
1056
|
+
for (k of keys) {
|
|
1057
|
+
params[k] = match[++i];}
|
|
1058
|
+
yield [route.tgt, params, route];}
|
|
1059
|
+
else {
|
|
1060
|
+
yield [route.tgt, match.groups ?? match, route];} } } }
|
|
1038
1061
|
|
|
1039
1062
|
|
|
1040
1063
|
function _route_remove(all_route_lists, query) {
|
|
1041
|
-
let
|
|
1064
|
+
let n_removed = 0;
|
|
1042
1065
|
for (let lst of all_route_lists) {
|
|
1043
1066
|
let idx_tip = 0;
|
|
1044
1067
|
for (let route of lst) {
|
|
1045
|
-
// skip matching routes to remove from compacted list
|
|
1046
|
-
if (route === query) continue
|
|
1047
1068
|
if (route.topic === query.topic) {
|
|
1048
|
-
if (null == query.tgt)
|
|
1049
|
-
|
|
1069
|
+
if (null == query.tgt || route.tgt === query.tgt) {
|
|
1070
|
+
// skip matching routes to remove from compacted list
|
|
1071
|
+
n_removed++;
|
|
1072
|
+
continue} }
|
|
1050
1073
|
|
|
1051
1074
|
lst[idx_tip++] = route;}
|
|
1052
1075
|
|
|
1053
1076
|
// truncate remaining list
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
return ans}
|
|
1077
|
+
lst.length = idx_tip;}
|
|
1078
|
+
return n_removed}
|
|
1058
1079
|
|
|
1059
1080
|
function decode_varint(u8, i0=0, invalid) {
|
|
1060
1081
|
let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);
|
|
@@ -1669,7 +1690,7 @@ class MQTTCore extends MQTTBase {
|
|
|
1669
1690
|
|
|
1670
1691
|
return this} }
|
|
1671
1692
|
|
|
1672
|
-
const version = '0.6.
|
|
1693
|
+
const version = '0.6.6-node';
|
|
1673
1694
|
|
|
1674
1695
|
const MQTTClient_v4 = /* #__PURE__ */
|
|
1675
1696
|
with_topic_path_router(
|