@xyo-network/bridge-module-resolver 2.69.0-rc.1 → 2.69.0-rc.3

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.
@@ -13,6 +13,7 @@ class ProxyModule extends module_1.BaseEmitter {
13
13
  super({ config: proxyParams.bridge.targetConfig(proxyParams.address) });
14
14
  this.proxyParams = proxyParams;
15
15
  this.upResolver = new module_1.CompositeModuleResolver();
16
+ this._busyCount = 0;
16
17
  }
17
18
  get address() {
18
19
  return this.proxyParams.address.toLowerCase();
@@ -33,26 +34,53 @@ class ProxyModule extends module_1.BaseEmitter {
33
34
  addressPreviousHash() {
34
35
  throw Error('Not Implemented');
35
36
  }
36
- describe() {
37
- var _a;
37
+ busy(closure) {
38
38
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
39
- const description = {
40
- address: this.address,
41
- queries: this.queries,
42
- };
43
- if (this.config.name) {
44
- description.name = this.config.name;
39
+ if (this._busyCount <= 0) {
40
+ this._busyCount = 0;
41
+ const args = { busy: true, module: this };
42
+ yield this.emit('moduleBusy', args);
43
+ }
44
+ this._busyCount++;
45
+ try {
46
+ return yield closure();
45
47
  }
46
- const discover = yield this.discover();
47
- description.children = (0, compact_1.default)((_a = discover === null || discover === void 0 ? void 0 : discover.map((payload) => {
48
- const address = payload.schema === address_payload_plugin_1.AddressSchema ? payload.address : undefined;
49
- return address != this.address ? address : undefined;
50
- })) !== null && _a !== void 0 ? _a : []);
51
- return description;
48
+ finally {
49
+ this._busyCount--;
50
+ if (this._busyCount <= 0) {
51
+ this._busyCount = 0;
52
+ const args = { busy: false, module: this };
53
+ yield this.emit('moduleBusy', args);
54
+ }
55
+ }
56
+ });
57
+ }
58
+ describe() {
59
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
60
+ return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
61
+ var _a;
62
+ const description = {
63
+ address: this.address,
64
+ queries: this.queries,
65
+ };
66
+ if (this.config.name) {
67
+ description.name = this.config.name;
68
+ }
69
+ const discover = yield this.discover();
70
+ description.children = (0, compact_1.default)((_a = discover === null || discover === void 0 ? void 0 : discover.map((payload) => {
71
+ const address = payload.schema === address_payload_plugin_1.AddressSchema ? payload.address : undefined;
72
+ return address != this.address ? address : undefined;
73
+ })) !== null && _a !== void 0 ? _a : []);
74
+ return description;
75
+ }));
52
76
  });
53
77
  }
54
78
  discover() {
55
- return this.bridge.targetDiscover();
79
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
80
+ return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
81
+ return yield this.bridge.targetDiscover();
82
+ }));
83
+ });
56
84
  }
57
85
  manifest() {
58
86
  var _a;
@@ -67,9 +95,11 @@ class ProxyModule extends module_1.BaseEmitter {
67
95
  }
68
96
  query(query, payloads) {
69
97
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
70
- const result = (0, assert_1.assertEx)(yield this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed');
71
- yield this.emit('moduleQueried', { module: this, payloads, query, result });
72
- return result;
98
+ return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
99
+ const result = (0, assert_1.assertEx)(yield this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed');
100
+ yield this.emit('moduleQueried', { module: this, payloads, query, result });
101
+ return result;
102
+ }));
73
103
  });
74
104
  }
75
105
  queryable(query, payloads, queryConfig) {
@@ -79,12 +109,14 @@ class ProxyModule extends module_1.BaseEmitter {
79
109
  }
80
110
  resolve(nameOrAddressOrFilter, options) {
81
111
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
82
- if (typeof nameOrAddressOrFilter === 'string') {
83
- return yield this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options);
84
- }
85
- else {
86
- return yield this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options);
87
- }
112
+ return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
113
+ if (typeof nameOrAddressOrFilter === 'string') {
114
+ return yield this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options);
115
+ }
116
+ else {
117
+ return yield this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options);
118
+ }
119
+ }));
88
120
  });
89
121
  }
