@hocuspocus/extension-database 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (93) hide show
  1. package/README.md +1 -1
  2. package/dist/hocuspocus-database.cjs +12 -12
  3. package/dist/hocuspocus-database.cjs.map +1 -1
  4. package/dist/hocuspocus-database.esm.js +12 -12
  5. package/dist/hocuspocus-database.esm.js.map +1 -1
  6. package/dist/packages/common/src/CloseEvents.d.ts +23 -0
  7. package/dist/packages/common/src/awarenessStatesToArray.d.ts +3 -0
  8. package/dist/packages/common/src/index.d.ts +3 -0
  9. package/dist/packages/common/src/types.d.ts +10 -0
  10. package/dist/packages/extension-database/src/Database.d.ts +5 -11
  11. package/dist/packages/extension-logger/src/Logger.d.ts +5 -0
  12. package/dist/packages/extension-monitor/src/Collector.d.ts +2 -3
  13. package/dist/packages/extension-monitor/src/index.d.ts +2 -2
  14. package/dist/packages/extension-redis/src/Redis.d.ts +91 -9
  15. package/dist/packages/extension-redis/src/index.d.ts +0 -1
  16. package/dist/packages/extension-sqlite/src/SQLite.d.ts +4 -4
  17. package/dist/packages/extension-throttle/src/index.d.ts +6 -2
  18. package/dist/packages/extension-webhook/src/index.d.ts +1 -2
  19. package/dist/packages/provider/src/EventEmitter.d.ts +1 -1
  20. package/dist/packages/provider/src/HocuspocusCloudProvider.d.ts +4 -3
  21. package/dist/packages/provider/src/HocuspocusProvider.d.ts +30 -26
  22. package/dist/packages/provider/src/index.d.ts +0 -1
  23. package/dist/packages/provider/src/types.d.ts +43 -0
  24. package/dist/packages/server/src/Connection.d.ts +12 -5
  25. package/dist/packages/server/src/Debugger.d.ts +1 -2
  26. package/dist/packages/server/src/Document.d.ts +9 -5
  27. package/dist/packages/server/src/Hocuspocus.d.ts +37 -15
  28. package/dist/packages/server/src/MessageReceiver.d.ts +8 -5
  29. package/dist/packages/server/src/OutgoingMessage.d.ts +2 -0
  30. package/dist/packages/server/src/index.d.ts +6 -0
  31. package/dist/packages/server/src/types.d.ts +115 -38
  32. package/dist/tests/extension-database/fetch.d.ts +1 -0
  33. package/dist/tests/extension-logger/onListen.d.ts +1 -0
  34. package/dist/tests/extension-redis/closeConnections.d.ts +1 -0
  35. package/dist/tests/extension-redis/getConnectionCount.d.ts +1 -0
  36. package/dist/tests/extension-redis/getDocumentsCount.d.ts +1 -0
  37. package/dist/tests/extension-redis/onAwarenessChange.d.ts +1 -0
  38. package/dist/tests/extension-redis/onChange.d.ts +1 -0
  39. package/dist/tests/extension-redis/onStoreDocument.d.ts +1 -0
  40. package/dist/tests/extension-throttle/configuration.d.ts +1 -0
  41. package/dist/tests/provider/configuration.d.ts +1 -0
  42. package/dist/tests/provider/observe.d.ts +1 -0
  43. package/dist/tests/provider/observeDeep.d.ts +1 -0
  44. package/dist/tests/provider/onAuthenticated.d.ts +1 -0
  45. package/dist/tests/provider/onAuthenticationFailed.d.ts +1 -0
  46. package/dist/tests/provider/onAwarenessChange.d.ts +1 -0
  47. package/dist/tests/provider/onAwarenessUpdate.d.ts +1 -0
  48. package/dist/tests/provider/onClose.d.ts +1 -0
  49. package/dist/tests/provider/onConnect.d.ts +1 -0
  50. package/dist/tests/provider/onDisconnect.d.ts +1 -0
  51. package/dist/tests/provider/onMessage.d.ts +1 -0
  52. package/dist/tests/provider/onOpen.d.ts +1 -0
  53. package/dist/tests/provider/onSynced.d.ts +1 -0
  54. package/dist/tests/server/address.d.ts +1 -0
  55. package/dist/tests/server/afterStoreDocument.d.ts +1 -0
  56. package/dist/tests/server/closeConnections.d.ts +1 -0
  57. package/dist/tests/server/getConnectionsCount.d.ts +1 -0
  58. package/dist/tests/server/getDocumentName.d.ts +1 -0
  59. package/dist/tests/server/getDocumentsCount.d.ts +1 -0
  60. package/dist/tests/server/getMessageLogs.d.ts +1 -0
  61. package/dist/tests/server/listen.d.ts +1 -0
  62. package/dist/tests/server/onAuthenticate.d.ts +1 -0
  63. package/dist/tests/server/onAwarenessUpdate.d.ts +1 -0
  64. package/dist/tests/server/onChange.d.ts +1 -0
  65. package/dist/tests/server/onConfigure.d.ts +1 -0
  66. package/dist/tests/server/onConnect.d.ts +1 -0
  67. package/dist/tests/server/onDestroy.d.ts +1 -0
  68. package/dist/tests/server/onDisconnect.d.ts +1 -0
  69. package/dist/tests/server/onListen.d.ts +1 -0
  70. package/dist/tests/server/onLoadDocument.d.ts +1 -0
  71. package/dist/tests/server/onRequest.d.ts +1 -0
  72. package/dist/tests/server/onStoreDocument.d.ts +1 -0
  73. package/dist/tests/server/onUpgrade.d.ts +1 -0
  74. package/dist/tests/server/requiresAuthentication.d.ts +1 -0
  75. package/dist/tests/server/websocketError.d.ts +1 -0
  76. package/dist/tests/transformer/TiptapTransformer.d.ts +1 -0
  77. package/dist/tests/utils/createDirectory.d.ts +1 -0
  78. package/dist/tests/utils/flushRedis.d.ts +1 -0
  79. package/dist/tests/utils/index.d.ts +8 -0
  80. package/dist/tests/utils/newHocuspocus.d.ts +2 -0
  81. package/dist/tests/utils/newHocuspocusProvider.d.ts +3 -0
  82. package/dist/tests/utils/randomInteger.d.ts +1 -0
  83. package/dist/tests/utils/redisConnectionSettings.d.ts +4 -0
  84. package/dist/tests/utils/removeDirectory.d.ts +1 -0
  85. package/dist/tests/utils/retryableAssertion.d.ts +2 -0
  86. package/dist/tests/utils/sleep.d.ts +1 -0
  87. package/package.json +5 -5
  88. package/src/Database.ts +23 -18
  89. package/dist/packages/extension-redis/src/RedisCluster.d.ts +0 -4
  90. package/dist/packages/extension-rocksdb/src/index.d.ts +0 -22
  91. package/dist/packages/provider/src/utils/awarenessStatesToArray.d.ts +0 -4
  92. package/dist/packages/provider/src/utils/index.d.ts +0 -1
  93. package/dist/packages/server/src/CloseEvents.d.ts +0 -4
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare const createDirectory: (dir: string) => void;
@@ -0,0 +1 @@
1
+ export declare const flushRedis: () => Promise<string>;
@@ -0,0 +1,8 @@
1
+ export * from './createDirectory';
2
+ export * from './flushRedis';
3
+ export * from './newHocuspocus';
4
+ export * from './newHocuspocusProvider';
5
+ export * from './randomInteger';
6
+ export * from './redisConnectionSettings';
7
+ export * from './removeDirectory';
8
+ export * from './sleep';
@@ -0,0 +1,2 @@
1
+ import { Hocuspocus, Configuration } from '@hocuspocus/server';
2
+ export declare const newHocuspocus: (options?: Partial<Configuration> | undefined) => Hocuspocus;
@@ -0,0 +1,3 @@
1
+ import { HocuspocusProvider, HocuspocusProviderConfiguration } from '@hocuspocus/provider';
2
+ import { Hocuspocus } from '@hocuspocus/server';
3
+ export declare const newHocuspocusProvider: (server: Hocuspocus, options?: Partial<Omit<HocuspocusProviderConfiguration, 'url'>>) => HocuspocusProvider;
@@ -0,0 +1 @@
1
+ export declare const randomInteger: (min: number, max: number) => number;
@@ -0,0 +1,4 @@
1
+ export declare const redisConnectionSettings: {
2
+ host: string;
3
+ port: number;
4
+ };
@@ -0,0 +1 @@
1
+ export declare const removeDirectory: (dir: string) => void;
@@ -0,0 +1,2 @@
1
+ import { ExecutionContext } from 'ava';
2
+ export declare const retryableAssertion: (t: ExecutionContext, recoverableTry: (tt: ExecutionContext) => void) => Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const sleep: (time: number) => Promise<unknown>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hocuspocus/extension-database",
3
3
  "description": "a generic Hocuspocus persistence driver for the database",
