@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.
Files changed (114) hide show
  1. package/dist/cjs/AbstractIndirectModule.js +38 -18
  2. package/dist/cjs/AbstractIndirectModule.js.map +1 -1
  3. package/dist/cjs/AbstractModule.js +12 -4
  4. package/dist/cjs/AbstractModule.js.map +1 -1
  5. package/dist/cjs/Error.js +3 -3
  6. package/dist/cjs/Error.js.map +1 -1
  7. package/dist/cjs/QueryValidator/ModuleConfigQueryValidator.js +2 -2
  8. package/dist/cjs/QueryValidator/ModuleConfigQueryValidator.js.map +1 -1
  9. package/dist/cjs/QueryValidator/SupportedQueryValidator.js +2 -2
  10. package/dist/cjs/QueryValidator/SupportedQueryValidator.js.map +1 -1
  11. package/dist/cjs/Resolver/CompositeModuleResolver.js +15 -20
  12. package/dist/cjs/Resolver/CompositeModuleResolver.js.map +1 -1
  13. package/dist/cjs/Resolver/SimpleModuleResolver.js +19 -18
  14. package/dist/cjs/Resolver/SimpleModuleResolver.js.map +1 -1
  15. package/dist/cjs/index.js +1 -3
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/esm/AbstractIndirectModule.js +33 -16
  18. package/dist/esm/AbstractIndirectModule.js.map +1 -1
  19. package/dist/esm/AbstractModule.js +12 -4
  20. package/dist/esm/AbstractModule.js.map +1 -1
  21. package/dist/esm/Error.js +1 -1
  22. package/dist/esm/Error.js.map +1 -1
  23. package/dist/esm/QueryValidator/ModuleConfigQueryValidator.js +1 -1
  24. package/dist/esm/QueryValidator/ModuleConfigQueryValidator.js.map +1 -1
  25. package/dist/esm/QueryValidator/SupportedQueryValidator.js +1 -1
  26. package/dist/esm/QueryValidator/SupportedQueryValidator.js.map +1 -1
  27. package/dist/esm/Resolver/CompositeModuleResolver.js +15 -18
  28. package/dist/esm/Resolver/CompositeModuleResolver.js.map +1 -1
  29. package/dist/esm/Resolver/SimpleModuleResolver.js +19 -18
  30. package/dist/esm/Resolver/SimpleModuleResolver.js.map +1 -1
  31. package/dist/esm/index.js +1 -3
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/types/AbstractIndirectModule.d.ts +10 -7
  34. package/dist/types/AbstractIndirectModule.d.ts.map +1 -1
  35. package/dist/types/AbstractModule.d.ts.map +1 -1
  36. package/dist/types/Error.d.ts +1 -1
  37. package/dist/types/Error.d.ts.map +1 -1
  38. package/dist/types/QueryValidator/ModuleConfigQueryValidator.d.ts.map +1 -1
  39. package/dist/types/QueryValidator/QueryValidator.d.ts +1 -1
  40. package/dist/types/QueryValidator/QueryValidator.d.ts.map +1 -1
  41. package/dist/types/QueryValidator/SupportedQueryValidator.d.ts.map +1 -1
  42. package/dist/types/Resolver/CompositeModuleResolver.d.ts +2 -2
  43. package/dist/types/Resolver/CompositeModuleResolver.d.ts.map +1 -1
  44. package/dist/types/Resolver/SimpleModuleResolver.d.ts +2 -2
  45. package/dist/types/Resolver/SimpleModuleResolver.d.ts.map +1 -1
  46. package/dist/types/index.d.ts +1 -3
  47. package/dist/types/index.d.ts.map +1 -1
  48. package/package.json +22 -24
  49. package/src/AbstractIndirectModule.ts +42 -22
  50. package/src/AbstractModule.ts +12 -4
  51. package/src/Error.ts +1 -1
  52. package/src/QueryValidator/ModuleConfigQueryValidator.ts +1 -1
  53. package/src/QueryValidator/QueryValidator.ts +1 -1
  54. package/src/QueryValidator/SupportedQueryValidator.ts +2 -2
  55. package/src/Resolver/CompositeModuleResolver.ts +22 -19
  56. package/src/Resolver/SimpleModuleResolver.ts +21 -21
  57. package/src/index.ts +1 -3
  58. package/dist/cjs/ModuleFactory.js +0 -30
  59. package/dist/cjs/ModuleFactory.js.map +0 -1
  60. package/dist/cjs/Query/QueryBoundWitnessBuilder.js +0 -31
  61. package/dist/cjs/Query/QueryBoundWitnessBuilder.js.map +0 -1
  62. package/dist/cjs/Query/QueryBoundWitnessValidator.js +0 -58
  63. package/dist/cjs/Query/QueryBoundWitnessValidator.js.map +0 -1
  64. package/dist/cjs/Query/QueryBoundWitnessWrapper.js +0 -62
  65. package/dist/cjs/Query/QueryBoundWitnessWrapper.js.map +0 -1
  66. package/dist/cjs/Query/index.js +0 -7
  67. package/dist/cjs/Query/index.js.map +0 -1
  68. package/dist/cjs/lib/duplicateModules.js +0 -17
  69. package/dist/cjs/lib/duplicateModules.js.map +0 -1
  70. package/dist/cjs/lib/index.js +0 -6
  71. package/dist/cjs/lib/index.js.map +0 -1
  72. package/dist/cjs/lib/serializable.js +0 -38
  73. package/dist/cjs/lib/serializable.js.map +0 -1
  74. package/dist/docs.json +0 -39081
  75. package/dist/esm/ModuleFactory.js +0 -28
  76. package/dist/esm/ModuleFactory.js.map +0 -1
  77. package/dist/esm/Query/QueryBoundWitnessBuilder.js +0 -26
  78. package/dist/esm/Query/QueryBoundWitnessBuilder.js.map +0 -1
  79. package/dist/esm/Query/QueryBoundWitnessValidator.js +0 -47
  80. package/dist/esm/Query/QueryBoundWitnessValidator.js.map +0 -1
  81. package/dist/esm/Query/QueryBoundWitnessWrapper.js +0 -46
  82. package/dist/esm/Query/QueryBoundWitnessWrapper.js.map +0 -1
  83. package/dist/esm/Query/index.js +0 -4
  84. package/dist/esm/Query/index.js.map +0 -1
  85. package/dist/esm/lib/duplicateModules.js +0 -13
  86. package/dist/esm/lib/duplicateModules.js.map +0 -1
  87. package/dist/esm/lib/index.js +0 -3
  88. package/dist/esm/lib/index.js.map +0 -1
  89. package/dist/esm/lib/serializable.js +0 -32
  90. package/dist/esm/lib/serializable.js.map +0 -1
  91. package/dist/types/ModuleFactory.d.ts +0 -17
  92. package/dist/types/ModuleFactory.d.ts.map +0 -1
  93. package/dist/types/Query/QueryBoundWitnessBuilder.d.ts +0 -12
  94. package/dist/types/Query/QueryBoundWitnessBuilder.d.ts.map +0 -1
  95. package/dist/types/Query/QueryBoundWitnessValidator.d.ts +0 -10
  96. package/dist/types/Query/QueryBoundWitnessValidator.d.ts.map +0 -1
  97. package/dist/types/Query/QueryBoundWitnessWrapper.d.ts +0 -18
  98. package/dist/types/Query/QueryBoundWitnessWrapper.d.ts.map +0 -1
  99. package/dist/types/Query/index.d.ts +0 -4
  100. package/dist/types/Query/index.d.ts.map +0 -1
  101. package/dist/types/lib/duplicateModules.d.ts +0 -12
  102. package/dist/types/lib/duplicateModules.d.ts.map +0 -1
  103. package/dist/types/lib/index.d.ts +0 -3
  104. package/dist/types/lib/index.d.ts.map +0 -1
  105. package/dist/types/lib/serializable.d.ts +0 -3
  106. package/dist/types/lib/serializable.d.ts.map +0 -1
  107. package/src/ModuleFactory.ts +0 -42
  108. package/src/Query/QueryBoundWitnessBuilder.ts +0 -33
  109. package/src/Query/QueryBoundWitnessValidator.ts +0 -50
  110. package/src/Query/QueryBoundWitnessWrapper.ts +0 -65
  111. package/src/Query/index.ts +0 -3
  112. package/src/lib/duplicateModules.ts +0 -14
  113. package/src/lib/index.ts +0 -2
  114. 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 { Account, HDWallet } from '@xyo-network/account'
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 { ArchivistModule } from '@xyo-network/archivist-model'
7
- import { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'
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
- const result = await this.queryHandler(assertEx(QueryBoundWitnessWrapper.unwrap(query)), payloads, queryConfig)
238
+ return await this.busy(async () => {
239
+ const result = await this.queryHandler(assertEx(QueryBoundWitnessWrapper.unwrap(query)), payloads, queryConfig)
218
240
 
219
- const args: ModuleQueriedEventArgs = { module: this as IndirectModule, payloads, query, result }
220
- await this.emit('moduleQueried', args)
241
+ const args: ModuleQueriedEventArgs = { module: this, payloads, query, result }
242
+ await this.emit('moduleQueried', args)
221
243
 
222
- return result
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
- const byAddress = Account.isAddress(nameOrAddressOrFilter)
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<ArchivistModule | undefined> {
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.resolveOne(filter)
495
- return resolved ? (resolved as ArchivistModule) : undefined
514
+ const resolved = await this.upResolver.resolve(filter)
515
+ return resolved ? IndirectArchivistWrapper.wrap(resolved, this.account) : undefined
496
516
  }
497
517
  }
@@ -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 super.addressPreviousHash()
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 super.describe()
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 super.discover()
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 super.manifest()
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,4 +1,4 @@
1
- import { QueryBoundWitness } from '@xyo-network/module-model'
1
+ import { QueryBoundWitness } from '@xyo-network/boundwitness-builder'
2
2
  import { Payload } from '@xyo-network/payload-model'
3
3
  import { Promisable } from '@xyo-network/promise'
4
4
 
@@ -1,7 +1,7 @@
1
- import { IndirectModule, ModuleQuery, QueryBoundWitness } from '@xyo-network/module-model'
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 { fulfilled } from '@xylabs/promise'
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<T extends IndirectModule = IndirectModule>(filter?: ModuleFilter): Promise<T[]> {
54
- const modules = await Promise.allSettled(this.resolvers.map((resolver) => resolver.resolve(filter)))
55
- const result = modules
56
- .filter(fulfilled)
57
- .map((r) => r.value)
58
- .flat()
59
- .filter(duplicateModules)
60
- return result as T[]
61
- }
62
-
63
- async resolveOne<T extends IndirectModule = IndirectModule>(addressOrName: string): Promise<T | undefined> {
64
- for (let i = 0; i < this.resolvers.length; i++) {
65
- const resolver = this.resolvers[i]
66
- const result = await resolver.resolveOne<T>(addressOrName)
67
- if (result) return result
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<T extends IndirectModule = IndirectModule>(filter?: ModuleFilter): Promisable<T[]> {
52
- const filteredByName: T[] = this.resolveByName<T>(Object.values(this.modules) as T[], (filter as NameModuleFilter)?.name)
53
-
54
- const filteredByAddress: T[] = (filter as AddressModuleFilter)?.address
55
- ? this.resolveByAddress<T>(filteredByName, (filter as AddressModuleFilter)?.address)
56
- : filteredByName
57
-
58
- const filteredByQuery: T[] = (filter as QueryModuleFilter)?.query
59
- ? this.resolveByQuery<T>(filteredByAddress, (filter as QueryModuleFilter)?.query)
60
- : filteredByAddress
61
-
62
- return filteredByQuery
63
- }
64
-
65
- resolveOne<T extends IndirectModule = IndirectModule>(filter: string): Promisable<T | undefined> {
66
- const allModules = Object.values(this.modules) as T[]
67
- for (const resolutionMethod of [this.resolveByAddress, this.resolveByName]) {
68
- const filtered: T[] = resolutionMethod(allModules, [filter])
69
- if (filtered.length === 1) return filtered[0]
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((modules) => modules.address === address)
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"}
@@ -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"}
@@ -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