90
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.js","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProxyModule.js","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,gFAAmF;AAGnF,gEAA0F;AAC1F,gDAa4B;AAG5B,qEAAoC;AAGvB,QAAA,uBAAuB,GAA4B,iCAAiC,CAAA;AAYjG,MAAa,WAAY,SAAQ,oBAA0C;IAKzE,YAAmB,WAA8B;QAC/C,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QADtD,gBAAW,GAAX,WAAW,CAAmB;QAJxC,eAAU,GAAG,IAAI,gCAAuB,EAAE,CAAA;QAE3C,eAAU,GAAG,CAAC,CAAA;IAItB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;IAC/C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA;IAChC,CAAC;IAED,IAAI,MAAM;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,mBAAmB;QACjB,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAChC,CAAC;IAEK,IAAI,CAAI,OAAyB;;YACrC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;gBACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;gBACnB,MAAM,IAAI,GAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;aACpC;YACD,IAAI,CAAC,UAAU,EAAE,CAAA;YACjB,IAAI;gBACF,OAAO,MAAM,OAAO,EAAE,CAAA;aACvB;oBAAS;gBACR,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;oBACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;oBACnB,MAAM,IAAI,GAAwB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;oBAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;iBACpC;aACF;QACH,CAAC;KAAA;IAEK,QAAQ;;YACZ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;;gBAChC,MAAM,WAAW,GAAsB;oBACrC,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAA;gBACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;oBACpB,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;iBACpC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;gBAEtC,WAAW,CAAC,QAAQ,GAAG,IAAA,iBAAO,EAC5B,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBACxB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,sCAAa,CAAC,CAAC,CAAE,OAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;oBAClG,OAAO,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;gBACtD,CAAC,CAAC,mCAAI,EAAE,CACT,CAAA;gBAED,OAAO,WAAW,CAAA;YACpB,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAEK,QAAQ;;YACZ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;gBAChC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;YAC3C,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAED,QAAQ;;QACN,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,mCAAI,WAAW,CAAA;QAC5C,OAAO,EAAE,MAAM,kBAAI,IAAI,IAAK,IAAI,CAAC,MAAM,CAAE,EAAE,MAAM,EAAE,sCAAqB,EAAE,CAAA;IAC5E,CAAC;IAED,aAAa;QACX,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAChC,CAAC;IAED,YAAY;QACV,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAChC,CAAC;IAEK,KAAK,CAAkD,KAAQ,EAAE,QAAoB;;YACzF,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;gBAChC,MAAM,MAAM,GAAG,IAAA,iBAAQ,EAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAA;gBAC5G,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC3E,OAAO,MAAM,CAAA;YACf,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAEK,SAAS,CAAC,KAAwB,EAAE,QAAoB,EAAE,WAA0B;;YACxF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QACtF,CAAC;KAAA;IAKK,OAAO,CACX,qBAA6C,EAC7C,OAA6B;;YAE7B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;gBAChC,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE;oBAC7C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAA;iBACrF;qBAAM;oBACL,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAA;iBACrF;YACH,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AA1HD,kCA0HC"}
@@ -7,6 +7,7 @@ export const ProxyModuleConfigSchema = 'network.xyo.module.proxy.config';
7
7
  export class ProxyModule extends BaseEmitter {
8
8
  proxyParams;
9
9
  upResolver = new CompositeModuleResolver();
10
+ _busyCount = 0;
10
11
  constructor(proxyParams) {
11
12
  super({ config: proxyParams.bridge.targetConfig(proxyParams.address) });
12
13
  this.proxyParams = proxyParams;
@@ -30,23 +31,46 @@ export class ProxyModule extends BaseEmitter {
30
31
  addressPreviousHash() {
31
32
  throw Error('Not Implemented');
32
33
  }
33
- async describe() {
34
- const description = {
35
- address: this.address,
36
- queries: this.queries,
37
- };
38
- if (this.config.name) {
39
- description.name = this.config.name;
34
+ async busy(closure) {
35
+ if (this._busyCount <= 0) {
36
+ this._busyCount = 0;
37
+ const args = { busy: true, module: this };
38
+ await this.emit('moduleBusy', args);
39
+ }
40
+ this._busyCount++;
41
+ try {
42
+ return await closure();
43
+ }
44
+ finally {
45
+ this._busyCount--;
46
+ if (this._busyCount <= 0) {
47
+ this._busyCount = 0;
48
+ const args = { busy: false, module: this };
49
+ await this.emit('moduleBusy', args);
50
+ }
40
51
  }
41
- const discover = await this.discover();
42
- description.children = compact(discover?.map((payload) => {
43
- const address = payload.schema === AddressSchema ? payload.address : undefined;
44
- return address != this.address ? address : undefined;
45
- }) ?? []);
46
- return description;
47
52
  }
48
- discover() {
49
- return this.bridge.targetDiscover();
53
+ async describe() {
54
+ return await this.busy(async () => {
55
+ const description = {
56
+ address: this.address,
57
+ queries: this.queries,
58
+ };
59
+ if (this.config.name) {
60
+ description.name = this.config.name;
61
+ }
62
+ const discover = await this.discover();
63
+ description.children = compact(discover?.map((payload) => {
64
+ const address = payload.schema === AddressSchema ? payload.address : undefined;
65
+ return address != this.address ? address : undefined;
66
+ }) ?? []);
67
+ return description;
68
+ });
69
+ }
70
+ async discover() {
71
+ return await this.busy(async () => {
72
+ return await this.bridge.targetDiscover();
73
+ });
50
74
  }
51
75
  manifest() {
52
76
  const name = this.config.name ?? 'Anonymous';
@@ -59,20 +83,24 @@ export class ProxyModule extends BaseEmitter {
59
83
  throw Error('Not Implemented');
60
84
  }
61
85
  async query(query, payloads) {
62
- const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed');
63
- await this.emit('moduleQueried', { module: this, payloads, query, result });
64
- return result;
86
+ return await this.busy(async () => {
87
+ const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed');
88
+ await this.emit('moduleQueried', { module: this, payloads, query, result });
89
+ return result;
90
+ });
65
91
  }
66
92
  async queryable(query, payloads, queryConfig) {
67
93
  return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig);
68
94
  }
69
95
  async resolve(nameOrAddressOrFilter, options) {
70
- if (typeof nameOrAddressOrFilter === 'string') {
71
- return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options);
72
- }
73
- else {
74
- return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options);
75
- }
96
+ return await this.busy(async () => {
97
+ if (typeof nameOrAddressOrFilter === 'string') {
98
+ return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options);
99
+ }
100
+ else {
101
+ return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options);
102
+ }
103
+ });
76
104
  }
77
105
  }
78
106
  //# sourceMappingURL=ProxyModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.js","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProxyModule.js","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAkB,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAGnF,OAAO,EAAE,qBAAqB,EAAyB,MAAM,6BAA6B,CAAA;AAC1F,OAAO,EAEL,WAAW,EACX,uBAAuB,GAUxB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,OAAO,MAAM,gBAAgB,CAAA;AAGpC,MAAM,CAAC,MAAM,uBAAuB,GAA4B,iCAAiC,CAAA;AAYjG,MAAM,OAAO,WAAY,SAAQ,WAA0C;IAKtD;IAJV,UAAU,GAAG,IAAI,uBAAuB,EAAE,CAAA;IAE3C,UAAU,GAAG,CAAC,CAAA;IAEtB,YAAmB,WAA8B;QAC/C,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QADtD,gBAAW,GAAX,WAAW,CAAmB;IAEjD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;IAC/C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA;IAChC,CAAC;IAED,IAAI,MAAM;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,mBAAmB;QACjB,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,OAAyB;QACrC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;YACnB,MAAM,IAAI,GAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;SACpC;QACD,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI;YACF,OAAO,MAAM,OAAO,EAAE,CAAA;SACvB;gBAAS;YACR,IAAI,CAAC,UAAU,EAAE,CAAA;YACjB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;gBACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;gBACnB,MAAM,IAAI,GAAwB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;aACpC;SACF;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChC,MAAM,WAAW,GAAsB;gBACrC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAA;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBACpB,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;aACpC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;YAEtC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAC5B,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACxB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAE,OAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;gBAClG,OAAO,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;YACtD,CAAC,CAAC,IAAI,EAAE,CACT,CAAA;YAED,OAAO,WAAW,CAAA;QACpB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAC3C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAA;QAC5C,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IAC5E,CAAC;IAED,aAAa;QACX,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAChC,CAAC;IAED,YAAY;QACV,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,KAAK,CAAkD,KAAQ,EAAE,QAAoB;QACzF,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAA;YAC5G,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YAC3E,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAwB,EAAE,QAAoB,EAAE,WAA0B;QACxF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;IACtF,CAAC;IAKD,KAAK,CAAC,OAAO,CACX,qBAA6C,EAC7C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChC,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE;gBAC7C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAA;aACrF;iBAAM;gBACL,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAA;aACrF;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -16,6 +16,7 @@ export type ProxyModuleParams = ModuleParams<TProxyModuleConfig, {
16
16
  export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {
17
17
  proxyParams: ProxyModuleParams;
18
18
  readonly upResolver: CompositeModuleResolver;
19
+ private _busyCount;
19
20
  constructor(proxyParams: ProxyModuleParams);
20
21
  get address(): string;
21
22
  get bridge(): BridgeModule<import("@xyo-network/core").BaseParamsFields & {
@@ -66,8 +67,9 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
66
67
  get downResolver(): import("@xyo-network/module").ModuleResolver;
67
68
  get queries(): string[];
68
69
  addressPreviousHash(): Promise<AddressPreviousHashPayload>;
70
+ busy<R>(closure: () => Promise<R>): Promise<R>;
69
71
  describe(): Promise<ModuleDescription>;
70
- discover(): Promisable<Payload[]>;
72
+ discover(): Promise<Payload[]>;
71
73
  manifest(): Promisable<ModuleManifestPayload>;
72
74
  moduleAddress(): Promise<AddressPreviousHashPayload[]>;
73
75
  previousHash(): Promise<string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAyB,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC1F,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAG/G,WAAW,EAAE,iBAAiB;IAFjD,QAAQ,CAAC,UAAU,0BAAgC;gBAEhC,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAGzB;IAED,IAAI,YAAY,iDAEf;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAqB5C,QAAQ,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAIjC,QAAQ,IAAI,UAAU,CAAC,qBAAqB,CAAC;IAK7C,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAMlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
1
+ {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAyB,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC1F,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,uBAAuB,EAEvB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAGzB;IAED,IAAI,YAAY,iDAEf;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,IAAI,UAAU,CAAC,qBAAqB,CAAC;IAK7C,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAanG"}
package/package.json CHANGED
@@ -11,25 +11,25 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.9.3",
14
- "@xyo-network/account-model": "~2.69.0-rc.1",
15
- "@xyo-network/address-payload-plugin": "~2.69.0-rc.1",
16
- "@xyo-network/archivist-model": "~2.69.0-rc.1",
17
- "@xyo-network/archivist-wrapper": "~2.69.0-rc.1",
18
- "@xyo-network/boundwitness-builder": "~2.69.0-rc.1",
19
- "@xyo-network/bridge-model": "~2.69.0-rc.1",
20
- "@xyo-network/diviner": "~2.69.0-rc.1",
21
- "@xyo-network/diviner-model": "~2.69.0-rc.1",
22
- "@xyo-network/error": "~2.69.0-rc.1",
23
- "@xyo-network/manifest-model": "~2.69.0-rc.1",
24
- "@xyo-network/module": "~2.69.0-rc.1",
25
- "@xyo-network/module-model": "~2.69.0-rc.1",
26
- "@xyo-network/node-model": "~2.69.0-rc.1",
27
- "@xyo-network/node-wrapper": "~2.69.0-rc.1",
28
- "@xyo-network/payload-model": "~2.69.0-rc.1",
29
- "@xyo-network/promise": "~2.69.0-rc.1",
30
- "@xyo-network/sentinel": "~2.69.0-rc.1",
31
- "@xyo-network/witness-model": "~2.69.0-rc.1",
32
- "@xyo-network/witness-wrapper": "~2.69.0-rc.1",
14
+ "@xyo-network/account-model": "~2.69.0-rc.3",
15
+ "@xyo-network/address-payload-plugin": "~2.69.0-rc.3",
16
+ "@xyo-network/archivist-model": "~2.69.0-rc.3",
17
+ "@xyo-network/archivist-wrapper": "~2.69.0-rc.3",
18
+ "@xyo-network/boundwitness-builder": "~2.69.0-rc.3",
19
+ "@xyo-network/bridge-model": "~2.69.0-rc.3",
20
+ "@xyo-network/diviner": "~2.69.0-rc.3",
21
+ "@xyo-network/diviner-model": "~2.69.0-rc.3",
22
+ "@xyo-network/error": "~2.69.0-rc.3",
23
+ "@xyo-network/manifest-model": "~2.69.0-rc.3",
24
+ "@xyo-network/module": "~2.69.0-rc.3",
25
+ "@xyo-network/module-model": "~2.69.0-rc.3",
26
+ "@xyo-network/node-model": "~2.69.0-rc.3",
27
+ "@xyo-network/node-wrapper": "~2.69.0-rc.3",
28
+ "@xyo-network/payload-model": "~2.69.0-rc.3",
29
+ "@xyo-network/promise": "~2.69.0-rc.3",
30
+ "@xyo-network/sentinel": "~2.69.0-rc.3",
31
+ "@xyo-network/witness-model": "~2.69.0-rc.3",
32
+ "@xyo-network/witness-wrapper": "~2.69.0-rc.3",
33
33
  "lodash": "^4.17.21"
34
34
  },
35
35
  "devDependencies": {
@@ -70,6 +70,6 @@
70
70
  },
71
71
  "sideEffects": false,
72
72
  "types": "dist/types/index.d.ts",
73
- "version": "2.69.0-rc.1",
73
+ "version": "2.69.0-rc.3",
74
74
  "stableVersion": "2.68.0"
75
75
  }
@@ -7,6 +7,7 @@ import {
7
7
  AddressPreviousHashPayload,
8
8
  BaseEmitter,
9
9
  CompositeModuleResolver,
10
+ ModuleBusyEventArgs,
10
11
  ModuleConfig,
11
12
  ModuleDescription,
12
13
  ModuleEventData,
@@ -36,6 +37,8 @@ export type ProxyModuleParams = ModuleParams<
36
37
  export class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {
37
38
  readonly upResolver = new CompositeModuleResolver()
38
39
 
40
+ private _busyCount = 0
41
+
39
42
  constructor(public proxyParams: ProxyModuleParams) {
40
43
  super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })
41
44
  }
@@ -65,29 +68,52 @@ export class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> impl
65
68
  throw Error('Not Implemented')
66
69
  }
67
70
 
68
- async describe(): Promise<ModuleDescription> {
69
- const description: ModuleDescription = {
70
- address: this.address,
71
- queries: this.queries,
71
+ async busy<R>(closure: () => Promise<R>) {
72
+ if (this._busyCount <= 0) {
73
+ this._busyCount = 0
74
+ const args: ModuleBusyEventArgs = { busy: true, module: this }
75
+ await this.emit('moduleBusy', args)
72
76
  }
73
- if (this.config.name) {
74
- description.name = this.config.name
77
+ this._busyCount++
78
+ try {
79
+ return await closure()
80
+ } finally {
81
+ this._busyCount--
82
+ if (this._busyCount <= 0) {
83
+ this._busyCount = 0
84
+ const args: ModuleBusyEventArgs = { busy: false, module: this }
85
+ await this.emit('moduleBusy', args)
86
+ }
75
87
  }
88
+ }
76
89
 
77
- const discover = await this.discover()
90
+ async describe(): Promise<ModuleDescription> {
91
+ return await this.busy(async () => {
92
+ const description: ModuleDescription = {
93
+ address: this.address,
94
+ queries: this.queries,
95
+ }
96
+ if (this.config.name) {
97
+ description.name = this.config.name
98
+ }
99
+
100
+ const discover = await this.discover()
78
101
 
79
- description.children = compact(
80
- discover?.map((payload) => {
81
- const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined
82
- return address != this.address ? address : undefined
83
- }) ?? [],
84
- )
102
+ description.children = compact(
103
+ discover?.map((payload) => {
104
+ const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined
105
+ return address != this.address ? address : undefined
106
+ }) ?? [],
107
+ )
85
108
 
86
- return description
109
+ return description
110
+ })
87
111
  }
88
112
 
89
- discover(): Promisable<Payload[]> {
90
- return this.bridge.targetDiscover()
113
+ async discover(): Promise<Payload[]> {
114
+ return await this.busy(async () => {
115
+ return await this.bridge.targetDiscover()
116
+ })
91
117
  }
92
118
 
93
119
  manifest(): Promisable<ModuleManifestPayload> {
@@ -104,9 +130,11 @@ export class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> impl
104
130
  }
105
131
 
106
132
  async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {
107
- const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')
108
- await this.emit('moduleQueried', { module: this, payloads, query, result })
109
- return result
133
+ return await this.busy(async () => {
134
+ const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')
135
+ await this.emit('moduleQueried', { module: this, payloads, query, result })
136
+ return result
137
+ })
110
138
  }
111
139
 
112
140
  async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {
@@ -120,10 +148,12 @@ export class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> impl
120
148
  nameOrAddressOrFilter?: ModuleFilter | string,
121
149
  options?: ModuleFilterOptions,
122
150
  ): Promise<ModuleInstance | ModuleInstance[] | undefined> {
123
- if (typeof nameOrAddressOrFilter === 'string') {
124
- return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)
125
- } else {
126
- return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)
127
- }
151
+ return await this.busy(async () => {
152
+ if (typeof nameOrAddressOrFilter === 'string') {
153
+ return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)
154
+ } else {
155
+ return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)
156
+ }
157
+ })
128
158
  }
129
159
  }