@xyo-network/archivist 2.25.3 → 2.26.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 (84) hide show
  1. package/dist/cjs/Abstract.d.ts +29 -0
  2. package/dist/cjs/Abstract.d.ts.map +1 -0
  3. package/dist/cjs/Abstract.js +23 -0
  4. package/dist/cjs/Abstract.js.map +1 -0
  5. package/dist/cjs/Archivist.d.ts +19 -0
  6. package/dist/cjs/Archivist.d.ts.map +1 -0
  7. package/dist/cjs/Archivist.js +3 -0
  8. package/dist/cjs/Archivist.js.map +1 -0
  9. package/dist/cjs/Query/All.d.ts +7 -0
  10. package/dist/cjs/Query/All.d.ts.map +1 -0
  11. package/dist/cjs/Query/All.js +5 -0
  12. package/dist/cjs/Query/All.js.map +1 -0
  13. package/dist/cjs/Query/Get.d.ts +8 -0
  14. package/dist/cjs/Query/Get.d.ts.map +1 -0
  15. package/dist/cjs/Query/Get.js +5 -0
  16. package/dist/cjs/Query/Get.js.map +1 -0
  17. package/dist/cjs/Query/index.d.ts +2 -0
  18. package/dist/cjs/Query/index.d.ts.map +1 -0
  19. package/dist/cjs/Query/index.js +5 -0
  20. package/dist/cjs/Query/index.js.map +1 -0
  21. package/dist/cjs/XyoArchivist.d.ts +13 -3
  22. package/dist/cjs/XyoArchivist.d.ts.map +1 -1
  23. package/dist/cjs/XyoArchivist.js +3 -0
  24. package/dist/cjs/XyoArchivist.js.map +1 -1
  25. package/dist/cjs/XyoArchivistConfig.d.ts +21 -8
  26. package/dist/cjs/XyoArchivistConfig.d.ts.map +1 -1
  27. package/dist/cjs/XyoArchivistConfig.js +2 -2
  28. package/dist/cjs/XyoArchivistConfig.js.map +1 -1
  29. package/dist/cjs/XyoMemoryArchivist.d.ts +18 -9
  30. package/dist/cjs/XyoMemoryArchivist.d.ts.map +1 -1
  31. package/dist/cjs/XyoMemoryArchivist.js +21 -9
  32. package/dist/cjs/XyoMemoryArchivist.js.map +1 -1
  33. package/dist/cjs/index.d.ts +2 -1
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/index.js +2 -1
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/docs.json +70 -70
  38. package/dist/esm/Abstract.d.ts +29 -0
  39. package/dist/esm/Abstract.d.ts.map +1 -0
  40. package/dist/esm/Abstract.js +18 -0
  41. package/dist/esm/Abstract.js.map +1 -0
  42. package/dist/esm/Archivist.d.ts +19 -0
  43. package/dist/esm/Archivist.d.ts.map +1 -0
  44. package/dist/esm/Archivist.js +2 -0
  45. package/dist/esm/Archivist.js.map +1 -0
  46. package/dist/esm/Query/All.d.ts +7 -0
  47. package/dist/esm/Query/All.d.ts.map +1 -0
  48. package/dist/esm/Query/All.js +2 -0
  49. package/dist/esm/Query/All.js.map +1 -0
  50. package/dist/esm/Query/Get.d.ts +8 -0
  51. package/dist/esm/Query/Get.d.ts.map +1 -0
  52. package/dist/esm/Query/Get.js +2 -0
  53. package/dist/esm/Query/Get.js.map +1 -0
  54. package/dist/esm/Query/index.d.ts +2 -0
  55. package/dist/esm/Query/index.d.ts.map +1 -0
  56. package/dist/esm/Query/index.js +2 -0
  57. package/dist/esm/Query/index.js.map +1 -0
  58. package/dist/esm/XyoArchivist.d.ts +13 -3
  59. package/dist/esm/XyoArchivist.d.ts.map +1 -1
  60. package/dist/esm/XyoArchivist.js +2 -1
  61. package/dist/esm/XyoArchivist.js.map +1 -1
  62. package/dist/esm/XyoArchivistConfig.d.ts +21 -8
  63. package/dist/esm/XyoArchivistConfig.d.ts.map +1 -1
  64. package/dist/esm/XyoArchivistConfig.js +2 -2
  65. package/dist/esm/XyoArchivistConfig.js.map +1 -1
  66. package/dist/esm/XyoMemoryArchivist.d.ts +18 -9
  67. package/dist/esm/XyoMemoryArchivist.d.ts.map +1 -1
  68. package/dist/esm/XyoMemoryArchivist.js +13 -5
  69. package/dist/esm/XyoMemoryArchivist.js.map +1 -1
  70. package/dist/esm/index.d.ts +2 -1
  71. package/dist/esm/index.d.ts.map +1 -1
  72. package/dist/esm/index.js +2 -1
  73. package/dist/esm/index.js.map +1 -1
  74. package/package.json +10 -7
  75. package/src/Abstract.ts +40 -0
  76. package/src/{model/Archivist.ts → Archivist.ts} +1 -6
  77. package/src/Query/All.ts +8 -0
  78. package/src/Query/Get.ts +9 -0
  79. package/src/Query/index.ts +1 -0
  80. package/src/XyoArchivist.ts +19 -3
  81. package/src/XyoArchivistConfig.ts +30 -9
  82. package/src/XyoMemoryArchivist.ts +30 -13
  83. package/src/index.ts +2 -1
  84. package/src/model/index.ts +0 -1
