@xyo-network/module-abstract 2.64.9 → 2.65.0
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/AbstractIndirectModule.js +38 -18
- package/dist/cjs/AbstractIndirectModule.js.map +1 -1
- package/dist/cjs/AbstractModule.js +12 -4
- package/dist/cjs/AbstractModule.js.map +1 -1
- package/dist/cjs/Error.js +3 -3
- package/dist/cjs/Error.js.map +1 -1
- package/dist/cjs/QueryValidator/ModuleConfigQueryValidator.js +2 -2
- package/dist/cjs/QueryValidator/ModuleConfigQueryValidator.js.map +1 -1
- package/dist/cjs/QueryValidator/SupportedQueryValidator.js +2 -2
- package/dist/cjs/QueryValidator/SupportedQueryValidator.js.map +1 -1
- package/dist/cjs/Resolver/CompositeModuleResolver.js +15 -20
- package/dist/cjs/Resolver/CompositeModuleResolver.js.map +1 -1
- package/dist/cjs/Resolver/SimpleModuleResolver.js +19 -18
- package/dist/cjs/Resolver/SimpleModuleResolver.js.map +1 -1
- package/dist/cjs/index.js +1 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/AbstractIndirectModule.js +33 -16
- package/dist/esm/AbstractIndirectModule.js.map +1 -1
- package/dist/esm/AbstractModule.js +12 -4
- package/dist/esm/AbstractModule.js.map +1 -1
- package/dist/esm/Error.js +1 -1
- package/dist/esm/Error.js.map +1 -1
- package/dist/esm/QueryValidator/ModuleConfigQueryValidator.js +1 -1
- package/dist/esm/QueryValidator/ModuleConfigQueryValidator.js.map +1 -1
- package/dist/esm/QueryValidator/SupportedQueryValidator.js +1 -1
- package/dist/esm/QueryValidator/SupportedQueryValidator.js.map +1 -1
- package/dist/esm/Resolver/CompositeModuleResolver.js +15 -18
- package/dist/esm/Resolver/CompositeModuleResolver.js.map +1 -1
- package/dist/esm/Resolver/SimpleModuleResolver.js +19 -18
- package/dist/esm/Resolver/SimpleModuleResolver.js.map +1 -1
- package/dist/esm/index.js +1 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/types/AbstractIndirectModule.d.ts +10 -7
- package/dist/types/AbstractIndirectModule.d.ts.map +1 -1
- package/dist/types/AbstractModule.d.ts.map +1 -1
- package/dist/types/Error.d.ts +1 -1
- package/dist/types/Error.d.ts.map +1 -1
- package/dist/types/QueryValidator/ModuleConfigQueryValidator.d.ts.map +1 -1
- package/dist/types/QueryValidator/QueryValidator.d.ts +1 -1
- package/dist/types/QueryValidator/QueryValidator.d.ts.map +1 -1
- package/dist/types/QueryValidator/SupportedQueryValidator.d.ts.map +1 -1
- package/dist/types/Resolver/CompositeModuleResolver.d.ts +2 -2
- package/dist/types/Resolver/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/types/Resolver/SimpleModuleResolver.d.ts +2 -2
- package/dist/types/Resolver/SimpleModuleResolver.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -3
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +22 -24
- package/src/AbstractIndirectModule.ts +42 -22
- package/src/AbstractModule.ts +12 -4
- package/src/Error.ts +1 -1
- package/src/QueryValidator/ModuleConfigQueryValidator.ts +1 -1
- package/src/QueryValidator/QueryValidator.ts +1 -1
- package/src/QueryValidator/SupportedQueryValidator.ts +2 -2
- package/src/Resolver/CompositeModuleResolver.ts +22 -19
- package/src/Resolver/SimpleModuleResolver.ts +21 -21
- package/src/index.ts +1 -3
- package/dist/cjs/ModuleFactory.js +0 -30
- package/dist/cjs/ModuleFactory.js.map +0 -1
- package/dist/cjs/Query/QueryBoundWitnessBuilder.js +0 -31
- package/dist/cjs/Query/QueryBoundWitnessBuilder.js.map +0 -1
- package/dist/cjs/Query/QueryBoundWitnessValidator.js +0 -58
- package/dist/cjs/Query/QueryBoundWitnessValidator.js.map +0 -1
- package/dist/cjs/Query/QueryBoundWitnessWrapper.js +0 -62
- package/dist/cjs/Query/QueryBoundWitnessWrapper.js.map +0 -1
- package/dist/cjs/Query/index.js +0 -7
- package/dist/cjs/Query/index.js.map +0 -1
- package/dist/cjs/lib/duplicateModules.js +0 -17
- package/dist/cjs/lib/duplicateModules.js.map +0 -1
- package/dist/cjs/lib/index.js +0 -6
- package/dist/cjs/lib/index.js.map +0 -1
- package/dist/cjs/lib/serializable.js +0 -38
- package/dist/cjs/lib/serializable.js.map +0 -1
- package/dist/docs.json +0 -39081
- package/dist/esm/ModuleFactory.js +0 -28
- package/dist/esm/ModuleFactory.js.map +0 -1
- package/dist/esm/Query/QueryBoundWitnessBuilder.js +0 -26
- package/dist/esm/Query/QueryBoundWitnessBuilder.js.map +0 -1
- package/dist/esm/Query/QueryBoundWitnessValidator.js +0 -47
- package/dist/esm/Query/QueryBoundWitnessValidator.js.map +0 -1
- package/dist/esm/Query/QueryBoundWitnessWrapper.js +0 -46
- package/dist/esm/Query/QueryBoundWitnessWrapper.js.map +0 -1
- package/dist/esm/Query/index.js +0 -4
- package/dist/esm/Query/index.js.map +0 -1
- package/dist/esm/lib/duplicateModules.js +0 -13
- package/dist/esm/lib/duplicateModules.js.map +0 -1
- package/dist/esm/lib/index.js +0 -3
- package/dist/esm/lib/index.js.map +0 -1
- package/dist/esm/lib/serializable.js +0 -32
- package/dist/esm/lib/serializable.js.map +0 -1
- package/dist/types/ModuleFactory.d.ts +0 -17
- package/dist/types/ModuleFactory.d.ts.map +0 -1
- package/dist/types/Query/QueryBoundWitnessBuilder.d.ts +0 -12
- package/dist/types/Query/QueryBoundWitnessBuilder.d.ts.map +0 -1
- package/dist/types/Query/QueryBoundWitnessValidator.d.ts +0 -10
- package/dist/types/Query/QueryBoundWitnessValidator.d.ts.map +0 -1
- package/dist/types/Query/QueryBoundWitnessWrapper.d.ts +0 -18
- package/dist/types/Query/QueryBoundWitnessWrapper.d.ts.map +0 -1
- package/dist/types/Query/index.d.ts +0 -4
- package/dist/types/Query/index.d.ts.map +0 -1
- package/dist/types/lib/duplicateModules.d.ts +0 -12
- package/dist/types/lib/duplicateModules.d.ts.map +0 -1
- package/dist/types/lib/index.d.ts +0 -3
- package/dist/types/lib/index.d.ts.map +0 -1
- package/dist/types/lib/serializable.d.ts +0 -3
- package/dist/types/lib/serializable.d.ts.map +0 -1
- package/src/ModuleFactory.ts +0 -42
- package/src/Query/QueryBoundWitnessBuilder.ts +0 -33
- package/src/Query/QueryBoundWitnessValidator.ts +0 -50
- package/src/Query/QueryBoundWitnessWrapper.ts +0 -65
- package/src/Query/index.ts +0 -3
- package/src/lib/duplicateModules.ts +0 -14
- package/src/lib/index.ts +0 -2
- package/src/lib/serializable.ts +0 -41
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
2
|
import { exists } from '@xylabs/exists'
|
|
3
|
-
import {
|
|
3
|
+
import { HDWallet } from '@xyo-network/account'
|
|
4
4
|
import { AccountInstance } from '@xyo-network/account-model'
|
|
5
5
|
import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { ArchivistInstance } from '@xyo-network/archivist-model'
|
|
7
|
+
import { IndirectArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
8
|
+
import { BoundWitnessBuilder, QueryBoundWitness, QueryBoundWitnessBuilder, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'
|
|
8
9
|
import { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
9
10
|
import { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'
|
|
10
11
|
import { handleErrorAsync } from '@xyo-network/error'
|
|
@@ -15,16 +16,19 @@ import {
|
|
|
15
16
|
AddressPreviousHashSchema,
|
|
16
17
|
CreatableModule,
|
|
17
18
|
CreatableModuleFactory,
|
|
19
|
+
DirectModule,
|
|
20
|
+
duplicateModules,
|
|
18
21
|
IndirectModule,
|
|
19
22
|
IndividualArchivistConfig,
|
|
20
23
|
ModuleAddressQuerySchema,
|
|
24
|
+
ModuleBusyEventArgs,
|
|
21
25
|
ModuleConfig,
|
|
22
26
|
ModuleDescribeQuerySchema,
|
|
23
27
|
ModuleDescriptionPayload,
|
|
24
28
|
ModuleDescriptionSchema,
|
|
25
29
|
ModuleDiscoverQuerySchema,
|
|
26
|
-
ModuleError,
|
|
27
30
|
ModuleEventData,
|
|
31
|
+
ModuleFactory,
|
|
28
32
|
ModuleFilter,
|
|
29
33
|
ModuleParams,
|
|
30
34
|
ModuleQueriedEventArgs,
|
|
@@ -32,13 +36,12 @@ import {
|
|
|
32
36
|
ModuleQueryBase,
|
|
33
37
|
ModuleQueryResult,
|
|
34
38
|
ModuleSubscribeQuerySchema,
|
|
35
|
-
Query,
|
|
36
|
-
QueryBoundWitness,
|
|
37
39
|
SchemaString,
|
|
40
|
+
serializableField,
|
|
38
41
|
WalletModuleParams,
|
|
39
42
|
} from '@xyo-network/module-model'
|
|
40
43
|
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
41
|
-
import { Payload } from '@xyo-network/payload-model'
|
|
44
|
+
import { ModuleError, Payload, Query } from '@xyo-network/payload-model'
|
|
42
45
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
43
46
|
import { Promisable, PromiseEx } from '@xyo-network/promise'
|
|
44
47
|
import { QueryPayload, QuerySchema } from '@xyo-network/query-payload-plugin'
|
|
@@ -47,9 +50,6 @@ import compact from 'lodash/compact'
|
|
|
47
50
|
|
|
48
51
|
import { BaseEmitter } from './BaseEmitter'
|
|
49
52
|
import { ModuleErrorBuilder } from './Error'
|
|
50
|
-
import { duplicateModules, serializableField } from './lib'
|
|
51
|
-
import { ModuleFactory } from './ModuleFactory'
|
|
52
|
-
import { QueryBoundWitnessBuilder, QueryBoundWitnessWrapper } from './Query'
|
|
53
53
|
import { ModuleConfigQueryValidator, Queryable, SupportedQueryValidator } from './QueryValidator'
|
|
54
54
|
import { CompositeModuleResolver } from './Resolver'
|
|
55
55
|
|
|
@@ -57,7 +57,7 @@ import { CompositeModuleResolver } from './Resolver'
|
|
|
57
57
|
|
|
58
58
|
export abstract class AbstractIndirectModule<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>
|
|
59
59
|
extends BaseEmitter<TParams, TEventData>
|
|
60
|
-
implements IndirectModule<TParams, TEventData
|
|
60
|
+
implements IndirectModule<TParams, TEventData>, IndirectModule
|
|
61
61
|
{
|
|
62
62
|
static configSchemas: string[]
|
|
63
63
|
|
|
@@ -83,6 +83,8 @@ export abstract class AbstractIndirectModule<TParams extends ModuleParams = Modu
|
|
|
83
83
|
protected readonly moduleConfigQueryValidator: Queryable
|
|
84
84
|
protected readonly supportedQueryValidator: Queryable
|
|
85
85
|
|
|
86
|
+
private _busyCount = 0
|
|
87
|
+
|
|
86
88
|
constructor(privateConstructorKey: string, params: TParams) {
|
|
87
89
|
assertEx(AbstractIndirectModule.privateConstructorKey === privateConstructorKey, 'Use create function instead of constructor')
|
|
88
90
|
// Clone params to prevent mutation of the incoming object
|
|
@@ -159,6 +161,25 @@ export abstract class AbstractIndirectModule<TParams extends ModuleParams = Modu
|
|
|
159
161
|
return { address: this.address, previousHash: this._account?.previousHash, schema: AddressPreviousHashSchema }
|
|
160
162
|
}
|
|
161
163
|
|
|
164
|
+
async busy<R>(closure: () => Promise<R>) {
|
|
165
|
+
if (this._busyCount <= 0) {
|
|
166
|
+
this._busyCount = 0
|
|
167
|
+
const args: ModuleBusyEventArgs = { busy: true, module: this }
|
|
168
|
+
await this.emit('moduleBusy', args)
|
|
169
|
+
}
|
|
170
|
+
this._busyCount++
|
|
171
|
+
try {
|
|
172
|
+
return await closure()
|
|
173
|
+
} finally {
|
|
174
|
+
this._busyCount--
|
|
175
|
+
if (this._busyCount <= 0) {
|
|
176
|
+
this._busyCount = 0
|
|
177
|
+
const args: ModuleBusyEventArgs = { busy: false, module: this }
|
|
178
|
+
await this.emit('moduleBusy', args)
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
162
183
|
async loadAccount() {
|
|
163
184
|
if (!this._account) {
|
|
164
185
|
const activeLogger = this.params.logger ?? AbstractIndirectModule.defaultLogger
|
|
@@ -214,12 +235,14 @@ export abstract class AbstractIndirectModule<TParams extends ModuleParams = Modu
|
|
|
214
235
|
queryConfig?: TConfig,
|
|
215
236
|
): Promise<ModuleQueryResult> {
|
|
216
237
|
this.started('throw')
|
|
217
|
-
|
|
238
|
+
return await this.busy(async () => {
|
|
239
|
+
const result = await this.queryHandler(assertEx(QueryBoundWitnessWrapper.unwrap(query)), payloads, queryConfig)
|
|
218
240
|
|
|
219
|
-
|
|
220
|
-
|
|
241
|
+
const args: ModuleQueriedEventArgs = { module: this, payloads, query, result }
|
|
242
|
+
await this.emit('moduleQueried', args)
|
|
221
243
|
|
|
222
|
-
|
|
244
|
+
return result
|
|
245
|
+
})
|
|
223
246
|
}
|
|
224
247
|
|
|
225
248
|
queryable<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(
|
|
@@ -243,10 +266,7 @@ export abstract class AbstractIndirectModule<TParams extends ModuleParams = Modu
|
|
|
243
266
|
): Promise<TModule | TModule[] | undefined> {
|
|
244
267
|
switch (typeof nameOrAddressOrFilter) {
|
|
245
268
|
case 'string': {
|
|
246
|
-
|
|
247
|
-
? (await this.resolve<TModule>({ address: [nameOrAddressOrFilter] })).pop()
|
|
248
|
-
: undefined
|
|
249
|
-
return byAddress ?? (await this.resolve<TModule>({ name: [nameOrAddressOrFilter] })).pop()
|
|
269
|
+
return (await this.downResolver.resolve<TModule>(nameOrAddressOrFilter)) ?? (await this.upResolver.resolve<TModule>(nameOrAddressOrFilter))
|
|
250
270
|
}
|
|
251
271
|
default: {
|
|
252
272
|
const filter: ModuleFilter | undefined = nameOrAddressOrFilter
|
|
@@ -485,13 +505,13 @@ export abstract class AbstractIndirectModule<TParams extends ModuleParams = Modu
|
|
|
485
505
|
|
|
486
506
|
protected writeArchivist = () => this.getArchivist('write')
|
|
487
507
|
|
|
488
|
-
private async getArchivist(kind: keyof IndividualArchivistConfig): Promise<
|
|
508
|
+
private async getArchivist(kind: keyof IndividualArchivistConfig): Promise<ArchivistInstance | undefined> {
|
|
489
509
|
if (!this.config.archivist) return undefined
|
|
490
510
|
const filter =
|
|
491
511
|
typeof this.config.archivist === 'string' || this.config.archivist instanceof String
|
|
492
512
|
? (this.config.archivist as string)
|
|
493
513
|
: (this.config?.archivist?.[kind] as string)
|
|
494
|
-
const resolved = await this.upResolver.
|
|
495
|
-
return resolved ? (resolved
|
|
514
|
+
const resolved = await this.upResolver.resolve(filter)
|
|
515
|
+
return resolved ? IndirectArchivistWrapper.wrap(resolved, this.account) : undefined
|
|
496
516
|
}
|
|
497
517
|
}
|
package/src/AbstractModule.ts
CHANGED
|
@@ -19,22 +19,30 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
|
|
|
19
19
|
|
|
20
20
|
/* make it public */
|
|
21
21
|
override async addressPreviousHash(): Promise<AddressPreviousHashPayload> {
|
|
22
|
-
return await
|
|
22
|
+
return await this.busy(async () => {
|
|
23
|
+
return await super.addressPreviousHash()
|
|
24
|
+
})
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
/* make it public */
|
|
26
28
|
override async describe(): Promise<ModuleDescriptionPayload> {
|
|
27
|
-
return await
|
|
29
|
+
return await this.busy(async () => {
|
|
30
|
+
return await super.describe()
|
|
31
|
+
})
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
/* make it public */
|
|
31
35
|
override async discover(): Promise<Payload[]> {
|
|
32
|
-
return await
|
|
36
|
+
return await this.busy(async () => {
|
|
37
|
+
return await super.discover()
|
|
38
|
+
})
|
|
33
39
|
}
|
|
34
40
|
|
|
35
41
|
/* make it public */
|
|
36
42
|
override async manifest(): Promise<ModuleManifestPayload> {
|
|
37
|
-
return await
|
|
43
|
+
return await this.busy(async () => {
|
|
44
|
+
return await super.manifest()
|
|
45
|
+
})
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
/* make it public */
|
package/src/Error.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ModuleError, ModuleErrorSchema } from '@xyo-network/module-model'
|
|
2
1
|
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
2
|
+
import { ModuleError, ModuleErrorSchema } from '@xyo-network/payload-model'
|
|
3
3
|
|
|
4
4
|
export class ModuleErrorBuilder extends PayloadBuilder {
|
|
5
5
|
_message?: string
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'
|
|
1
2
|
import { AddressString, AnyConfigSchema, CosigningAddressSet, ModuleConfig, ModuleQuery, SchemaString } from '@xyo-network/module-model'
|
|
2
3
|
|
|
3
|
-
import { QueryBoundWitnessWrapper } from '../Query'
|
|
4
4
|
import { Queryable, QueryValidator } from './QueryValidator'
|
|
5
5
|
|
|
6
6
|
export type SortedPipedAddressesString = string
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'
|
|
2
|
+
import { IndirectModule, ModuleQuery } from '@xyo-network/module-model'
|
|
2
3
|
import { Payload } from '@xyo-network/payload-model'
|
|
3
4
|
|
|
4
|
-
import { QueryBoundWitnessWrapper } from '../Query'
|
|
5
5
|
import { Queryable, QueryValidator } from './QueryValidator'
|
|
6
6
|
|
|
7
7
|
export const isQuerySupportedByModule = async <T extends QueryBoundWitness = QueryBoundWitness>(
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { exists } from '@xylabs/exists'
|
|
2
2
|
import { Base, BaseParams } from '@xyo-network/core'
|
|
3
|
-
import { IndirectModule, ModuleFilter, ModuleRepository, ModuleResolver } from '@xyo-network/module-model'
|
|
3
|
+
import { duplicateModules, IndirectModule, ModuleFilter, ModuleRepository, ModuleResolver } from '@xyo-network/module-model'
|
|
4
4
|
|
|
5
|
-
import { duplicateModules } from '../lib'
|
|
6
5
|
import { SimpleModuleResolver } from './SimpleModuleResolver'
|
|
7
6
|
|
|
8
7
|
export class CompositeModuleResolver extends Base implements ModuleRepository, ModuleResolver {
|
|
@@ -50,23 +49,27 @@ export class CompositeModuleResolver extends Base implements ModuleRepository, M
|
|
|
50
49
|
return this
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
async resolve<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const result = await
|
|
67
|
-
|
|
52
|
+
async resolve<TModule extends IndirectModule = IndirectModule>(filter?: ModuleFilter): Promise<TModule[]>
|
|
53
|
+
async resolve<TModule extends IndirectModule = IndirectModule>(nameOrAddress: string): Promise<TModule | undefined>
|
|
54
|
+
async resolve<TModule extends IndirectModule = IndirectModule>(
|
|
55
|
+
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
56
|
+
): Promise<TModule | TModule[] | undefined> {
|
|
57
|
+
if (typeof nameOrAddressOrFilter === 'string') {
|
|
58
|
+
const result = await Promise.all(
|
|
59
|
+
this.resolvers.map(async (resolver) => {
|
|
60
|
+
return await resolver.resolve<TModule>(nameOrAddressOrFilter)
|
|
61
|
+
}),
|
|
62
|
+
)
|
|
63
|
+
return result.filter(exists).filter(duplicateModules).pop()
|
|
64
|
+
} else {
|
|
65
|
+
const result = await Promise.all(
|
|
66
|
+
this.resolvers.map(async (resolver) => {
|
|
67
|
+
return await resolver.resolve<TModule>(nameOrAddressOrFilter)
|
|
68
|
+
}),
|
|
69
|
+
)
|
|
70
|
+
const flatResult = result.flat()
|
|
71
|
+
return flatResult.filter(duplicateModules)
|
|
68
72
|
}
|
|
69
|
-
return undefined
|
|
70
73
|
}
|
|
71
74
|
|
|
72
75
|
private addSingleModule(module?: IndirectModule) {
|
|
@@ -48,27 +48,27 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
48
48
|
throw 'Removing resolvers not supported'
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
resolve<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
51
|
+
resolve<TModule extends IndirectModule = IndirectModule>(filter?: ModuleFilter): Promisable<TModule[]>
|
|
52
|
+
resolve<TModule extends IndirectModule = IndirectModule>(nameOrAddress: string): Promisable<TModule | undefined>
|
|
53
|
+
resolve<TModule extends IndirectModule = IndirectModule>(
|
|
54
|
+
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
55
|
+
): Promisable<TModule | TModule[] | undefined> {
|
|
56
|
+
if (nameOrAddressOrFilter) {
|
|
57
|
+
if (typeof nameOrAddressOrFilter === 'string') {
|
|
58
|
+
return (
|
|
59
|
+
this.resolveByName(Object.values(this.modules) as TModule[], [nameOrAddressOrFilter]).pop() ??
|
|
60
|
+
this.resolveByAddress(Object.values(this.modules) as TModule[], [nameOrAddressOrFilter]).pop()
|
|
61
|
+
)
|
|
62
|
+
} else if ((nameOrAddressOrFilter as AddressModuleFilter).address) {
|
|
63
|
+
return this.resolveByAddress<TModule>(Object.values(this.modules) as TModule[], (nameOrAddressOrFilter as AddressModuleFilter).address)
|
|
64
|
+
} else if ((nameOrAddressOrFilter as NameModuleFilter).name) {
|
|
65
|
+
return this.resolveByName<TModule>(Object.values(this.modules) as TModule[], (nameOrAddressOrFilter as NameModuleFilter).name)
|
|
66
|
+
} else if ((nameOrAddressOrFilter as QueryModuleFilter).query) {
|
|
67
|
+
return this.resolveByQuery<TModule>(Object.values(this.modules) as TModule[], (nameOrAddressOrFilter as QueryModuleFilter).query)
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
return Object.values(this.modules) as TModule[]
|
|
70
71
|
}
|
|
71
|
-
return undefined
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
private addSingleModule(module?: IndirectModule) {
|
|
@@ -94,7 +94,7 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
94
94
|
? compact(
|
|
95
95
|
flatten(
|
|
96
96
|
address?.map((address) => {
|
|
97
|
-
return modules.filter((
|
|
97
|
+
return modules.filter((module) => module.address === address)
|
|
98
98
|
}),
|
|
99
99
|
),
|
|
100
100
|
)
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
+
export * from './AbstractIndirectModule'
|
|
1
2
|
export * from './AbstractModule'
|
|
2
3
|
export * from './BaseEmitter'
|
|
3
4
|
export * from './Error'
|
|
4
|
-
export * from './lib'
|
|
5
|
-
export * from './ModuleFactory'
|
|
6
|
-
export * from './Query'
|
|
7
5
|
export * from './QueryValidator'
|
|
8
6
|
export * from './Resolver'
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModuleFactory = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const merge_1 = tslib_1.__importDefault(require("lodash/merge"));
|
|
6
|
-
class ModuleFactory {
|
|
7
|
-
constructor(creatableModule, params) {
|
|
8
|
-
this.creatableModule = creatableModule;
|
|
9
|
-
this.defaultParams = params;
|
|
10
|
-
this.configSchemas = creatableModule.configSchemas;
|
|
11
|
-
}
|
|
12
|
-
get configSchema() {
|
|
13
|
-
return this.configSchemas[0];
|
|
14
|
-
}
|
|
15
|
-
static withParams(creatableModule, params) {
|
|
16
|
-
return new ModuleFactory(creatableModule, params);
|
|
17
|
-
}
|
|
18
|
-
create(params) {
|
|
19
|
-
var _a;
|
|
20
|
-
const factory = this;
|
|
21
|
-
const schema = factory.creatableModule.configSchema;
|
|
22
|
-
const mergedParams = (0, merge_1.default)((_a = factory.defaultParams) !== null && _a !== void 0 ? _a : {}, params, { config: { schema } });
|
|
23
|
-
return factory.creatableModule.create(mergedParams);
|
|
24
|
-
}
|
|
25
|
-
factory(_params) {
|
|
26
|
-
throw new Error('Method not implemented.');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.ModuleFactory = ModuleFactory;
|
|
30
|
-
//# sourceMappingURL=ModuleFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleFactory.js","sourceRoot":"","sources":["../../src/ModuleFactory.ts"],"names":[],"mappings":";;;;AAEA,iEAAgC;AAMhC,MAAa,aAAa;IASxB,YAAY,eAAyC,EAAE,MAA0B;QAC/E,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,aAAa,CAAA;IACpD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,UAAU,CAAmB,eAAmC,EAAE,MAAoB;QAC3F,OAAO,IAAI,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAoD,MAAsC;;QAC9F,MAAM,OAAO,GAAG,IAAwB,CAAA;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAA;QACnD,MAAM,YAAY,GAAsB,IAAA,eAAK,EAAC,MAAA,OAAO,CAAC,aAAa,mCAAI,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QAC1G,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,CAAI,YAAY,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,CAA6C,OAAiC;QACnF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;CACF;AAjCD,sCAiCC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QueryBoundWitnessBuilder = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const assert_1 = require("@xylabs/assert");
|
|
6
|
-
const boundwitness_builder_1 = require("@xyo-network/boundwitness-builder");
|
|
7
|
-
const module_model_1 = require("@xyo-network/module-model");
|
|
8
|
-
const payload_wrapper_1 = require("@xyo-network/payload-wrapper");
|
|
9
|
-
class QueryBoundWitnessBuilder extends boundwitness_builder_1.BoundWitnessBuilder {
|
|
10
|
-
hashableFields() {
|
|
11
|
-
const _super = Object.create(null, {
|
|
12
|
-
hashableFields: { get: () => super.hashableFields }
|
|
13
|
-
});
|
|
14
|
-
var _a;
|
|
15
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
return Object.assign(Object.assign({}, (yield _super.hashableFields.call(this))), { query: (0, assert_1.assertEx)(yield ((_a = this._query) === null || _a === void 0 ? void 0 : _a.hashAsync()), 'No Query Specified'), schema: module_model_1.QueryBoundWitnessSchema });
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
query(query) {
|
|
20
|
-
this._query = payload_wrapper_1.PayloadWrapper.wrap(query);
|
|
21
|
-
this.payload(this._query.payload());
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
resultSet(payloadSet) {
|
|
25
|
-
this._resultSet = payload_wrapper_1.PayloadWrapper.wrap(payloadSet);
|
|
26
|
-
this.payload(this._resultSet.payload());
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.QueryBoundWitnessBuilder = QueryBoundWitnessBuilder;
|
|
31
|
-
//# sourceMappingURL=QueryBoundWitnessBuilder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessBuilder.js","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,4EAAuE;AACvE,4DAA6F;AAE7F,kEAA6D;AAE7D,MAAa,wBAGX,SAAQ,0CAAkC;IAI3B,cAAc;;;;;;YAC3B,uCACK,CAAC,MAAM,OAAM,cAAc,WAAE,CAAC,KACjC,KAAK,EAAE,IAAA,iBAAQ,EAAC,MAAM,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,EAAE,CAAA,EAAE,oBAAoB,CAAC,EACrE,MAAM,EAAE,sCAAuB,IAChC;;KACF;IAED,KAAK,CAA4C,KAAQ;QACvD,IAAI,CAAC,MAAM,GAAG,gCAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAkE,UAAa;QACtF,IAAI,CAAC,UAAU,GAAG,gCAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA1BD,4DA0BC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QueryBoundWitnessValidator = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const assert_1 = require("@xylabs/assert");
|
|
6
|
-
const boundwitness_validator_1 = require("@xyo-network/boundwitness-validator");
|
|
7
|
-
const boundwitness_wrapper_1 = require("@xyo-network/boundwitness-wrapper");
|
|
8
|
-
const error_1 = require("@xyo-network/error");
|
|
9
|
-
const module_model_1 = require("@xyo-network/module-model");
|
|
10
|
-
const payload_wrapper_1 = require("@xyo-network/payload-wrapper");
|
|
11
|
-
class QueryBoundWitnessValidator extends boundwitness_validator_1.BoundWitnessValidator {
|
|
12
|
-
get expectedSchema() {
|
|
13
|
-
return module_model_1.QueryBoundWitnessSchema;
|
|
14
|
-
}
|
|
15
|
-
static isQueryBoundWitnessValidator(obj) {
|
|
16
|
-
return (obj === null || obj === void 0 ? void 0 : obj.constructor) === QueryBoundWitnessValidator;
|
|
17
|
-
}
|
|
18
|
-
validate() {
|
|
19
|
-
const _super = Object.create(null, {
|
|
20
|
-
validate: { get: () => super.validate }
|
|
21
|
-
});
|
|
22
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
return [
|
|
24
|
-
...(yield _super.validate.call(this)),
|
|
25
|
-
// ...this.validateResultSet()
|
|
26
|
-
];
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
validateResultSet() {
|
|
30
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
const errors = [];
|
|
32
|
-
try {
|
|
33
|
-
const resultSetHash = (0, assert_1.assertEx)(this.obj.resultSet, 'Missing ResultSet');
|
|
34
|
-
const wrapper = boundwitness_wrapper_1.BoundWitnessWrapper.parse(this.obj);
|
|
35
|
-
const resultSet = payload_wrapper_1.PayloadWrapper.wrap((yield wrapper.payloadMap())[resultSetHash]);
|
|
36
|
-
const required = resultSet === null || resultSet === void 0 ? void 0 : resultSet.payload().required;
|
|
37
|
-
if (required) {
|
|
38
|
-
Object.entries(required).forEach(([key, value]) => {
|
|
39
|
-
const found = wrapper.payloadSchemas.reduce((count, schema) => {
|
|
40
|
-
return count + (schema === key ? 1 : 0);
|
|
41
|
-
}, 0);
|
|
42
|
-
if (found !== value) {
|
|
43
|
-
errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`));
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch (ex) {
|
|
49
|
-
(0, error_1.handleError)(ex, (error) => {
|
|
50
|
-
errors.push(error);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
return errors;
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.QueryBoundWitnessValidator = QueryBoundWitnessValidator;
|
|
58
|
-
//# sourceMappingURL=QueryBoundWitnessValidator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessValidator.js","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,gFAA2E;AAC3E,4EAAuE;AACvE,8CAAgD;AAChD,4DAA6F;AAE7F,kEAA6D;AAC7D,MAAa,0BAAoD,SAAQ,8CAAwC;IAG/G,IAAuB,cAAc;QACnC,OAAO,sCAAuB,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAY;QAC9C,OAAO,CAAC,GAAkC,aAAlC,GAAG,uBAAH,GAAG,CAAiC,WAAW,MAAK,0BAA0B,CAAA;IACxF,CAAC;IAEc,QAAQ;;;;;YACrB,OAAO;gBACL,GAAG,CAAC,MAAM,OAAM,QAAQ,WAAE,CAAC;gBAC3B,8BAA8B;aAC/B,CAAA;QACH,CAAC;KAAA;IAEK,iBAAiB;;YACrB,MAAM,MAAM,GAAY,EAAE,CAAA;YAC1B,IAAI;gBACF,MAAM,aAAa,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;gBACvE,MAAM,OAAO,GAAG,0CAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACnD,MAAM,SAAS,GAAG,gCAAc,CAAC,IAAI,CAAoB,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,CAAsB,CAAC,CAAA;gBAC1H,MAAM,QAAQ,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,GAAG,QAAQ,CAAA;gBAC9C,IAAI,QAAQ,EAAE;oBACZ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;4BAC5D,OAAO,KAAK,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBACzC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACL,IAAI,KAAK,KAAK,KAAK,EAAE;4BACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,sCAAsC,GAAG,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;yBACnF;oBACH,CAAC,CAAC,CAAA;iBACH;aACF;YAAC,OAAO,EAAE,EAAE;gBACX,IAAA,mBAAW,EAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;oBACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC,CAAC,CAAA;aACH;YACD,OAAO,MAAM,CAAA;QACf,CAAC;KAAA;CACF;AA1CD,gEA0CC"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QueryBoundWitnessWrapper = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const assert_1 = require("@xylabs/assert");
|
|
6
|
-
const boundwitness_wrapper_1 = require("@xyo-network/boundwitness-wrapper");
|
|
7
|
-
const core_1 = require("@xyo-network/core");
|
|
8
|
-
const payload_wrapper_1 = require("@xyo-network/payload-wrapper");
|
|
9
|
-
const compact_1 = tslib_1.__importDefault(require("lodash/compact"));
|
|
10
|
-
const QueryBoundWitnessValidator_1 = require("./QueryBoundWitnessValidator");
|
|
11
|
-
class QueryBoundWitnessWrapper extends boundwitness_wrapper_1.BoundWitnessWrapper {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.isQueryBoundWitnessWrapper = true;
|
|
15
|
-
}
|
|
16
|
-
static parseQuery(obj, payloads) {
|
|
17
|
-
(0, assert_1.assertEx)(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper');
|
|
18
|
-
switch (typeof obj) {
|
|
19
|
-
case 'object': {
|
|
20
|
-
const castWrapper = obj;
|
|
21
|
-
const wrapper = (castWrapper === null || castWrapper === void 0 ? void 0 : castWrapper.isQueryBoundWitnessWrapper) ? castWrapper : new QueryBoundWitnessWrapper(obj, payloads);
|
|
22
|
-
/*if (!wrapper.valid) {
|
|
23
|
-
console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)
|
|
24
|
-
}*/
|
|
25
|
-
return wrapper;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
throw Error(`Unable to parse [${typeof obj}]`);
|
|
29
|
-
}
|
|
30
|
-
getErrors() {
|
|
31
|
-
return new QueryBoundWitnessValidator_1.QueryBoundWitnessValidator(this.boundwitness).validate();
|
|
32
|
-
}
|
|
33
|
-
getQuery() {
|
|
34
|
-
var _a;
|
|
35
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
36
|
-
const payloadMap = yield this.allPayloadMap();
|
|
37
|
-
this._query = (_a = this._query) !== null && _a !== void 0 ? _a : payloadMap[this.boundwitness.query];
|
|
38
|
-
return (0, assert_1.assertEx)(this._query, `Missing Query [${this.boundwitness}]`);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
getResultSet() {
|
|
42
|
-
var _a;
|
|
43
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
const resultSetHash = this.boundwitness.resultSet;
|
|
45
|
-
const payloadMap = yield this.payloadMap();
|
|
46
|
-
return (0, assert_1.assertEx)((this._resultSet = (_a = this._resultSet) !== null && _a !== void 0 ? _a : (resultSetHash ? payloadMap[resultSetHash] : undefined)), `Missing resultSet [${resultSetHash}]`);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
getWrappedPayloads() {
|
|
50
|
-
const _super = Object.create(null, {
|
|
51
|
-
getWrappedPayloads: { get: () => super.getWrappedPayloads }
|
|
52
|
-
});
|
|
53
|
-
var _a;
|
|
54
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
this._payloadsWithoutQuery =
|
|
56
|
-
(_a = this._payloadsWithoutQuery) !== null && _a !== void 0 ? _a : (0, compact_1.default)((yield core_1.PayloadHasher.filterExclude((yield _super.getWrappedPayloads.call(this)).map((wrapper) => wrapper.payload()), this.payload().query)).map((payload) => payload_wrapper_1.PayloadWrapper.wrap(payload)));
|
|
57
|
-
return this._payloadsWithoutQuery;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.QueryBoundWitnessWrapper = QueryBoundWitnessWrapper;
|
|
62
|
-
//# sourceMappingURL=QueryBoundWitnessWrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.js","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,4EAAuE;AACvE,4CAAiD;AAGjD,kEAA6D;AAC7D,qEAAoC;AAEpC,6EAAyE;AAEzE,MAAa,wBAAkD,SAAQ,0CAAsC;IAA7G;;QAKU,+BAA0B,GAAG,IAAI,CAAA;IAiD3C,CAAC;IA/CC,MAAM,CAAC,UAAU,CAA0B,GAAY,EAAE,QAAoB;QAC3E,IAAA,iBAAQ,EAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,wDAAwD,CAAC,CAAA;QACvF,QAAQ,OAAO,GAAG,EAAE;YAClB,KAAK,QAAQ,CAAC,CAAC;gBACb,MAAM,WAAW,GAAG,GAAkC,CAAA;gBACtD,MAAM,OAAO,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,0BAA0B,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAI,GAAwB,EAAE,QAAQ,CAAC,CAAA;gBAC3I;;mBAEG;gBACH,OAAO,OAAO,CAAA;aACf;SACF;QACD,MAAM,KAAK,CAAC,oBAAoB,OAAO,GAAG,GAAG,CAAC,CAAA;IAChD,CAAC;IAEQ,SAAS;QAChB,OAAO,IAAI,uDAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAA;IACrE,CAAC;IAEK,QAAQ;;;YACZ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;YAC7C,IAAI,CAAC,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAK,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAmB,CAAA;YACnF,OAAO,IAAA,iBAAQ,EAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;;KACrE;IAEK,YAAY;;;YAChB,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAA;YACjD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YAC1C,OAAO,IAAA,iBAAQ,EACb,CAAC,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,CAAC,aAAa,CAAC,CAAC,CAAE,UAAU,CAAC,aAAa,CAAmC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EACjI,sBAAsB,aAAa,GAAG,CACvC,CAAA;;KACF;IAEc,kBAAkB;;;;;;YAC/B,IAAI,CAAC,qBAAqB;gBACxB,MAAA,IAAI,CAAC,qBAAqB,mCAC1B,IAAA,iBAAO,EACL,CACE,MAAM,oBAAa,CAAC,aAAa,CAC/B,CAAC,MAAM,OAAM,kBAAkB,WAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EACtE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CACrB,CACF,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gCAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CACjD,CAAA;YACH,OAAO,IAAI,CAAC,qBAAqB,CAAA;;KAClC;CACF;AAtDD,4DAsDC"}
|
package/dist/cjs/Query/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./QueryBoundWitnessBuilder"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./QueryBoundWitnessValidator"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./QueryBoundWitnessWrapper"), exports);
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Query/index.ts"],"names":[],"mappings":";;;AAAA,qEAA0C;AAC1C,uEAA4C;AAC5C,qEAA0C"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.duplicateModules = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Used to filter duplicates from an array of modules
|
|
6
|
-
* @example: modulesArray.filter(duplicateModules)
|
|
7
|
-
* @param value Current Module
|
|
8
|
-
* @param index Current Module's index
|
|
9
|
-
* @param array Module Array
|
|
10
|
-
* @returns True if the Module's address is the first occurrence of
|
|
11
|
-
* that address in the array, false otherwise
|
|
12
|
-
*/
|
|
13
|
-
const duplicateModules = (value, index, array) => {
|
|
14
|
-
return array.findIndex((v) => v.address === value.address) === index;
|
|
15
|
-
};
|
|
16
|
-
exports.duplicateModules = duplicateModules;
|
|
17
|
-
//# sourceMappingURL=duplicateModules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duplicateModules.js","sourceRoot":"","sources":["../../../src/lib/duplicateModules.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;GAQG;AACI,MAAM,gBAAgB,GAAG,CAAC,KAAqB,EAAE,KAAa,EAAE,KAAuB,EAA2B,EAAE;IACzH,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,CAAA;AACtE,CAAC,CAAA;AAFY,QAAA,gBAAgB,oBAE5B"}
|
package/dist/cjs/lib/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./duplicateModules"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./serializable"), exports);
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":";;;AAAA,6DAAkC;AAClC,yDAA8B"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Inspired by https://stackoverflow.com/a/49079549/2803259
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.serializableField = exports.serializable = void 0;
|
|
5
|
-
const tslib_1 = require("tslib");
|
|
6
|
-
const every_1 = tslib_1.__importDefault(require("lodash/every"));
|
|
7
|
-
const isArray_1 = tslib_1.__importDefault(require("lodash/isArray"));
|
|
8
|
-
const isBoolean_1 = tslib_1.__importDefault(require("lodash/isBoolean"));
|
|
9
|
-
const isNull_1 = tslib_1.__importDefault(require("lodash/isNull"));
|
|
10
|
-
const isNumber_1 = tslib_1.__importDefault(require("lodash/isNumber"));
|
|
11
|
-
const isPlainObject_1 = tslib_1.__importDefault(require("lodash/isPlainObject"));
|
|
12
|
-
const isString_1 = tslib_1.__importDefault(require("lodash/isString"));
|
|
13
|
-
const isUndefined_1 = tslib_1.__importDefault(require("lodash/isUndefined"));
|
|
14
|
-
const overSome_1 = tslib_1.__importDefault(require("lodash/overSome"));
|
|
15
|
-
const JSONPrimitiveChecks = [isUndefined_1.default, isNull_1.default, isBoolean_1.default, isNumber_1.default, isString_1.default];
|
|
16
|
-
const JSONComplexChecks = [isPlainObject_1.default, isArray_1.default];
|
|
17
|
-
const serializable = (field, depth) => {
|
|
18
|
-
let depthExceeded = false;
|
|
19
|
-
const decrementDepth = () => (depth ? depth-- : undefined);
|
|
20
|
-
const recursiveSerializable = (field) => {
|
|
21
|
-
if (depth !== undefined && depth < 1) {
|
|
22
|
-
depthExceeded = true;
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
// decrement during every recursion
|
|
26
|
-
decrementDepth();
|
|
27
|
-
const nestedSerializable = (field) => (0, overSome_1.default)(JSONComplexChecks)(field) && (0, every_1.default)(field, recursiveSerializable);
|
|
28
|
-
return (0, overSome_1.default)([...JSONPrimitiveChecks, nestedSerializable])(field);
|
|
29
|
-
};
|
|
30
|
-
const valid = recursiveSerializable(field);
|
|
31
|
-
return depthExceeded ? null : valid;
|
|
32
|
-
};
|
|
33
|
-
exports.serializable = serializable;
|
|
34
|
-
const serializableField = (field) => {
|
|
35
|
-
return (0, overSome_1.default)([...JSONPrimitiveChecks, ...JSONComplexChecks])(field);
|
|
36
|
-
};
|
|
37
|
-
exports.serializableField = serializableField;
|
|
38
|
-
//# sourceMappingURL=serializable.js.map
|