@verdant-web/store 3.12.1 → 4.0.0-next.1

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 (279) hide show
  1. package/dist/bundle/index.js +11 -13
  2. package/dist/bundle/index.js.map +4 -4
  3. package/dist/esm/__tests__/batching.test.js +5 -5
  4. package/dist/esm/__tests__/batching.test.js.map +1 -1
  5. package/dist/esm/__tests__/entities.test.js +1 -1
  6. package/dist/esm/__tests__/entities.test.js.map +1 -1
  7. package/dist/esm/__tests__/fixtures/testStorage.d.ts +1 -3
  8. package/dist/esm/__tests__/fixtures/testStorage.js +3 -3
  9. package/dist/esm/__tests__/fixtures/testStorage.js.map +1 -1
  10. package/dist/esm/__tests__/queries.test.js.map +1 -1
  11. package/dist/esm/backup.d.ts +3 -4
  12. package/dist/esm/backup.js.map +1 -1
  13. package/dist/esm/client/Client.d.ts +28 -33
  14. package/dist/esm/client/Client.js +50 -161
  15. package/dist/esm/client/Client.js.map +1 -1
  16. package/dist/esm/client/ClientDescriptor.d.ts +8 -11
  17. package/dist/esm/client/ClientDescriptor.js +39 -141
  18. package/dist/esm/client/ClientDescriptor.js.map +1 -1
  19. package/dist/esm/context/Time.d.ts +13 -0
  20. package/dist/esm/context/Time.js +27 -0
  21. package/dist/esm/context/Time.js.map +1 -0
  22. package/dist/esm/context/context.d.ts +170 -0
  23. package/dist/esm/{context.js.map → context/context.js.map} +1 -1
  24. package/dist/esm/entities/DocumentManager.js.map +1 -1
  25. package/dist/esm/entities/Entity.d.ts +4 -5
  26. package/dist/esm/entities/Entity.js +5 -3
  27. package/dist/esm/entities/Entity.js.map +1 -1
  28. package/dist/esm/entities/Entity.test.js +4 -3
  29. package/dist/esm/entities/Entity.test.js.map +1 -1
  30. package/dist/esm/entities/EntityCache.d.ts +0 -3
  31. package/dist/esm/entities/EntityCache.js +0 -9
  32. package/dist/esm/entities/EntityCache.js.map +1 -1
  33. package/dist/esm/entities/EntityMetadata.d.ts +1 -1
  34. package/dist/esm/entities/EntityMetadata.js +6 -5
  35. package/dist/esm/entities/EntityMetadata.js.map +1 -1
  36. package/dist/esm/entities/EntityStore.d.ts +2 -6
  37. package/dist/esm/entities/EntityStore.js +22 -16
  38. package/dist/esm/entities/EntityStore.js.map +1 -1
  39. package/dist/esm/entities/OperationBatcher.d.ts +2 -5
  40. package/dist/esm/entities/OperationBatcher.js +9 -7
  41. package/dist/esm/entities/OperationBatcher.js.map +1 -1
  42. package/dist/esm/errors.d.ts +8 -0
  43. package/dist/esm/errors.js +12 -0
  44. package/dist/esm/errors.js.map +1 -0
  45. package/dist/esm/files/EntityFile.d.ts +6 -3
  46. package/dist/esm/files/EntityFile.js +22 -19
  47. package/dist/esm/files/EntityFile.js.map +1 -1
  48. package/dist/esm/files/FileManager.d.ts +8 -39
  49. package/dist/esm/files/FileManager.js +26 -170
  50. package/dist/esm/files/FileManager.js.map +1 -1
  51. package/dist/esm/files/utils.d.ts +0 -1
  52. package/dist/esm/files/utils.js +0 -14
  53. package/dist/esm/files/utils.js.map +1 -1
  54. package/dist/esm/index.d.ts +1 -2
  55. package/dist/esm/index.js +0 -1
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/{metadata → persistence}/MessageCreator.d.ts +5 -6
  58. package/dist/esm/{metadata → persistence}/MessageCreator.js +31 -38
  59. package/dist/esm/persistence/MessageCreator.js.map +1 -0
  60. package/dist/esm/persistence/PersistenceFiles.d.ts +48 -0
  61. package/dist/esm/persistence/PersistenceFiles.js +160 -0
  62. package/dist/esm/persistence/PersistenceFiles.js.map +1 -0
  63. package/dist/esm/persistence/PersistenceMetadata.d.ts +69 -0
  64. package/dist/esm/persistence/PersistenceMetadata.js +302 -0
  65. package/dist/esm/persistence/PersistenceMetadata.js.map +1 -0
  66. package/dist/esm/persistence/PersistenceQueries.d.ts +34 -0
  67. package/dist/esm/persistence/PersistenceQueries.js +15 -0
  68. package/dist/esm/persistence/PersistenceQueries.js.map +1 -0
  69. package/dist/esm/persistence/PersistenceRebaser.d.ts +32 -0
  70. package/dist/esm/persistence/PersistenceRebaser.js +120 -0
  71. package/dist/esm/persistence/PersistenceRebaser.js.map +1 -0
  72. package/dist/esm/{IDBService.d.ts → persistence/idb/IdbService.d.ts} +9 -7
  73. package/dist/esm/{IDBService.js → persistence/idb/IdbService.js} +29 -8
  74. package/dist/esm/persistence/idb/IdbService.js.map +1 -0
  75. package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.d.ts +58 -0
  76. package/dist/esm/{files/FileStorage.js → persistence/idb/files/IdbPersistenceFileDb.js} +85 -50
  77. package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.js.map +1 -0
  78. package/dist/esm/persistence/idb/idbPersistence.d.ts +19 -0
  79. package/dist/esm/persistence/idb/idbPersistence.js +80 -0
  80. package/dist/esm/persistence/idb/idbPersistence.js.map +1 -0
  81. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.d.ts +72 -0
  82. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js +235 -0
  83. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js.map +1 -0
  84. package/dist/esm/{metadata → persistence/idb/metadata}/openMetadataDatabase.d.ts +3 -1
  85. package/dist/esm/{metadata → persistence/idb/metadata}/openMetadataDatabase.js +12 -3
  86. package/dist/esm/persistence/idb/metadata/openMetadataDatabase.js.map +1 -0
  87. package/dist/esm/persistence/idb/queries/IdbQueryDb.d.ts +41 -0
  88. package/dist/esm/persistence/idb/queries/IdbQueryDb.js +174 -0
  89. package/dist/esm/persistence/idb/queries/IdbQueryDb.js.map +1 -0
  90. package/dist/esm/{migration → persistence/idb/queries/migration}/db.d.ts +1 -1
  91. package/dist/esm/{migration → persistence/idb/queries/migration}/db.js +10 -48
  92. package/dist/esm/persistence/idb/queries/migration/db.js.map +1 -0
  93. package/dist/esm/persistence/idb/queries/migration/engine.d.ts +12 -0
  94. package/dist/esm/{migration → persistence/idb/queries/migration}/engine.js +29 -46
  95. package/dist/esm/persistence/idb/queries/migration/engine.js.map +1 -0
  96. package/dist/esm/{migration → persistence/idb/queries/migration}/migrations.d.ts +1 -3
  97. package/dist/esm/{migration → persistence/idb/queries/migration}/migrations.js +11 -10
  98. package/dist/esm/persistence/idb/queries/migration/migrations.js.map +1 -0
  99. package/dist/esm/{migration → persistence/idb/queries/migration}/openQueryDatabase.d.ts +1 -3
  100. package/dist/esm/{migration → persistence/idb/queries/migration}/openQueryDatabase.js +4 -7
  101. package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.js.map +1 -0
  102. package/dist/esm/{migration → persistence/idb/queries/migration}/paths.js +2 -2
  103. package/dist/esm/persistence/idb/queries/migration/paths.js.map +1 -0
  104. package/dist/esm/persistence/idb/queries/migration/paths.test.js.map +1 -0
  105. package/dist/esm/persistence/idb/queries/migration/types.d.ts +6 -0
  106. package/dist/esm/persistence/idb/queries/migration/types.js.map +1 -0
  107. package/dist/esm/persistence/idb/queries/ranges.d.ts +2 -0
  108. package/dist/esm/persistence/idb/queries/ranges.js +66 -0
  109. package/dist/esm/persistence/idb/queries/ranges.js.map +1 -0
  110. package/dist/esm/{idb.d.ts → persistence/idb/util.d.ts} +11 -0
  111. package/dist/esm/{idb.js → persistence/idb/util.js} +58 -1
  112. package/dist/esm/persistence/idb/util.js.map +1 -0
  113. package/dist/esm/persistence/interfaces.d.ts +181 -0
  114. package/dist/esm/persistence/interfaces.js +2 -0
  115. package/dist/esm/persistence/interfaces.js.map +1 -0
  116. package/dist/esm/persistence/persistence.d.ts +4 -0
  117. package/dist/esm/persistence/persistence.js +126 -0
  118. package/dist/esm/persistence/persistence.js.map +1 -0
  119. package/dist/esm/queries/BaseQuery.d.ts +2 -1
  120. package/dist/esm/queries/BaseQuery.js +3 -0
  121. package/dist/esm/queries/BaseQuery.js.map +1 -1
  122. package/dist/esm/queries/CollectionQueries.d.ts +1 -1
  123. package/dist/esm/queries/FindAllQuery.js +1 -3
  124. package/dist/esm/queries/FindAllQuery.js.map +1 -1
  125. package/dist/esm/queries/FindInfiniteQuery.js +2 -5
  126. package/dist/esm/queries/FindInfiniteQuery.js.map +1 -1
  127. package/dist/esm/queries/FindOneQuery.js +1 -3
  128. package/dist/esm/queries/FindOneQuery.js.map +1 -1
  129. package/dist/esm/queries/FindPageQuery.js +1 -3
  130. package/dist/esm/queries/FindPageQuery.js.map +1 -1
  131. package/dist/esm/queries/QueryCache.d.ts +1 -1
  132. package/dist/esm/queries/QueryCache.js +4 -0
  133. package/dist/esm/queries/QueryCache.js.map +1 -1
  134. package/dist/esm/sync/FileSync.d.ts +23 -8
  135. package/dist/esm/sync/FileSync.js +76 -28
  136. package/dist/esm/sync/FileSync.js.map +1 -1
  137. package/dist/esm/sync/PresenceManager.d.ts +4 -3
  138. package/dist/esm/sync/PresenceManager.js +2 -2
  139. package/dist/esm/sync/PresenceManager.js.map +1 -1
  140. package/dist/esm/sync/PushPullSync.d.ts +4 -6
  141. package/dist/esm/sync/PushPullSync.js +13 -12
  142. package/dist/esm/sync/PushPullSync.js.map +1 -1
  143. package/dist/esm/sync/Sync.d.ts +10 -11
  144. package/dist/esm/sync/Sync.js +55 -30
  145. package/dist/esm/sync/Sync.js.map +1 -1
  146. package/dist/esm/sync/WebSocketSync.d.ts +4 -6
  147. package/dist/esm/sync/WebSocketSync.js +20 -22
  148. package/dist/esm/sync/WebSocketSync.js.map +1 -1
  149. package/dist/esm/utils/Disposable.d.ts +5 -2
  150. package/dist/esm/utils/Disposable.js +3 -2
  151. package/dist/esm/utils/Disposable.js.map +1 -1
  152. package/dist/esm/utils/wip.d.ts +2 -0
  153. package/dist/esm/utils/wip.js +5 -0
  154. package/dist/esm/utils/wip.js.map +1 -0
  155. package/package.json +2 -2
  156. package/src/__tests__/batching.test.ts +6 -6
  157. package/src/__tests__/entities.test.ts +1 -1
  158. package/src/__tests__/fixtures/testStorage.ts +2 -10
  159. package/src/__tests__/queries.test.ts +1 -1
  160. package/src/backup.ts +3 -4
  161. package/src/client/Client.ts +69 -226
  162. package/src/client/ClientDescriptor.ts +53 -184
  163. package/src/context/Time.ts +35 -0
  164. package/src/context/context.ts +200 -0
  165. package/src/entities/DocumentManager.ts +0 -3
  166. package/src/entities/Entity.test.ts +9 -9
  167. package/src/entities/Entity.ts +6 -12
  168. package/src/entities/EntityCache.ts +0 -9
  169. package/src/entities/EntityMetadata.ts +4 -4
  170. package/src/entities/EntityStore.ts +26 -29
  171. package/src/entities/OperationBatcher.ts +9 -11
  172. package/src/errors.ts +13 -0
  173. package/src/files/EntityFile.ts +16 -5
  174. package/src/files/FileManager.ts +35 -245
  175. package/src/files/utils.ts +0 -15
  176. package/src/index.ts +2 -1
  177. package/src/{metadata → persistence}/MessageCreator.ts +46 -36
  178. package/src/persistence/PersistenceFiles.ts +227 -0
  179. package/src/persistence/PersistenceMetadata.ts +425 -0
  180. package/src/persistence/PersistenceQueries.ts +22 -0
  181. package/src/persistence/PersistenceRebaser.ts +171 -0
  182. package/src/{IDBService.ts → persistence/idb/IdbService.ts} +45 -12
  183. package/src/{files/FileStorage.ts → persistence/idb/files/IdbPersistenceFileDb.ts} +128 -86
  184. package/src/persistence/idb/idbPersistence.ts +116 -0
  185. package/src/persistence/idb/metadata/IdbMetadataDb.ts +460 -0
  186. package/src/{metadata → persistence/idb/metadata}/openMetadataDatabase.ts +21 -4
  187. package/src/persistence/idb/queries/IdbQueryDb.ts +251 -0
  188. package/src/{migration → persistence/idb/queries/migration}/db.ts +18 -72
  189. package/src/{migration → persistence/idb/queries/migration}/engine.ts +39 -62
  190. package/src/{migration → persistence/idb/queries/migration}/migrations.ts +13 -18
  191. package/src/{migration → persistence/idb/queries/migration}/openQueryDatabase.ts +5 -14
  192. package/src/{migration → persistence/idb/queries/migration}/paths.ts +4 -3
  193. package/src/persistence/idb/queries/migration/types.ts +8 -0
  194. package/src/persistence/idb/queries/ranges.ts +107 -0
  195. package/src/{idb.ts → persistence/idb/util.ts} +75 -0
  196. package/src/persistence/interfaces.ts +240 -0
  197. package/src/persistence/persistence.ts +223 -0
  198. package/src/queries/BaseQuery.ts +5 -1
  199. package/src/queries/CollectionQueries.ts +2 -2
  200. package/src/queries/FindAllQuery.ts +1 -3
  201. package/src/queries/FindInfiniteQuery.ts +2 -5
  202. package/src/queries/FindOneQuery.ts +1 -3
  203. package/src/queries/FindPageQuery.ts +1 -3
  204. package/src/queries/QueryCache.ts +20 -1
  205. package/src/sync/FileSync.ts +93 -30
  206. package/src/sync/PresenceManager.ts +5 -7
  207. package/src/sync/PushPullSync.ts +23 -19
  208. package/src/sync/Sync.ts +71 -37
  209. package/src/sync/WebSocketSync.ts +41 -27
  210. package/src/utils/Disposable.ts +7 -4
  211. package/src/utils/wip.ts +5 -0
  212. package/dist/esm/IDBService.js.map +0 -1
  213. package/dist/esm/__tests__/legacyOids.test.d.ts +0 -1
  214. package/dist/esm/__tests__/legacyOids.test.js +0 -352
  215. package/dist/esm/__tests__/legacyOids.test.js.map +0 -1
  216. package/dist/esm/context.d.ts +0 -45
  217. package/dist/esm/files/FileStorage.d.ts +0 -47
  218. package/dist/esm/files/FileStorage.js.map +0 -1
  219. package/dist/esm/idb.js.map +0 -1
  220. package/dist/esm/metadata/AckInfoStore.d.ts +0 -10
  221. package/dist/esm/metadata/AckInfoStore.js +0 -22
  222. package/dist/esm/metadata/AckInfoStore.js.map +0 -1
  223. package/dist/esm/metadata/BaselinesStore.d.ts +0 -40
  224. package/dist/esm/metadata/BaselinesStore.js +0 -102
  225. package/dist/esm/metadata/BaselinesStore.js.map +0 -1
  226. package/dist/esm/metadata/LocalReplicaStore.d.ts +0 -19
  227. package/dist/esm/metadata/LocalReplicaStore.js +0 -56
  228. package/dist/esm/metadata/LocalReplicaStore.js.map +0 -1
  229. package/dist/esm/metadata/MessageCreator.js.map +0 -1
  230. package/dist/esm/metadata/Metadata.d.ts +0 -146
  231. package/dist/esm/metadata/Metadata.js +0 -452
  232. package/dist/esm/metadata/Metadata.js.map +0 -1
  233. package/dist/esm/metadata/OperationsStore.d.ts +0 -62
  234. package/dist/esm/metadata/OperationsStore.js +0 -175
  235. package/dist/esm/metadata/OperationsStore.js.map +0 -1
  236. package/dist/esm/metadata/SchemaStore.d.ts +0 -9
  237. package/dist/esm/metadata/SchemaStore.js +0 -35
  238. package/dist/esm/metadata/SchemaStore.js.map +0 -1
  239. package/dist/esm/metadata/openMetadataDatabase.js.map +0 -1
  240. package/dist/esm/migration/db.js.map +0 -1
  241. package/dist/esm/migration/engine.d.ts +0 -15
  242. package/dist/esm/migration/engine.js.map +0 -1
  243. package/dist/esm/migration/errors.d.ts +0 -5
  244. package/dist/esm/migration/errors.js +0 -8
  245. package/dist/esm/migration/errors.js.map +0 -1
  246. package/dist/esm/migration/migrations.js.map +0 -1
  247. package/dist/esm/migration/openQueryDatabase.js.map +0 -1
  248. package/dist/esm/migration/openWIPDatabase.d.ts +0 -11
  249. package/dist/esm/migration/openWIPDatabase.js +0 -65
  250. package/dist/esm/migration/openWIPDatabase.js.map +0 -1
  251. package/dist/esm/migration/paths.js.map +0 -1
  252. package/dist/esm/migration/paths.test.js.map +0 -1
  253. package/dist/esm/migration/types.d.ts +0 -3
  254. package/dist/esm/migration/types.js.map +0 -1
  255. package/dist/esm/queries/QueryableStorage.d.ts +0 -20
  256. package/dist/esm/queries/QueryableStorage.js +0 -90
  257. package/dist/esm/queries/QueryableStorage.js.map +0 -1
  258. package/dist/esm/queries/dbQueries.d.ts +0 -22
  259. package/dist/esm/queries/dbQueries.js +0 -130
  260. package/dist/esm/queries/dbQueries.js.map +0 -1
  261. package/src/__tests__/legacyOids.test.ts +0 -375
  262. package/src/context.ts +0 -55
  263. package/src/metadata/AckInfoStore.ts +0 -30
  264. package/src/metadata/BaselinesStore.ts +0 -188
  265. package/src/metadata/LocalReplicaStore.ts +0 -79
  266. package/src/metadata/Metadata.ts +0 -685
  267. package/src/metadata/OperationsStore.ts +0 -332
  268. package/src/metadata/SchemaStore.ts +0 -47
  269. package/src/migration/errors.ts +0 -7
  270. package/src/migration/openWIPDatabase.ts +0 -97
  271. package/src/migration/types.ts +0 -4
  272. package/src/queries/QueryableStorage.ts +0 -122
  273. package/src/queries/dbQueries.ts +0 -161
  274. /package/dist/esm/{context.js → context/context.js} +0 -0
  275. /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.d.ts +0 -0
  276. /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.test.d.ts +0 -0
  277. /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.test.js +0 -0
  278. /package/dist/esm/{migration → persistence/idb/queries/migration}/types.js +0 -0
  279. /package/src/{migration → persistence/idb/queries/migration}/paths.test.ts +0 -0
