@xyo-network/module-abstract 2.66.9 → 2.67.0-rc.2
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/dist/cjs/AbstractModule.js +473 -36
- package/dist/cjs/AbstractModule.js.map +1 -1
- package/dist/cjs/AbstractModuleInstance.js +40 -0
- package/dist/cjs/AbstractModuleInstance.js.map +1 -0
- package/dist/cjs/Resolver/SimpleModuleResolver.js +1 -1
- package/dist/cjs/Resolver/SimpleModuleResolver.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/AbstractModule.js +437 -22
- package/dist/esm/AbstractModule.js.map +1 -1
- package/dist/esm/AbstractModuleInstance.js +35 -0
- package/dist/esm/AbstractModuleInstance.js.map +1 -0
- package/dist/esm/Resolver/SimpleModuleResolver.js +1 -1
- package/dist/esm/Resolver/SimpleModuleResolver.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/types/AbstractModule.d.ts +69 -11
- package/dist/types/AbstractModule.d.ts.map +1 -1
- package/dist/types/AbstractModuleInstance.d.ts +14 -0
- package/dist/types/AbstractModuleInstance.d.ts.map +1 -0
- package/dist/types/Resolver/SimpleModuleResolver.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +21 -21
- package/src/AbstractModule.ts +577 -27
- package/src/AbstractModuleInstance.ts +59 -0
- package/src/Resolver/SimpleModuleResolver.ts +11 -10
- package/src/index.ts +1 -1
- package/dist/cjs/AbstractIndirectModule.js +0 -492
- package/dist/cjs/AbstractIndirectModule.js.map +0 -1
- package/dist/docs.json +0 -36195
- package/dist/esm/AbstractIndirectModule.js +0 -446
- package/dist/esm/AbstractIndirectModule.js.map +0 -1
- package/dist/types/AbstractIndirectModule.d.ts +0 -76
- package/dist/types/AbstractIndirectModule.d.ts.map +0 -1
- package/src/AbstractIndirectModule.ts +0 -579
|
@@ -103,7 +103,7 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
103
103
|
|
|
104
104
|
private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: T[], name?: string[]): T[] {
|
|
105
105
|
if (name) {
|
|
106
|
-
return compact(name.map((name) => modules.filter((module) => module.config
|
|
106
|
+
return compact(name.map((name) => modules.filter((module) => module.config?.name === name)).flat())
|
|
107
107
|
}
|
|
108
108
|
return modules
|
|
109
109
|
}
|
|
@@ -111,15 +111,16 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
111
111
|
private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: T[], query?: string[][]): T[] {
|
|
112
112
|
return query
|
|
113
113
|
? compact(
|
|
114
|
-
modules.filter(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
114
|
+
modules.filter(
|
|
115
|
+
(module) =>
|
|
116
|
+
query?.reduce((supported, queryList) => {
|
|
117
|
+
return (
|
|
118
|
+
queryList.reduce((supported, query) => {
|
|
119
|
+
const queryable = module.queries.includes(query)
|
|
120
|
+
return supported && queryable
|
|
121
|
+
}, true) || supported
|
|
122
|
+
)
|
|
123
|
+
}, false),
|
|
123
124
|
),
|
|
124
125
|
)
|
|
125
126
|
: modules
|
package/src/index.ts
CHANGED
|
@@ -1,492 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AbstractIndirectModule = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
/* eslint-disable max-lines */
|
|
6
|
-
const assert_1 = require("@xylabs/assert");
|
|
7
|
-
const exists_1 = require("@xylabs/exists");
|
|
8
|
-
const account_1 = require("@xyo-network/account");
|
|
9
|
-
const address_payload_plugin_1 = require("@xyo-network/address-payload-plugin");
|
|
10
|
-
const archivist_model_1 = require("@xyo-network/archivist-model");
|
|
11
|
-
const boundwitness_builder_1 = require("@xyo-network/boundwitness-builder");
|
|
12
|
-
const config_payload_plugin_1 = require("@xyo-network/config-payload-plugin");
|
|
13
|
-
const error_1 = require("@xyo-network/error");
|
|
14
|
-
const manifest_model_1 = require("@xyo-network/manifest-model");
|
|
15
|
-
const module_model_1 = require("@xyo-network/module-model");
|
|
16
|
-
const payload_builder_1 = require("@xyo-network/payload-builder");
|
|
17
|
-
const promise_1 = require("@xyo-network/promise");
|
|
18
|
-
const query_payload_plugin_1 = require("@xyo-network/query-payload-plugin");
|
|
19
|
-
const shared_1 = require("@xyo-network/shared");
|
|
20
|
-
const compact_1 = tslib_1.__importDefault(require("lodash/compact"));
|
|
21
|
-
const BaseEmitter_1 = require("./BaseEmitter");
|
|
22
|
-
const Error_1 = require("./Error");
|
|
23
|
-
const QueryValidator_1 = require("./QueryValidator");
|
|
24
|
-
const Resolver_1 = require("./Resolver");
|
|
25
|
-
/** @description Abstract class for modules that allow access only through querying and not through direct calls */
|
|
26
|
-
class AbstractIndirectModule extends BaseEmitter_1.BaseEmitter {
|
|
27
|
-
constructor(privateConstructorKey, params) {
|
|
28
|
-
(0, assert_1.assertEx)(AbstractIndirectModule.privateConstructorKey === privateConstructorKey, 'Use create function instead of constructor');
|
|
29
|
-
// Clone params to prevent mutation of the incoming object
|
|
30
|
-
const mutatedParams = Object.assign({}, params);
|
|
31
|
-
super(mutatedParams);
|
|
32
|
-
this.downResolver = new Resolver_1.CompositeModuleResolver();
|
|
33
|
-
this.upResolver = new Resolver_1.CompositeModuleResolver();
|
|
34
|
-
this._account = undefined;
|
|
35
|
-
this._baseModuleQueryAccountPaths = {
|
|
36
|
-
[module_model_1.ModuleAddressQuerySchema]: '1',
|
|
37
|
-
[module_model_1.ModuleDescribeQuerySchema]: '4',
|
|
38
|
-
[module_model_1.ModuleDiscoverQuerySchema]: '2',
|
|
39
|
-
[module_model_1.ModuleManifestQuerySchema]: '5',
|
|
40
|
-
[module_model_1.ModuleSubscribeQuerySchema]: '3',
|
|
41
|
-
};
|
|
42
|
-
this._queryAccounts = {
|
|
43
|
-
[module_model_1.ModuleAddressQuerySchema]: undefined,
|
|
44
|
-
[module_model_1.ModuleDescribeQuerySchema]: undefined,
|
|
45
|
-
[module_model_1.ModuleDiscoverQuerySchema]: undefined,
|
|
46
|
-
[module_model_1.ModuleManifestQuerySchema]: undefined,
|
|
47
|
-
[module_model_1.ModuleSubscribeQuerySchema]: undefined,
|
|
48
|
-
};
|
|
49
|
-
this._startPromise = undefined;
|
|
50
|
-
this._started = undefined;
|
|
51
|
-
this._busyCount = 0;
|
|
52
|
-
this.commitArchivist = () => this.getArchivist('commit');
|
|
53
|
-
this.readArchivist = () => this.getArchivist('read');
|
|
54
|
-
this.writeArchivist = () => this.getArchivist('write');
|
|
55
|
-
this.supportedQueryValidator = new QueryValidator_1.SupportedQueryValidator(this).queryable;
|
|
56
|
-
this.moduleConfigQueryValidator = new QueryValidator_1.ModuleConfigQueryValidator(mutatedParams === null || mutatedParams === void 0 ? void 0 : mutatedParams.config).queryable;
|
|
57
|
-
}
|
|
58
|
-
static get configSchema() {
|
|
59
|
-
return this.configSchemas[0];
|
|
60
|
-
}
|
|
61
|
-
get account() {
|
|
62
|
-
return (0, assert_1.assertEx)(this._account, 'Missing account');
|
|
63
|
-
}
|
|
64
|
-
get address() {
|
|
65
|
-
return this.account.address;
|
|
66
|
-
}
|
|
67
|
-
get allowAnonymous() {
|
|
68
|
-
var _a;
|
|
69
|
-
return !!((_a = this.config.security) === null || _a === void 0 ? void 0 : _a.allowAnonymous);
|
|
70
|
-
}
|
|
71
|
-
get config() {
|
|
72
|
-
return this.params.config;
|
|
73
|
-
}
|
|
74
|
-
get ephemeralQueryAccountEnabled() {
|
|
75
|
-
return !!this.params.ephemeralQueryAccountEnabled;
|
|
76
|
-
}
|
|
77
|
-
get queries() {
|
|
78
|
-
return [module_model_1.ModuleDiscoverQuerySchema, module_model_1.ModuleAddressQuerySchema, module_model_1.ModuleSubscribeQuerySchema];
|
|
79
|
-
}
|
|
80
|
-
get queryAccountPaths() {
|
|
81
|
-
return Object.assign(Object.assign({}, this._baseModuleQueryAccountPaths), this._queryAccountPaths);
|
|
82
|
-
}
|
|
83
|
-
get queryAccounts() {
|
|
84
|
-
return this._queryAccounts;
|
|
85
|
-
}
|
|
86
|
-
static create(params) {
|
|
87
|
-
var _a, _b, _c, _d, _e, _f;
|
|
88
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
89
|
-
if (!this.configSchemas || this.configSchemas.length === 0) {
|
|
90
|
-
throw Error(`Missing configSchema [${(_a = params === null || params === void 0 ? void 0 : params.config) === null || _a === void 0 ? void 0 : _a.schema}][${this.name}]`);
|
|
91
|
-
}
|
|
92
|
-
const schema = (_c = (_b = params === null || params === void 0 ? void 0 : params.config) === null || _b === void 0 ? void 0 : _b.schema) !== null && _c !== void 0 ? _c : this.configSchema;
|
|
93
|
-
const allowedSchemas = this.configSchemas;
|
|
94
|
-
(0, assert_1.assertEx)(allowedSchemas.filter((allowedSchema) => allowedSchema === schema).length > 0, `Bad Config Schema [Received ${schema}] [Expected ${JSON.stringify(allowedSchemas)}]`);
|
|
95
|
-
const mutatedConfig = Object.assign(Object.assign({}, params === null || params === void 0 ? void 0 : params.config), { schema });
|
|
96
|
-
(_d = params === null || params === void 0 ? void 0 : params.logger) === null || _d === void 0 ? void 0 : _d.debug(`config: ${JSON.stringify(mutatedConfig, null, 2)}`);
|
|
97
|
-
const mutatedParams = Object.assign(Object.assign({}, params), { config: mutatedConfig });
|
|
98
|
-
const newModule = new this(AbstractIndirectModule.privateConstructorKey, mutatedParams);
|
|
99
|
-
yield ((_e = newModule.loadAccount) === null || _e === void 0 ? void 0 : _e.call(newModule));
|
|
100
|
-
if (!AbstractIndirectModule.enableLazyLoad) {
|
|
101
|
-
yield ((_f = newModule.start) === null || _f === void 0 ? void 0 : _f.call(newModule));
|
|
102
|
-
}
|
|
103
|
-
return newModule;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
static factory(params) {
|
|
107
|
-
return module_model_1.ModuleFactory.withParams(this, params);
|
|
108
|
-
}
|
|
109
|
-
busy(closure) {
|
|
110
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
if (AbstractIndirectModule.enableBusy) {
|
|
112
|
-
if (this._busyCount <= 0) {
|
|
113
|
-
this._busyCount = 0;
|
|
114
|
-
const args = { busy: true, module: this };
|
|
115
|
-
yield this.emit('moduleBusy', args);
|
|
116
|
-
}
|
|
117
|
-
this._busyCount++;
|
|
118
|
-
try {
|
|
119
|
-
return yield closure();
|
|
120
|
-
}
|
|
121
|
-
finally {
|
|
122
|
-
this._busyCount--;
|
|
123
|
-
if (this._busyCount <= 0) {
|
|
124
|
-
this._busyCount = 0;
|
|
125
|
-
const args = { busy: false, module: this };
|
|
126
|
-
yield this.emit('moduleBusy', args);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
return closure();
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
loadAccount() {
|
|
136
|
-
var _a;
|
|
137
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
if (!this._account) {
|
|
139
|
-
const activeLogger = (_a = this.params.logger) !== null && _a !== void 0 ? _a : AbstractIndirectModule.defaultLogger;
|
|
140
|
-
let { account } = this.params;
|
|
141
|
-
const { wallet, accountDerivationPath } = this.params;
|
|
142
|
-
if (wallet) {
|
|
143
|
-
account = (0, assert_1.assertEx)(accountDerivationPath ? yield wallet.derivePath(accountDerivationPath) : wallet, 'Failed to derive account from path');
|
|
144
|
-
}
|
|
145
|
-
this.params.logger = activeLogger ? new shared_1.IdLogger(activeLogger, () => `0x${account.address}`) : undefined;
|
|
146
|
-
if (!account)
|
|
147
|
-
console.warn(`AbstractModule.loadAccount: No account provided - Creating Random account [${this.config.schema}]`);
|
|
148
|
-
this._account = account !== null && account !== void 0 ? account : (yield account_1.HDWallet.random());
|
|
149
|
-
}
|
|
150
|
-
return this._account;
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
previousHash() {
|
|
154
|
-
return this.account.previousHash;
|
|
155
|
-
}
|
|
156
|
-
query(query, payloads, queryConfig) {
|
|
157
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
158
|
-
return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
159
|
-
yield this.started('throw');
|
|
160
|
-
const result = yield this.queryHandler((0, assert_1.assertEx)(boundwitness_builder_1.QueryBoundWitnessWrapper.unwrap(query)), payloads, queryConfig);
|
|
161
|
-
const args = { module: this, payloads, query, result };
|
|
162
|
-
yield this.emit('moduleQueried', args);
|
|
163
|
-
return result;
|
|
164
|
-
}));
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
queryable(query, payloads, queryConfig) {
|
|
168
|
-
if (!this.started('warn'))
|
|
169
|
-
return false;
|
|
170
|
-
const configValidator = queryConfig
|
|
171
|
-
? new QueryValidator_1.ModuleConfigQueryValidator(Object.assign({}, this.config, queryConfig)).queryable
|
|
172
|
-
: this.moduleConfigQueryValidator;
|
|
173
|
-
const validators = [this.supportedQueryValidator, configValidator];
|
|
174
|
-
return validators.every((validator) => validator(query, payloads));
|
|
175
|
-
}
|
|
176
|
-
resolve(nameOrAddressOrFilter, options) {
|
|
177
|
-
var _a, _b;
|
|
178
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
179
|
-
const direction = (_a = options === null || options === void 0 ? void 0 : options.direction) !== null && _a !== void 0 ? _a : 'all';
|
|
180
|
-
const up = direction === 'up' || direction === 'all';
|
|
181
|
-
const down = direction === 'down' || direction === 'all';
|
|
182
|
-
switch (typeof nameOrAddressOrFilter) {
|
|
183
|
-
case 'string': {
|
|
184
|
-
return ((_b = (down ? yield this.downResolver.resolve(nameOrAddressOrFilter) : undefined)) !== null && _b !== void 0 ? _b : (up ? yield this.upResolver.resolve(nameOrAddressOrFilter) : undefined));
|
|
185
|
-
}
|
|
186
|
-
default: {
|
|
187
|
-
const filter = nameOrAddressOrFilter;
|
|
188
|
-
return [...(down ? yield this.downResolver.resolve(filter) : []), ...(up ? yield this.upResolver.resolve(filter) : [])].filter(module_model_1.duplicateModules);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
start(_timeout) {
|
|
194
|
-
var _a;
|
|
195
|
-
//using promise as mutex
|
|
196
|
-
this._startPromise = (_a = this._startPromise) !== null && _a !== void 0 ? _a : this.startHandler();
|
|
197
|
-
return this._startPromise;
|
|
198
|
-
}
|
|
199
|
-
started(notStartedAction = 'log', tryStart = true) {
|
|
200
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
201
|
-
const started = yield this._started;
|
|
202
|
-
if (started === true) {
|
|
203
|
-
return true;
|
|
204
|
-
}
|
|
205
|
-
if (!started) {
|
|
206
|
-
//using promise as mutex
|
|
207
|
-
this._started = (() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
208
|
-
var _a, _b, _c;
|
|
209
|
-
if (tryStart) {
|
|
210
|
-
try {
|
|
211
|
-
yield this.start();
|
|
212
|
-
return true;
|
|
213
|
-
}
|
|
214
|
-
catch (ex) {
|
|
215
|
-
(0, error_1.handleError)(ex, (error) => {
|
|
216
|
-
var _a;
|
|
217
|
-
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(`Autostart of Module Failed: ${error.message})`);
|
|
218
|
-
this._started = undefined;
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
switch (notStartedAction) {
|
|
223
|
-
case 'throw':
|
|
224
|
-
throw Error(`Module not Started [${this.address}]`);
|
|
225
|
-
case 'warn':
|
|
226
|
-
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn('Module not started');
|
|
227
|
-
break;
|
|
228
|
-
case 'error':
|
|
229
|
-
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.error('Module not started');
|
|
230
|
-
break;
|
|
231
|
-
case 'none':
|
|
232
|
-
break;
|
|
233
|
-
case 'log':
|
|
234
|
-
default: {
|
|
235
|
-
(_c = this.logger) === null || _c === void 0 ? void 0 : _c.log('Module not started');
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return false;
|
|
240
|
-
}))();
|
|
241
|
-
}
|
|
242
|
-
if (!this._started) {
|
|
243
|
-
throw 'Failed to create start promise';
|
|
244
|
-
}
|
|
245
|
-
return yield this._started;
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
stop(_timeout) {
|
|
249
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
250
|
-
return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
251
|
-
const result = yield this.stopHandler();
|
|
252
|
-
this._started = undefined;
|
|
253
|
-
this._startPromise = undefined;
|
|
254
|
-
return result;
|
|
255
|
-
}));
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
bindHashes(hashes, schema, account) {
|
|
259
|
-
const promise = new promise_1.PromiseEx((resolve) => {
|
|
260
|
-
const result = this.bindHashesInternal(hashes, schema, account);
|
|
261
|
-
resolve === null || resolve === void 0 ? void 0 : resolve(result);
|
|
262
|
-
return result;
|
|
263
|
-
}, account);
|
|
264
|
-
return promise;
|
|
265
|
-
}
|
|
266
|
-
bindHashesInternal(hashes, schema, account) {
|
|
267
|
-
var _a;
|
|
268
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
269
|
-
const builder = new boundwitness_builder_1.BoundWitnessBuilder().hashes(hashes, schema).witness(this.account);
|
|
270
|
-
const result = (yield (account ? builder.witness(account) : builder).build())[0];
|
|
271
|
-
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug(`result: ${JSON.stringify(result, null, 2)}`);
|
|
272
|
-
return result;
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
bindQuery(query, payloads, account) {
|
|
276
|
-
const promise = new promise_1.PromiseEx((resolve) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
277
|
-
const result = yield this.bindQueryInternal(query, payloads, account);
|
|
278
|
-
resolve === null || resolve === void 0 ? void 0 : resolve(result);
|
|
279
|
-
return result;
|
|
280
|
-
}), account);
|
|
281
|
-
return promise;
|
|
282
|
-
}
|
|
283
|
-
bindQueryInternal(query, payloads, account) {
|
|
284
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
285
|
-
const builder = new boundwitness_builder_1.QueryBoundWitnessBuilder().payloads(payloads).witness(this.account).query(query);
|
|
286
|
-
const result = yield (account ? builder.witness(account) : builder).build();
|
|
287
|
-
return result;
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
bindQueryResult(query, payloads, additionalWitnesses = [], errors) {
|
|
291
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
292
|
-
const builder = new boundwitness_builder_1.BoundWitnessBuilder().payloads(payloads).errors(errors);
|
|
293
|
-
const queryWitnessAccount = this.queryAccounts[query.schema];
|
|
294
|
-
const witnesses = [this.account, queryWitnessAccount, ...additionalWitnesses].filter(exists_1.exists);
|
|
295
|
-
builder.witnesses(witnesses);
|
|
296
|
-
const result = [(yield builder.build())[0], payloads, errors !== null && errors !== void 0 ? errors : []];
|
|
297
|
-
return [result, witnesses];
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
describeHandler() {
|
|
301
|
-
var _a;
|
|
302
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
303
|
-
const description = {
|
|
304
|
-
address: this.address,
|
|
305
|
-
queries: this.queries,
|
|
306
|
-
schema: module_model_1.ModuleDescriptionSchema,
|
|
307
|
-
};
|
|
308
|
-
if (this.config.name) {
|
|
309
|
-
description.name = this.config.name;
|
|
310
|
-
}
|
|
311
|
-
const discover = yield this.discoverHandler();
|
|
312
|
-
description.children = (0, compact_1.default)((_a = discover === null || discover === void 0 ? void 0 : discover.map((payload) => {
|
|
313
|
-
const address = payload.schema === address_payload_plugin_1.AddressSchema ? payload.address : undefined;
|
|
314
|
-
return address != this.address ? address : undefined;
|
|
315
|
-
})) !== null && _a !== void 0 ? _a : []);
|
|
316
|
-
return description;
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
discoverHandler() {
|
|
320
|
-
const config = this.config;
|
|
321
|
-
const address = new payload_builder_1.PayloadBuilder({ schema: address_payload_plugin_1.AddressSchema }).fields({ address: this.address, name: this.config.name }).build();
|
|
322
|
-
const queries = this.queries.map((query) => {
|
|
323
|
-
return new payload_builder_1.PayloadBuilder({ schema: query_payload_plugin_1.QuerySchema }).fields({ query }).build();
|
|
324
|
-
});
|
|
325
|
-
const configSchema = {
|
|
326
|
-
config: config.schema,
|
|
327
|
-
schema: config_payload_plugin_1.ConfigSchema,
|
|
328
|
-
};
|
|
329
|
-
return (0, compact_1.default)([config, configSchema, address, ...queries]);
|
|
330
|
-
}
|
|
331
|
-
initializeQueryAccounts() {
|
|
332
|
-
var _a, _b;
|
|
333
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
334
|
-
// Ensure distinct/unique wallet paths
|
|
335
|
-
const paths = Object.values(this.queryAccountPaths).filter(exists_1.exists);
|
|
336
|
-
const distinctPaths = new Set(paths);
|
|
337
|
-
(0, assert_1.assertEx)(distinctPaths.size === paths.length, `${((_a = this.config) === null || _a === void 0 ? void 0 : _a.name) ? this.config.name + ': ' : ''}Duplicate query account paths`);
|
|
338
|
-
// Create an account for query this module supports
|
|
339
|
-
const wallet = this.account;
|
|
340
|
-
if (wallet === null || wallet === void 0 ? void 0 : wallet.derivePath) {
|
|
341
|
-
for (const key in this.queryAccountPaths) {
|
|
342
|
-
if (Object.prototype.hasOwnProperty.call(this.queryAccountPaths, key)) {
|
|
343
|
-
const query = key;
|
|
344
|
-
const queryAccountPath = this.queryAccountPaths[query];
|
|
345
|
-
if (queryAccountPath) {
|
|
346
|
-
this._queryAccounts[query] = yield ((_b = wallet.derivePath) === null || _b === void 0 ? void 0 : _b.call(wallet, queryAccountPath));
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
manifestHandler() {
|
|
354
|
-
var _a;
|
|
355
|
-
const name = (_a = this.config.name) !== null && _a !== void 0 ? _a : 'Anonymous';
|
|
356
|
-
return { config: Object.assign({ name }, this.config), schema: manifest_model_1.ModuleManifestPayloadSchema };
|
|
357
|
-
}
|
|
358
|
-
moduleAddressHandler() {
|
|
359
|
-
// Return array of all addresses and their previous hash
|
|
360
|
-
const queryAccounts = Object.entries(this.queryAccounts)
|
|
361
|
-
.filter((value) => {
|
|
362
|
-
return (0, exists_1.exists)(value[1]);
|
|
363
|
-
})
|
|
364
|
-
.map(([name, account]) => {
|
|
365
|
-
const address = account.address;
|
|
366
|
-
const previousHash = account.previousHash;
|
|
367
|
-
return [
|
|
368
|
-
{ address, name, schema: address_payload_plugin_1.AddressSchema },
|
|
369
|
-
{ address, previousHash, schema: module_model_1.AddressPreviousHashSchema },
|
|
370
|
-
];
|
|
371
|
-
});
|
|
372
|
-
const address = this.address;
|
|
373
|
-
const name = this.config.name;
|
|
374
|
-
const previousHash = this.address;
|
|
375
|
-
const moduleAccount = name ? { address, name, schema: address_payload_plugin_1.AddressSchema } : { address, schema: address_payload_plugin_1.AddressSchema };
|
|
376
|
-
const moduleAccountPreviousHash = previousHash
|
|
377
|
-
? { address, previousHash, schema: module_model_1.AddressPreviousHashSchema }
|
|
378
|
-
: { address, schema: module_model_1.AddressPreviousHashSchema };
|
|
379
|
-
return [moduleAccount, moduleAccountPreviousHash, ...queryAccounts].flat();
|
|
380
|
-
}
|
|
381
|
-
queryHandler(query, payloads, queryConfig) {
|
|
382
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
383
|
-
yield this.started('throw');
|
|
384
|
-
const wrapper = boundwitness_builder_1.QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
385
|
-
if (!this.allowAnonymous) {
|
|
386
|
-
if (query.addresses.length === 0) {
|
|
387
|
-
console.warn(`Anonymous Queries not allowed, but running anyway [${this.config.name}], [${this.address}]`);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
const queryPayload = yield wrapper.getQuery();
|
|
391
|
-
(0, assert_1.assertEx)(this.queryable(query, payloads, queryConfig));
|
|
392
|
-
const resultPayloads = [];
|
|
393
|
-
const errorPayloads = [];
|
|
394
|
-
const queryAccount = this.ephemeralQueryAccountEnabled ? yield account_1.HDWallet.random() : undefined;
|
|
395
|
-
try {
|
|
396
|
-
switch (queryPayload.schema) {
|
|
397
|
-
case module_model_1.ModuleManifestQuerySchema: {
|
|
398
|
-
resultPayloads.push(yield this.manifestHandler());
|
|
399
|
-
break;
|
|
400
|
-
}
|
|
401
|
-
case module_model_1.ModuleDiscoverQuerySchema: {
|
|
402
|
-
resultPayloads.push(...(yield this.discoverHandler()));
|
|
403
|
-
break;
|
|
404
|
-
}
|
|
405
|
-
case module_model_1.ModuleDescribeQuerySchema: {
|
|
406
|
-
resultPayloads.push(yield this.describeHandler());
|
|
407
|
-
break;
|
|
408
|
-
}
|
|
409
|
-
case module_model_1.ModuleAddressQuerySchema: {
|
|
410
|
-
resultPayloads.push(...(yield this.moduleAddressHandler()));
|
|
411
|
-
break;
|
|
412
|
-
}
|
|
413
|
-
case module_model_1.ModuleSubscribeQuerySchema: {
|
|
414
|
-
this.subscribeHandler(queryAccount);
|
|
415
|
-
break;
|
|
416
|
-
}
|
|
417
|
-
default:
|
|
418
|
-
console.error(`Unsupported Query [${queryPayload.schema}]`);
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
catch (ex) {
|
|
422
|
-
yield (0, error_1.handleErrorAsync)(ex, (error) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
423
|
-
var _a;
|
|
424
|
-
errorPayloads.push(new Error_1.ModuleErrorBuilder()
|
|
425
|
-
.sources([yield wrapper.hashAsync()])
|
|
426
|
-
.name((_a = this.config.name) !== null && _a !== void 0 ? _a : '<Unknown>')
|
|
427
|
-
.query(query.schema)
|
|
428
|
-
.message(error.message)
|
|
429
|
-
.build());
|
|
430
|
-
}));
|
|
431
|
-
}
|
|
432
|
-
return (yield this.bindQueryResult(queryPayload, resultPayloads, queryAccount ? [queryAccount] : [], errorPayloads))[0];
|
|
433
|
-
});
|
|
434
|
-
}
|
|
435
|
-
startHandler() {
|
|
436
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
437
|
-
this.validateConfig();
|
|
438
|
-
yield this.initializeQueryAccounts();
|
|
439
|
-
this._started = true;
|
|
440
|
-
return true;
|
|
441
|
-
});
|
|
442
|
-
}
|
|
443
|
-
stopHandler(_timeout) {
|
|
444
|
-
this._started = undefined;
|
|
445
|
-
return true;
|
|
446
|
-
}
|
|
447
|
-
subscribeHandler(_queryAccount) {
|
|
448
|
-
return;
|
|
449
|
-
}
|
|
450
|
-
validateConfig(config, parents = []) {
|
|
451
|
-
var _a;
|
|
452
|
-
return Object.entries((_a = config !== null && config !== void 0 ? config : this.config) !== null && _a !== void 0 ? _a : {}).reduce((valid, [key, value]) => {
|
|
453
|
-
var _a, _b;
|
|
454
|
-
switch (typeof value) {
|
|
455
|
-
case 'function':
|
|
456
|
-
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(`Fields of type function not allowed in config [${parents === null || parents === void 0 ? void 0 : parents.join('.')}.${key}]`);
|
|
457
|
-
return false;
|
|
458
|
-
case 'object': {
|
|
459
|
-
if (Array.isArray(value)) {
|
|
460
|
-
return (value.reduce((valid, value) => {
|
|
461
|
-
return this.validateConfig(value, [...parents, key]) && valid;
|
|
462
|
-
}, true) && valid);
|
|
463
|
-
}
|
|
464
|
-
if (!(0, module_model_1.serializableField)(value)) {
|
|
465
|
-
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.warn(`Fields that are not serializable to JSON are not allowed in config [${parents === null || parents === void 0 ? void 0 : parents.join('.')}.${key}]`);
|
|
466
|
-
return false;
|
|
467
|
-
}
|
|
468
|
-
return value ? this.validateConfig(value, [...parents, key]) && valid : true;
|
|
469
|
-
}
|
|
470
|
-
default:
|
|
471
|
-
return valid;
|
|
472
|
-
}
|
|
473
|
-
}, true);
|
|
474
|
-
}
|
|
475
|
-
getArchivist(kind) {
|
|
476
|
-
var _a, _b;
|
|
477
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
478
|
-
if (!this.config.archivist)
|
|
479
|
-
return undefined;
|
|
480
|
-
const filter = typeof this.config.archivist === 'string' || this.config.archivist instanceof String
|
|
481
|
-
? this.config.archivist
|
|
482
|
-
: (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.archivist) === null || _b === void 0 ? void 0 : _b[kind];
|
|
483
|
-
const resolved = yield this.upResolver.resolve(filter);
|
|
484
|
-
return (0, archivist_model_1.asArchivistInstance)(resolved);
|
|
485
|
-
});
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
exports.AbstractIndirectModule = AbstractIndirectModule;
|
|
489
|
-
AbstractIndirectModule.enableBusy = false;
|
|
490
|
-
AbstractIndirectModule.enableLazyLoad = false;
|
|
491
|
-
AbstractIndirectModule.privateConstructorKey = Date.now().toString();
|
|
492
|
-
//# sourceMappingURL=AbstractIndirectModule.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractIndirectModule.js","sourceRoot":"","sources":["../../src/AbstractIndirectModule.ts"],"names":[],"mappings":"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"}
|