document-drive 1.26.0 → 1.27.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 (46) hide show
  1. package/dist/prisma/schema.prisma +1 -0
  2. package/dist/src/drive-document-model/gen/drive/creators.d.ts.map +1 -1
  3. package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
  4. package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
  5. package/dist/src/queue/base.js +1 -1
  6. package/dist/src/queue/types.d.ts +2 -2
  7. package/dist/src/queue/types.d.ts.map +1 -1
  8. package/dist/src/read-mode/service.js +1 -1
  9. package/dist/src/server/base-server.d.ts +8 -21
  10. package/dist/src/server/base-server.d.ts.map +1 -1
  11. package/dist/src/server/base-server.js +35 -151
  12. package/dist/src/server/builder.d.ts +9 -9
  13. package/dist/src/server/builder.d.ts.map +1 -1
  14. package/dist/src/server/builder.js +3 -1
  15. package/dist/src/server/listener/listener-manager.js +1 -1
  16. package/dist/src/server/listener/transmitter/factory.d.ts.map +1 -1
  17. package/dist/src/server/listener/transmitter/factory.js +1 -2
  18. package/dist/src/server/listener/transmitter/internal.d.ts +3 -8
  19. package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
  20. package/dist/src/server/listener/transmitter/internal.js +2 -10
  21. package/dist/src/server/listener/util.d.ts.map +1 -1
  22. package/dist/src/server/types.d.ts +2 -10
  23. package/dist/src/server/types.d.ts.map +1 -1
  24. package/dist/src/storage/browser.d.ts +12 -4
  25. package/dist/src/storage/browser.d.ts.map +1 -1
  26. package/dist/src/storage/browser.js +65 -21
  27. package/dist/src/storage/filesystem.d.ts +7 -4
  28. package/dist/src/storage/filesystem.d.ts.map +1 -1
  29. package/dist/src/storage/filesystem.js +94 -74
  30. package/dist/src/storage/memory.d.ts +3 -2
  31. package/dist/src/storage/memory.d.ts.map +1 -1
  32. package/dist/src/storage/memory.js +9 -1
  33. package/dist/src/storage/prisma/index.d.ts.map +1 -1
  34. package/dist/src/storage/prisma/index.js +2 -0
  35. package/dist/src/storage/sequelize.d.ts +4 -3
  36. package/dist/src/storage/sequelize.d.ts.map +1 -1
  37. package/dist/src/storage/sequelize.js +4 -2
  38. package/dist/src/storage/types.d.ts +3 -0
  39. package/dist/src/storage/types.d.ts.map +1 -1
  40. package/dist/src/utils/logger.d.ts.map +1 -1
  41. package/dist/test/document-helpers/utils.d.ts.map +1 -1
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +6 -5
  44. package/dist/src/storage/base.d.ts +0 -36
  45. package/dist/src/storage/base.d.ts.map +0 -1
  46. package/dist/src/storage/base.js +0 -4
