@verdant-web/server 2.1.3 → 3.0.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 (198) hide show
  1. package/dist/esm/ClientConnection.d.ts +1 -0
  2. package/dist/esm/ClientConnection.js.map +1 -1
  3. package/dist/esm/Presence.js.map +1 -1
  4. package/dist/esm/Profiles.js.map +1 -1
  5. package/dist/esm/ReplicaKeepaliveTimers.js.map +1 -1
  6. package/dist/esm/Server.d.ts +15 -11
  7. package/dist/esm/Server.js +29 -30
  8. package/dist/esm/Server.js.map +1 -1
  9. package/dist/esm/ServerLibrary.d.ts +10 -17
  10. package/dist/esm/ServerLibrary.js +151 -127
  11. package/dist/esm/ServerLibrary.js.map +1 -1
  12. package/dist/esm/ServerLibrary.test.js +369 -0
  13. package/dist/esm/ServerLibrary.test.js.map +1 -0
  14. package/dist/esm/TokenVerifier.js.map +1 -1
  15. package/dist/esm/files/FileStorage.js.map +1 -1
  16. package/dist/esm/storage/Storage.d.ts +67 -0
  17. package/dist/esm/storage/Storage.js +2 -0
  18. package/dist/esm/storage/Storage.js.map +1 -0
  19. package/dist/esm/storage/index.d.ts +2 -0
  20. package/dist/esm/storage/index.js +3 -0
  21. package/dist/esm/storage/index.js.map +1 -0
  22. package/dist/esm/storage/sql/SqlBaselines.d.ts +22 -0
  23. package/dist/esm/storage/sql/SqlBaselines.js +101 -0
  24. package/dist/esm/storage/sql/SqlBaselines.js.map +1 -0
  25. package/dist/esm/storage/sql/SqlFileMetadata.d.ts +18 -0
  26. package/dist/esm/storage/sql/SqlFileMetadata.js +69 -0
  27. package/dist/esm/storage/sql/SqlFileMetadata.js.map +1 -0
  28. package/dist/esm/storage/sql/SqlOperations.d.ts +19 -0
  29. package/dist/esm/storage/sql/SqlOperations.js +104 -0
  30. package/dist/esm/storage/sql/SqlOperations.js.map +1 -0
  31. package/dist/esm/storage/sql/SqlReplicas.d.ts +32 -0
  32. package/dist/esm/storage/sql/SqlReplicas.js +163 -0
  33. package/dist/esm/storage/sql/SqlReplicas.js.map +1 -0
  34. package/dist/esm/storage/sql/migrations/v1.d.ts +3 -0
  35. package/dist/esm/storage/sql/migrations/v1.js +59 -0
  36. package/dist/esm/storage/sql/migrations/v1.js.map +1 -0
  37. package/dist/esm/storage/sql/migrations.d.ts +5 -0
  38. package/dist/esm/storage/sql/migrations.js +3 -0
  39. package/dist/esm/storage/sql/migrations.js.map +1 -0
  40. package/dist/esm/storage/sql/sqlStorage.d.ts +5 -0
  41. package/dist/esm/storage/sql/sqlStorage.js +43 -0
  42. package/dist/esm/storage/sql/sqlStorage.js.map +1 -0
  43. package/dist/esm/storage/sql/tables.d.ts +40 -0
  44. package/dist/esm/storage/sql/tables.js +2 -0
  45. package/dist/esm/storage/sql/tables.js.map +1 -0
  46. package/dist/esm/types.d.ts +14 -5
  47. package/package.json +20 -14
  48. package/src/Server.ts +37 -43
  49. package/src/ServerLibrary.test.ts +447 -0
  50. package/src/ServerLibrary.ts +239 -163
  51. package/src/storage/Storage.ts +118 -0
  52. package/src/storage/index.ts +2 -0
  53. package/src/storage/sql/SqlBaselines.ts +141 -0
  54. package/src/storage/sql/SqlFileMetadata.ts +94 -0
  55. package/src/storage/sql/SqlOperations.ts +149 -0
  56. package/src/storage/sql/SqlReplicas.ts +234 -0
  57. package/src/storage/sql/migrations/v1.ts +64 -0
  58. package/src/storage/sql/migrations.ts +3 -0
  59. package/src/storage/sql/sqlStorage.ts +59 -0
  60. package/src/storage/sql/tables.ts +45 -0
  61. package/src/types.ts +15 -4
  62. package/bin/server.mjs +0 -115
  63. package/dist/cjs/Baselines.d.ts +0 -16
  64. package/dist/cjs/Baselines.js +0 -128
  65. package/dist/cjs/Baselines.js.map +0 -1
  66. package/dist/cjs/ClientConnection.d.ts +0 -20
  67. package/dist/cjs/ClientConnection.js +0 -139
  68. package/dist/cjs/ClientConnection.js.map +0 -1
  69. package/dist/cjs/MessageSender.d.ts +0 -5
  70. package/dist/cjs/MessageSender.js +0 -3
  71. package/dist/cjs/MessageSender.js.map +0 -1
  72. package/dist/cjs/OperationHistory.d.ts +0 -36
  73. package/dist/cjs/OperationHistory.js +0 -165
  74. package/dist/cjs/OperationHistory.js.map +0 -1
  75. package/dist/cjs/Presence.d.ts +0 -15
  76. package/dist/cjs/Presence.js +0 -60
  77. package/dist/cjs/Presence.js.map +0 -1
  78. package/dist/cjs/Profiles.d.ts +0 -10
  79. package/dist/cjs/Profiles.js +0 -20
  80. package/dist/cjs/Profiles.js.map +0 -1
  81. package/dist/cjs/ReplicaKeepaliveTimers.d.ts +0 -17
  82. package/dist/cjs/ReplicaKeepaliveTimers.js +0 -31
  83. package/dist/cjs/ReplicaKeepaliveTimers.js.map +0 -1
  84. package/dist/cjs/Replicas.d.ts +0 -25
  85. package/dist/cjs/Replicas.js +0 -196
  86. package/dist/cjs/Replicas.js.map +0 -1
  87. package/dist/cjs/Server.d.ts +0 -167
  88. package/dist/cjs/Server.js +0 -552
  89. package/dist/cjs/Server.js.map +0 -1
  90. package/dist/cjs/ServerLibrary.d.ts +0 -65
  91. package/dist/cjs/ServerLibrary.js +0 -505
  92. package/dist/cjs/ServerLibrary.js.map +0 -1
  93. package/dist/cjs/TokenProvider.d.ts +0 -19
  94. package/dist/cjs/TokenProvider.js +0 -27
  95. package/dist/cjs/TokenProvider.js.map +0 -1
  96. package/dist/cjs/TokenVerifier.d.ts +0 -16
  97. package/dist/cjs/TokenVerifier.js +0 -40
  98. package/dist/cjs/TokenVerifier.js.map +0 -1
  99. package/dist/cjs/files/FileMetadata.d.ts +0 -28
  100. package/dist/cjs/files/FileMetadata.js +0 -69
  101. package/dist/cjs/files/FileMetadata.js.map +0 -1
  102. package/dist/cjs/files/FileStorage.d.ts +0 -35
  103. package/dist/cjs/files/FileStorage.js +0 -72
  104. package/dist/cjs/files/FileStorage.js.map +0 -1
  105. package/dist/cjs/index.d.ts +0 -10
  106. package/dist/cjs/index.js +0 -12
  107. package/dist/cjs/index.js.map +0 -1
  108. package/dist/cjs/migrations/v0.d.ts +0 -1
  109. package/dist/cjs/migrations/v0.js +0 -30
  110. package/dist/cjs/migrations/v0.js.map +0 -1
  111. package/dist/cjs/migrations/v1.d.ts +0 -1
  112. package/dist/cjs/migrations/v1.js +0 -32
  113. package/dist/cjs/migrations/v1.js.map +0 -1
  114. package/dist/cjs/migrations/v2.d.ts +0 -1
  115. package/dist/cjs/migrations/v2.js +0 -29
  116. package/dist/cjs/migrations/v2.js.map +0 -1
  117. package/dist/cjs/migrations/v3.d.ts +0 -1
  118. package/dist/cjs/migrations/v3.js +0 -15
  119. package/dist/cjs/migrations/v3.js.map +0 -1
  120. package/dist/cjs/migrations/v4.d.ts +0 -1
  121. package/dist/cjs/migrations/v4.js +0 -9
  122. package/dist/cjs/migrations/v4.js.map +0 -1
  123. package/dist/cjs/migrations/v5.d.ts +0 -2
  124. package/dist/cjs/migrations/v5.js +0 -37
  125. package/dist/cjs/migrations/v5.js.map +0 -1
  126. package/dist/cjs/migrations/v6.d.ts +0 -1
  127. package/dist/cjs/migrations/v6.js +0 -8
  128. package/dist/cjs/migrations/v6.js.map +0 -1
  129. package/dist/cjs/migrations/v7.d.ts +0 -1
  130. package/dist/cjs/migrations/v7.js +0 -10
  131. package/dist/cjs/migrations/v7.js.map +0 -1
  132. package/dist/cjs/migrations.d.ts +0 -6
  133. package/dist/cjs/migrations.js +0 -72
  134. package/dist/cjs/migrations.js.map +0 -1
  135. package/dist/cjs/migrations.test.js +0 -121
  136. package/dist/cjs/migrations.test.js.map +0 -1
  137. package/dist/cjs/types.d.ts +0 -38
  138. package/dist/cjs/types.js +0 -3
  139. package/dist/cjs/types.js.map +0 -1
  140. package/dist/esm/Baselines.d.ts +0 -16
  141. package/dist/esm/Baselines.js +0 -124
  142. package/dist/esm/Baselines.js.map +0 -1
  143. package/dist/esm/OperationHistory.d.ts +0 -36
  144. package/dist/esm/OperationHistory.js +0 -161
  145. package/dist/esm/OperationHistory.js.map +0 -1
  146. package/dist/esm/Replicas.d.ts +0 -25
  147. package/dist/esm/Replicas.js +0 -192
  148. package/dist/esm/Replicas.js.map +0 -1
  149. package/dist/esm/files/FileMetadata.d.ts +0 -28
  150. package/dist/esm/files/FileMetadata.js +0 -65
  151. package/dist/esm/files/FileMetadata.js.map +0 -1
  152. package/dist/esm/migrations/v0.d.ts +0 -1
  153. package/dist/esm/migrations/v0.js +0 -27
  154. package/dist/esm/migrations/v0.js.map +0 -1
  155. package/dist/esm/migrations/v1.d.ts +0 -1
  156. package/dist/esm/migrations/v1.js +0 -29
  157. package/dist/esm/migrations/v1.js.map +0 -1
  158. package/dist/esm/migrations/v2.d.ts +0 -1
  159. package/dist/esm/migrations/v2.js +0 -26
  160. package/dist/esm/migrations/v2.js.map +0 -1
  161. package/dist/esm/migrations/v3.d.ts +0 -1
  162. package/dist/esm/migrations/v3.js +0 -12
  163. package/dist/esm/migrations/v3.js.map +0 -1
  164. package/dist/esm/migrations/v4.d.ts +0 -1
  165. package/dist/esm/migrations/v4.js +0 -6
  166. package/dist/esm/migrations/v4.js.map +0 -1
  167. package/dist/esm/migrations/v5.d.ts +0 -2
  168. package/dist/esm/migrations/v5.js +0 -33
  169. package/dist/esm/migrations/v5.js.map +0 -1
  170. package/dist/esm/migrations/v6.d.ts +0 -1
  171. package/dist/esm/migrations/v6.js +0 -5
  172. package/dist/esm/migrations/v6.js.map +0 -1
  173. package/dist/esm/migrations/v7.d.ts +0 -1
  174. package/dist/esm/migrations/v7.js +0 -7
  175. package/dist/esm/migrations/v7.js.map +0 -1
  176. package/dist/esm/migrations.d.ts +0 -6
  177. package/dist/esm/migrations.js +0 -45
  178. package/dist/esm/migrations.js.map +0 -1
  179. package/dist/esm/migrations.test.d.ts +0 -1
  180. package/dist/esm/migrations.test.js +0 -116
  181. package/dist/esm/migrations.test.js.map +0 -1
  182. package/dist/tsconfig-cjs.tsbuildinfo +0 -1
  183. package/dist/tsconfig.tsbuildinfo +0 -1
  184. package/src/Baselines.ts +0 -198
  185. package/src/OperationHistory.ts +0 -232
  186. package/src/Replicas.ts +0 -274
  187. package/src/files/FileMetadata.ts +0 -112
  188. package/src/migrations/v0.ts +0 -26
  189. package/src/migrations/v1.ts +0 -28
  190. package/src/migrations/v2.ts +0 -26
  191. package/src/migrations/v3.ts +0 -12
  192. package/src/migrations/v4.ts +0 -6
  193. package/src/migrations/v5.ts +0 -49
  194. package/src/migrations/v6.ts +0 -4
  195. package/src/migrations/v7.ts +0 -6
  196. package/src/migrations.test.ts +0 -133
  197. package/src/migrations.ts +0 -61
  198. /package/dist/{cjs/migrations.test.d.ts → esm/ServerLibrary.test.d.ts} +0 -0
