@xyo-network/module-resolver 2.94.22 → 2.94.24

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 (42) hide show
  1. package/dist/browser/CompositeModuleResolver.d.cts.map +1 -1
  2. package/dist/browser/CompositeModuleResolver.d.mts.map +1 -1
  3. package/dist/browser/CompositeModuleResolver.d.ts.map +1 -1
  4. package/dist/browser/NameRegistrarTransformer.d.cts +10 -0
  5. package/dist/browser/NameRegistrarTransformer.d.cts.map +1 -0
  6. package/dist/browser/NameRegistrarTransformer.d.mts +10 -0
  7. package/dist/browser/NameRegistrarTransformer.d.mts.map +1 -0
  8. package/dist/browser/NameRegistrarTransformer.d.ts +10 -0
  9. package/dist/browser/NameRegistrarTransformer.d.ts.map +1 -0
  10. package/dist/browser/index.cjs +50 -0
  11. package/dist/browser/index.cjs.map +1 -1
  12. package/dist/browser/index.d.cts +1 -0
  13. package/dist/browser/index.d.cts.map +1 -1
  14. package/dist/browser/index.d.mts +1 -0
  15. package/dist/browser/index.d.mts.map +1 -1
  16. package/dist/browser/index.d.ts +1 -0
  17. package/dist/browser/index.d.ts.map +1 -1
  18. package/dist/browser/index.js +50 -0
  19. package/dist/browser/index.js.map +1 -1
  20. package/dist/node/CompositeModuleResolver.d.cts.map +1 -1
  21. package/dist/node/CompositeModuleResolver.d.mts.map +1 -1
  22. package/dist/node/CompositeModuleResolver.d.ts.map +1 -1
  23. package/dist/node/NameRegistrarTransformer.d.cts +10 -0
  24. package/dist/node/NameRegistrarTransformer.d.cts.map +1 -0
  25. package/dist/node/NameRegistrarTransformer.d.mts +10 -0
  26. package/dist/node/NameRegistrarTransformer.d.mts.map +1 -0
  27. package/dist/node/NameRegistrarTransformer.d.ts +10 -0
  28. package/dist/node/NameRegistrarTransformer.d.ts.map +1 -0
  29. package/dist/node/index.cjs +51 -0
  30. package/dist/node/index.cjs.map +1 -1
  31. package/dist/node/index.d.cts +1 -0
  32. package/dist/node/index.d.cts.map +1 -1
  33. package/dist/node/index.d.mts +1 -0
  34. package/dist/node/index.d.mts.map +1 -1
  35. package/dist/node/index.d.ts +1 -0
  36. package/dist/node/index.d.ts.map +1 -1
  37. package/dist/node/index.js +50 -0
  38. package/dist/node/index.js.map +1 -1
  39. package/package.json +12 -8
  40. package/src/CompositeModuleResolver.ts +0 -1
  41. package/src/NameRegistrarTransformer.ts +39 -0
  42. package/src/index.ts +1 -0
package/package.json CHANGED
@@ -10,13 +10,17 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^3.0.25",
14
- "@xylabs/exists": "^3.0.25",
15
- "@xylabs/hex": "^3.0.25",
16
- "@xylabs/lodash": "^3.0.25",
17
- "@xylabs/object": "^3.0.25",
18
- "@xylabs/promise": "^3.0.25",
19
- "@xyo-network/module-model": "~2.94.22",
13
+ "@xylabs/assert": "^3.1.6",
14
+ "@xylabs/exists": "^3.1.6",
15
+ "@xylabs/hex": "^3.1.6",
16
+ "@xylabs/lodash": "^3.1.6",
17
+ "@xylabs/object": "^3.1.6",
18
+ "@xylabs/promise": "^3.1.6",
19
+ "@xyo-network/address-payload-plugin": "~2.94.24",
20
+ "@xyo-network/diviner-model": "~2.94.24",
21
+ "@xyo-network/diviner-payload-model": "~2.94.24",
22
+ "@xyo-network/module-model": "~2.94.24",
23
+ "@xyo-network/payload-model": "~2.94.24",
20
24
  "lru-cache": "^10.2.0"
21
25
  },
22
26
  "devDependencies": {
@@ -65,6 +69,6 @@
65
69
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
66
70
  },
67
71
  "sideEffects": false,
68
- "version": "2.94.22",
72
+ "version": "2.94.24",
69
73
  "type": "module"
70
74
  }
@@ -2,7 +2,6 @@
2
2
  import { assertEx } from '@xylabs/assert'
3
3
  import { exists } from '@xylabs/exists'
4
4
  import { Address } from '@xylabs/hex'
5
- import { BaseParams } from '@xylabs/object'
6
5
  import { Promisable } from '@xylabs/promise'
7
6
  import {
8
7
  CacheConfig,
@@ -0,0 +1,39 @@
1
+ import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
2
+ import { DivinerInstance } from '@xyo-network/diviner-model'
3
+ import { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'
4
+ import { ModuleIdentifier, ModuleIdentifierTransformer } from '@xyo-network/module-model'
5
+ import { isPayloadOfSchemaTypeWithMeta } from '@xyo-network/payload-model'
6
+ import { LRUCache } from 'lru-cache'
7
+
8
+ export class NameRegistrarTransformer implements ModuleIdentifierTransformer {
9
+ private _cache: LRUCache<ModuleIdentifier, ModuleIdentifier> = new LRUCache<ModuleIdentifier, ModuleIdentifier>({ max: 1000, ttl: 1000 * 5 })
10
+
11
+ constructor(
12
+ private registrarDiviner: DivinerInstance,
13
+ private root: string,
14
+ ) {}
15
+
16
+ async transform(identifier: ModuleIdentifier): Promise<ModuleIdentifier> {
17
+ const parts = identifier.split(':')
18
+ const first = parts.shift()
19
+ const nameParts = first?.split('.')
20
+ if (nameParts?.length === 2 && nameParts[1] === this.root) {
21
+ //check cache
22
+ const cachedResult = this._cache.get(identifier)
23
+ if (cachedResult) return cachedResult
24
+
25
+ //not cached, so check registrar
26
+ const query = { domain: nameParts[0], order: 'desc' as const, schema: PayloadDivinerQuerySchema }
27
+ const result = (await this.registrarDiviner?.divine([query]))?.shift()
28
+ if (!result) {
29
+ throw new Error(`Unable to resolve registrar name [${first}]`)
30
+ }
31
+ if (result && isPayloadOfSchemaTypeWithMeta(AddressSchema)(result)) {
32
+ const address = (result as unknown as AddressPayload).address
33
+ this._cache.set(identifier, address)
34
+ return address
35
+ }
36
+ }
37
+ return identifier
38
+ }
39
+ }
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './AbstractModuleResolver'
2
2
  export * from './CompositeModuleResolver'
3
+ export * from './NameRegistrarTransformer'
3
4
  export * from './ResolverEventEmitter'