@verdant-web/server 1.8.13 → 1.8.14-next.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 (150) hide show
  1. package/dist/cjs/Baselines.d.ts +15 -15
  2. package/dist/cjs/Baselines.js +83 -83
  3. package/dist/cjs/ClientConnection.d.ts +18 -18
  4. package/dist/cjs/ClientConnection.js +105 -105
  5. package/dist/cjs/MessageSender.d.ts +5 -5
  6. package/dist/cjs/MessageSender.js +2 -2
  7. package/dist/cjs/OperationHistory.d.ts +36 -36
  8. package/dist/cjs/OperationHistory.js +120 -120
  9. package/dist/cjs/Presence.d.ts +15 -15
  10. package/dist/cjs/Presence.js +59 -59
  11. package/dist/cjs/Profiles.d.ts +10 -10
  12. package/dist/cjs/Profiles.js +19 -19
  13. package/dist/cjs/ReplicaKeepaliveTimers.d.ts +17 -17
  14. package/dist/cjs/ReplicaKeepaliveTimers.js +30 -30
  15. package/dist/cjs/Replicas.d.ts +24 -24
  16. package/dist/cjs/Replicas.js +137 -137
  17. package/dist/cjs/Server.d.ts +143 -143
  18. package/dist/cjs/Server.js +396 -396
  19. package/dist/cjs/ServerLibrary.d.ts +77 -77
  20. package/dist/cjs/ServerLibrary.js +487 -487
  21. package/dist/cjs/ServerStorage.d.ts +35 -0
  22. package/dist/cjs/ServerStorage.js +60 -0
  23. package/dist/cjs/ServerStorage.js.map +1 -0
  24. package/dist/cjs/TokenProvider.d.ts +16 -16
  25. package/dist/cjs/TokenProvider.js +26 -26
  26. package/dist/cjs/TokenVerifier.d.ts +16 -16
  27. package/dist/cjs/TokenVerifier.js +28 -28
  28. package/dist/cjs/files/FileMetadata.d.ts +28 -28
  29. package/dist/cjs/files/FileMetadata.js +46 -46
  30. package/dist/cjs/files/FileStorage.d.ts +35 -35
  31. package/dist/cjs/files/FileStorage.js +71 -71
  32. package/dist/cjs/index.d.ts +9 -9
  33. package/dist/cjs/index.js +11 -11
  34. package/dist/cjs/migrations/v0.d.ts +1 -0
  35. package/dist/cjs/migrations/v0.js +30 -0
  36. package/dist/cjs/migrations/v0.js.map +1 -0
  37. package/dist/cjs/migrations/v0.sql.d.ts +2 -2
  38. package/dist/cjs/migrations/v0.sql.js +3 -3
  39. package/dist/cjs/migrations/v1.d.ts +1 -0
  40. package/dist/cjs/migrations/v1.js +32 -0
  41. package/dist/cjs/migrations/v1.js.map +1 -0
  42. package/dist/cjs/migrations/v1.sql.d.ts +2 -2
  43. package/dist/cjs/migrations/v1.sql.js +3 -3
  44. package/dist/cjs/migrations/v2.d.ts +1 -0
  45. package/dist/cjs/migrations/v2.js +29 -0
  46. package/dist/cjs/migrations/v2.js.map +1 -0
  47. package/dist/cjs/migrations/v2.sql.d.ts +2 -2
  48. package/dist/cjs/migrations/v2.sql.js +4 -4
  49. package/dist/cjs/migrations/v3.d.ts +1 -0
  50. package/dist/cjs/migrations/v3.js +15 -0
  51. package/dist/cjs/migrations/v3.js.map +1 -0
  52. package/dist/cjs/migrations/v3.sql.d.ts +2 -2
  53. package/dist/cjs/migrations/v3.sql.js +4 -4
  54. package/dist/cjs/migrations/v4.d.ts +1 -0
  55. package/dist/cjs/migrations/v4.js +9 -0
  56. package/dist/cjs/migrations/v4.js.map +1 -0
  57. package/dist/cjs/migrations/v4.sql.d.ts +2 -2
  58. package/dist/cjs/migrations/v4.sql.js +4 -4
  59. package/dist/cjs/migrations/v5.d.ts +2 -0
  60. package/dist/cjs/migrations/v5.js +35 -0
  61. package/dist/cjs/migrations/v5.js.map +1 -0
  62. package/dist/cjs/migrations.d.ts +6 -2
  63. package/dist/cjs/migrations.js +62 -32
  64. package/dist/cjs/migrations.js.map +1 -1
  65. package/dist/cjs/migrations.test.d.ts +1 -0
  66. package/dist/cjs/migrations.test.js +121 -0
  67. package/dist/cjs/migrations.test.js.map +1 -0
  68. package/dist/cjs/types.d.ts +22 -22
  69. package/dist/cjs/types.js +2 -2
  70. package/dist/esm/Baselines.d.ts +15 -15
  71. package/dist/esm/Baselines.js +79 -79
  72. package/dist/esm/ClientConnection.d.ts +18 -18
  73. package/dist/esm/ClientConnection.js +101 -101
  74. package/dist/esm/MessageSender.d.ts +5 -5
  75. package/dist/esm/MessageSender.js +1 -1
  76. package/dist/esm/OperationHistory.d.ts +36 -36
  77. package/dist/esm/OperationHistory.js +116 -116
  78. package/dist/esm/Presence.d.ts +15 -15
  79. package/dist/esm/Presence.js +52 -52
  80. package/dist/esm/Profiles.d.ts +10 -10
  81. package/dist/esm/Profiles.js +15 -15
  82. package/dist/esm/ReplicaKeepaliveTimers.d.ts +17 -17
  83. package/dist/esm/ReplicaKeepaliveTimers.js +26 -26
  84. package/dist/esm/Replicas.d.ts +24 -24
  85. package/dist/esm/Replicas.js +133 -133
  86. package/dist/esm/Server.d.ts +143 -143
  87. package/dist/esm/Server.js +389 -389
  88. package/dist/esm/ServerLibrary.d.ts +77 -77
  89. package/dist/esm/ServerLibrary.js +483 -483
  90. package/dist/esm/ServerStorage.d.ts +44 -0
  91. package/dist/esm/ServerStorage.js +58 -0
  92. package/dist/esm/ServerStorage.js.map +1 -0
  93. package/dist/esm/TokenProvider.d.ts +16 -16
  94. package/dist/esm/TokenProvider.js +19 -19
  95. package/dist/esm/TokenVerifier.d.ts +16 -16
  96. package/dist/esm/TokenVerifier.js +21 -21
  97. package/dist/esm/files/FileMetadata.d.ts +28 -28
  98. package/dist/esm/files/FileMetadata.js +42 -42
  99. package/dist/esm/files/FileStorage.d.ts +35 -35
  100. package/dist/esm/files/FileStorage.js +44 -44
  101. package/dist/esm/index.d.ts +9 -9
  102. package/dist/esm/index.js +4 -4
  103. package/dist/esm/migrations/v0.d.ts +1 -0
  104. package/dist/esm/migrations/v0.js +27 -0
  105. package/dist/esm/migrations/v0.js.map +1 -0
  106. package/dist/esm/migrations/v0.sql.d.ts +2 -2
  107. package/dist/esm/migrations/v0.sql.js +1 -1
  108. package/dist/esm/migrations/v1.d.ts +1 -0
  109. package/dist/esm/migrations/v1.js +29 -0
  110. package/dist/esm/migrations/v1.js.map +1 -0
  111. package/dist/esm/migrations/v1.sql.d.ts +2 -2
  112. package/dist/esm/migrations/v1.sql.js +1 -1
  113. package/dist/esm/migrations/v2.d.ts +1 -0
  114. package/dist/esm/migrations/v2.js +26 -0
  115. package/dist/esm/migrations/v2.js.map +1 -0
  116. package/dist/esm/migrations/v2.sql.d.ts +2 -2
  117. package/dist/esm/migrations/v2.sql.js +2 -2
  118. package/dist/esm/migrations/v3.d.ts +1 -0
  119. package/dist/esm/migrations/v3.js +12 -0
  120. package/dist/esm/migrations/v3.js.map +1 -0
  121. package/dist/esm/migrations/v3.sql.d.ts +2 -2
  122. package/dist/esm/migrations/v3.sql.js +2 -2
  123. package/dist/esm/migrations/v4.d.ts +1 -0
  124. package/dist/esm/migrations/v4.js +6 -0
  125. package/dist/esm/migrations/v4.js.map +1 -0
  126. package/dist/esm/migrations/v4.sql.d.ts +2 -2
  127. package/dist/esm/migrations/v4.sql.js +2 -2
  128. package/dist/esm/migrations/v5.d.ts +2 -0
  129. package/dist/esm/migrations/v5.js +31 -0
  130. package/dist/esm/migrations/v5.js.map +1 -0
  131. package/dist/esm/migrations.d.ts +6 -2
  132. package/dist/esm/migrations.js +35 -25
  133. package/dist/esm/migrations.js.map +1 -1
  134. package/dist/esm/migrations.test.d.ts +1 -0
  135. package/dist/esm/migrations.test.js +116 -0
  136. package/dist/esm/migrations.test.js.map +1 -0
  137. package/dist/esm/types.d.ts +22 -22
  138. package/dist/esm/types.js +1 -1
  139. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  140. package/dist/tsconfig.tsbuildinfo +1 -1
  141. package/package.json +6 -4
  142. package/src/__snapshots__/migrations.test.ts.snap +55 -0
  143. package/src/migrations/{v0.sql.ts → v0.ts} +1 -1
  144. package/src/migrations/{v1.sql.ts → v1.ts} +1 -1
  145. package/src/migrations/{v2.sql.ts → v2.ts} +1 -1
  146. package/src/migrations/{v3.sql.ts → v3.ts} +1 -1
  147. package/src/migrations/{v4.sql.ts → v4.ts} +1 -1
  148. package/src/migrations/v5.ts +47 -0
  149. package/src/migrations.test.ts +133 -0
  150. package/src/migrations.ts +28 -19
