@hocuspocus/extension-s3 3.2.4 → 3.2.6

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.
@@ -44,7 +44,8 @@ class S3 extends extensionDatabase.Database {
44
44
  return null;
45
45
  }
46
46
  catch (error) {
47
- if (error.name === 'NoSuchKey' || ((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 404) {
47
+ if (error.name === "NoSuchKey" ||
48
+ ((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 404) {
48
49
  // Document doesn't exist yet, return null
49
50
  return null;
50
51
  }
@@ -106,7 +107,7 @@ class S3 extends extensionDatabase.Database {
106
107
  // 404 is expected for the test key, any other error indicates connection issues
107
108
  if (((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) !== 404) {
108
109
  // Don't show credential errors as connection failures in development
109
- if ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Could not load credentials')) {
110
+ if ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes("Could not load credentials")) {
110
111
  console.warn(` ${kleur.yellow("S3 warning:")} ${error.message}`);
111
112
  console.warn(` ${kleur.yellow("Note:")} Ensure AWS credentials are properly configured for production use`);
112
113
  }
@@ -117,7 +118,8 @@ class S3 extends extensionDatabase.Database {
117
118
  }
118
119
  }
119
120
  async onListen() {
120
- const endpoint = this.configuration.endpoint || `https://s3.${this.configuration.region}.amazonaws.com`;
121
+ const endpoint = this.configuration.endpoint ||
122
+ `https://s3.${this.configuration.region}.amazonaws.com`;
121
123
  console.log(` ${kleur.green("S3 extension configured:")} bucket=${this.configuration.bucket}, endpoint=${endpoint}`);
122
124
  if (this.configuration.prefix) {
123
125
  console.log(` ${kleur.blue("S3 key prefix:")} ${this.configuration.prefix}`);
@@ -1 +1 @@
1
- {"version":3,"file":"hocuspocus-s3.cjs","sources":["../src/S3.ts"],"sourcesContent":[null],"names":["Database","GetObjectCommand","PutObjectCommand","S3Client","HeadObjectCommand"],"mappings":";;;;;;AAuCM,MAAO,EAAG,SAAQA,0BAAQ,CAAA;AAkE/B,IAAA,WAAA,CAAY,aAAuC,EAAA;QAClD,KAAK,CAAC,EAAE,CAAC;AAhEV,QAAA,IAAA,CAAA,aAAa,GAAoB;AAChC,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,uBAAuB;AAC/B,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,KAAI;;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AAE3C,gBAAA,IAAI;AACH,oBAAA,MAAM,OAAO,GAAG,IAAIC,yBAAgB,CAAC;AACpC,wBAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AACjC,wBAAA,GAAG,EAAE,GAAG;AACR,qBAAA,CAAC;oBAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AAEnD,oBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;;wBAElB,MAAM,MAAM,GAAiB,EAAE;wBAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE;wBAE/D,OAAO,IAAI,EAAE;4BACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;AAC3C,4BAAA,IAAI,IAAI;gCAAE;AACV,4BAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;;wBAInB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACxE,wBAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;wBAC1C,IAAI,MAAM,GAAG,CAAC;AAEd,wBAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC3B,4BAAA,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AACzB,4BAAA,MAAM,IAAI,KAAK,CAAC,MAAM;;AAGvB,wBAAA,OAAO,MAAM;;AAGd,oBAAA,OAAO,IAAI;;gBACV,OAAO,KAAU,EAAE;AACpB,oBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,cAAc,MAAK,GAAG,EAAE;;AAE1E,wBAAA,OAAO,IAAI;;AAEZ,oBAAA,MAAM,KAAK;;aAEZ;YACD,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAI;gBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AAE3C,gBAAA,MAAM,OAAO,GAAG,IAAIC,yBAAgB,CAAC;AACpC,oBAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AACjC,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,WAAW,EAAE,0BAA0B;AACvC,iBAAA,CAAC;gBAEF,MAAM,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,OAAO,CAAC;aAClC;SACD;QAKA,IAAI,CAAC,aAAa,GAAG;YACpB,GAAG,IAAI,CAAC,aAAa;AACrB,YAAA,GAAG,aAAa;SAChB;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;;;AAIvC,IAAA,YAAY,CAAC,YAAoB,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,EAAE;AAC9C,QAAA,OAAO,CAAG,EAAA,MAAM,CAAG,EAAA,YAAY,MAAM;;AAGtC,IAAA,MAAM,WAAW,GAAA;;;AAEhB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;;aACrC;AACN,YAAA,MAAM,YAAY,GAAQ;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;aACjC;AAED,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;gBACnC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;;AAG1D,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAChC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;gBACnD,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;;YAGhE,IAAI,CAAC,QAAQ,GAAG,IAAIC,iBAAQ,CAAC,YAAY,CAAC;;;AAI3C,QAAA,IAAI;AACH,YAAA,MAAM,OAAO,GAAG,IAAIC,0BAAiB,CAAC;AACrC,gBAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;gBACjC,GAAG,EAAE,iBAAiB;AACtB,aAAA,CAAC;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;;QAChC,OAAO,KAAU,EAAE;;YAEpB,IAAI,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,0CAAE,cAAc,MAAK,GAAG,EAAE;;gBAE5C,IAAI,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,4BAA4B,CAAC,EAAE;AAC1D,oBAAA,OAAO,CAAC,IAAI,CAAC,CAAK,EAAA,EAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;AACjE,oBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,EAAA,EAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAoE,kEAAA,CAAA,CAAC;;qBACtG;AACN,oBAAA,OAAO,CAAC,KAAK,CAAC,CAAK,EAAA,EAAA,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;;;;;AAM7E,IAAA,MAAM,QAAQ,GAAA;AACb,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAA,WAAA,EAAc,IAAI,CAAC,aAAa,CAAC,MAAM,gBAAgB;QACvG,OAAO,CAAC,GAAG,CACV,CAAA,EAAA,EAAK,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,WAAW,IAAI,CAAC,aAAa,CAAC,MAAM,cAAc,QAAQ,CAAA,CAAE,CACxG;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC9B,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA,CAAE,CAAC;;;AAG/E;;;;"}
1
+ {"version":3,"file":"hocuspocus-s3.cjs","sources":["../src/S3.ts"],"sourcesContent":[null],"names":["Database","GetObjectCommand","PutObjectCommand","S3Client","HeadObjectCommand"],"mappings":"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"}
@@ -42,7 +42,8 @@ class S3 extends Database {
42
42
  return null;
43
43
  }
44
44
  catch (error) {
45
- if (error.name === 'NoSuchKey' || ((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 404) {
45
+ if (error.name === "NoSuchKey" ||
46
+ ((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 404) {
46
47
  // Document doesn't exist yet, return null
47
48
  return null;
48
49
  }
@@ -104,7 +105,7 @@ class S3 extends Database {
104
105
  // 404 is expected for the test key, any other error indicates connection issues
105
106
  if (((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) !== 404) {
106
107
  // Don't show credential errors as connection failures in development
107
- if ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Could not load credentials')) {
108
+ if ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes("Could not load credentials")) {
108
109
  console.warn(` ${kleur.yellow("S3 warning:")} ${error.message}`);
109
110
  console.warn(` ${kleur.yellow("Note:")} Ensure AWS credentials are properly configured for production use`);
110
111
  }
@@ -115,7 +116,8 @@ class S3 extends Database {
115
116
  }
116
117
  }
117
118
  async onListen() {
118
- const endpoint = this.configuration.endpoint || `https://s3.${this.configuration.region}.amazonaws.com`;
119
+ const endpoint = this.configuration.endpoint ||
120
+ `https://s3.${this.configuration.region}.amazonaws.com`;
119
121
  console.log(` ${kleur.green("S3 extension configured:")} bucket=${this.configuration.bucket}, endpoint=${endpoint}`);
120
122
  if (this.configuration.prefix) {
121
123
  console.log(` ${kleur.blue("S3 key prefix:")} ${this.configuration.prefix}`);
@@ -1 +1 @@
1
- {"version":3,"file":"hocuspocus-s3.esm.js","sources":["../src/S3.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hocuspocus-s3.esm.js","sources":["../src/S3.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Extension, Hocuspocus, afterLoadDocumentPayload, afterStoreDocumentPayload, beforeBroadcastStatelessPayload, onAwarenessUpdatePayload, onChangePayload, onConfigurePayload, onDisconnectPayload, onStoreDocumentPayload } from "@hocuspocus/server";
2
- import { Redlock, type ExecutionResult, type Lock } from '@sesamecare-oss/redlock';
1
+ import type { Extension, Hocuspocus, afterLoadDocumentPayload, afterStoreDocumentPayload, afterUnloadDocumentPayload, beforeBroadcastStatelessPayload, beforeUnloadDocumentPayload, onAwarenessUpdatePayload, onChangePayload, onConfigurePayload, onStoreDocumentPayload } from "@hocuspocus/server";
2
+ import { type ExecutionResult, type Lock, Redlock } from "@sesamecare-oss/redlock";
3
3
  import type { Cluster, ClusterNode, ClusterOptions, RedisOptions } from "ioredis";
4
4
  import RedisClient from "ioredis";
5
5
  export type RedisInstance = RedisClient | Cluster;
@@ -67,11 +67,6 @@ export declare class Redis implements Extension {
67
67
  release?: Promise<ExecutionResult>;
68
68
  }>;
69
69
  messagePrefix: Buffer;
70
- /**
71
- * When we have a high frequency of updates to a document we don't need tons of setTimeouts
72
- * piling up, so we'll track them to keep it to the most recent per document.
73
- */
74
- private pendingDisconnects;
75
70
  private pendingAfterStoreDocumentResolves;
76
71
  constructor(configuration: Partial<Configuration>);
77
72
  onConfigure({ instance }: onConfigurePayload): Promise<void>;
@@ -101,7 +96,7 @@ export declare class Redis implements Extension {
101
96
  /**
102
97
  * Release the Redis lock, so other instances can store documents.
103
98
  */
104
- afterStoreDocument({ documentName, socketId }: afterStoreDocumentPayload): Promise<void>;
99
+ afterStoreDocument({ documentName, socketId, }: afterStoreDocumentPayload): Promise<void>;
105
100
  /**
106
101
  * Handle awareness update messages received directly by this Hocuspocus instance.
107
102
  */
@@ -117,10 +112,10 @@ export declare class Redis implements Extension {
117
112
  */
118
113
  onChange(data: onChangePayload): Promise<any>;
119
114
  /**
120
- * Make sure to *not* listen for further changes, when there’s
121
- * no one connected anymore.
115
+ * Delay unloading to allow syncs to finish
122
116
  */
123
- onDisconnect: ({ documentName }: onDisconnectPayload) => Promise<void>;
117
+ beforeUnloadDocument(data: beforeUnloadDocumentPayload): Promise<void>;
118
+ afterUnloadDocument(data: afterUnloadDocumentPayload): Promise<void>;
124
119
  beforeBroadcastStateless(data: beforeBroadcastStatelessPayload): Promise<number>;
125
120
  /**
126
121
  * Kill the Redlock connection immediately.
@@ -1,6 +1,6 @@
1
- import type { Extension, onChangePayload, onConnectPayload, onLoadDocumentPayload, onDisconnectPayload } from "@hocuspocus/server";
2
- import type { Doc } from "yjs";
1
+ import type { Extension, onChangePayload, onConnectPayload, onDisconnectPayload, onLoadDocumentPayload } from "@hocuspocus/server";
3
2
  import type { Transformer } from "@hocuspocus/transformer";
3
+ import type { Doc } from "yjs";
4
4
  export declare enum Events {
5
5
  onChange = "change",
6
6
  onConnect = "connect",
@@ -2,6 +2,7 @@ import type WebSocket from "ws";
2
2
  import { Awareness } from "y-protocols/awareness";
3
3
  import { Doc } from "yjs";
4
4
  import type Connection from "./Connection.ts";
5
+ import { Mutex } from "async-mutex";
5
6
  export declare class Document extends Doc {
6
7
  awareness: Awareness;
7
8
  callbacks: {
@@ -16,6 +17,7 @@ export declare class Document extends Doc {
16
17
  name: string;
17
18
  isLoading: boolean;
18
19
  isDestroyed: boolean;
20
+ saveMutex: Mutex;
19
21
  /**
20
22
  * Constructor.
21
23
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hocuspocus/extension-s3",
3
3
  "description": "a S3-compatible persistence driver for Hocuspocus",
4
- "version": "3.2.4",
4
+ "version": "3.2.6",
5
5
  "homepage": "https://hocuspocus.dev",
6
6
  "keywords": [
7
7
  "hocuspocus",
@@ -30,7 +30,7 @@
30
30
  ],
31
31
  "dependencies": {
32
32
  "@aws-sdk/client-s3": "^3.0.0",
33
- "@hocuspocus/extension-database": "^3.2.4",
33
+ "@hocuspocus/extension-database": "^3.2.6",
34
34
  "kleur": "^4.1.4"
35
35
  },
36
36
  "publishConfig": {
package/src/S3.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  import type { DatabaseConfiguration } from "@hocuspocus/extension-database";
2
2
  import { Database } from "@hocuspocus/extension-database";
3
- import { S3Client, GetObjectCommand, PutObjectCommand, HeadObjectCommand } from "@aws-sdk/client-s3";
3
+ import {
4
+ S3Client,
5
+ GetObjectCommand,
6
+ PutObjectCommand,
7
+ HeadObjectCommand,
8
+ } from "@aws-sdk/client-s3";
4
9
  import kleur from "kleur";
5
10
 
6
11
  export interface S3Configuration extends DatabaseConfiguration {
@@ -47,7 +52,7 @@ export class S3 extends Database {
47
52
  forcePathStyle: false,
48
53
  fetch: async ({ documentName }) => {
49
54
  const key = this.getObjectKey(documentName);
50
-
55
+
51
56
  try {
52
57
  const command = new GetObjectCommand({
53
58
  Bucket: this.configuration.bucket,
@@ -55,34 +60,40 @@ export class S3 extends Database {
55
60
  });
56
61
 
57
62
  const response = await this.s3Client!.send(command);
58
-
63
+
59
64
  if (response.Body) {
60
65
  // Convert stream to Uint8Array
61
66
  const chunks: Uint8Array[] = [];
62
67
  const reader = response.Body.transformToWebStream().getReader();
63
-
68
+
64
69
  while (true) {
65
70
  const { done, value } = await reader.read();
66
71
  if (done) break;
67
72
  chunks.push(value);
68
73
  }
69
-
74
+
70
75
  // Combine all chunks into a single Uint8Array
71
- const totalLength = chunks.reduce((acc, chunk) => acc + chunk.length, 0);
76
+ const totalLength = chunks.reduce(
77
+ (acc, chunk) => acc + chunk.length,
78
+ 0,
79
+ );
72
80
  const result = new Uint8Array(totalLength);
73
81
  let offset = 0;
74
-
82
+
75
83
  for (const chunk of chunks) {
76
84
  result.set(chunk, offset);
77
85
  offset += chunk.length;
78
86
  }
79
-
87
+
80
88
  return result;
81
89
  }
82
-
90
+
83
91
  return null;
84
92
  } catch (error: any) {
85
- if (error.name === 'NoSuchKey' || error.$metadata?.httpStatusCode === 404) {
93
+ if (
94
+ error.name === "NoSuchKey" ||
95
+ error.$metadata?.httpStatusCode === 404
96
+ ) {
86
97
  // Document doesn't exist yet, return null
87
98
  return null;
88
99
  }
@@ -91,7 +102,7 @@ export class S3 extends Database {
91
102
  },
92
103
  store: async ({ documentName, state }) => {
93
104
  const key = this.getObjectKey(documentName);
94
-
105
+
95
106
  const command = new PutObjectCommand({
96
107
  Bucket: this.configuration.bucket,
97
108
  Key: key,
@@ -149,30 +160,38 @@ export class S3 extends Database {
149
160
  Bucket: this.configuration.bucket,
150
161
  Key: "test-connection", // This will likely return 404, but that's fine
151
162
  });
152
-
163
+
153
164
  await this.s3Client.send(command);
154
165
  } catch (error: any) {
155
166
  // 404 is expected for the test key, any other error indicates connection issues
156
167
  if (error.$metadata?.httpStatusCode !== 404) {
157
168
  // Don't show credential errors as connection failures in development
158
- if (error.message?.includes('Could not load credentials')) {
169
+ if (error.message?.includes("Could not load credentials")) {
159
170
  console.warn(` ${kleur.yellow("S3 warning:")} ${error.message}`);
160
- console.warn(` ${kleur.yellow("Note:")} Ensure AWS credentials are properly configured for production use`);
171
+ console.warn(
172
+ ` ${kleur.yellow("Note:")} Ensure AWS credentials are properly configured for production use`,
173
+ );
161
174
  } else {
162
- console.error(` ${kleur.red("S3 connection failed:")} ${error.message}`);
175
+ console.error(
176
+ ` ${kleur.red("S3 connection failed:")} ${error.message}`,
177
+ );
163
178
  }
164
179
  }
165
180
  }
166
181
  }
167
182
 
168
183
  async onListen() {
169
- const endpoint = this.configuration.endpoint || `https://s3.${this.configuration.region}.amazonaws.com`;
184
+ const endpoint =
185
+ this.configuration.endpoint ||
186
+ `https://s3.${this.configuration.region}.amazonaws.com`;
170
187
  console.log(
171
188
  ` ${kleur.green("S3 extension configured:")} bucket=${this.configuration.bucket}, endpoint=${endpoint}`,
172
189
  );
173
-
190
+
174
191
  if (this.configuration.prefix) {
175
- console.log(` ${kleur.blue("S3 key prefix:")} ${this.configuration.prefix}`);
192
+ console.log(
193
+ ` ${kleur.blue("S3 key prefix:")} ${this.configuration.prefix}`,
194
+ );
176
195
  }
177
196
  }
178
- }
197
+ }
package/src/index.ts CHANGED
@@ -1 +1 @@
1
- export * from "./S3.ts";
1
+ export * from "./S3.ts";