4
- "version": "1.0.0-alpha.2",
4
+ "version": "1.0.0-alpha.20",
5
5
  "homepage": "https://hocuspocus.dev",
6
6
  "keywords": [
7
7
  "hocuspocus",
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "license": "MIT",
11
11
  "type": "module",
12
- "main": "dist/hocuspocus-database.esm.js",
12
+ "main": "dist/hocuspocus-database.cjs",
13
13
  "module": "dist/hocuspocus-database.esm.js",
14
14
  "types": "dist/packages/extension-database/src/index.d.ts",
15
15
  "exports": {
@@ -26,11 +26,11 @@
26
26
  "dist"
27
27
  ],
28
28
  "dependencies": {
29
- "@hocuspocus/server": "^1.0.0-alpha.88",
30
- "yjs": "^13.5.22"
29
+ "@hocuspocus/server": "^1.0.0-alpha.106",
30
+ "yjs": "^13.5.29"
31
31
  },
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
- "gitHead": "09919438a0a220ffb7479afc562872c8726cc4b4"
35
+ "gitHead": "6074a6cb832b40bc579f28db2823ba5723887312"
36
36
  }
package/src/Database.ts CHANGED
@@ -1,4 +1,10 @@
1
- import { Extension, onChangePayload, onLoadDocumentPayload } from '@hocuspocus/server'
1
+ import {
2
+ Extension,
3
+ onChangePayload,
4
+ onLoadDocumentPayload,
5
+ storePayload,
6
+ fetchPayload,
7
+ } from '@hocuspocus/server'
2
8
  import * as Y from 'yjs'