@@ -1,77 +1,77 @@
1
- import { ClientMessage, DocumentBaseline, Operation, ReplicaType, EventSubscriber } from '@verdant-web/common';
2
- import { Database } from 'better-sqlite3';
3
- import { MessageSender } from './MessageSender.js';
4
- import { UserProfileLoader } from './Profiles.js';
5
- import { TokenInfo } from './TokenVerifier.js';
6
- import { FileMetadata } from './files/FileMetadata.js';
7
- import { FileStorage } from './files/FileStorage.js';
8
- export declare type ServerLibraryEvents = {
9
- changes: (info: TokenInfo, operations: Operation[], baselines: DocumentBaseline[]) => void;
10
- };
11
- export declare class ServerLibrary extends EventSubscriber<ServerLibraryEvents> {
12
- private db;
13
- private sender;
14
- private profiles;
15
- private replicas;
16
- private operations;
17
- private baselines;
18
- private presences;
19
- private disableRebasing;
20
- private files;
21
- private fileStorage;
22
- private log;
23
- constructor({ db, sender, profiles, replicaTruancyMinutes, log, disableRebasing, fileMetadata, fileStorage, }: {
24
- db: Database;
25
- sender: MessageSender;
26
- profiles: UserProfileLoader<any>;
27
- replicaTruancyMinutes: number;
28
- log?: (...args: any[]) => void;
29
- disableRebasing?: boolean;
30
- fileMetadata: FileMetadata;
31
- fileStorage?: FileStorage;
32
- });
33
- /**
34
- * Validates a user's access to a replica. If the replica does not
35
- * exist, a user may create it. But if it does exist, its user (clientId)
36
- * must match the user making the request.
37
- */
38
- private validateReplicaAccess;
39
- private hasWriteAccess;
40
- receive: (message: ClientMessage, clientKey: string, info: TokenInfo) => Promise<void>;
41
- remove: (libraryId: string, replicaId: string) => void;
42
- private handleOperation;
43
- private removeExtraOperationData;
44
- private rebroadcastOperations;
45
- private handleSync;
46
- private createAckNonce;
47
- private handleAck;
48
- private updateHighwater;
49
- private pendingRebaseTimeout;
50
- private enqueueRebase;
51
- private rebase;
52
- private handleHeartbeat;
53
- private handlePresenceUpdate;
54
- private onPresenceLost;
55
- destroy: (libraryId: string) => Promise<void>;
56
- getPresence: (libraryId: string) => Record<string, import("@verdant-web/common").UserInfo<any, any>>;
57
- getInfo: (libraryId: string) => Promise<{
58
- replicas: {
59
- id: string;
60
- ackedLogicalTime: string | null;
61
- ackedServerOrder: number;
62
- type: ReplicaType;
63
- truant: boolean | 0 | null;
64
- profile: any;
65
- }[];
66
- latestServerOrder: number;
67
- operationsCount: number;
68
- baselinesCount: number;
69
- globalAck: string | undefined;
70
- }>;
71
- evictUser: (libraryId: string, userId: string) => void;
72
- getDocumentSnapshot: (libraryId: string, oid: string) => any;
73
- private getObjectSnapshot;
74
- private hydrateObject;
75
- private hydrateFile;
76
- close: () => void;
77
- }
1
+ import { ClientMessage, DocumentBaseline, Operation, ReplicaType, EventSubscriber } from '@verdant-web/common';
2
+ import { Database } from 'better-sqlite3';
3
+ import { MessageSender } from './MessageSender.js';
4
+ import { UserProfileLoader } from './Profiles.js';
5
+ import { TokenInfo } from './TokenVerifier.js';
6
+ import { FileMetadata } from './files/FileMetadata.js';
7
+ import { FileStorage } from './files/FileStorage.js';
8
+ export declare type ServerLibraryEvents = {
9
+ changes: (info: TokenInfo, operations: Operation[], baselines: DocumentBaseline[]) => void;
10
+ };
11
+ export declare class ServerLibrary extends EventSubscriber<ServerLibraryEvents> {
12
+ private db;
13
+ private sender;
14
+ private profiles;
15
+ private replicas;
16
+ private operations;
17
+ private baselines;
18
+ private presences;
19
+ private disableRebasing;
20
+ private files;
21
+ private fileStorage;
22
+ private log;
23
+ constructor({ db, sender, profiles, replicaTruancyMinutes, log, disableRebasing, fileMetadata, fileStorage, }: {
24
+ db: Database;
25
+ sender: MessageSender;
26
+ profiles: UserProfileLoader<any>;
27
+ replicaTruancyMinutes: number;
28
+ log?: (...args: any[]) => void;
29
+ disableRebasing?: boolean;
30
+ fileMetadata: FileMetadata;
31
+ fileStorage?: FileStorage;
32
+ });
33
+ /**
34
+ * Validates a user's access to a replica. If the replica does not
35
+ * exist, a user may create it. But if it does exist, its user (clientId)
36
+ * must match the user making the request.
37
+ */
38
+ private validateReplicaAccess;
39
+ private hasWriteAccess;
40
+ receive: (message: ClientMessage, clientKey: string, info: TokenInfo) => Promise<void>;
41
+ remove: (libraryId: string, replicaId: string) => void;
42
+ private handleOperation;
43
+ private removeExtraOperationData;
44
+ private rebroadcastOperations;
45
+ private handleSync;
46
+ private createAckNonce;
47
+ private handleAck;
48
+ private updateHighwater;
49
+ private pendingRebaseTimeout;
50
+ private enqueueRebase;
51
+ private rebase;
52
+ private handleHeartbeat;
53
+ private handlePresenceUpdate;
54
+ private onPresenceLost;
55
+ destroy: (libraryId: string) => Promise<void>;
56
+ getPresence: (libraryId: string) => Record<string, import("@verdant-web/common").UserInfo<any, any>>;
57
+ getInfo: (libraryId: string) => Promise<{
58
+ replicas: {
59
+ id: string;
60
+ ackedLogicalTime: string | null;
61
+ ackedServerOrder: number;
62
+ type: ReplicaType;
63
+ truant: boolean | 0 | null;
64
+ profile: any;
65
+ }[];
66
+ latestServerOrder: number;
67
+ operationsCount: number;
68
+ baselinesCount: number;
69
+ globalAck: string | undefined;
70
+ }>;
71
+ evictUser: (libraryId: string, userId: string) => void;
72
+ getDocumentSnapshot: (libraryId: string, oid: string) => any;
73
+ private getObjectSnapshot;
74
+ private hydrateObject;
75
+ private hydrateFile;
76
+ close: () => void;
77
+ }