@@ -1,192 +0,0 @@
1
- export class ReplicaInfos {
2
- constructor(db, replicaTruancyMinutes) {
3
- this.db = db;
4
- this.replicaTruancyMinutes = replicaTruancyMinutes;
5
- this.get = (libraryId, replicaId) => {
6
- const row = this.db
7
- .prepare(`
8
- SELECT * FROM ReplicaInfo
9
- WHERE id = ? AND libraryId = ?
10
- `)
11
- .get(replicaId, libraryId);
12
- if (!row) {
13
- return null;
14
- }
15
- return {
16
- id: row.id,
17
- libraryId: row.libraryId,
18
- clientId: row.clientId,
19
- lastSeenWallClockTime: row.lastSeenWallClockTime,
20
- ackedLogicalTime: row.ackedLogicalTime,
21
- type: row.type,
22
- ackedServerOrder: row.ackedServerOrder,
23
- };
24
- };
25
- this.getOrCreate = (libraryId, replicaId, info) => {
26
- const replicaInfo = this.db
27
- .prepare(`
28
- SELECT * FROM ReplicaInfo
29
- WHERE id = ? AND libraryId = ?
30
- `)
31
- .get(replicaId, libraryId);
32
- if (!replicaInfo) {
33
- this.db
34
- .prepare(`
35
- INSERT INTO ReplicaInfo (id, clientId, libraryId, type)
36
- VALUES (?, ?, ?, ?)
37
- `)
38
- .run(replicaId, info.userId, libraryId, info.type);
39
- return {
40
- status: 'new',
41
- replicaInfo: {
42
- id: replicaId,
43
- clientId: info.userId,
44
- ackedLogicalTime: null,
45
- lastSeenWallClockTime: null,
46
- libraryId: libraryId,
47
- type: info.type,
48
- ackedServerOrder: 0,
49
- },
50
- };
51
- }
52
- if (replicaInfo.type !== info.type) {
53
- // type should be updated if a new token changes it
54
- this.db
55
- .prepare(`
56
- UPDATE ReplicaInfo
57
- SET type = ?
58
- WHERE id = ? AND libraryId = ?
59
- `)
60
- .run(info.type, replicaId, libraryId);
61
- }
62
- if (replicaInfo.clientId !== info.userId) {
63
- throw new Error(`Replica ${replicaId} already exists with a different user ID`);
64
- }
65
- if (replicaInfo.lastSeenWallClockTime &&
66
- replicaInfo.lastSeenWallClockTime < this.truantCutoff) {
67
- return {
68
- status: 'truant',
69
- replicaInfo,
70
- };
71
- }
72
- return {
73
- status: 'existing',
74
- replicaInfo,
75
- };
76
- };
77
- this.getAllNonTruant = (libraryId) => {
78
- return this.db
79
- .prepare(`
80
- SELECT * FROM ReplicaInfo
81
- WHERE libraryId = ? AND lastSeenWallClockTime > ?
82
- `)
83
- .all(libraryId, this.truantCutoff);
84
- };
85
- this.getAll = (libraryId) => {
86
- return this.db
87
- .prepare(`
88
- SELECT * FROM ReplicaInfo
89
- WHERE libraryId = ?
90
- `)
91
- .all(libraryId);
92
- };
93
- this.updateLastSeen = (libraryId, replicaId) => {
94
- const clockTime = new Date().getTime();
95
- return this.db
96
- .prepare(`
97
- UPDATE ReplicaInfo
98
- SET lastSeenWallClockTime = ?
99
- WHERE id = ? AND libraryId = ?
100
- `)
101
- .run(clockTime, replicaId, libraryId);
102
- };
103
- this.updateAcknowledged = (libraryId, replicaId, timestamp) => {
104
- this.db
105
- .prepare(`
106
- UPDATE ReplicaInfo
107
- SET ackedLogicalTime = ?
108
- WHERE id = ? AND libraryId = ?
109
- `)
110
- .run(timestamp, replicaId, libraryId);
111
- };
112
- this.updateServerOrder = (libraryId, replicaId, serverOrder) => {
113
- // only increment the server order, never set it to lower than before
114
- this.db
115
- .prepare(`
116
- UPDATE ReplicaInfo
117
- SET ackedServerOrder = MAX(ackedServerOrder, ?)
118
- WHERE id = ? AND libraryId = ?
119
- `)
120
- .run(serverOrder, replicaId, libraryId);
121
- };
122
- this.getEarliestAckedServerOrder = (libraryId) => {
123
- // get the earliest acked server order of all non-truant replicas
124
- const allAcks = this.db
125
- .prepare(`
126
- SELECT ackedServerOrder FROM ReplicaInfo
127
- WHERE libraryId = ?
128
- AND lastSeenWallClockTime > ?
129
- `)
130
- .all(libraryId, this.truantCutoff).map((row) => row.ackedServerOrder);
131
- if (allAcks.some((ack) => ack === null)) {
132
- return null;
133
- }
134
- return Math.min(...allAcks);
135
- };
136
- this.acknowledgeOperation = (libraryId, replicaId, timestamp) => {
137
- if (!timestamp)
138
- return;
139
- // get the server order from the operation with the timestamp and update the replica's server order
140
- // to the max of the current server order and the server order of the operation
141
- this.db
142
- .prepare(`
143
- UPDATE ReplicaInfo
144
- SET ackedLogicalTime = ?, ackedServerOrder = MAX(ackedServerOrder, COALESCE((
145
- SELECT serverOrder FROM OperationHistory
146
- WHERE libraryId = ? AND timestamp = ?
147
- ), 0))
148
- WHERE id = ? AND libraryId = ?
149
- `)
150
- .run(timestamp, libraryId, timestamp, replicaId, libraryId);
151
- };
152
- this.getGlobalAck = (libraryId, onlineReplicaIds) => {
153
- const nonTruant = this.getAllNonTruant(libraryId);
154
- const globalAckEligible = nonTruant.filter((replica) => replica.type < 2 || (onlineReplicaIds === null || onlineReplicaIds === void 0 ? void 0 : onlineReplicaIds.includes(replica.id)));
155
- // get the earliest acked time
156
- return globalAckEligible.reduce((acc, replica) => {
157
- if (!replica.ackedLogicalTime) {
158
- return acc;
159
- }
160
- if (acc === undefined) {
161
- return replica.ackedLogicalTime;
162
- }
163
- return acc < replica.ackedLogicalTime ? acc : replica.ackedLogicalTime;
164
- }, undefined);
165
- };
166
- this.delete = (libraryId, replicaId) => {
167
- return this.db
168
- .prepare(`
169
- DELETE FROM ReplicaInfo
170
- WHERE id = ? AND libraryId = ?
171
- `)
172
- .run(replicaId, libraryId);
173
- };
174
- this.deleteAll = (libraryId) => {
175
- return this.db
176
- .prepare(`
177
- DELETE FROM ReplicaInfo
178
- WHERE libraryId = ?
179
- `)
180
- .run(libraryId);
181
- };
182
- this.deleteAllForUser = (libraryId, userId) => {
183
- return this.db
184
- .prepare(`DELETE FROM ReplicaInfo WHERE libraryId = ? AND clientId = ?`)
185
- .run(libraryId, userId);
186
- };
187
- }
188
- get truantCutoff() {
189
- return Date.now() - this.replicaTruancyMinutes * 60 * 1000;
190
- }
191
- }
192
- //# sourceMappingURL=Replicas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Replicas.js","sourceRoot":"","sources":["../../src/Replicas.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { Database } from 'better-sqlite3';
2
- import { FileInfo } from './FileStorage.js';
3
- export interface FileMetadataConfig {
4
- deleteExpirationDays?: number;
5
- }
6
- export declare class FileMetadata {
7
- private db;
8
- private deleteExpirationDays;
9
- constructor(db: Database, { deleteExpirationDays }?: FileMetadataConfig);
10
- get: (libraryId: string, fileId: string) => {
11
- libraryId: string;
12
- fileId: string;
13
- name: string;
14
- type: string;
15
- };
16
- getAll: (libraryId: string) => any[];
17
- deleteAll: (libraryId: string) => import("better-sqlite3").RunResult;
18
- put: (libraryId: string, fileInfo: FileInfo) => import("better-sqlite3").RunResult;
19
- markPendingDelete: (libraryId: string, fileId: string) => import("better-sqlite3").RunResult;
20
- delete: (libraryId: string, fileId: string) => import("better-sqlite3").RunResult;
21
- getPendingDeletes: (libraryId: string) => {
22
- libraryId: string;
23
- fileId: string;
24
- name: string;
25
- type: string;
26
- pendingDeleteAt: number;
27
- }[];
28
- }
@@ -1,65 +0,0 @@
1
- export class FileMetadata {
2
- constructor(db, { deleteExpirationDays = 1 } = {}) {
3
- this.db = db;
4
- this.deleteExpirationDays = 1;
5
- this.get = (libraryId, fileId) => {
6
- return this.db
7
- .prepare(`
8
- SELECT * FROM FileMetadata
9
- WHERE libraryId = ? AND fileId = ?
10
- `)
11
- .get(libraryId, fileId);
12
- };
13
- this.getAll = (libraryId) => {
14
- return this.db
15
- .prepare(`
16
- SELECT * FROM FileMetadata
17
- WHERE libraryId = ?
18
- `)
19
- .all(libraryId);
20
- };
21
- this.deleteAll = (libraryId) => {
22
- return this.db
23
- .prepare(`
24
- DELETE FROM FileMetadata
25
- WHERE libraryId = ?
26
- `)
27
- .run(libraryId);
28
- };
29
- this.put = (libraryId, fileInfo) => {
30
- return this.db
31
- .prepare(`
32
- INSERT OR REPLACE INTO FileMetadata (libraryId, fileId, name, type)
33
- VALUES (?, ?, ?, ?)
34
- `)
35
- .run(libraryId, fileInfo.id, fileInfo.fileName, fileInfo.type);
36
- };
37
- this.markPendingDelete = (libraryId, fileId) => {
38
- return this.db
39
- .prepare(`
40
- UPDATE FileMetadata
41
- SET pendingDeleteAt = ?
42
- WHERE libraryId = ? AND fileId = ?
43
- `)
44
- .run(Date.now(), libraryId, fileId);
45
- };
46
- this.delete = (libraryId, fileId) => {
47
- return this.db
48
- .prepare(`
49
- DELETE FROM FileMetadata
50
- WHERE libraryId = ? AND fileId = ?
51
- `)
52
- .run(libraryId, fileId);
53
- };
54
- this.getPendingDeletes = (libraryId) => {
55
- return this.db
56
- .prepare(`
57
- SELECT * FROM FileMetadata
58
- WHERE libraryId = ? AND pendingDeleteAt < ?
59
- `)
60
- .all(libraryId, Date.now() - 1000 * 60 * 60 * 24 * this.deleteExpirationDays);
61
- };
62
- this.deleteExpirationDays = deleteExpirationDays;
63
- }
64
- }
65
- //# sourceMappingURL=FileMetadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileMetadata.js","sourceRoot":"","sources":["../../../src/files/FileMetadata.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,YAAY;IAGxB,YACS,EAAY,EACpB,EAAE,oBAAoB,GAAG,CAAC,KAAyB,EAAE;QAD7C,OAAE,GAAF,EAAE,CAAU;QAHb,yBAAoB,GAAG,CAAC,CAAC;QASjC,QAAG,GAAG,CACL,SAAiB,EACjB,MAAc,EAMb,EAAE;YACH,OAAO,IAAI,CAAC,EAAE;iBACZ,OAAO,CACP;;;KAGC,CACD;iBACA,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,SAAiB,EAAE,EAAE;YAC9B,OAAO,IAAI,CAAC,EAAE;iBACZ,OAAO,CACP;;;GAGD,CACC;iBACA,GAAG,CAAC,SAAS,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,SAAiB,EAAE,EAAE;YACjC,OAAO,IAAI,CAAC,EAAE;iBACZ,OAAO,CACP;;;GAGD,CACC;iBACA,GAAG,CAAC,SAAS,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,QAAG,GAAG,CAAC,SAAiB,EAAE,QAAkB,EAAE,EAAE;YAC/C,OAAO,IAAI,CAAC,EAAE;iBACZ,OAAO,CACP;;;KAGC,CACD;iBACA,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE;YACzD,OAAO,IAAI,CAAC,EAAE;iBACZ,OAAO,CACP;;;;KAIC,CACD;iBACA,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE;YAC9C,OAAO,IAAI,CAAC,EAAE;iBACZ,OAAO,CACP;;;KAGC,CACD;iBACA,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,SAAiB,EAAE,EAAE;YACzC,OAAO,IAAI,CAAC,EAAE;iBACZ,OAAO,CACP;;;KAGC,CACD;iBACA,GAAG,CACH,SAAS,EACT,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAO3D,CAAC;QACL,CAAC,CAAC;QAhGD,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IAClD,CAAC;CAgGD"}
@@ -1 +0,0 @@
1
- export declare const sql = "\nCREATE TABLE IF NOT EXISTS ReplicaInfo (\n id TEXT PRIMARY KEY NOT NULL,\n libraryId TEXT NOT NULL,\n clientId TEXT NOT NULL,\n lastSeenWallClockTime INTEGER,\n ackedLogicalTime TEXT,\n type INTEGER NOT NULL DEFAULT 0\n);\n\nCREATE TABLE IF NOT EXISTS OperationHistory (\n libraryId TEXT NOT NULL,\n replicaId TEXT NOT NULL,\n oid TEXT NOT NULL,\n data TEXT NOT NULL,\n timestamp INTEGER NOT NULL,\n PRIMARY KEY (libraryId, replicaId, oid, timestamp)\n);\n\nCREATE TABLE IF NOT EXISTS DocumentBaseline (\n oid TEXT PRIMARY KEY NOT NULL,\n snapshot TEXT,\n timestamp TEXT NOT NULL,\n libraryId TEXT NOT NULL\n);\n";
@@ -1,27 +0,0 @@
1
- export const sql = `
2
- CREATE TABLE IF NOT EXISTS ReplicaInfo (
3
- id TEXT PRIMARY KEY NOT NULL,
4
- libraryId TEXT NOT NULL,
5
- clientId TEXT NOT NULL,
6
- lastSeenWallClockTime INTEGER,
7
- ackedLogicalTime TEXT,
8
- type INTEGER NOT NULL DEFAULT 0
9
- );
10
-
11
- CREATE TABLE IF NOT EXISTS OperationHistory (
12
- libraryId TEXT NOT NULL,
13
- replicaId TEXT NOT NULL,
14
- oid TEXT NOT NULL,
15
- data TEXT NOT NULL,
16
- timestamp INTEGER NOT NULL,
17
- PRIMARY KEY (libraryId, replicaId, oid, timestamp)
18
- );
19
-
20
- CREATE TABLE IF NOT EXISTS DocumentBaseline (
21
- oid TEXT PRIMARY KEY NOT NULL,
22
- snapshot TEXT,
23
- timestamp TEXT NOT NULL,
24
- libraryId TEXT NOT NULL
25
- );
26
- `;
27
- //# sourceMappingURL=v0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v0.js","sourceRoot":"","sources":["../../../src/migrations/v0.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlB,CAAC"}
@@ -1 +0,0 @@
1
- export declare const sql = "\nALTER TABLE\n ReplicaInfo RENAME TO ReplicaInfoOld;\n\nCREATE TABLE ReplicaInfo (\n id TEXT NOT NULL,\n libraryId TEXT NOT NULL,\n clientId TEXT NOT NULL,\n lastSeenWallClockTime INTEGER,\n ackedLogicalTime TEXT,\n type INTEGER NOT NULL DEFAULT 0,\n PRIMARY KEY (id, libraryId)\n);\n\nINSERT INTO\n ReplicaInfo\nSELECT\n id,\n libraryId,\n clientId,\n lastSeenWallClockTime,\n ackedLogicalTime,\n type\nFROM\n ReplicaInfoOld;\n\nDROP TABLE ReplicaInfoOld;\n";
@@ -1,29 +0,0 @@
1
- export const sql = `
2
- ALTER TABLE
3
- ReplicaInfo RENAME TO ReplicaInfoOld;
4
-
5
- CREATE TABLE ReplicaInfo (
6
- id TEXT NOT NULL,
7
- libraryId TEXT NOT NULL,
8
- clientId TEXT NOT NULL,
9
- lastSeenWallClockTime INTEGER,
10
- ackedLogicalTime TEXT,
11
- type INTEGER NOT NULL DEFAULT 0,
12
- PRIMARY KEY (id, libraryId)
13
- );
14
-
15
- INSERT INTO
16
- ReplicaInfo
17
- SELECT
18
- id,
19
- libraryId,
20
- clientId,
21
- lastSeenWallClockTime,
22
- ackedLogicalTime,
23
- type
24
- FROM
25
- ReplicaInfoOld;
26
-
27
- DROP TABLE ReplicaInfoOld;
28
- `;
29
- //# sourceMappingURL=v1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v1.js","sourceRoot":"","sources":["../../../src/migrations/v1.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BlB,CAAC"}
@@ -1 +0,0 @@
1
- export declare const sql = "\n ALTER TABLE\n DocumentBaseline RENAME TO DocumentBaselineOld;\n\n CREATE TABLE DocumentBaseline (\n oid TEXT NOT NULL,\n snapshot TEXT,\n timestamp TEXT NOT NULL,\n libraryId TEXT NOT NULL,\n PRIMARY KEY (libraryId, oid)\n );\n\n INSERT INTO\n DocumentBaseline\n SELECT\n oid,\n snapshot,\n timestamp,\n libraryId\n FROM\n DocumentBaselineOld;\n\n DROP TABLE DocumentBaselineOld;\n";
@@ -1,26 +0,0 @@
1
- // fixes primary key for document baselines to include libraryId
2
- export const sql = `
3
- ALTER TABLE
4
- DocumentBaseline RENAME TO DocumentBaselineOld;
5
-
6
- CREATE TABLE DocumentBaseline (
7
- oid TEXT NOT NULL,
8
- snapshot TEXT,
9
- timestamp TEXT NOT NULL,
10
- libraryId TEXT NOT NULL,
11
- PRIMARY KEY (libraryId, oid)
12
- );
13
-
14
- INSERT INTO
15
- DocumentBaseline
16
- SELECT
17
- oid,
18
- snapshot,
19
- timestamp,
20
- libraryId
21
- FROM
22
- DocumentBaselineOld;
23
-
24
- DROP TABLE DocumentBaselineOld;
25
- `;
26
- //# sourceMappingURL=v2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../src/migrations/v2.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,MAAM,CAAC,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBlB,CAAC"}
@@ -1 +0,0 @@
1
- export declare const sql = "\n CREATE TABLE IF NOT EXISTS FileMetadata (\n libraryId TEXT NOT NULL,\n fileId TEXT NOT NULL,\n name TEXT NOT NULL,\n type TEXT NOT NULL,\n pendingDeleteAt INTEGER,\n PRIMARY KEY (libraryId, fileId)\n );\n";
@@ -1,12 +0,0 @@
1
- // add the FileMetadata table
2
- export const sql = `
3
- CREATE TABLE IF NOT EXISTS FileMetadata (
4
- libraryId TEXT NOT NULL,
5
- fileId TEXT NOT NULL,
6
- name TEXT NOT NULL,
7
- type TEXT NOT NULL,
8
- pendingDeleteAt INTEGER,
9
- PRIMARY KEY (libraryId, fileId)
10
- );
11
- `;
12
- //# sourceMappingURL=v3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v3.js","sourceRoot":"","sources":["../../../src/migrations/v3.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAE7B,MAAM,CAAC,MAAM,GAAG,GAAG;;;;;;;;;CASlB,CAAC"}
@@ -1 +0,0 @@
1
- export declare const sql = "\n ALTER TABLE ReplicaInfo ADD COLUMN ackedServerOrder INTEGER DEFAULT 0 NOT NULL;\n ALTER TABLE OperationHistory ADD COLUMN serverOrder INTEGER DEFAULT 0 NOT NULL;\n";
@@ -1,6 +0,0 @@
1
- // add server order to replicas and operations
2
- export const sql = `
3
- ALTER TABLE ReplicaInfo ADD COLUMN ackedServerOrder INTEGER DEFAULT 0 NOT NULL;
4
- ALTER TABLE OperationHistory ADD COLUMN serverOrder INTEGER DEFAULT 0 NOT NULL;
5
- `;
6
- //# sourceMappingURL=v4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v4.js","sourceRoot":"","sources":["../../../src/migrations/v4.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,MAAM,CAAC,MAAM,GAAG,GAAG;;;CAGlB,CAAC"}
@@ -1,2 +0,0 @@
1
- import SQL from 'better-sqlite3';
2
- export declare const procedure: (db: SQL.Database) => void;
@@ -1,33 +0,0 @@
1
- import { convertLegacyOid, replaceLegacyOidsInJsonString, } from '@verdant-web/common';
2
- // read all operations and write them back without legacy IDs.
3
- export const procedure = (db) => {
4
- const operations = db
5
- .prepare(/* sql */ `SELECT * from OperationHistory;`)
6
- .all();
7
- for (const op of operations) {
8
- db.prepare(
9
- /* sql */ `
10
- UPDATE OperationHistory
11
- SET oid = ?,
12
- data = ?
13
- WHERE oid = ? AND timestamp = ? AND libraryId = ?;
14
- `).run(convertLegacyOid(op.oid),
15
- // data is already a string, so just leave it and do the conversion on the string
16
- op.data ? replaceLegacyOidsInJsonString(op.data) : op.data, op.oid, op.timestamp, op.libraryId);
17
- }
18
- const baselines = db
19
- .prepare(/* sql */ `SELECT * from DocumentBaseline;`)
20
- .all();
21
- for (const baseline of baselines) {
22
- db.prepare(
23
- /* sql */ `
24
- UPDATE DocumentBaseline
25
- SET oid = ?,
26
- snapshot = ?
27
- WHERE oid = ? AND libraryId = ?;
28
- `).run(convertLegacyOid(baseline.oid), baseline.snapshot
29
- ? replaceLegacyOidsInJsonString(baseline.snapshot)
30
- : baseline.snapshot, baseline.oid, baseline.libraryId);
31
- }
32
- };
33
- //# sourceMappingURL=v5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v5.js","sourceRoot":"","sources":["../../../src/migrations/v5.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,6BAA6B,GAC7B,MAAM,qBAAqB,CAAC;AAG7B,8DAA8D;AAC9D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAgB,EAAE,EAAE;IAC7C,MAAM,UAAU,GAAG,EAAE;SACnB,OAAO,CAAC,SAAS,CAAC,iCAAiC,CAAC;SACpD,GAAG,EAAE,CAAC;IACR,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;QAC5B,EAAE,CAAC,OAAO;QACT,SAAS,CAAC;;;;;KAKR,CACF,CAAC,GAAG,CACJ,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC;QACxB,iFAAiF;QACjF,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAC1D,EAAE,CAAC,GAAG,EACN,EAAE,CAAC,SAAS,EACZ,EAAE,CAAC,SAAS,CACZ,CAAC;KACF;IACD,MAAM,SAAS,GAAG,EAAE;SAClB,OAAO,CAAC,SAAS,CAAC,iCAAiC,CAAC;SACpD,GAAG,EAAE,CAAC;IACR,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QACjC,EAAE,CAAC,OAAO;QACT,SAAS,CAAC;;;;;KAKR,CACF,CAAC,GAAG,CACJ,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9B,QAAQ,CAAC,QAAQ;YAChB,CAAC,CAAC,6BAA6B,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClD,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACpB,QAAQ,CAAC,GAAG,EACZ,QAAQ,CAAC,SAAS,CAClB,CAAC;KACF;AACF,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export declare const sql = "\n DELETE FROM DocumentBaseline WHERE snapshot IS NULL;\n";
@@ -1,5 +0,0 @@
1
- // delete all DocumentBaselines where snapshot = NULL
2
- export const sql = `
3
- DELETE FROM DocumentBaseline WHERE snapshot IS NULL;
4
- `;
5
- //# sourceMappingURL=v6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v6.js","sourceRoot":"","sources":["../../../src/migrations/v6.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,CAAC,MAAM,GAAG,GAAG;;CAElB,CAAA"}
@@ -1 +0,0 @@
1
- export declare const sql = "\n ALTER TABLE\n DocumentBaseline\n ADD COLUMN serverOrder INTEGER DEFAULT 0 NOT NULL;\n";
@@ -1,7 +0,0 @@
1
- // delete all DocumentBaselines where snapshot = NULL
2
- export const sql = `
3
- ALTER TABLE
4
- DocumentBaseline
5
- ADD COLUMN serverOrder INTEGER DEFAULT 0 NOT NULL;
6
- `;
7
- //# sourceMappingURL=v7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v7.js","sourceRoot":"","sources":["../../../src/migrations/v7.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,CAAC,MAAM,GAAG,GAAG;;;;CAIlB,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { Database } from 'better-sqlite3';
2
- export declare const allMigrations: {
3
- sql?: string;
4
- procedure?: (db: Database) => void;
5
- }[];
6
- export declare function migrations(db: Database, upTo?: number): void;
@@ -1,45 +0,0 @@
1
- import * as v0 from './migrations/v0.js';
2
- import * as v1 from './migrations/v1.js';
3
- import * as v2 from './migrations/v2.js';
4
- import * as v3 from './migrations/v3.js';
5
- import * as v4 from './migrations/v4.js';
6
- import * as v5 from './migrations/v5.js';
7
- import * as v6 from './migrations/v6.js';
8
- export const allMigrations = [v0, v1, v2, v3, v4, v5, v6];
9
- export function migrations(db, upTo = allMigrations.length) {
10
- var _a;
11
- // create the versions table if it doesn't exist
12
- db.prepare(`
13
- CREATE TABLE IF NOT EXISTS versions (
14
- version INTEGER NOT NULL PRIMARY KEY
15
- );
16
- `).run();
17
- // get the current version
18
- const versionResult = db
19
- .prepare(`
20
- SELECT version FROM versions ORDER BY version DESC LIMIT 1;
21
- `)
22
- .get();
23
- const version = (_a = versionResult === null || versionResult === void 0 ? void 0 : versionResult.version) !== null && _a !== void 0 ? _a : 0;
24
- const toRun = allMigrations.slice(version, upTo);
25
- if (toRun.length === 0) {
26
- console.info('No migrations to run');
27
- return;
28
- }
29
- console.info('Running migrations from ', version, 'to', upTo);
30
- const run = db.transaction(() => {
31
- for (const { sql, procedure } of toRun) {
32
- if (sql) {
33
- db.exec(sql);
34
- }
35
- if (procedure) {
36
- procedure(db);
37
- }
38
- }
39
- db.prepare(`
40
- INSERT INTO versions (version) VALUES (?);
41
- `).run(upTo);
42
- });
43
- run();
44
- }
45
- //# sourceMappingURL=migrations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEzC,MAAM,CAAC,MAAM,aAAa,GAGpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAEnC,MAAM,UAAU,UAAU,CAAC,EAAY,EAAE,OAAe,aAAa,CAAC,MAAM;;IAC3E,gDAAgD;IAChD,EAAE,CAAC,OAAO,CACT;;;;GAIC,CACD,CAAC,GAAG,EAAE,CAAC;IAER,0BAA0B;IAC1B,MAAM,aAAa,GAAG,EAAE;SACtB,OAAO,CACP;;GAEA,CACA;SACA,GAAG,EAAqC,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,mCAAI,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,OAAO;KACP;IAED,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE9D,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAC/B,KAAK,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,KAAK,EAAE;YACvC,IAAI,GAAG,EAAE;gBACR,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACb;YACD,IAAI,SAAS,EAAE;gBACd,SAAS,CAAC,EAAE,CAAC,CAAC;aACd;SACD;QACD,EAAE,CAAC,OAAO,CACT;;GAEA,CACA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,GAAG,EAAE,CAAC;AACP,CAAC"}
@@ -1 +0,0 @@
1
- export {};