@xyo-network/archivist 2.31.4 → 2.32.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/dist/cjs/Archivist.d.ts +12 -7
  2. package/dist/cjs/Archivist.d.ts.map +1 -1
  3. package/dist/cjs/Config.d.ts +0 -8
  4. package/dist/cjs/Config.d.ts.map +1 -1
  5. package/dist/cjs/Config.js +0 -23
  6. package/dist/cjs/Config.js.map +1 -1
  7. package/dist/cjs/Queries/All.d.ts +7 -0
  8. package/dist/cjs/Queries/All.d.ts.map +1 -0
  9. package/dist/cjs/Queries/All.js +5 -0
  10. package/dist/cjs/Queries/All.js.map +1 -0
  11. package/dist/cjs/Queries/Clear.d.ts +7 -0
  12. package/dist/cjs/Queries/Clear.d.ts.map +1 -0
  13. package/dist/cjs/Queries/Clear.js +5 -0
  14. package/dist/cjs/Queries/Clear.js.map +1 -0
  15. package/dist/cjs/Queries/Commit.d.ts +7 -0
  16. package/dist/cjs/Queries/Commit.d.ts.map +1 -0
  17. package/dist/cjs/Queries/Commit.js +5 -0
  18. package/dist/cjs/Queries/Commit.js.map +1 -0
  19. package/dist/cjs/Queries/Delete.d.ts +8 -0
  20. package/dist/cjs/Queries/Delete.d.ts.map +1 -0
  21. package/dist/cjs/Queries/Delete.js +5 -0
  22. package/dist/cjs/Queries/Delete.js.map +1 -0
  23. package/dist/cjs/Queries/Find.d.ts +9 -0
  24. package/dist/cjs/Queries/Find.d.ts.map +1 -0
  25. package/dist/cjs/Queries/Find.js +5 -0
  26. package/dist/cjs/Queries/Find.js.map +1 -0
  27. package/dist/cjs/Queries/Get.d.ts +8 -0
  28. package/dist/cjs/Queries/Get.d.ts.map +1 -0
  29. package/dist/cjs/Queries/Get.js +5 -0
  30. package/dist/cjs/Queries/Get.js.map +1 -0
  31. package/dist/cjs/Queries/Insert.d.ts +9 -0
  32. package/dist/cjs/Queries/Insert.d.ts.map +1 -0
  33. package/dist/cjs/Queries/Insert.js +5 -0
  34. package/dist/cjs/Queries/Insert.js.map +1 -0
  35. package/dist/cjs/Queries/Payload.d.ts +10 -0
  36. package/dist/cjs/Queries/Payload.d.ts.map +1 -0
  37. package/dist/cjs/{Query → Queries}/Payload.js +0 -0
  38. package/dist/cjs/{Query → Queries}/Payload.js.map +1 -1
  39. package/dist/cjs/Queries/Schema.d.ts +10 -0
  40. package/dist/cjs/Queries/Schema.d.ts.map +1 -0
  41. package/dist/cjs/{Query → Queries}/Schema.js +0 -0
  42. package/dist/cjs/{Query → Queries}/Schema.js.map +1 -1
  43. package/dist/cjs/{Query → Queries}/index.d.ts +0 -0
  44. package/dist/cjs/Queries/index.d.ts.map +1 -0
  45. package/dist/cjs/{Query → Queries}/index.js +0 -0
  46. package/dist/cjs/Queries/index.js.map +1 -0
  47. package/dist/cjs/XyoArchivist.d.ts +43 -0
  48. package/dist/cjs/XyoArchivist.d.ts.map +1 -0
  49. package/dist/cjs/XyoArchivist.js +122 -0
  50. package/dist/cjs/XyoArchivist.js.map +1 -0
  51. package/dist/cjs/XyoArchivistWrapper.d.ts +5 -7
  52. package/dist/cjs/XyoArchivistWrapper.d.ts.map +1 -1
  53. package/dist/cjs/XyoArchivistWrapper.js +12 -17
  54. package/dist/cjs/XyoArchivistWrapper.js.map +1 -1
  55. package/dist/cjs/XyoCookieArchivist.d.ts +33 -0
  56. package/dist/cjs/XyoCookieArchivist.d.ts.map +1 -0
  57. package/dist/cjs/XyoCookieArchivist.js +158 -0
  58. package/dist/cjs/XyoCookieArchivist.js.map +1 -0
  59. package/dist/cjs/XyoMemoryArchivist.d.ts +7 -12
  60. package/dist/cjs/XyoMemoryArchivist.d.ts.map +1 -1
  61. package/dist/cjs/XyoMemoryArchivist.js +34 -37
  62. package/dist/cjs/XyoMemoryArchivist.js.map +1 -1
  63. package/dist/cjs/XyoStorageArchivist.d.ts +33 -0
  64. package/dist/cjs/XyoStorageArchivist.d.ts.map +1 -0
  65. package/dist/cjs/XyoStorageArchivist.js +150 -0
  66. package/dist/cjs/XyoStorageArchivist.js.map +1 -0
  67. package/dist/cjs/index.d.ts +5 -2
  68. package/dist/cjs/index.d.ts.map +1 -1
  69. package/dist/cjs/index.js +5 -2
  70. package/dist/cjs/index.js.map +1 -1
  71. package/dist/docs.json +17381 -5336
  72. package/dist/esm/Archivist.d.ts +12 -7
  73. package/dist/esm/Archivist.d.ts.map +1 -1
  74. package/dist/esm/Config.d.ts +0 -8
  75. package/dist/esm/Config.d.ts.map +1 -1
  76. package/dist/esm/Config.js +1 -18
  77. package/dist/esm/Config.js.map +1 -1
  78. package/dist/esm/Queries/All.d.ts +7 -0
  79. package/dist/esm/Queries/All.d.ts.map +1 -0
  80. package/dist/esm/Queries/All.js +2 -0
  81. package/dist/esm/Queries/All.js.map +1 -0
  82. package/dist/esm/Queries/Clear.d.ts +7 -0
  83. package/dist/esm/Queries/Clear.d.ts.map +1 -0
  84. package/dist/esm/Queries/Clear.js +2 -0
  85. package/dist/esm/Queries/Clear.js.map +1 -0
  86. package/dist/esm/Queries/Commit.d.ts +7 -0
  87. package/dist/esm/Queries/Commit.d.ts.map +1 -0
  88. package/dist/esm/Queries/Commit.js +2 -0
  89. package/dist/esm/Queries/Commit.js.map +1 -0
  90. package/dist/esm/Queries/Delete.d.ts +8 -0
  91. package/dist/esm/Queries/Delete.d.ts.map +1 -0
  92. package/dist/esm/Queries/Delete.js +2 -0
  93. package/dist/esm/Queries/Delete.js.map +1 -0
  94. package/dist/esm/Queries/Find.d.ts +9 -0
  95. package/dist/esm/Queries/Find.d.ts.map +1 -0
  96. package/dist/esm/Queries/Find.js +2 -0
  97. package/dist/esm/Queries/Find.js.map +1 -0
  98. package/dist/esm/Queries/Get.d.ts +8 -0
  99. package/dist/esm/Queries/Get.d.ts.map +1 -0
  100. package/dist/esm/Queries/Get.js +2 -0
  101. package/dist/esm/Queries/Get.js.map +1 -0
  102. package/dist/esm/Queries/Insert.d.ts +9 -0
  103. package/dist/esm/Queries/Insert.d.ts.map +1 -0
  104. package/dist/esm/Queries/Insert.js +2 -0
  105. package/dist/esm/Queries/Insert.js.map +1 -0
  106. package/dist/esm/Queries/Payload.d.ts +10 -0
  107. package/dist/esm/Queries/Payload.d.ts.map +1 -0
  108. package/dist/esm/{Query → Queries}/Payload.js +0 -0
  109. package/dist/esm/{Query → Queries}/Payload.js.map +1 -1
  110. package/dist/esm/Queries/Schema.d.ts +10 -0
  111. package/dist/esm/Queries/Schema.d.ts.map +1 -0
  112. package/dist/esm/{Query → Queries}/Schema.js +0 -0
  113. package/dist/esm/{Query → Queries}/Schema.js.map +1 -1
  114. package/dist/esm/{Query → Queries}/index.d.ts +0 -0
  115. package/dist/esm/Queries/index.d.ts.map +1 -0
  116. package/dist/esm/{Query → Queries}/index.js +0 -0
  117. package/dist/esm/Queries/index.js.map +1 -0
  118. package/dist/esm/XyoArchivist.d.ts +43 -0
  119. package/dist/esm/XyoArchivist.d.ts.map +1 -0
  120. package/dist/esm/XyoArchivist.js +102 -0
  121. package/dist/esm/XyoArchivist.js.map +1 -0
  122. package/dist/esm/XyoArchivistWrapper.d.ts +5 -7
  123. package/dist/esm/XyoArchivistWrapper.d.ts.map +1 -1
  124. package/dist/esm/XyoArchivistWrapper.js +12 -18
  125. package/dist/esm/XyoArchivistWrapper.js.map +1 -1
  126. package/dist/esm/XyoCookieArchivist.d.ts +33 -0
  127. package/dist/esm/XyoCookieArchivist.d.ts.map +1 -0
  128. package/dist/esm/XyoCookieArchivist.js +139 -0
  129. package/dist/esm/XyoCookieArchivist.js.map +1 -0
  130. package/dist/esm/XyoMemoryArchivist.d.ts +7 -12
  131. package/dist/esm/XyoMemoryArchivist.d.ts.map +1 -1
  132. package/dist/esm/XyoMemoryArchivist.js +22 -23
  133. package/dist/esm/XyoMemoryArchivist.js.map +1 -1
  134. package/dist/esm/XyoStorageArchivist.d.ts +33 -0
  135. package/dist/esm/XyoStorageArchivist.d.ts.map +1 -0
  136. package/dist/esm/XyoStorageArchivist.js +132 -0
  137. package/dist/esm/XyoStorageArchivist.js.map +1 -0
  138. package/dist/esm/index.d.ts +5 -2
  139. package/dist/esm/index.d.ts.map +1 -1
  140. package/dist/esm/index.js +5 -2
  141. package/dist/esm/index.js.map +1 -1
  142. package/package.json +11 -5
  143. package/src/Archivist.ts +32 -14
  144. package/src/Config.ts +0 -23
  145. package/src/Queries/All.ts +8 -0
  146. package/src/Queries/Clear.ts +8 -0
  147. package/src/Queries/Commit.ts +8 -0
  148. package/src/Queries/Delete.ts +9 -0
  149. package/src/Queries/Find.ts +11 -0
  150. package/src/Queries/Get.ts +9 -0
  151. package/src/Queries/Insert.ts +10 -0
  152. package/src/Queries/Payload.ts +19 -0
  153. package/src/Queries/Schema.ts +20 -0
  154. package/src/{Query → Queries}/index.ts +0 -0
  155. package/src/XyoArchivist.ts +147 -0
  156. package/src/XyoArchivistWrapper.ts +29 -38
  157. package/src/XyoCookieArchivist.ts +176 -0
  158. package/src/XyoMemoryArchivist.ts +33 -42
  159. package/src/XyoStorageArchivist.ts +169 -0
  160. package/src/index.ts +5 -2
  161. package/dist/cjs/Abstract.d.ts +0 -23
  162. package/dist/cjs/Abstract.d.ts.map +0 -1
  163. package/dist/cjs/Abstract.js +0 -83
  164. package/dist/cjs/Abstract.js.map +0 -1
  165. package/dist/cjs/Query/All.d.ts +0 -7
  166. package/dist/cjs/Query/All.d.ts.map +0 -1
  167. package/dist/cjs/Query/All.js +0 -5
  168. package/dist/cjs/Query/All.js.map +0 -1
  169. package/dist/cjs/Query/Clear.d.ts +0 -7
  170. package/dist/cjs/Query/Clear.d.ts.map +0 -1
  171. package/dist/cjs/Query/Clear.js +0 -5
  172. package/dist/cjs/Query/Clear.js.map +0 -1
  173. package/dist/cjs/Query/Commit.d.ts +0 -7
  174. package/dist/cjs/Query/Commit.d.ts.map +0 -1
  175. package/dist/cjs/Query/Commit.js +0 -5
  176. package/dist/cjs/Query/Commit.js.map +0 -1
  177. package/dist/cjs/Query/Delete.d.ts +0 -8
  178. package/dist/cjs/Query/Delete.d.ts.map +0 -1
  179. package/dist/cjs/Query/Delete.js +0 -5
  180. package/dist/cjs/Query/Delete.js.map +0 -1
  181. package/dist/cjs/Query/Find.d.ts +0 -9
  182. package/dist/cjs/Query/Find.d.ts.map +0 -1
  183. package/dist/cjs/Query/Find.js +0 -5
  184. package/dist/cjs/Query/Find.js.map +0 -1
  185. package/dist/cjs/Query/Get.d.ts +0 -8
  186. package/dist/cjs/Query/Get.d.ts.map +0 -1
  187. package/dist/cjs/Query/Get.js +0 -5
  188. package/dist/cjs/Query/Get.js.map +0 -1
  189. package/dist/cjs/Query/Insert.d.ts +0 -9
  190. package/dist/cjs/Query/Insert.d.ts.map +0 -1
  191. package/dist/cjs/Query/Insert.js +0 -5
  192. package/dist/cjs/Query/Insert.js.map +0 -1
  193. package/dist/cjs/Query/Payload.d.ts +0 -10
  194. package/dist/cjs/Query/Payload.d.ts.map +0 -1
  195. package/dist/cjs/Query/Schema.d.ts +0 -10
  196. package/dist/cjs/Query/Schema.d.ts.map +0 -1
  197. package/dist/cjs/Query/index.d.ts.map +0 -1
  198. package/dist/cjs/Query/index.js.map +0 -1
  199. package/dist/esm/Abstract.d.ts +0 -23
  200. package/dist/esm/Abstract.d.ts.map +0 -1
  201. package/dist/esm/Abstract.js +0 -75
  202. package/dist/esm/Abstract.js.map +0 -1
  203. package/dist/esm/Query/All.d.ts +0 -7
  204. package/dist/esm/Query/All.d.ts.map +0 -1
  205. package/dist/esm/Query/All.js +0 -2
  206. package/dist/esm/Query/All.js.map +0 -1
  207. package/dist/esm/Query/Clear.d.ts +0 -7
  208. package/dist/esm/Query/Clear.d.ts.map +0 -1
  209. package/dist/esm/Query/Clear.js +0 -2
  210. package/dist/esm/Query/Clear.js.map +0 -1
  211. package/dist/esm/Query/Commit.d.ts +0 -7
  212. package/dist/esm/Query/Commit.d.ts.map +0 -1
  213. package/dist/esm/Query/Commit.js +0 -2
  214. package/dist/esm/Query/Commit.js.map +0 -1
  215. package/dist/esm/Query/Delete.d.ts +0 -8
  216. package/dist/esm/Query/Delete.d.ts.map +0 -1
  217. package/dist/esm/Query/Delete.js +0 -2
  218. package/dist/esm/Query/Delete.js.map +0 -1
  219. package/dist/esm/Query/Find.d.ts +0 -9
  220. package/dist/esm/Query/Find.d.ts.map +0 -1
  221. package/dist/esm/Query/Find.js +0 -2
  222. package/dist/esm/Query/Find.js.map +0 -1
  223. package/dist/esm/Query/Get.d.ts +0 -8
  224. package/dist/esm/Query/Get.d.ts.map +0 -1
  225. package/dist/esm/Query/Get.js +0 -2
  226. package/dist/esm/Query/Get.js.map +0 -1
  227. package/dist/esm/Query/Insert.d.ts +0 -9
  228. package/dist/esm/Query/Insert.d.ts.map +0 -1
  229. package/dist/esm/Query/Insert.js +0 -2
  230. package/dist/esm/Query/Insert.js.map +0 -1
  231. package/dist/esm/Query/Payload.d.ts +0 -10
  232. package/dist/esm/Query/Payload.d.ts.map +0 -1
  233. package/dist/esm/Query/Schema.d.ts +0 -10
  234. package/dist/esm/Query/Schema.d.ts.map +0 -1
  235. package/dist/esm/Query/index.d.ts.map +0 -1
  236. package/dist/esm/Query/index.js.map +0 -1
  237. package/src/Abstract.ts +0 -108
  238. package/src/Query/All.ts +0 -8
  239. package/src/Query/Clear.ts +0 -8
  240. package/src/Query/Commit.ts +0 -8
  241. package/src/Query/Delete.ts +0 -9
  242. package/src/Query/Find.ts +0 -11
  243. package/src/Query/Get.ts +0 -9
  244. package/src/Query/Insert.ts +0 -10
  245. package/src/Query/Payload.ts +0 -19
  246. package/src/Query/Schema.ts +0 -20