@@ -0,0 +1,72 @@
1
+ import { DocumentBaseline, ObjectIdentifier } from '@verdant-web/common';
2
+ import { AbstractTransaction, AckInfo, ClientOperation, CommonQueryOptions, Iterator, LocalReplicaInfo, PersistenceMetadataDb } from '../../interfaces.js';
3
+ import { IdbService } from '../IdbService.js';
4
+ import { Context } from '../../../context/context.js';
5
+ export type StoredClientOperation = ClientOperation & {
6
+ /** This acts as the primary key */
7
+ oid_timestamp: string;
8
+ l_t: string;
9
+ d_t: string;
10
+ };
11
+ export type StoredSchema = {
12
+ type: 'schema';
13
+ schema: string;
14
+ };
15
+ export declare class IdbMetadataDb extends IdbService implements PersistenceMetadataDb {
16
+ private ctx;
17
+ constructor(db: IDBDatabase, ctx: Pick<Context, 'log' | 'namespace'>);
18
+ transaction: (opts: {
19
+ mode?: 'readwrite' | 'readonly';
20
+ storeNames: string[];
21
+ abort?: AbortSignal;
22
+ }) => IDBTransaction;
23
+ getAckInfo: () => Promise<AckInfo>;
24
+ setGlobalAck: (ack: string) => Promise<void>;
25
+ private _creatingLocalReplica;
26
+ private cachedLocalReplica;
27
+ getLocalReplica: (opts?: CommonQueryOptions) => Promise<LocalReplicaInfo>;
28
+ updateLocalReplica: (data: Partial<LocalReplicaInfo>, opts?: CommonQueryOptions) => Promise<void>;
29
+ iterateDocumentBaselines: (rootOid: string, iterator: (baseline: DocumentBaseline) => void, opts?: CommonQueryOptions) => Promise<void>;
30
+ iterateCollectionBaselines: (collection: string, iterator: (baseline: DocumentBaseline) => void, opts?: CommonQueryOptions) => Promise<void>;
31
+ iterateAllBaselines: (iterator: Iterator<DocumentBaseline>, opts: CommonQueryOptions) => Promise<void>;
32
+ getBaseline: (oid: string, opts?: CommonQueryOptions) => Promise<DocumentBaseline>;
33
+ setBaselines: (baselines: DocumentBaseline[], opts?: CommonQueryOptions) => Promise<void>;
34
+ deleteBaseline: (oid: string, opts?: CommonQueryOptions) => Promise<void>;
35
+ iterateDocumentOperations: (rootOid: string, iterator: (op: StoredClientOperation) => void, opts?: CommonQueryOptions & {
36
+ to?: string | null;
37
+ }) => Promise<void>;
38
+ iterateEntityOperations: (oid: string, iterator: (op: StoredClientOperation) => void, opts?: CommonQueryOptions & {
39
+ to?: string | null;
40
+ }) => Promise<void>;
41
+ consumeEntityOperations: (oid: string, iterator: Iterator<ClientOperation>, opts?: CommonQueryOptions & {
42
+ to?: string | null;
43
+ }) => Promise<void>;
44
+ iterateCollectionOperations: (collection: string, iterator: (op: StoredClientOperation) => void, opts?: CommonQueryOptions) => Promise<void>;
45
+ iterateLocalOperations: (iterator: (op: StoredClientOperation) => void, opts?: CommonQueryOptions & {
46
+ after?: string | null;
47
+ }) => Promise<void>;
48
+ iterateAllOperations: (iterator: (op: StoredClientOperation) => void, opts?: CommonQueryOptions & {
49
+ before?: string | null;
50
+ from?: string | null;
51
+ }) => Promise<void>;
52
+ addOperations: (ops: StoredClientOperation[], opts?: CommonQueryOptions) => Promise<ObjectIdentifier[]>;
53
+ reset: ({ clearReplica, transaction, }?: {
54
+ clearReplica?: boolean | undefined;
55
+ transaction?: AbstractTransaction;
56
+ }) => Promise<void>;
57
+ stats: () => Promise<{
58
+ operationsSize: {
59
+ count: number;
60
+ size: number;
61
+ };
62
+ baselinesSize: {
63
+ count: number;
64
+ size: number;
65
+ };
66
+ }>;
67
+ private resetLocalReplica;
68
+ private resetBaselines;
69
+ private resetOperations;
70
+ private addOperationIndexes;
71
+ private convertOpts;
72
+ }
@@ -0,0 +1,235 @@
1
+ import { createCompoundIndexValue, createLowerBoundIndexValue, createUpperBoundIndexValue, getLegacyDotOidSubIdRange, getOidRoot, getOidSubIdRange, } from '@verdant-web/common';
2
+ import { IdbService } from '../IdbService.js';
3
+ import cuid from 'cuid';
4
+ import { closeDatabase, getSizeOfObjectStore } from '../util.js';
5
+ export class IdbMetadataDb extends IdbService {
6
+ constructor(db, ctx) {
7
+ super(db, ctx);
8
+ this.ctx = ctx;
9
+ this.transaction = (opts) => {
10
+ return this.createTransaction(opts.storeNames, {
11
+ mode: opts.mode,
12
+ abort: opts.abort,
13
+ });
14
+ };
15
+ this.getAckInfo = async () => {
16
+ const result = await this.run('info', (store) => store.get('ack'));
17
+ if (result) {
18
+ return result;
19
+ }
20
+ else {
21
+ return {
22
+ globalAckTimestamp: null,
23
+ type: 'ack',
24
+ };
25
+ }
26
+ };
27
+ this.setGlobalAck = async (ack) => {
28
+ await this.run('info', (store) => store.put({ type: 'ack', globalAckTimestamp: ack }), { mode: 'readwrite' });
29
+ };
30
+ this.getLocalReplica = async (opts) => {
31
+ if (this.cachedLocalReplica) {
32
+ return this.cachedLocalReplica;
33
+ }
34
+ const lookup = await this.run('info', (store) => store.get('localReplicaInfo'), this.convertOpts(opts));
35
+ // not cached, not in db, create it
36
+ if (!lookup) {
37
+ // prevent a race condition if get() is called again while we are
38
+ // creating the replica info
39
+ if (!this._creatingLocalReplica) {
40
+ this._creatingLocalReplica = (async () => {
41
+ // create our own replica info now
42
+ const replicaId = cuid();
43
+ const replicaInfo = {
44
+ type: 'localReplicaInfo',
45
+ id: replicaId,
46
+ userId: undefined,
47
+ ackedLogicalTime: null,
48
+ lastSyncedLogicalTime: null,
49
+ };
50
+ await this.run('info', (store) => store.put(replicaInfo), {
51
+ mode: 'readwrite',
52
+ });
53
+ this.cachedLocalReplica = replicaInfo;
54
+ })();
55
+ }
56
+ await this._creatingLocalReplica;
57
+ return this.getLocalReplica(opts);
58
+ }
59
+ this.cachedLocalReplica = lookup;
60
+ return lookup;
61
+ };
62
+ this.updateLocalReplica = async (data, opts = writeOpts) => {
63
+ const localReplicaInfo = await this.getLocalReplica(opts);
64
+ Object.assign(localReplicaInfo, data);
65
+ await this.run('info', (store) => store.put(localReplicaInfo), {
66
+ mode: 'readwrite',
67
+ });
68
+ this.cachedLocalReplica = localReplicaInfo;
69
+ };
70
+ this.iterateDocumentBaselines = async (rootOid, iterator, opts) => {
71
+ await this.iterate('baselines', (store) => {
72
+ const root = getOidRoot(rootOid);
73
+ const [start, end] = getOidSubIdRange(rootOid);
74
+ // FIXME: get rid of legacy dot OIDs...
75
+ const [dotStart, dotEnd] = getLegacyDotOidSubIdRange(rootOid);
76
+ return [
77
+ store.openCursor(IDBKeyRange.only(root)),
78
+ store.openCursor(IDBKeyRange.bound(start, end, false, false)),
79
+ store.openCursor(IDBKeyRange.bound(dotStart, dotEnd, false, false)),
80
+ ];
81
+ }, iterator, this.convertOpts(opts));
82
+ };
83
+ this.iterateCollectionBaselines = async (collection, iterator, opts) => {
84
+ await this.iterate('baselines', (store) => {
85
+ return [
86
+ store.openCursor(IDBKeyRange.bound(collection, collection + '\uffff', false, false)),
87
+ ];
88
+ }, iterator, this.convertOpts(opts));
89
+ };
90
+ this.iterateAllBaselines = async (iterator, opts) => {
91
+ await this.iterate('baselines', (store) => store.index('timestamp').openCursor(), iterator, this.convertOpts(opts));
92
+ };
93
+ this.getBaseline = (oid, opts) => {
94
+ return this.run('baselines', (store) => store.get(oid), this.convertOpts(opts));
95
+ };
96
+ this.setBaselines = async (baselines, opts = writeOpts) => {
97
+ await this.runAll('baselines', (store) => baselines.map((b) => store.put(b)), this.convertOpts(opts));
98
+ };
99
+ this.deleteBaseline = async (oid, opts = writeOpts) => {
100
+ await this.run('baselines', (store) => store.delete(oid), this.convertOpts(opts));
101
+ };
102
+ this.iterateDocumentOperations = (rootOid, iterator, opts) => {
103
+ return this.iterate('operations', (store) => {
104
+ const index = store.index('d_t');
105
+ const start = createLowerBoundIndexValue(rootOid);
106
+ const end = (opts === null || opts === void 0 ? void 0 : opts.to)
107
+ ? createCompoundIndexValue(rootOid, opts.to)
108
+ : createUpperBoundIndexValue(rootOid);
109
+ const range = IDBKeyRange.bound(start, end, false, false);
110
+ return index.openCursor(range);
111
+ }, iterator, this.convertOpts(opts));
112
+ };
113
+ this.iterateEntityOperations = (oid, iterator, opts) => {
114
+ // NOTE: this is simplified from original impl.
115
+ // perhaps I missed some nuance as to why it was
116
+ // so complex before?
117
+ return this.iterate('operations', (store) => {
118
+ const start = createLowerBoundIndexValue(oid);
119
+ const end = (opts === null || opts === void 0 ? void 0 : opts.to)
120
+ ? createCompoundIndexValue(oid, opts.to)
121
+ : createUpperBoundIndexValue(oid);
122
+ const range = IDBKeyRange.bound(start, end, false, false);
123
+ return store.openCursor(range);
124
+ }, iterator, this.convertOpts(opts));
125
+ };
126
+ this.consumeEntityOperations = (oid, iterator, opts = writeOpts) => {
127
+ return this.iterate('operations', (store) => {
128
+ const start = createLowerBoundIndexValue(oid);
129
+ const end = (opts === null || opts === void 0 ? void 0 : opts.to)
130
+ ? createCompoundIndexValue(oid, opts.to)
131
+ : createUpperBoundIndexValue(oid);
132
+ const range = IDBKeyRange.bound(start, end, false, false);
133
+ return store.openCursor(range);
134
+ }, (op, store) => {
135
+ iterator(op);
136
+ store.delete(op.oid_timestamp);
137
+ }, this.convertOpts(opts));
138
+ };
139
+ this.iterateCollectionOperations = (collection, iterator, opts) => {
140
+ return this.iterate('operations', (store) => {
141
+ return store.openCursor(IDBKeyRange.bound(collection, collection + '\uffff', false, false), 'next');
142
+ }, iterator, this.convertOpts(opts));
143
+ };
144
+ this.iterateLocalOperations = (iterator, opts) => {
145
+ return this.iterate('operations', (store) => {
146
+ const start = (opts === null || opts === void 0 ? void 0 : opts.after)
147
+ ? createCompoundIndexValue(true, opts.after)
148
+ : createLowerBoundIndexValue(true);
149
+ const end = createUpperBoundIndexValue(true);
150
+ const index = store.index('l_t');
151
+ return index.openCursor(
152
+ // NOTE: differs from original impl -- last arg is 'false' instead of 'true'
153
+ IDBKeyRange.bound(start, end, !!(opts === null || opts === void 0 ? void 0 : opts.after), false), 'next');
154
+ }, iterator);
155
+ };
156
+ this.iterateAllOperations = (iterator, opts) => {
157
+ return this.iterate('operations', (store) => {
158
+ const start = (opts === null || opts === void 0 ? void 0 : opts.from)
159
+ ? createLowerBoundIndexValue(opts.from)
160
+ : undefined;
161
+ const end = (opts === null || opts === void 0 ? void 0 : opts.before)
162
+ ? createUpperBoundIndexValue(opts.before)
163
+ : createLowerBoundIndexValue(true);
164
+ const range = start && end
165
+ ? IDBKeyRange.bound(start, end, false, true)
166
+ : start
167
+ ? IDBKeyRange.lowerBound(start, false)
168
+ : end
169
+ ? IDBKeyRange.upperBound(end, true)
170
+ : undefined;
171
+ return store.index('timestamp').openCursor(range, 'next');
172
+ }, iterator, this.convertOpts(opts));
173
+ };
174
+ this.addOperations = async (ops, opts = writeOpts) => {
175
+ let affected = new Set();
176
+ await this.runAll('operations', (store) => ops.map((op) => {
177
+ affected.add(getOidRoot(op.oid));
178
+ return store.put(this.addOperationIndexes(op));
179
+ }), this.convertOpts(opts));
180
+ return Array.from(affected);
181
+ };
182
+ this.reset = async ({ clearReplica, transaction, } = {}) => {
183
+ const tx = transaction ||
184
+ this.createTransaction(['info', 'operations', 'baselines'], {
185
+ mode: 'readwrite',
186
+ });
187
+ await Promise.all([
188
+ this.resetLocalReplica(tx, clearReplica),
189
+ this.resetBaselines(tx),
190
+ this.resetOperations(tx),
191
+ ]);
192
+ };
193
+ this.stats = async () => {
194
+ const ops = await getSizeOfObjectStore(this.db, 'operations');
195
+ const baselines = await getSizeOfObjectStore(this.db, 'baselines');
196
+ return { operationsSize: ops, baselinesSize: baselines };
197
+ };
198
+ this.resetLocalReplica = async (tx, clear = false) => {
199
+ if (clear) {
200
+ return this.run('info', (store) => store.delete('localReplicaInfo'), {
201
+ mode: 'readwrite',
202
+ transaction: tx,
203
+ });
204
+ }
205
+ const localInfo = await this.getLocalReplica();
206
+ localInfo.ackedLogicalTime = null;
207
+ localInfo.lastSyncedLogicalTime = null;
208
+ await this.run('info', (store) => store.put(localInfo), {
209
+ mode: 'readwrite',
210
+ transaction: tx,
211
+ });
212
+ };
213
+ this.resetBaselines = async (tx) => {
214
+ return this.clear('baselines', tx);
215
+ };
216
+ this.resetOperations = async (tx) => {
217
+ return this.clear('operations', tx);
218
+ };
219
+ this.addOperationIndexes = (op) => {
220
+ return Object.assign(Object.assign({}, op), { oid_timestamp: createCompoundIndexValue(op.oid, op.timestamp), l_t: createCompoundIndexValue(op.isLocal, op.timestamp), d_t: createCompoundIndexValue(getOidRoot(op.oid), op.timestamp) });
221
+ };
222
+ this.convertOpts = (opts) => {
223
+ if ((opts === null || opts === void 0 ? void 0 : opts.transaction) && !(opts.transaction instanceof IDBTransaction)) {
224
+ throw new Error(`Invalid IndexedDB transaction. You cannot mix persistence providers. ${typeof opts.transaction}`);
225
+ }
226
+ return {
227
+ mode: opts === null || opts === void 0 ? void 0 : opts.mode,
228
+ transaction: opts === null || opts === void 0 ? void 0 : opts.transaction,
229
+ };
230
+ };
231
+ this.addDispose(() => closeDatabase(db));
232
+ }
233
+ }
234
+ const writeOpts = { mode: 'readwrite' };
235
+ //# sourceMappingURL=IdbMetadataDb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdbMetadataDb.js","sourceRoot":"","sources":["../../../../../src/persistence/idb/metadata/IdbMetadataDb.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
+ import { Context } from '../../../context/context.js';
2
+ export declare const CURRENT_METADATA_VERSION: number;
1
3
  export declare function openMetadataDatabase({ indexedDB, namespace, log, metadataVersion, }: {
2
4
  indexedDB?: IDBFactory;
3
5
  namespace: string;
4
- log?: (...args: any[]) => void;
6
+ log?: Context['log'];
5
7
  metadataVersion?: number;
6
8
  }): Promise<{
7
9
  wasInitialized: boolean;
@@ -10,11 +10,12 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import { replaceLegacyOidsInObject } from '@verdant-web/common';
13
- import { closeDatabase, storeRequestPromise } from '../idb.js';
13
+ import { closeDatabase, getMetadataDbName, storeRequestPromise, } from '../util.js';
14
14
  const migrations = [version1, version2, version3, version4, version5, version6];
15
- export function openMetadataDatabase({ indexedDB = window.indexedDB, namespace, log, metadataVersion = 5, }) {
15
+ export const CURRENT_METADATA_VERSION = migrations.length;
16
+ export function openMetadataDatabase({ indexedDB = window.indexedDB, namespace, log, metadataVersion = CURRENT_METADATA_VERSION, }) {
16
17
  return new Promise((resolve, reject) => {
17
- const request = indexedDB.open(`${namespace}_meta`, metadataVersion);
18
+ const request = indexedDB.open(getMetadataDbName(namespace), metadataVersion);
18
19
  let wasInitialized = false;
19
20
  request.onupgradeneeded = async (event) => {
20
21
  const db = request.result;
@@ -151,6 +152,10 @@ async function version3(db, tx) {
151
152
  const operations = tx.objectStore('operations');
152
153
  operations.createIndex('timestamp', 'timestamp');
153
154
  }
155
+ /**
156
+ * 3 -> 4 changes:
157
+ * Add files store
158
+ */
154
159
  async function version4(db, tx) {
155
160
  const files = db.createObjectStore('files', {
156
161
  keyPath: 'id',
@@ -158,6 +163,10 @@ async function version4(db, tx) {
158
163
  files.createIndex('remote', 'remote');
159
164
  files.createIndex('deletedAt', 'deletedAt');
160
165
  }
166
+ /**
167
+ * 4 -> 5 changes:
168
+ * replace legacy OIDs
169
+ */
161
170
  async function version5(db, tx) {
162
171
  // rewrites all baselines and operations to replace legacy OIDs
163
172
  // with new ones.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openMetadataDatabase.js","sourceRoot":"","sources":["../../../../../src/persistence/idb/metadata/openMetadataDatabase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { CollectionFilter, ObjectIdentifier } from '@verdant-web/common';
2
+ import { Context } from '../../../context/context.js';
3
+ import { AbstractTransaction, CommonQueryOptions, PersistenceQueryDb, QueryMode } from '../../interfaces.js';
4
+ import { IdbService } from '../IdbService.js';
5
+ export declare class IdbQueryDb extends IdbService implements PersistenceQueryDb {
6
+ private ctx;
7
+ constructor(db: IDBDatabase, context: Omit<Context, 'queries' | 'files'>);
8
+ stats: () => Promise<Record<string, {
9
+ count: number;
10
+ size: number;
11
+ }>>;
12
+ transaction: (opts: {
13
+ mode?: QueryMode;
14
+ storeNames: string[];
15
+ abort?: AbortSignal;
16
+ }) => AbstractTransaction;
17
+ findOneOid: (opts: {
18
+ collection: string;
19
+ index?: CollectionFilter;
20
+ }) => Promise<ObjectIdentifier | null>;
21
+ findAllOids: ({ collection, index, offset, limit, }: {
22
+ collection: string;
23
+ index?: import("@verdant-web/common").CollectionIndexFilter | undefined;
24
+ limit?: number | undefined;
25
+ offset?: number | undefined;
26
+ }) => Promise<{
27
+ result: ObjectIdentifier[];
28
+ hasNextPage: boolean;
29
+ }>;
30
+ saveEntities: (entities: {
31
+ oid: ObjectIdentifier;
32
+ getSnapshot: () => any;
33
+ }[], opts?: CommonQueryOptions & {
34
+ abort?: AbortSignal;
35
+ }) => Promise<void>;
36
+ reset: (opts?: {
37
+ transaction?: AbstractTransaction;
38
+ }) => Promise<void>;
39
+ dispose: () => Promise<void>;
40
+ private saveDocument;
41
+ }
@@ -0,0 +1,174 @@
1
+ import { createOid, decomposeOid, getIndexValues, } from '@verdant-web/common';
2
+ import { IdbService } from '../IdbService.js';
3
+ import { getRange } from './ranges.js';
4
+ import { closeDatabase, getSizeOfObjectStore, isAbortError } from '../util.js';
5
+ export class IdbQueryDb extends IdbService {
6
+ constructor(db, context) {
7
+ super(db, { log: context.log });
8
+ this.stats = async () => {
9
+ const collectionNames = Object.keys(this.ctx.schema.collections);
10
+ const collections = {};
11
+ await Promise.all(collectionNames.map(async (name) => {
12
+ const size = await getSizeOfObjectStore(this.db, name);
13
+ collections[name] = size;
14
+ }));
15
+ return collections;
16
+ };
17
+ this.transaction = (opts) => {
18
+ return this.createTransaction(opts.storeNames, {
19
+ mode: opts.mode,
20
+ abort: opts.abort,
21
+ });
22
+ };
23
+ this.findOneOid = async (opts) => {
24
+ const result = await this.run(opts.collection, (store) => {
25
+ var _a, _b;
26
+ const source = ((_a = opts.index) === null || _a === void 0 ? void 0 : _a.where)
27
+ ? store.index(opts.index.where)
28
+ : store;
29
+ const direction = ((_b = opts.index) === null || _b === void 0 ? void 0 : _b.order) === 'desc' ? 'prev' : 'next';
30
+ const range = getRange(this.ctx.schema, opts.collection, opts.index);
31
+ return source.openCursor(range, direction);
32
+ }, { mode: 'readonly' });
33
+ if (result) {
34
+ return createOid(opts.collection, result.primaryKey.toString());
35
+ }
36
+ return null;
37
+ };
38
+ this.findAllOids = async ({ collection, index, offset, limit, }) => {
39
+ const tx = this.createTransaction([collection], { mode: 'readonly' });
40
+ const store = tx.objectStore(collection);
41
+ const source = (index === null || index === void 0 ? void 0 : index.where) ? store.index(index.where) : store;
42
+ const direction = (index === null || index === void 0 ? void 0 : index.order) === 'desc' ? 'prev' : 'next';
43
+ const range = getRange(this.ctx.schema, collection, index);
44
+ const request = source.openCursor(range, direction);
45
+ let hasNextPage = false;
46
+ const result = await new Promise((resolve, reject) => {
47
+ let hasDoneOffset = !offset;
48
+ let visited = 0;
49
+ const results = new Set();
50
+ request.onsuccess = () => {
51
+ visited++;
52
+ const cursor = request.result;
53
+ if (!cursor) {
54
+ resolve(Array.from(results));
55
+ return;
56
+ }
57
+ // first offset, if we have one. cursor opens at beginning.
58
+ if (offset && !hasDoneOffset) {
59
+ cursor.advance(offset);
60
+ hasDoneOffset = true;
61
+ // next iteration we begin adding results.
62
+ }
63
+ else {
64
+ // add result to set, unless we have reached limit.
65
+ if (!limit || results.size < limit) {
66
+ results.add(createOid(collection, cursor.primaryKey.toString()));
67
+ }
68
+ // even if we reached limit, we keep going one more to check if there's
69
+ // a next page.
70
+ if (limit && visited > limit) {
71
+ hasNextPage = true;
72
+ // stop iteration here; we reached limit and we have next page
73
+ // info we need.
74
+ resolve(Array.from(results));
75
+ }
76
+ else {
77
+ cursor.continue();
78
+ }
79
+ }
80
+ };
81
+ request.onerror = () => {
82
+ var _a;
83
+ if (((_a = request.error) === null || _a === void 0 ? void 0 : _a.name) === 'InvalidStateError') {
84
+ this.ctx.log('error', `find query failed with InvalidStateError`, request.error);
85
+ resolve([]);
86
+ }
87
+ else if (request.error && isAbortError(request.error)) {
88
+ resolve([]);
89
+ }
90
+ else {
91
+ reject(request.error);
92
+ }
93
+ };
94
+ });
95
+ return {
96
+ result,
97
+ hasNextPage,
98
+ };
99
+ };
100
+ this.saveEntities = async (entities, opts) => {
101
+ if (entities.length === 0)
102
+ return;
103
+ let collections = Array.from(new Set(entities.map((e) => decomposeOid(e.oid).collection)));
104
+ const toRemove = collections.filter((c) => !this.ctx.schema.collections[c]);
105
+ if (toRemove.length > 0) {
106
+ this.ctx.log('warn', `Ignoring entities from collections that no longer exist: ${toRemove.join(', ')}`);
107
+ }
108
+ const withRemoved = new Set(collections);
109
+ toRemove.forEach((c) => withRemoved.delete(c));
110
+ collections = Array.from(withRemoved);
111
+ const options = {
112
+ transaction: this.createTransaction(collections, {
113
+ mode: 'readwrite',
114
+ abort: opts === null || opts === void 0 ? void 0 : opts.abort,
115
+ }),
116
+ };
117
+ // FIXME: not test is making it to this line
118
+ await Promise.all(entities.map(async (e) => {
119
+ const snapshot = e.getSnapshot();
120
+ try {
121
+ await this.saveDocument(e.oid, snapshot, options);
122
+ }
123
+ catch (err) {
124
+ this.ctx.log('error', `Error saving document ${e.oid} (${JSON.stringify(snapshot)})`, err);
125
+ if (err instanceof Error) {
126
+ throw err;
127
+ }
128
+ else {
129
+ throw new Error('Unknown error saving document');
130
+ }
131
+ }
132
+ }));
133
+ options.transaction.commit();
134
+ this.ctx.entityEvents.emit('collectionsChanged', collections);
135
+ for (const entity of entities) {
136
+ this.ctx.entityEvents.emit('documentChanged', entity.oid);
137
+ }
138
+ };
139
+ this.reset = async (opts) => {
140
+ const names = Object.keys(this.ctx.schema.collections);
141
+ const tx = (opts === null || opts === void 0 ? void 0 : opts.transaction) ||
142
+ this.createTransaction(names, { mode: 'readwrite' });
143
+ await Promise.all(names.map((name) => this.run(name, (store) => store.clear(), { transaction: tx })));
144
+ this.ctx.entityEvents.emit('collectionsChanged', names);
145
+ this.ctx.log('info', '💨 Reset queryable storage');
146
+ };
147
+ this.dispose = () => {
148
+ return closeDatabase(this.db);
149
+ };
150
+ this.saveDocument = async (oid, doc, { transaction }) => {
151
+ this.ctx.log('debug', `Saving document indexes for querying ${oid}`);
152
+ const { collection, id } = decomposeOid(oid);
153
+ if (!doc) {
154
+ await this.run(collection, (store) => store.delete(id), {
155
+ mode: 'readwrite',
156
+ transaction,
157
+ });
158
+ this.ctx.log('debug', `Deleted document indexes for querying ${oid}`);
159
+ }
160
+ else {
161
+ const schema = this.ctx.schema.collections[collection];
162
+ // no need to validate before storing; the entity's snapshot is already validated.
163
+ const indexes = getIndexValues(schema, doc);
164
+ await this.run(collection, (store) => store.put(indexes), {
165
+ mode: 'readwrite',
166
+ transaction,
167
+ });
168
+ this.ctx.log('debug', `Save complete for ${oid}`, indexes);
169
+ }
170
+ };
171
+ this.ctx = context;
172
+ }
173
+ }
174
+ //# sourceMappingURL=IdbQueryDb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdbQueryDb.js","sourceRoot":"","sources":["../../../../../src/persistence/idb/queries/IdbQueryDb.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { OpenDocumentDbContext } from './types.js';
2
- export declare function getDatabaseVersion(indexedDB: IDBFactory, namespace: string, version: number, log?: (...args: any[]) => void): Promise<number>;
2
+ export declare function getDatabaseVersion(indexedDB: IDBFactory, namespace: string): Promise<number>;
3
3
  /**
4
4
  * Upgrades the database to the given version, using the given upgrader function.
5
5
  */