@@ -7,8 +7,7 @@ import { type Action, type ActionContext, type BaseState, type CreateChildDocume
7
7
  import { type Unsubscribe } from "nanoevents";
8
8
  import { type BaseDocumentDriveServer } from "./base-server.js";
9
9
  import { type OperationError, type SynchronizationUnitNotFoundError } from "./error.js";
10
- import { type IInternalTransmitter, type IReceiver } from "./listener/transmitter/internal.js";
11
- import { type ITransmitter, type PullResponderTrigger, type StrandUpdateSource } from "./listener/transmitter/types.js";
10
+ import { type ITransmitter, type StrandUpdateSource } from "./listener/transmitter/types.js";
12
11
  export type Constructor<T = object> = new (...args: any[]) => T;
13
12
  export type Mixin<T extends Constructor, I> = T & Constructor<InstanceType<T> & I>;
14
13
  export type DocumentDriveServerMixin<I> = Mixin<typeof BaseDocumentDriveServer, I>;
@@ -215,6 +214,7 @@ export declare const DefaultListenerManagerOptions: {
215
214
  };
216
215
  export interface IBaseDocumentDriveServer {
217
216
  initialize(): Promise<Error[] | null>;
217
+ get listeners(): IListenerManager;
218
218
  setDocumentModelModules(models: DocumentModelModule[]): void;
219
219
  getDrives(): Promise<string[]>;
220
220
  addDrive(input: DriveInput, preferredEditor?: string): Promise<DocumentDriveDocument>;
@@ -241,12 +241,6 @@ export interface IBaseDocumentDriveServer {
241
241
  addDriveAction(driveId: string, action: DocumentDriveAction, options?: AddOperationOptions): Promise<DriveOperationResult>;
242
242
  addDriveActions(driveId: string, actions: DocumentDriveAction[], options?: AddOperationOptions): Promise<DriveOperationResult>;
243
243
  getSyncStatus(syncUnitId: string): SyncStatus | SynchronizationUnitNotFoundError;
244
- addInternalListener(driveId: string, receiver: IReceiver, options: {
245
- listenerId: string;
246
- label: string;
247
- block: boolean;
248
- filter: ListenerFilter;
249
- }): Promise<IInternalTransmitter>;
250
244
  /** Synchronization methods */
251
245
  getSynchronizationUnits(driveId: string, documentId?: string[], scope?: string[], branch?: string[], documentType?: string[]): Promise<SynchronizationUnit[]>;
252
246
  getSynchronizationUnit(driveId: string, syncId: string, loadedDrive?: DocumentDriveDocument): Promise<SynchronizationUnit | undefined>;
@@ -254,9 +248,7 @@ export interface IBaseDocumentDriveServer {
254
248
  getOperationData(driveId: string, syncId: string, filter: GetStrandsOptions): Promise<OperationUpdate[]>;
255
249
  /** Internal methods **/
256
250
  getDocumentModelModules(): DocumentModelModule[];
257
- getTransmitter(driveId: string, listenerId: string): Promise<ITransmitter | undefined>;
258
251
  clearStorage(): Promise<void>;
259
- registerPullResponderTrigger(id: string, url: string, options: Pick<RemoteDriveOptions, "pullFilter" | "pullInterval">): Promise<PullResponderTrigger>;
260
252
  on<K extends keyof DriveEvents>(event: K, cb: DriveEvents[K]): Unsubscribe;
261
253
  }
262
254
  export type IDocumentDriveServer = IBaseDocumentDriveServer & IDefaultDrivesManager & IReadModeDriveServer;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,22 @@
1
1
  import { type DocumentDriveAction, type DocumentDriveDocument } from "#drive-document-model/gen/types";
2
2
  import { type SynchronizationUnitQuery } from "#server/types";
3
3
  import type { DocumentHeader, Operation, PHDocument } from "document-model";
4
- import { type IDriveStorage } from "./types.js";
5
- export declare class BrowserStorage implements IDriveStorage {
4
+ import { IDocumentStorage, type IDriveStorage } from "./types.js";
5
+ export declare class BrowserStorage implements IDriveStorage, IDocumentStorage {
6
6
  private db;
7
7
  static DBName: string;
8
8
  static SEP: string;
9
9
  static DRIVES_KEY: string;
10
+ static DOCUMENT_KEY: string;
11
+ static MANIFEST_KEY: string;
10
12
  constructor(namespace?: string);
11
- buildKey(...args: string[]): string;
12
- checkDocumentExists(drive: string, id: string): Promise<boolean>;
13
+ buildDriveKey(driveId: string): string;
14
+ buildDocumentKey(documentId: string): string;
15
+ buildManifestKey(driveId: string): string;
16
+ exists(documentId: string): Promise<boolean>;
17
+ checkDocumentExists(drive: string, documentId: string): Promise<boolean>;
18
+ private getDriveManifest;
19
+ private updateDriveManifest;
13
20
  getDocuments(drive: string): Promise<string[]>;
14
21
  getDocument<TDocument extends PHDocument>(driveId: string, id: string): Promise<TDocument>;
15
22
  createDocument(drive: string, id: string, document: PHDocument): Promise<void>;
@@ -31,6 +38,7 @@ export declare class BrowserStorage implements IDriveStorage {
31
38
  revision: number;
32
39
  }[]>;
33
40
  migrateOperationSignatures(): Promise<void>;
41
+ private migrateDrive;
34
42
  private migrateDocument;
35
43
  }
36
44
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/storage/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAET,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,EAAE,CAAuB;IAEjC,MAAM,CAAC,MAAM,SAAqB;IAClC,MAAM,CAAC,GAAG,SAAO;IACjB,MAAM,CAAC,UAAU,SAAY;gBAEjB,SAAS,CAAC,EAAE,MAAM;IAU9B,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE;IAIpB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhE,YAAY,CAAC,KAAK,EAAE,MAAM;IAS1B,WAAW,CAAC,SAAS,SAAS,UAAU,EAC5C,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,CAAC;IAUf,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAI9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAIxC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAgBV,SAAS;IAUT,QAAQ,CAAC,EAAE,EAAE,MAAM;IAWnB,cAAc,CAAC,IAAI,EAAE,MAAM;IAa3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IAKpD,WAAW,CAAC,EAAE,EAAE,MAAM;IAQtB,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAaV,+BAA+B,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CACR;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CACJ;IA6CK,0BAA0B;YAYlB,eAAe;CAU9B"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/storage/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAET,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAOlE,qBAAa,cAAe,YAAW,aAAa,EAAE,gBAAgB;IACpE,OAAO,CAAC,EAAE,CAAuB;IAEjC,MAAM,CAAC,MAAM,SAAqB;IAClC,MAAM,CAAC,GAAG,SAAO;IACjB,MAAM,CAAC,UAAU,SAAY;IAC7B,MAAM,CAAC,YAAY,SAAc;IACjC,MAAM,CAAC,YAAY,SAAc;gBAErB,SAAS,CAAC,EAAE,MAAM;IAU9B,aAAa,CAAC,OAAO,EAAE,MAAM;IAI7B,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAI1B,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAI1D,gBAAgB;YAQhB,mBAAmB;IAQ3B,YAAY,CAAC,KAAK,EAAE,MAAM;IAK1B,WAAW,CAAC,SAAS,SAAS,UAAU,EAC5C,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,CAAC;IAUf,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAY9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAYxC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAgBV,SAAS;IAUT,QAAQ,CAAC,EAAE,EAAE,MAAM;IAWnB,cAAc,CAAC,IAAI,EAAE,MAAM;IAa3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IAQpD,WAAW,CAAC,EAAE,EAAE,MAAM;IAatB,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAYV,+BAA+B,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CACR;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CACJ;IA6CK,0BAA0B;YAYlB,YAAY;YAWZ,eAAe;CAU9B"}
@@ -7,6 +7,8 @@ export class BrowserStorage {
7
7
  static DBName = "DOCUMENT_DRIVES";
8
8
  static SEP = ":";
9
9
  static DRIVES_KEY = "DRIVES";
10
+ static DOCUMENT_KEY = "DOCUMENT";
11
+ static MANIFEST_KEY = "MANIFEST";
10
12
  constructor(namespace) {
11
13
  this.db = LocalForage.ready().then(() => LocalForage.createInstance({
12
14
  name: namespace
@@ -14,33 +16,62 @@ export class BrowserStorage {
14
16
  : BrowserStorage.DBName,
15
17
  }));
16
18
  }
17
- buildKey(...args) {
18
- return args.join(BrowserStorage.SEP);
19
+ buildDriveKey(driveId) {
20
+ return `${BrowserStorage.DRIVES_KEY}${BrowserStorage.SEP}${driveId}`;
19
21
  }
20
- async checkDocumentExists(drive, id) {
21
- const document = await (await this.db).getItem(this.buildKey(drive, id));
22
+ buildDocumentKey(documentId) {
23
+ return `${BrowserStorage.DOCUMENT_KEY}${BrowserStorage.SEP}${documentId}`;
24
+ }
25
+ buildManifestKey(driveId) {
26
+ return `${BrowserStorage.MANIFEST_KEY}${BrowserStorage.SEP}${driveId}`;
27
+ }
28
+ async exists(documentId) {
29
+ const db = await this.db;
30
+ const document = await db.getItem(this.buildDocumentKey(documentId));
22
31
  return !!document;
23
32
  }
24
- async getDocuments(drive) {
33
+ checkDocumentExists(drive, documentId) {
34
+ return this.exists(documentId);
35
+ }
36
+ async getDriveManifest(driveId) {
25
37
  const db = await this.db;
26
- const keys = await db.keys();
27
- const driveKey = `${drive}${BrowserStorage.SEP}`;
28
- return keys
29
- .filter((key) => key.startsWith(driveKey))
30
- .map((key) => key.slice(driveKey.length));
38
+ const manifest = await db.getItem(this.buildManifestKey(driveId));
39
+ return manifest || { documentIds: [] };
40
+ }
41
+ async updateDriveManifest(driveId, manifest) {
42
+ const db = await this.db;
43
+ await db.setItem(this.buildManifestKey(driveId), manifest);
44
+ }
45
+ async getDocuments(drive) {
46
+ const manifest = await this.getDriveManifest(drive);
47
+ return manifest.documentIds;
31
48
  }
32
49
  async getDocument(driveId, id) {
33
- const document = await (await this.db).getItem(this.buildKey(driveId, id));
50
+ const document = await (await this.db).getItem(this.buildDocumentKey(id));
34
51
  if (!document) {
35
52
  throw new Error(`Document with id ${id} not found`);
36
53
  }
37
54
  return document;
38
55
  }
39
56
  async createDocument(drive, id, document) {
40
- await (await this.db).setItem(this.buildKey(drive, id), document);
57
+ const db = await this.db;
58
+ await db.setItem(this.buildDocumentKey(id), document);
59
+ // Update the drive manifest to include this document
60
+ const manifest = await this.getDriveManifest(drive);
61
+ if (!manifest.documentIds.includes(id)) {
62
+ manifest.documentIds.push(id);
63
+ await this.updateDriveManifest(drive, manifest);
64
+ }
41
65
  }
42
66
  async deleteDocument(drive, id) {
43
- await (await this.db).removeItem(this.buildKey(drive, id));
67
+ await (await this.db).removeItem(this.buildDocumentKey(id));
68
+ // Update the drive manifest to remove this document
69
+ const manifest = await this.getDriveManifest(drive);
70
+ const docIndex = manifest.documentIds.indexOf(id);
71
+ if (docIndex !== -1) {
72
+ manifest.documentIds.splice(docIndex, 1);
73
+ await this.updateDriveManifest(drive, manifest);
74
+ }
44
75
  }
45
76
  async clearStorage() {
46
77
  return (await this.db).clear();
@@ -52,7 +83,7 @@ export class BrowserStorage {
52
83
  }
53
84
  const mergedOperations = mergeOperations(document.operations, operations);
54
85
  const db = await this.db;
55
- await db.setItem(this.buildKey(drive, id), {
86
+ await db.setItem(this.buildDocumentKey(id), {
56
87
  ...document,
57
88
  ...header,
58
89
  operations: mergedOperations,
@@ -67,7 +98,7 @@ export class BrowserStorage {
67
98
  }
68
99
  async getDrive(id) {
69
100
  const db = await this.db;
70
- const drive = await db.getItem(this.buildKey(BrowserStorage.DRIVES_KEY, id));
101
+ const drive = await db.getItem(this.buildDriveKey(id));
71
102
  if (!drive) {
72
103
  throw new DriveNotFoundError(id);
73
104
  }
@@ -86,23 +117,29 @@ export class BrowserStorage {
86
117
  }
87
118
  async createDrive(id, drive) {
88
119
  const db = await this.db;
89
- await db.setItem(this.buildKey(BrowserStorage.DRIVES_KEY, id), drive);
120
+ await db.setItem(this.buildDriveKey(id), drive);
121
+ // Initialize an empty manifest for the new drive
122
+ await this.updateDriveManifest(id, { documentIds: [] });
90
123
  }
91
124
  async deleteDrive(id) {
125
+ // First get all documents in this drive
92
126
  const documents = await this.getDocuments(id);
127
+ // Delete each document (this already updates the manifest)
93
128
  await Promise.all(documents.map((doc) => this.deleteDocument(id, doc)));
94
- return (await this.db).removeItem(this.buildKey(BrowserStorage.DRIVES_KEY, id));
129
+ // Delete the drive and its manifest
130
+ const db = await this.db;
131
+ await db.removeItem(this.buildManifestKey(id));
132
+ return db.removeItem(this.buildDriveKey(id));
95
133
  }
96
134
  async addDriveOperations(id, operations, header) {
97
135
  const drive = await this.getDrive(id);
98
136
  const mergedOperations = mergeOperations(drive.operations, operations);
99
137
  const db = await this.db;
100
- await db.setItem(this.buildKey(BrowserStorage.DRIVES_KEY, id), {
138
+ await db.setItem(this.buildDriveKey(id), {
101
139
  ...drive,
102
140
  ...header,
103
141
  operations: mergedOperations,
104
142
  });
105
- return;
106
143
  }
107
144
  async getSynchronizationUnitsRevision(units) {
108
145
  const results = await Promise.allSettled(units.map(async (unit) => {
@@ -140,16 +177,23 @@ export class BrowserStorage {
140
177
  async migrateOperationSignatures() {
141
178
  const drives = await this.getDrives();
142
179
  for (const drive of drives) {
143
- await this.migrateDocument(BrowserStorage.DRIVES_KEY, drive);
180
+ await this.migrateDrive(drive);
144
181
  const documents = await this.getDocuments(drive);
145
182
  await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
146
183
  }
147
184
  }
185
+ async migrateDrive(driveId) {
186
+ const drive = await this.getDrive(driveId);
187
+ const migratedDrive = migrateDocumentOperationSignatures(drive);
188
+ if (migratedDrive !== drive) {
189
+ return (await this.db).setItem(this.buildDriveKey(driveId), migratedDrive);
190
+ }
191
+ }
148
192
  async migrateDocument(drive, id) {
149
193
  const document = await this.getDocument(drive, id);
150
194
  const migratedDocument = migrateDocumentOperationSignatures(document);
151
195
  if (migratedDocument !== document) {
152
- return (await this.db).setItem(this.buildKey(drive, id), migratedDocument);
196
+ return (await this.db).setItem(this.buildDocumentKey(id), migratedDocument);
153
197
  }
154
198
  }
155
199
  }
@@ -1,14 +1,17 @@
1
1
  import { type DocumentDriveAction, type DocumentDriveDocument } from "#drive-document-model/gen/types";
2
2
  import { type SynchronizationUnitQuery } from "#server/types";
3
3
  import { type DocumentHeader, type Operation, type PHDocument } from "document-model";
4
- import { type IDriveStorage } from "./types.js";
5
- export declare class FilesystemStorage implements IDriveStorage {
4
+ import { IDocumentStorage, type IDriveStorage } from "./types.js";
5
+ export declare class FilesystemStorage implements IDriveStorage, IDocumentStorage {
6
6
  private basePath;
7
- private drivesPath;
8
- private static DRIVES_DIR;
9
7
  constructor(basePath: string);
10
8
  private _buildDocumentPath;
9
+ private _buildDrivePath;
10
+ private _buildManifestPath;
11
+ private getDriveManifest;
12
+ private updateDriveManifest;
11
13
  getDocuments(drive: string): Promise<string[]>;
14
+ exists(documentId: string): Promise<boolean>;
12
15
  checkDocumentExists(drive: string, id: string): Promise<boolean>;
13
16
  getDocument<TDocument extends PHDocument>(drive: string, id: string): Promise<TDocument>;
14
17
  createDocument(drive: string, id: string, document: PHDocument): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/storage/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAaxB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAehD,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAY;gBAEzB,QAAQ,EAAE,MAAM;IAO5B,OAAO,CAAC,kBAAkB;IAOpB,YAAY,CAAC,KAAK,EAAE,MAAM;IA2BhC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1D,WAAW,CAAC,SAAS,SAAS,UAAU,EAC5C,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,CAAC;IAWf,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAS9D,YAAY;IAmCZ,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAIxC,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,cAAc;IAgBlB,SAAS;IAmBT,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQpD,cAAc,CAAC,IAAI,EAAE,MAAM;IAkBjC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IAI9C,WAAW,CAAC,EAAE,EAAE,MAAM;IAQtB,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAcV,+BAA+B,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CACR;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CACJ;CA2CF"}
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/storage/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAoBlE,qBAAa,iBAAkB,YAAW,aAAa,EAAE,gBAAgB;IACvE,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;YAIZ,gBAAgB;YAWhB,mBAAmB;IAQ3B,YAAY,CAAC,KAAK,EAAE,MAAM;IAKhC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5C,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,WAAW,CAAC,SAAS,SAAS,UAAU,EAC5C,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,CAAC;IAWf,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAgB9D,YAAY;IAeZ,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IA0BxC,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,cAAc;IAuBlB,SAAS;IAWT,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWpD,cAAc,CAAC,IAAI,EAAE,MAAM;IAmB3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IAUpD,WAAW,CAAC,EAAE,EAAE,MAAM;IActB,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAqBV,+BAA+B,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CACR;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CACJ;CA2CF"}
@@ -1,10 +1,9 @@
1
1
  import { DriveNotFoundError } from "#server/error";
2
2
  import { mergeOperations } from "#utils/misc";
3
- import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync, } from "fs";
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
4
4
  import fs from "fs/promises";
5
5
  import stringify from "json-stringify-deterministic";
6
6
  import path from "path";
7
- import sanitize from "sanitize-filename";
8
7
  function ensureDir(dir) {
9
8
  if (!existsSync(dir)) {
10
9
  mkdirSync(dir, { recursive: true });
@@ -12,51 +11,48 @@ function ensureDir(dir) {
12
11
  }
13
12
  export class FilesystemStorage {
14
13
  basePath;
15
- drivesPath;
16
- static DRIVES_DIR = "drives";
17
14
  constructor(basePath) {
18
15
  this.basePath = basePath;
19
16
  ensureDir(this.basePath);
20
- this.drivesPath = path.join(this.basePath, FilesystemStorage.DRIVES_DIR);
21
- ensureDir(this.drivesPath);
22
17
  }
23
- _buildDocumentPath(...args) {
24
- return `${path.join(this.basePath, ...args.map((arg) => sanitize(arg)))}.json`;
18
+ _buildDocumentPath(documentId) {
19
+ return `${this.basePath}/document-${documentId}.json`;
25
20
  }
26
- async getDocuments(drive) {
27
- let files = [];
21
+ _buildDrivePath(driveId) {
22
+ return `${this.basePath}/drive-${driveId}.json`;
23
+ }
24
+ _buildManifestPath(driveId) {
25
+ return `${this.basePath}/manifest-${driveId}.json`;
26
+ }
27
+ async getDriveManifest(driveId) {
28
+ const manifestPath = this._buildManifestPath(driveId);
28
29
  try {
29
- files = readdirSync(path.join(this.basePath, drive), {
30
- withFileTypes: true,
31
- });
30
+ const content = readFileSync(manifestPath, { encoding: "utf-8" });
31
+ return JSON.parse(content);
32
32
  }
33
33
  catch (error) {
34
- // if folder is not found then drive has no documents
35
- if (error.code !== "ENOENT") {
36
- throw error;
37
- }
38
- }
39
- const documents = [];
40
- for (const file of files.filter((file) => file.isFile())) {
41
- try {
42
- const documentId = path.parse(file.name).name;
43
- // checks if file is document
44
- await this.getDocument(drive, documentId);
45
- documents.push(documentId);
46
- }
47
- catch {
48
- /* Ignore invalid document*/
49
- }
34
+ // Return empty manifest if file doesn't exist
35
+ return { documentIds: [] };
50
36
  }
51
- return documents;
52
37
  }
53
- checkDocumentExists(drive, id) {
54
- const documentExists = existsSync(this._buildDocumentPath(drive, id));
38
+ async updateDriveManifest(driveId, manifest) {
39
+ const manifestPath = this._buildManifestPath(driveId);
40
+ writeFileSync(manifestPath, stringify(manifest), { encoding: "utf-8" });
41
+ }
42
+ async getDocuments(drive) {
43
+ const manifest = await this.getDriveManifest(drive);
44
+ return manifest.documentIds;
45
+ }
46
+ exists(documentId) {
47
+ const documentExists = existsSync(this._buildDocumentPath(documentId));
55
48
  return Promise.resolve(documentExists);
56
49
  }
50
+ checkDocumentExists(drive, id) {
51
+ return this.exists(id);
52
+ }
57
53
  async getDocument(drive, id) {
58
54
  try {
59
- const content = readFileSync(this._buildDocumentPath(drive, id), {
55
+ const content = readFileSync(this._buildDocumentPath(id), {
60
56
  encoding: "utf-8",
61
57
  });
62
58
  return JSON.parse(content);
@@ -66,27 +62,21 @@ export class FilesystemStorage {
66
62
  }
67
63
  }
68
64
  async createDocument(drive, id, document) {
69
- const documentPath = this._buildDocumentPath(drive, id);
70
- ensureDir(path.dirname(documentPath));
65
+ const documentPath = this._buildDocumentPath(id);
71
66
  writeFileSync(documentPath, stringify(document), {
72
67
  encoding: "utf-8",
73
68
  });
69
+ // Update the drive manifest to include this document
70
+ const manifest = await this.getDriveManifest(drive);
71
+ if (!manifest.documentIds.includes(id)) {
72
+ manifest.documentIds.push(id);
73
+ await this.updateDriveManifest(drive, manifest);
74
+ }
74
75
  return Promise.resolve();
75
76
  }
76
77
  async clearStorage() {
77
- const drivesPath = path.join(this.basePath, FilesystemStorage.DRIVES_DIR);
78
- // delete content of drives directory
79
- const drives = (await fs.readdir(drivesPath, {
80
- withFileTypes: true,
81
- recursive: true,
82
- })).filter((dirent) => !!dirent.name);
83
- await Promise.all(drives.map(async (dirent) => {
84
- await fs.rm(path.join(drivesPath, dirent.name), {
85
- recursive: true,
86
- });
87
- }));
88
- // delete files in basePath
89
- const files = (await fs.readdir(this.basePath, { withFileTypes: true })).filter((file) => file.name !== FilesystemStorage.DRIVES_DIR && !!file.name);
78
+ // delete content of basePath
79
+ const files = (await fs.readdir(this.basePath, { withFileTypes: true })).filter((dirent) => !!dirent.name);
90
80
  await Promise.all(files.map(async (dirent) => {
91
81
  await fs.rm(path.join(this.basePath, dirent.name), {
92
82
  recursive: true,
@@ -94,7 +84,27 @@ export class FilesystemStorage {
94
84
  }));
95
85
  }
96
86
  async deleteDocument(drive, id) {
97
- return fs.rm(this._buildDocumentPath(drive, id));
87
+ // Update the drive manifest to remove this document
88
+ const manifest = await this.getDriveManifest(drive);
89
+ const docIndex = manifest.documentIds.indexOf(id);
90
+ if (docIndex !== -1) {
91
+ manifest.documentIds.splice(docIndex, 1);
92
+ await this.updateDriveManifest(drive, manifest);
93
+ }
94
+ // Check if this document exists in other drive manifests
95
+ // Only delete the actual file if no other drive references it
96
+ const drives = await this.getDrives();
97
+ for (const driveId of drives) {
98
+ if (driveId === drive)
99
+ continue;
100
+ const otherManifest = await this.getDriveManifest(driveId);
101
+ if (otherManifest.documentIds.includes(id)) {
102
+ // Document still referenced by another drive, don't delete the file
103
+ return Promise.resolve();
104
+ }
105
+ }
106
+ // If we got here, no other drive references this document, so we can delete it
107
+ return fs.rm(this._buildDocumentPath(id));
98
108
  }
99
109
  async addDocumentOperations(drive, id, operations, header) {
100
110
  const document = await this.getDocument(drive, id);
@@ -102,40 +112,36 @@ export class FilesystemStorage {
102
112
  throw new Error(`Document with id ${id} not found`);
103
113
  }
104
114
  const mergedOperations = mergeOperations(document.operations, operations);
105
- await this.createDocument(drive, id, {
115
+ const documentPath = this._buildDocumentPath(id);
116
+ writeFileSync(documentPath, stringify({
106
117
  ...document,
107
118
  ...header,
108
119
  operations: mergedOperations,
120
+ }), {
121
+ encoding: "utf-8",
109
122
  });
110
123
  }
111
124
  async getDrives() {
112
- const files = readdirSync(this.drivesPath, {
113
- withFileTypes: true,
114
- });
115
- const drives = [];
116
- for (const file of files.filter((file) => file.isFile())) {
117
- try {
118
- const driveId = path.parse(file.name).name;
119
- // checks if file is drive
120
- await this.getDrive(driveId);
121
- drives.push(driveId);
122
- }
123
- catch {
124
- /* Ignore invalid drive document found on drives dir */
125
- }
126
- }
127
- return drives;
125
+ // get anything that starts with drive-
126
+ const files = await fs.readdir(this.basePath, { withFileTypes: true });
127
+ return (files
128
+ .filter((file) => file.name.startsWith("drive-"))
129
+ // remove drive- prefix and extension
130
+ .map((file) => file.name.replace("drive-", "").replace(".json", "")));
128
131
  }
129
132
  async getDrive(id) {
130
133
  try {
131
- return await this.getDocument(FilesystemStorage.DRIVES_DIR, id);
134
+ const content = readFileSync(this._buildDrivePath(id), {
135
+ encoding: "utf-8",
136
+ });
137
+ return JSON.parse(content);
132
138
  }
133
- catch {
139
+ catch (error) {
134
140
  throw new DriveNotFoundError(id);
135
141
  }
136
142
  }
137
143
  async getDriveBySlug(slug) {
138
- // get oldes drives first
144
+ // get oldest drives first
139
145
  const drives = (await this.getDrives()).reverse();
140
146
  for (const drive of drives) {
141
147
  const { initialState: { state: { global: { slug: driveSlug }, }, }, } = await this.getDrive(drive);
@@ -145,21 +151,35 @@ export class FilesystemStorage {
145
151
  }
146
152
  throw new Error(`Drive with slug ${slug} not found`);
147
153
  }
148
- createDrive(id, drive) {
149
- return this.createDocument(FilesystemStorage.DRIVES_DIR, id, drive);
154
+ async createDrive(id, drive) {
155
+ const drivePath = this._buildDrivePath(id);
156
+ writeFileSync(drivePath, stringify(drive), {
157
+ encoding: "utf-8",
158
+ });
159
+ // Initialize an empty manifest for the new drive
160
+ await this.updateDriveManifest(id, { documentIds: [] });
150
161
  }
151
162
  async deleteDrive(id) {
163
+ // First get all documents in this drive
152
164
  const documents = await this.getDocuments(id);
153
- await this.deleteDocument(FilesystemStorage.DRIVES_DIR, id);
154
- await Promise.all(documents.map((document) => this.deleteDocument(id, document)));
165
+ // Delete each document from this drive (may not actually delete the file if shared with other drives)
166
+ await Promise.all(documents.map((doc) => this.deleteDocument(id, doc)));
167
+ // Delete the drive manifest and the drive itself
168
+ await fs.rm(this._buildManifestPath(id)).catch(() => {
169
+ /* ignore error if manifest doesn't exist */
170
+ });
171
+ await fs.rm(this._buildDrivePath(id));
155
172
  }
156
173
  async addDriveOperations(id, operations, header) {
157
174
  const drive = await this.getDrive(id);
158
175
  const mergedOperations = mergeOperations(drive.operations, operations);
159
- await this.createDrive(id, {
176
+ const drivePath = this._buildDrivePath(id);
177
+ writeFileSync(drivePath, stringify({
160
178
  ...drive,
161
179
  ...header,
162
180
  operations: mergedOperations,
181
+ }), {
182
+ encoding: "utf-8",
163
183
  });
164
184
  }
165
185
  async getSynchronizationUnitsRevision(units) {
@@ -1,12 +1,13 @@
1
1
  import { type DocumentDriveDocument } from "#drive-document-model/gen/types";
2
2
  import { type SynchronizationUnitQuery } from "#server/types";
3
3
  import { type DocumentHeader, type Operation, type OperationFromDocument, type PHDocument } from "document-model";
4
- import { type IDriveStorage } from "./types.js";
5
- export declare class MemoryStorage implements IDriveStorage {
4
+ import { IDocumentStorage, type IDriveStorage } from "./types.js";
5
+ export declare class MemoryStorage implements IDriveStorage, IDocumentStorage {
6
6
  private documents;
7
7
  private drives;
8
8
  private slugToDriveId;
9
9
  constructor();
10
+ exists(id: string): Promise<boolean>;
10
11
  checkDocumentExists(drive: string, id: string): Promise<boolean>;
11
12
  getDocuments(drive: string): Promise<string[]>;
12
13
  getDocument<TDocument extends PHDocument>(driveId: string, id: string): Promise<TDocument>;
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/storage/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAE1B,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,aAAa,CAA8B;;IAOnD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,WAAW,CAAC,SAAS,SAAS,UAAU,EAC5C,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,CAAC;IAaf,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAK5D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IA0B9D,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAeV,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAOxC,SAAS;IAIT,QAAQ,CAAC,EAAE,EAAE,MAAM;IAQnB,cAAc,CAAC,IAAI,EAAE,MAAM;IAQ3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IASpD,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,EAAE,EAC1D,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAcV,WAAW,CAAC,EAAE,EAAE,MAAM;IAKtB,+BAA+B,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CACR;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CACJ;CA2CF"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/storage/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAE1B,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAElE,qBAAa,aAAc,YAAW,aAAa,EAAE,gBAAgB;IACnE,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,aAAa,CAA8B;;IAOnD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,WAAW,CAAC,SAAS,SAAS,UAAU,EAC5C,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,CAAC;IAaf,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAK5D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IA0B9D,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAeV,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAOxC,SAAS;IAIT,QAAQ,CAAC,EAAE,EAAE,MAAM;IAQnB,cAAc,CAAC,IAAI,EAAE,MAAM;IAQ3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IASpD,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,EAAE,EAC1D,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAcV,WAAW,CAAC,EAAE,EAAE,MAAM;IAKtB,+BAA+B,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CACR;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CACJ;CA2CF"}