3
9
 
4
10
  export interface DatabaseConfiguration {
@@ -6,11 +12,11 @@ export interface DatabaseConfiguration {
6
12
  * Pass a Promise to retrieve updates from your database. The Promise should resolve to
7
13
  * an array of items with Y.js-compatible binary data.
8
14
  */
9
- fetchUpdates: ({ documentName }: { documentName: string}) => Promise<Uint8Array[]>,
15
+ fetch: (data: fetchPayload) => Promise<Uint8Array | null>,
10
16
  /**
11
17
  * Pass a function to store updates in your database.
12
18
  */
13
- storeUpdate: ({ update, documentName }: { update: Buffer, documentName: string}) => void,
19
+ store: (data: storePayload) => void,
14
20
  }
15
21
 
16
22
  export class Database implements Extension {
@@ -18,8 +24,8 @@ export class Database implements Extension {
18
24
  * Default configuration
19
25
  */
20
26
  configuration: DatabaseConfiguration = {
21
- fetchUpdates: async () => [],
22
- storeUpdate: async () => null,
27
+ fetch: async () => null,
28
+ store: async () => null,
23
29
  }
24
30
 
25
31
  /**
@@ -35,26 +41,25 @@ export class Database implements Extension {
35
41
  /**
36
42
  * Get stored data from the database.
37
43
  */
38
- async onLoadDocument({ document, documentName }: onLoadDocumentPayload): Promise<any> {
39
- const updates = await this.configuration.fetchUpdates({ documentName })
44
+ async onLoadDocument(data: onLoadDocumentPayload): Promise<any> {
45
+ const update = await this.configuration.fetch(data)
40
46
 
41
- if (updates && updates.length) {
42
- updates.forEach((update: any) => {
43
- Y.applyUpdate(document, update)
44
- })
47
+ if (update) {
48
+ Y.applyUpdate(data.document, update)
45
49
  }
46
50
 
47
- return document
51
+ return data.document
48
52
  }
49
53
 
50
54
  /**
51
55
  * Store new updates in the database.
52
56
  */
53
- async onChange({ document, documentName }: onChangePayload) {
54
- const update = Buffer.from(
55
- Y.encodeStateAsUpdate(document),
56
- )
57
-
58
- return this.configuration.storeUpdate({ update, documentName })
57
+ async onStoreDocument(data: onChangePayload) {
58
+ return this.configuration.store({
59
+ ...data,
60
+ state: Buffer.from(
61
+ Y.encodeStateAsUpdate(data.document),
62
+ ),
63
+ })
59
64
  }
60
65
  }
@@ -1,4 +0,0 @@
1
- import { Redis } from './Redis';
2
- export declare class RedisCluster extends Redis {
3
- cluster: boolean;
4
- }
@@ -1,22 +0,0 @@
1
- import { Extension, onLoadDocumentPayload } from '@hocuspocus/server';
2
- import { LeveldbPersistence } from 'y-leveldb';
3
- export interface Configuration {
4
- options: object | undefined;
5
- path: string;
6
- }
7
- export declare class RocksDB implements Extension {
8
- configuration: Configuration;
9
- provider: LeveldbPersistence;
10
- /**
11
- * Constructor
12
- */
13
- constructor(configuration?: Partial<Configuration>);
14
- /**
15
- * onLoadDocument hook
16
- */
17
- onLoadDocument(data: onLoadDocumentPayload): Promise<any>;
18
- /**
19
- * store updates in y-leveldb persistence
20
- */
21
- store(documentName: string, update: Uint8Array): Promise<any>;
22
- }
@@ -1,4 +0,0 @@
1
- declare const _default: (states: Map<number, Record<string, any>>) => {
2
- clientId: number;
3
- }[];
4
- export default _default;
@@ -1 +0,0 @@
1
- export { default as awarenessStatesToArray } from './awarenessStatesToArray';
@@ -1,4 +0,0 @@
1
- import { CloseEvent } from './types';
2
- export declare const Forbidden: CloseEvent;
3
- export declare const ResetConnection: CloseEvent;
4
- export declare const CloseEvents: CloseEvent[];