@@ -0,0 +1,139 @@
1
+ import { assertEx } from '@xylabs/sdk-js';
2
+ import { XyoPayloadWrapper } from '@xyo-network/payload';
3
+ import Cookies from 'js-cookie';
4
+ import compact from 'lodash/compact';
5
+ import { XyoArchivistAllQuerySchema, XyoArchivistClearQuerySchema, XyoArchivistCommitQuerySchema, XyoArchivistDeleteQuerySchema, XyoArchivistFindQuerySchema, XyoArchivistInsertQuerySchema, } from './Queries';
6
+ import { XyoArchivist } from './XyoArchivist';
7
+ export const XyoCookieArchivistConfigSchema = 'network.xyo.module.config.archivist.cookie';
8
+ class CookieArchivistError extends Error {
9
+ constructor(action, error, message) {
10
+ super(`Cookie Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error });
11
+ }
12
+ }
13
+ export class XyoCookieArchivist extends XyoArchivist {
14
+ get domain() {
15
+ return this.config?.domain;
16
+ }
17
+ get namespace() {
18
+ return this.config?.namespace ?? 'xyoarch';
19
+ }
20
+ get maxEntries() {
21
+ //all browsers support at least 60 cookies
22
+ return this.config?.maxEntries ?? 60;
23
+ }
24
+ get maxEntrySize() {
25
+ //all browsers support at least 4000 length per cookie
26
+ return this.config?.maxEntrySize ?? 4000;
27
+ }
28
+ get queries() {
29
+ return [
30
+ ...super.queries,
31
+ XyoArchivistAllQuerySchema,
32
+ XyoArchivistDeleteQuerySchema,
33
+ XyoArchivistClearQuerySchema,
34
+ XyoArchivistFindQuerySchema,
35
+ XyoArchivistCommitQuerySchema,
36
+ ];
37
+ }
38
+ constructor(config) {
39
+ super({ ...config, schema: XyoCookieArchivistConfigSchema });
40
+ }
41
+ keyFromHash(hash) {
42
+ return `${this.namespace}-${hash}`;
43
+ }
44
+ delete(hashes) {
45
+ try {
46
+ return hashes.map((hash) => {
47
+ Cookies.remove(this.keyFromHash(hash));
48
+ return true;
49
+ });
50
+ }
51
+ catch (ex) {
52
+ throw new CookieArchivistError('delete', ex, 'unexpected');
53
+ }
54
+ }
55
+ clear() {
56
+ try {
57
+ Object.entries(Cookies.get()).map(([key]) => {
58
+ if (key.startsWith(`${this.namespace}-`)) {
59
+ Cookies.remove(key);
60
+ }
61
+ });
62
+ }
63
+ catch (ex) {
64
+ throw new CookieArchivistError('clear', ex, 'unexpected');
65
+ }
66
+ }
67
+ async get(hashes) {
68
+ try {
69
+ return await Promise.all(hashes.map(async (hash) => {
70
+ const cookieString = Cookies.get(this.keyFromHash(hash));
71
+ return cookieString ? JSON.parse(cookieString) : (await this.getFromParents(hash)) ?? null;
72
+ }));
73
+ }
74
+ catch (ex) {
75
+ throw new CookieArchivistError('get', ex, 'unexpected');
76
+ }
77
+ }
78
+ async insert(payloads) {
79
+ try {
80
+ const storedPayloads = payloads.map((payload) => {
81
+ const wrapper = new XyoPayloadWrapper(payload);
82
+ const key = this.keyFromHash(wrapper.hash);
83
+ const value = JSON.stringify(wrapper.payload);
84
+ assertEx(value.length < this.maxEntrySize, `Payload too large [${wrapper.hash}, ${value.length}]`);
85
+ Cookies.set(key, JSON.stringify(wrapper.payload));
86
+ return wrapper.payload;
87
+ });
88
+ const boundwitness = this.bindPayloads(storedPayloads);
89
+ if (this.writeThrough) {
90
+ await this.writeToParents([boundwitness, ...storedPayloads]);
91
+ }
92
+ return boundwitness;
93
+ }
94
+ catch (ex) {
95
+ throw new CookieArchivistError('insert', ex, 'unexpected');
96
+ }
97
+ }
98
+ async find(filter) {
99
+ try {
100
+ const x = (await this.all()).filter((payload) => {
101
+ if (filter.schema && filter.schema !== payload.schema) {
102
+ return false;
103
+ }
104
+ return true;
105
+ });
106
+ return x;
107
+ }
108
+ catch (ex) {
109
+ throw new CookieArchivistError('find', ex, 'unexpected');
110
+ }
111
+ }
112
+ all() {
113
+ try {
114
+ return Object.entries(Cookies.get())
115
+ .filter(([key]) => key.startsWith(`${this.namespace}-`))
116
+ .map(([, value]) => JSON.parse(value));
117
+ }
118
+ catch (ex) {
119
+ throw new CookieArchivistError('all', ex, 'unexpected');
120
+ }
121
+ }
122
+ async commit() {
123
+ try {
124
+ const payloads = await this.all();
125
+ assertEx(payloads.length > 0, 'Nothing to commit');
126
+ const block = this.bindPayloads(payloads);
127
+ await Promise.allSettled(compact(Object.values(this.parents?.commit ?? [])?.map(async (parent) => {
128
+ const query = { payloads: [block, ...payloads], schema: XyoArchivistInsertQuerySchema };
129
+ return await parent?.query(query);
130
+ })));
131
+ await this.clear();
132
+ return block;
133
+ }
134
+ catch (ex) {
135
+ throw new CookieArchivistError('commit', ex, 'unexpected');
136
+ }
137
+ }
138
+ }
139
+ //# sourceMappingURL=XyoCookieArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoCookieArchivist.js","sourceRoot":"","sources":["../../src/XyoCookieArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEpE,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,OAAO,OAAO,MAAM,gBAAgB,CAAA;AAIpC,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,2BAA2B,EAE3B,6BAA6B,GAC9B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7C,MAAM,CAAC,MAAM,8BAA8B,GAAmC,4CAA4C,CAAA;AAU1H,MAAM,oBAAqB,SAAQ,KAAK;IACtC,YAAY,MAAc,EAAE,KAAqB,EAAE,OAAgB;QACjE,KAAK,CAAC,qBAAqB,MAAM,WAAW,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACjG,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAsC;IAC5E,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAA;IAC5B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,SAAS,CAAA;IAC5C,CAAC;IAED,IAAW,UAAU;QACnB,0CAA0C;QAC1C,OAAO,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAA;IACtC,CAAC;IAED,IAAW,YAAY;QACrB,sDAAsD;QACtD,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,IAAI,CAAA;IAC1C,CAAC;IAED,IAAoB,OAAO;QACzB,OAAO;YACL,GAAG,KAAK,CAAC,OAAO;YAChB,0BAA0B;YAC1B,6BAA6B;YAC7B,4BAA4B;YAC5B,2BAA2B;YAC3B,6BAA6B;SAC9B,CAAA;IACH,CAAC;IAED,YAAY,MAAyD;QACnE,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC,CAAA;IAC9D,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAA;IACpC,CAAC;IAEM,MAAM,CAAC,MAAgB;QAC5B,IAAI;YACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;gBACtC,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;SACH;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;SAC3D;IACH,CAAC;IAEe,KAAK;QACnB,IAAI;YACF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;gBAC1C,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;oBACxC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;iBACpB;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;SAC1D;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,MAAgB;QAC/B,IAAI;YACF,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACxB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;gBACxD,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAA;YAC5F,CAAC,CAAC,CACH,CAAA;SACF;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;SACxD;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,QAAsB;QACxC,IAAI;YACF,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC9C,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;gBAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC7C,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,sBAAsB,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;gBAClG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;gBACjD,OAAO,OAAO,CAAC,OAAO,CAAA;YACxB,CAAC,CAAC,CAAA;YACF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YACtD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,YAAY,EAAE,GAAG,cAAc,CAAC,CAAC,CAAA;aAC7D;YACD,OAAO,YAAY,CAAA;SACpB;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;SAC3D;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAA4B;QAC5C,IAAI;YACF,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC9C,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE;oBACrD,OAAO,KAAK,CAAA;iBACb;gBACD,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;YACF,OAAO,CAAC,CAAA;SACT;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;SACzD;IACH,CAAC;IAEM,GAAG;QACR,IAAI;YACF,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;iBACjC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;iBACvD,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;SACzC;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;SACxD;IACH,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;YACjC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAA;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YACzC,MAAM,OAAO,CAAC,UAAU,CACtB,OAAO,CACL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC9D,MAAM,KAAK,GAA4B,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAA;gBAChH,OAAO,MAAM,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACnC,CAAC,CAAC,CACH,CACF,CAAA;YACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,OAAO,KAAK,CAAA;SACb;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;SAC3D;IACH,CAAC;CACF"}
@@ -1,8 +1,9 @@
1
+ import { XyoBoundWitness } from '@xyo-network/boundwitness';
1
2
  import { XyoPayload } from '@xyo-network/payload';
2
3
  import { PromisableArray } from '@xyo-network/promisable';
3
- import { XyoArchivist } from './Abstract';
4
4
  import { XyoArchivistConfig } from './Config';
5
5
  import { PartialArchivistConfig } from './PartialArchivistConfig';
6
+ import { XyoArchivist } from './XyoArchivist';
6
7
  import { XyoPayloadFindFilter } from './XyoPayloadFindFilter';
7
8
  export declare type XyoMemoryArchivistConfigSchema = 'network.xyo.module.config.archivist.memory';
8
9
  export declare const XyoMemoryArchivistConfigSchema: XyoMemoryArchivistConfigSchema;
@@ -13,20 +14,14 @@ export declare type XyoMemoryArchivistConfig = XyoArchivistConfig<{
13
14
  export declare class XyoMemoryArchivist extends XyoArchivist<XyoMemoryArchivistConfig> {
14
15
  get max(): number;
15
16
  private cache;
16
- get queries(): import("./Query").XyoArchivistQueryPayloadSchema<never>[];
17
- constructor(config: PartialArchivistConfig<XyoMemoryArchivistConfig>);
17
+ get queries(): import("./Queries").XyoArchivistQuerySchema<never>[];
18
+ constructor(config?: PartialArchivistConfig<XyoMemoryArchivistConfig>);
18
19
  delete(hashes: string[]): PromisableArray<boolean>;
19
20
  clear(): void | Promise<void>;
20
- protected getFromParents(hash: string): Promise<{
21
- schema: string;
22
- previousHash?: string | undefined;
23
- sources?: string[] | undefined;
24
- timestamp?: number | undefined;
25
- }>;
26
21
  get(hashes: string[]): Promise<(XyoPayload | null)[]>;
27
- insert(payloads: XyoPayload[]): PromisableArray<XyoPayload>;
22
+ insert(payloads: XyoPayload[]): Promise<XyoBoundWitness>;
28
23
  find<R extends XyoPayload = XyoPayload>(filter: XyoPayloadFindFilter): PromisableArray<R>;
29
- all(): Promise<XyoPayload[]> | XyoPayload[];
30
- commit(): Promise<XyoPayload[]>;
24
+ all(): PromisableArray<XyoPayload>;
25
+ commit(): Promise<XyoBoundWitness>;
31
26
  }
32
27
  //# sourceMappingURL=XyoMemoryArchivist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyoMemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAYjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,oBAAY,8BAA8B,GAAG,4CAA4C,CAAA;AACzF,eAAO,MAAM,8BAA8B,EAAE,8BAA6E,CAAA;AAE1H,oBAAY,wBAAwB,GAAG,kBAAkB,CAAC;IACxD,MAAM,EAAE,8BAA8B,CAAA;IACtC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAC,CAAA;AAQF,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,wBAAwB,CAAC;IAC5E,IAAW,GAAG,WAEb;IAED,OAAO,CAAC,KAAK,CAA8B;IAE3C,IAAoB,OAAO,8DAS1B;gBAEW,MAAM,EAAE,sBAAsB,CAAC,wBAAwB,CAAC;IAK7D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;IAUzC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ7B,cAAc,CAAC,IAAI,EAAE,MAAM;;;;;;IAc9B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAY3D,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC;IAa3D,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAAC,CAAC,CAAC;IAczF,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE;IAQrC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAoB7C"}
1
+ {"version":3,"file":"XyoMemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAUjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,oBAAY,8BAA8B,GAAG,4CAA4C,CAAA;AACzF,eAAO,MAAM,8BAA8B,EAAE,8BAA6E,CAAA;AAE1H,oBAAY,wBAAwB,GAAG,kBAAkB,CAAC;IACxD,MAAM,EAAE,8BAA8B,CAAA;IACtC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAC,CAAA;AAQF,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,wBAAwB,CAAC;IAC5E,IAAW,GAAG,WAEb;IAED,OAAO,CAAC,KAAK,CAA8B;IAE3C,IAAoB,OAAO,yDAS1B;gBAEW,MAAM,CAAC,EAAE,sBAAsB,CAAC,wBAAwB,CAAC;IAK9D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;IAUzC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAgBrD,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAkB9D,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAAC,CAAC,CAAC;IAczF,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC;IAQ5B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;CAkBhD"}
@@ -1,10 +1,9 @@
1
1
  import { assertEx } from '@xylabs/sdk-js';
2
- import { XyoBoundWitnessBuilder } from '@xyo-network/boundwitness';
3
2
  import { XyoPayloadWrapper } from '@xyo-network/payload';
4
3
  import compact from 'lodash/compact';
5
4
  import LruCache from 'lru-cache';
6
- import { XyoArchivist } from './Abstract';
7
- import { XyoArchivistAllQueryPayloadSchema, XyoArchivistClearQueryPayloadSchema, XyoArchivistCommitQueryPayloadSchema, XyoArchivistDeleteQueryPayloadSchema, XyoArchivistFindQueryPayloadSchema, XyoArchivistGetQueryPayloadSchema, XyoArchivistInsertQueryPayloadSchema, } from './Query';
5
+ import { XyoArchivistAllQuerySchema, XyoArchivistClearQuerySchema, XyoArchivistCommitQuerySchema, XyoArchivistDeleteQuerySchema, XyoArchivistFindQuerySchema, XyoArchivistInsertQuerySchema, } from './Queries';
6
+ import { XyoArchivist } from './XyoArchivist';
8
7
  export const XyoMemoryArchivistConfigSchema = 'network.xyo.module.config.archivist.memory';
9
8
  class MemoryArchivistError extends Error {
10
9
  constructor(action, error, message) {
@@ -19,11 +18,11 @@ export class XyoMemoryArchivist extends XyoArchivist {
19
18
  get queries() {
20
19
  return [
21
20
  ...super.queries,
22
- XyoArchivistAllQueryPayloadSchema,
23
- XyoArchivistDeleteQueryPayloadSchema,
24
- XyoArchivistClearQueryPayloadSchema,
25
- XyoArchivistFindQueryPayloadSchema,
26
- XyoArchivistCommitQueryPayloadSchema,
21
+ XyoArchivistAllQuerySchema,
22
+ XyoArchivistDeleteQuerySchema,
23
+ XyoArchivistClearQuerySchema,
24
+ XyoArchivistFindQuerySchema,
25
+ XyoArchivistCommitQuerySchema,
27
26
  ];
28
27
  }
29
28
  constructor(config) {
@@ -48,31 +47,33 @@ export class XyoMemoryArchivist extends XyoArchivist {
48
47
  throw new MemoryArchivistError('clear', ex, 'unexpected');
49
48
  }
50
49
  }
51
- async getFromParents(hash) {
52
- return compact(await Promise.all(compact(Object.values(this.parents?.read ?? {}).map(async (parent) => {
53
- const query = { hashes: [hash], schema: XyoArchivistGetQueryPayloadSchema };
54
- const [, payloads] = (await parent?.query(query)) ?? [];
55
- return payloads?.[0];
56
- }))))[0];
57
- }
58
50
  async get(hashes) {
59
51
  try {
60
52
  return await Promise.all(hashes.map(async (hash) => {
61
- return this.cache.get(hash) ?? (await this.getFromParents(hash)) ?? null;
53
+ const payload = this.cache.get(hash) ?? (await this.getFromParents(hash)) ?? null;
54
+ if (this.cacheParentReads) {
55
+ this.cache.set(hash, payload);
56
+ }
57
+ return payload;
62
58
  }));
63
59
  }
64
60
  catch (ex) {
65
61
  throw new MemoryArchivistError('get', ex, 'unexpected');
66
62
  }
67
63
  }
68
- insert(payloads) {
64
+ async insert(payloads) {
69
65
  try {
70
- return payloads.map((payload) => {
66
+ payloads.map((payload) => {
71
67
  const wrapper = new XyoPayloadWrapper(payload);
72
68
  const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() };
73
69
  this.cache.set(payloadWithmeta._hash, payloadWithmeta);
74
70
  return payloadWithmeta;
75
71
  });
72
+ const boundwitness = this.bindPayloads(payloads);
73
+ if (this.writeThrough) {
74
+ await this.writeToParents(payloads);
75
+ }
76
+ return boundwitness;
76
77
  }
77
78
  catch (ex) {
78
79
  throw new MemoryArchivistError('insert', ex, 'unexpected');
@@ -102,16 +103,14 @@ export class XyoMemoryArchivist extends XyoArchivist {
102
103
  }
103
104
  async commit() {
104
105
  try {
105
- const account = assertEx(this.account, 'Account is required for commit');
106
106
  const payloads = assertEx(await this.all(), 'Nothing to commit');
107
- const builder = new XyoBoundWitnessBuilder();
108
- const block = builder.payloads(payloads).witness(account).build();
107
+ const block = this.bindPayloads(payloads);
109
108
  await Promise.allSettled(compact(Object.values(this.parents?.commit ?? [])?.map(async (parent) => {
110
- const query = { payloads: [block, ...payloads], schema: XyoArchivistInsertQueryPayloadSchema };
109
+ const query = { payloads: [block, ...payloads], schema: XyoArchivistInsertQuerySchema };
111
110
  return await parent?.query(query);
112
111
  })));
113
112
  await this.clear();
114
- return payloads;
113
+ return block;
115
114
  }
116
115
  catch (ex) {
117
116
  throw new MemoryArchivistError('commit', ex, 'unexpected');
@@ -1 +1 @@
1
- {"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { XyoBoundWitness } from '@xyo-network/boundwitness';
2
+ import { XyoPayload } from '@xyo-network/payload';
3
+ import { PromisableArray } from '@xyo-network/promisable';
4
+ import { XyoArchivistConfig } from './Config';
5
+ import { PartialArchivistConfig } from './PartialArchivistConfig';
6
+ import { XyoArchivist } from './XyoArchivist';
7
+ import { XyoPayloadFindFilter } from './XyoPayloadFindFilter';
8
+ export declare type XyoStorageArchivistConfigSchema = 'network.xyo.module.config.archivist.storage';
9
+ export declare const XyoStorageArchivistConfigSchema: XyoStorageArchivistConfigSchema;
10
+ export declare type XyoStorageArchivistConfig = XyoArchivistConfig<{
11
+ schema: XyoStorageArchivistConfigSchema;
12
+ type?: 'local' | 'session' | 'page';
13
+ namespace?: string;
14
+ maxEntries?: number;
15
+ maxEntrySize?: number;
16
+ }>;
17
+ export declare class XyoStorageArchivist extends XyoArchivist<XyoStorageArchivistConfig> {
18
+ get type(): "local" | "session" | "page";
19
+ get namespace(): string;
20
+ get maxEntries(): number;
21
+ get maxEntrySize(): number;
22
+ get queries(): import("./Queries").XyoArchivistQuerySchema<never>[];
23
+ private storage;
24
+ constructor(config?: PartialArchivistConfig<XyoStorageArchivistConfig>);
25
+ delete(hashes: string[]): PromisableArray<boolean>;
26
+ clear(): void | Promise<void>;
27
+ get(hashes: string[]): Promise<(XyoPayload | null)[]>;
28
+ insert(payloads: XyoPayload[]): Promise<XyoBoundWitness>;
29
+ find(filter: XyoPayloadFindFilter): Promise<XyoPayload[]>;
30
+ all(): PromisableArray<XyoPayload>;
31
+ commit(): Promise<XyoBoundWitness>;
32
+ }
33
+ //# sourceMappingURL=XyoStorageArchivist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoStorageArchivist.d.ts","sourceRoot":"","sources":["../../src/XyoStorageArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAUjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,oBAAY,+BAA+B,GAAG,6CAA6C,CAAA;AAC3F,eAAO,MAAM,+BAA+B,EAAE,+BAA+E,CAAA;AAE7H,oBAAY,yBAAyB,GAAG,kBAAkB,CAAC;IACzD,MAAM,EAAE,+BAA+B,CAAA;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAC,CAAA;AAQF,qBAAa,mBAAoB,SAAQ,YAAY,CAAC,yBAAyB,CAAC;IAC9E,IAAW,IAAI,iCAEd;IAED,IAAW,SAAS,WAEnB;IAED,IAAW,UAAU,WAEpB;IAED,IAAW,YAAY,WAEtB;IAED,IAAoB,OAAO,yDAS1B;IAED,OAAO,CAAC,OAAO,CAAW;gBAEd,MAAM,CAAC,EAAE,sBAAsB,CAAC,yBAAyB,CAAC;IAK/D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;IAWzC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAarD,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAoBxD,IAAI,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAc/D,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC;IAU5B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;CAmBhD"}
@@ -0,0 +1,132 @@
1
+ import { assertEx } from '@xylabs/sdk-js';
2
+ import { XyoPayloadWrapper } from '@xyo-network/payload';
3
+ import compact from 'lodash/compact';
4
+ import store from 'store2';
5
+ import { XyoArchivistAllQuerySchema, XyoArchivistClearQuerySchema, XyoArchivistCommitQuerySchema, XyoArchivistDeleteQuerySchema, XyoArchivistFindQuerySchema, XyoArchivistInsertQuerySchema, } from './Queries';
6
+ import { XyoArchivist } from './XyoArchivist';
7
+ export const XyoStorageArchivistConfigSchema = 'network.xyo.module.config.archivist.storage';
8
+ class StorageArchivistError extends Error {
9
+ constructor(action, error, message) {
10
+ super(`Storage Archivist [${action}] failed${message ? ` (${message})` : ''}`, { cause: error });
11
+ }
12
+ }
13
+ export class XyoStorageArchivist extends XyoArchivist {
14
+ get type() {
15
+ return this.config?.type ?? 'local';
16
+ }
17
+ get namespace() {
18
+ return this.config?.namespace ?? 'xyoarch';
19
+ }
20
+ get maxEntries() {
21
+ return this.config?.maxEntries ?? 1000;
22
+ }
23
+ get maxEntrySize() {
24
+ return this.config?.maxEntries ?? 16000;
25
+ }
26
+ get queries() {
27
+ return [
28
+ ...super.queries,
29
+ XyoArchivistAllQuerySchema,
30
+ XyoArchivistDeleteQuerySchema,
31
+ XyoArchivistClearQuerySchema,
32
+ XyoArchivistFindQuerySchema,
33
+ XyoArchivistCommitQuerySchema,
34
+ ];
35
+ }
36
+ storage;
37
+ constructor(config) {
38
+ super({ ...config, schema: XyoStorageArchivistConfigSchema });
39
+ this.storage = store[this.type].namespace(this.namespace);
40
+ }
41
+ delete(hashes) {
42
+ try {
43
+ return hashes.map((hash) => {
44
+ this.storage.remove(hash);
45
+ return true;
46
+ });
47
+ }
48
+ catch (ex) {
49
+ throw new StorageArchivistError('delete', ex, 'unexpected');
50
+ }
51
+ }
52
+ clear() {
53
+ try {
54
+ this.storage.clear();
55
+ }
56
+ catch (ex) {
57
+ throw new StorageArchivistError('clear', ex, 'unexpected');
58
+ }
59
+ }
60
+ async get(hashes) {
61
+ try {
62
+ return await Promise.all(hashes.map(async (hash) => {
63
+ const cookieString = this.storage.get(hash);
64
+ return cookieString ? JSON.parse(cookieString) : (await this.getFromParents(hash)) ?? null;
65
+ }));
66
+ }
67
+ catch (ex) {
68
+ throw new StorageArchivistError('get', ex, 'unexpected');
69
+ }
70
+ }
71
+ async insert(payloads) {
72
+ try {
73
+ const storedPayloads = payloads.map((payload) => {
74
+ const wrapper = new XyoPayloadWrapper(payload);
75
+ const hash = wrapper.hash;
76
+ const value = JSON.stringify(wrapper.payload);
77
+ assertEx(value.length < this.maxEntrySize, `Payload too large [${wrapper.hash}, ${value.length}]`);
78
+ this.storage.set(hash, JSON.stringify(wrapper.payload));
79
+ return wrapper.payload;
80
+ });
81
+ const boundwitness = this.bindPayloads(storedPayloads);
82
+ if (this.writeThrough) {
83
+ await this.writeToParents([boundwitness, ...storedPayloads]);
84
+ }
85
+ return boundwitness;
86
+ }
87
+ catch (ex) {
88
+ throw new StorageArchivistError('insert', ex, 'unexpected');
89
+ }
90
+ }
91
+ async find(filter) {
92
+ try {
93
+ const x = (await this.all()).filter((payload) => {
94
+ if (filter.schema && filter.schema !== payload.schema) {
95
+ return false;
96
+ }
97
+ return true;
98
+ });
99
+ return x;
100
+ }
101
+ catch (ex) {
102
+ throw new StorageArchivistError('find', ex, 'unexpected');
103
+ }
104
+ }
105
+ all() {
106
+ try {
107
+ return Object.entries(this.storage.getAll())
108
+ .filter(([key]) => key.startsWith(`${this.namespace}-`))
109
+ .map(([, value]) => JSON.parse(value));
110
+ }
111
+ catch (ex) {
112
+ throw new StorageArchivistError('all', ex, 'unexpected');
113
+ }
114
+ }
115
+ async commit() {
116
+ try {
117
+ const payloads = await this.all();
118
+ assertEx(payloads.length > 0, 'Nothing to commit');
119
+ const block = this.bindPayloads(payloads);
120
+ await Promise.allSettled(compact(Object.values(this.parents?.commit ?? [])?.map(async (parent) => {
121
+ const query = { payloads: [block, ...payloads], schema: XyoArchivistInsertQuerySchema };
122
+ return await parent?.query(query);
123
+ })));
124
+ await this.clear();
125
+ return block;
126
+ }
127
+ catch (ex) {
128
+ throw new StorageArchivistError('commit', ex, 'unexpected');
129
+ }
130
+ }
131
+ }
132
+ //# sourceMappingURL=XyoStorageArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoStorageArchivist.js","sourceRoot":"","sources":["../../src/XyoStorageArchivist.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
- export * from './Abstract';
2
1
  export * from './Archivist';
3
2
  export * from './Config';
4
- export * from './Query';
3
+ export * from './PartialArchivistConfig';
4
+ export * from './Queries';
5
+ export * from './XyoArchivist';
5
6
  export * from './XyoArchivistWrapper';
7
+ export * from './XyoCookieArchivist';
6
8
  export * from './XyoMemoryArchivist';
7
9
  export * from './XyoPayloadFindFilter';
10
+ export * from './XyoStorageArchivist';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA"}
package/dist/esm/index.js CHANGED
@@ -1,8 +1,11 @@
1
- export * from './Abstract';
2
1
  export * from './Archivist';
3
2
  export * from './Config';
4
- export * from './Query';
3
+ export * from './PartialArchivistConfig';
4
+ export * from './Queries';
5
+ export * from './XyoArchivist';
5
6
  export * from './XyoArchivistWrapper';
7
+ export * from './XyoCookieArchivist';
6
8
  export * from './XyoMemoryArchivist';
7
9
  export * from './XyoPayloadFindFilter';
10
+ export * from './XyoStorageArchivist';
8
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA"}
package/package.json CHANGED
@@ -10,14 +10,19 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@xylabs/sdk-js": "^2.6.7",
13
- "@xyo-network/boundwitness": "^2.31.4",
14
- "@xyo-network/module": "^2.31.4",
15
- "@xyo-network/payload": "^2.31.4",
16
- "@xyo-network/promisable": "^2.31.4",
13
+ "@xyo-network/boundwitness": "^2.32.0-rc.2",
14
+ "@xyo-network/module": "^2.32.0-rc.2",
15
+ "@xyo-network/payload": "^2.32.0-rc.2",
16
+ "@xyo-network/promisable": "^2.32.0-rc.2",
17
+ "js-cookie": "^3.0.1",
17
18
  "lodash": "^4.17.21",
18
19
  "lru-cache": "^7.14.0",
20
+ "store2": "^2.14.2",
19
21
  "tslib": "^2.4.0"
20
22
  },
23
+ "devDependencies": {
24
+ "@types/js-cookie": "^3.0.2"
25
+ },
21
26
  "description": "Primary SDK for using XYO Protocol 2.0",
22
27
  "browser": "dist/esm/index.js",
23
28
  "docs": "dist/docs.json",
@@ -52,5 +57,6 @@
52
57
  },
53
58
  "sideEffects": false,
54
59
  "types": "dist/esm/index.d.ts",
55
- "version": "2.31.4"
60
+ "version": "2.32.0-rc.2",
61
+ "stableVersion": "2.31.5"
56
62
  }
package/src/Archivist.ts CHANGED
@@ -1,32 +1,50 @@
1
+ import { XyoBoundWitness } from '@xyo-network/boundwitness'
2
+ import { Module } from '@xyo-network/module'
3
+ import { XyoPayload } from '@xyo-network/payload'
1
4
  import { NullablePromisableArray, Promisable, PromisableArray } from '@xyo-network/promisable'
2
5
 
3
- export interface ReadArchivist<TReadResponse, TId = string> {
6
+ import { XyoArchivistQuery } from './Queries'
7
+ import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
8
+
9
+ export interface ReadArchivist<TReadResponse, TId = string, TQuery extends XyoArchivistQuery = XyoArchivistQuery> extends Module<TQuery> {
4
10
  get(ids: TId[]): NullablePromisableArray<TReadResponse>
5
11
  all?(): PromisableArray<TReadResponse>
6
12
  }
7
13
 
8
- export interface WriteArchivist<TReadResponse, TWriteResponse = TReadResponse, TWrite = TReadResponse, TId = string> {
9
- insert(item: TWrite[]): PromisableArray<TWriteResponse>
14
+ export interface WriteArchivist<
15
+ TReadResponse,
16
+ TWriteResponse = TReadResponse,
17
+ TWrite = TReadResponse,
18
+ TId = string,
19
+ TQuery extends XyoArchivistQuery = XyoArchivistQuery,
20
+ > extends Module<TQuery> {
21
+ insert(item: TWrite[]): Promisable<TWriteResponse>
10
22
  delete?(ids: TId[]): PromisableArray<boolean>
11
23
  clear?(): Promisable<void>
12
24
  }
13
25
 
14
- export interface FindArchivist<TReadResponse, TFindResponse = TReadResponse, TFindFilter = unknown> {
26
+ export interface FindArchivist<
27
+ TReadResponse,
28
+ TFindResponse = TReadResponse,
29
+ TFindFilter = unknown,
30
+ TQuery extends XyoArchivistQuery = XyoArchivistQuery,
31
+ > extends Module<TQuery> {
15
32
  find(filter: TFindFilter): PromisableArray<TFindResponse>
16
33
  }
17
34
 
18
- export interface StashArchivist<TReadResponse> {
19
- commit?(): PromisableArray<TReadResponse>
35
+ export interface StashArchivist<TWriteResponse, TQuery extends XyoArchivistQuery = XyoArchivistQuery> extends Module<TQuery> {
36
+ commit?(): Promisable<TWriteResponse>
20
37
  }
21
38
 
22
39
  export interface Archivist<
23
- TReadResponse,
24
- TWriteResponse = TReadResponse,
40
+ TReadResponse = XyoPayload | null,
41
+ TWriteResponse = XyoBoundWitness | null,
25
42
  TWrite = TReadResponse,
26
- TFindResponse = TReadResponse,
27
- TFindFilter = unknown,
43
+ TFindResponse = TReadResponse | null,
44
+ TFindFilter = XyoPayloadFindFilter,
28
45
  TId = string,
29
- > extends ReadArchivist<TReadResponse, TId>,
30
- FindArchivist<TReadResponse, TFindResponse, TFindFilter>,
31
- WriteArchivist<TReadResponse, TWriteResponse, TWrite, TId>,
32
- StashArchivist<TReadResponse> {}
46
+ TQuery extends XyoArchivistQuery = XyoArchivistQuery,
47
+ > extends ReadArchivist<TReadResponse, TId, TQuery>,
48
+ FindArchivist<TReadResponse, TFindResponse, TFindFilter, TQuery>,
49
+ WriteArchivist<TReadResponse, TWriteResponse, TWrite, TId, TQuery>,
50
+ StashArchivist<TWriteResponse, TQuery> {}