@@ -1,28 +1,34 @@
1
1
  import { assertEx } from '@xylabs/sdk-js'
2
2
  import { XyoBoundWitness, XyoBoundWitnessBuilder } from '@xyo-network/boundwitness'
3
3
  import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
4
+ import { Promisable, PromisableArray } from '@xyo-network/promisable'
5
+ import compact from 'lodash/compact'
4
6
  import LruCache from 'lru-cache'
5
7
 
6
- import { PromisableArray } from './model'
7
- import { XyoArchivist } from './XyoArchivist'
8
- import { XyoArchivistConfig, XyoArchivistConfigWrapper } from './XyoArchivistConfig'
8
+ import { XyoAbstractArchivist } from './Abstract'
9
+ import { XyoArchivistQueryPayload } from './XyoArchivist'
10
+ import { XyoArchivistConfig } from './XyoArchivistConfig'
9
11
  import { XyoPayloadFindQuery } from './XyoPayloadFindFilter'
10
12
 
11
- export interface XyoMemoryArchivistConfig<T extends XyoPayload = XyoPayload> extends XyoArchivistConfig<T> {
13
+ export type XyoMemoryArchivistConfig = XyoArchivistConfig<{
14
+ schema: 'network.xyo.module.config.archivist.memory'
12
15
  max?: number
13
- }
16
+ }>
14
17
 
15
- export class XyoMemoryArchivist<C extends XyoMemoryArchivistConfig<XyoPayload> = XyoMemoryArchivistConfig<XyoPayload>>
16
- extends XyoArchivistConfigWrapper<XyoPayload, C>
17
- implements XyoArchivist
18
- {
18
+ export class XyoMemoryArchivistWrapper<
19
+ Q extends XyoArchivistQueryPayload = XyoArchivistQueryPayload,
20
+ C extends XyoMemoryArchivistConfig = XyoMemoryArchivistConfig,
21
+ > extends XyoAbstractArchivist<Q, C> {
22
+ query<Q>(_query: Q): Promisable<[XyoBoundWitness, XyoPayload<{ schema: string }>[]]> {
23
+ throw new Error('Method not implemented.')
24
+ }
19
25
  public get max() {
20
26
  return this.config?.max ?? 10000
21
27
  }
22
28
 
23
29
  private cache: LruCache<string, XyoPayload>
24
30
 
25
- constructor(config?: C) {
31
+ constructor(config: C) {
26
32
  super(config)
27
33
  this.cache = new LruCache<string, XyoPayload>({ max: this.max })
28
34
  }
@@ -37,10 +43,22 @@ export class XyoMemoryArchivist<C extends XyoMemoryArchivistConfig<XyoPayload> =
37
43
  this.cache.clear()
38
44
  }
39
45
 
46
+ public async getFromParents(hash: string) {
47
+ return compact(
48
+ await Promise.all(
49
+ compact(
50
+ this.parents?.read?.map(async (parent) => {
51
+ return (await parent?.get([hash]))?.[0] ?? null
52
+ }),
53
+ ),
54
+ ),
55
+ )[0]
56
+ }
57
+
40
58
  public async get(hashes: string[]): Promise<(XyoPayload | null)[]> {
41
59
  return await Promise.all(
42
60
  hashes.map(async (hash) => {
43
- return this.cache.get(hash) ?? (await this.parent?.get([hash]))?.pop() ?? null
61
+ return this.cache.get(hash) ?? (await this.getFromParents(hash)) ?? null
44
62
  }),
45
63
  )
46
64
  }
@@ -69,12 +87,11 @@ export class XyoMemoryArchivist<C extends XyoMemoryArchivistConfig<XyoPayload> =
69
87
  }
70
88
 
71
89
  public async commit() {
72
- const parent = assertEx(this.parent, 'Parent is required for commit')
73
90
  const account = assertEx(this.account, 'Account is required for commit')
74
91
  const payloads = assertEx(await this.all(), 'Nothing to commit')
75
92
  const builder = new XyoBoundWitnessBuilder<XyoBoundWitness, XyoPayload>()
76
93
  const block = builder.payloads(payloads).witness(account).build()
77
- const result = await parent.insert?.(payloads.concat([block]))
94
+ const result = await Promise.all(compact(this.parents?.commit?.map(async (parent) => await parent?.insert?.(payloads.concat([block])))))
78
95
  await this.clear()
79
96
  return result
80
97
  }
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
- export * from './model'
1
+ export * from './Abstract'
2
+ export * from './Archivist'
2
3
  export * from './XyoArchivist'
3
4
  export * from './XyoArchivistConfig'
4
5
  export * from './XyoMemoryArchivist'
@@ -1 +0,0 @@
1
- export * from './Archivist'