document-drive 1.29.0 → 1.29.1-dev.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 (45) hide show
  1. package/dist/prisma/schema.prisma +6 -10
  2. package/dist/src/cache/memory.d.ts +14 -4
  3. package/dist/src/cache/memory.d.ts.map +1 -1
  4. package/dist/src/cache/memory.js +57 -19
  5. package/dist/src/cache/redis.d.ts +14 -4
  6. package/dist/src/cache/redis.d.ts.map +1 -1
  7. package/dist/src/cache/redis.js +71 -19
  8. package/dist/src/cache/types.d.ts +10 -3
  9. package/dist/src/cache/types.d.ts.map +1 -1
  10. package/dist/src/cache/util.d.ts +3 -0
  11. package/dist/src/cache/util.d.ts.map +1 -0
  12. package/dist/src/cache/util.js +13 -0
  13. package/dist/src/server/base-server.d.ts +1 -1
  14. package/dist/src/server/base-server.d.ts.map +1 -1
  15. package/dist/src/server/base-server.js +35 -28
  16. package/dist/src/server/listener/listener-manager.js +2 -2
  17. package/dist/src/server/listener/transmitter/pull-responder.d.ts +1 -1
  18. package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
  19. package/dist/src/server/listener/transmitter/pull-responder.js +2 -3
  20. package/dist/src/server/sync-manager.d.ts.map +1 -1
  21. package/dist/src/server/sync-manager.js +7 -18
  22. package/dist/src/server/types.d.ts +0 -1
  23. package/dist/src/server/types.d.ts.map +1 -1
  24. package/dist/src/storage/browser.d.ts +6 -4
  25. package/dist/src/storage/browser.d.ts.map +1 -1
  26. package/dist/src/storage/browser.js +83 -22
  27. package/dist/src/storage/filesystem.d.ts +5 -3
  28. package/dist/src/storage/filesystem.d.ts.map +1 -1
  29. package/dist/src/storage/filesystem.js +83 -29
  30. package/dist/src/storage/ipfs.d.ts +5 -1
  31. package/dist/src/storage/ipfs.d.ts.map +1 -1
  32. package/dist/src/storage/ipfs.js +74 -21
  33. package/dist/src/storage/memory.d.ts +5 -5
  34. package/dist/src/storage/memory.d.ts.map +1 -1
  35. package/dist/src/storage/memory.js +78 -51
  36. package/dist/src/storage/prisma/factory.d.ts +4 -3
  37. package/dist/src/storage/prisma/factory.d.ts.map +1 -1
  38. package/dist/src/storage/prisma/factory.js +5 -5
  39. package/dist/src/storage/prisma/index.d.ts +11 -6
  40. package/dist/src/storage/prisma/index.d.ts.map +1 -1
  41. package/dist/src/storage/prisma/index.js +233 -190
  42. package/dist/src/storage/types.d.ts +6 -6
  43. package/dist/src/storage/types.d.ts.map +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EACL,KAAK,mBAAmB,EAKzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,uBAAuB;IAM1E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IARhC,OAAO,CAAC,UAAU,CAA2C;IAE7D,OAAO,CAAC,MAAM,CAA2C;gBAGtC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,EACtB,oBAAoB,EAAE,mBAAmB,EAAE,EAClC,YAAY,CAAC,EAAE,aAAa,YAAA;IAGzC,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAe3B,+BAA+B,CACnC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,wBAAwB,EAAE,GACzC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA6B3B,0BAA0B,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAmEhC,4BAA4B,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;IA6B1C,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IA0BrC,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC;YA2Cf,QAAQ;YAiBR,WAAW;IAgBzB,OAAO,CAAC,cAAc;IAuBtB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,EAAE;IAItD,OAAO,CAAC,sBAAsB;IAU9B,yBAAyB,CAAC,cAAc,EAAE,oBAAoB,GAAG,UAAU;IAoB3E,aAAa,CACX,UAAU,EAAE,MAAM,GACjB,UAAU,GAAG,gCAAgC;IAWhD,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAC5C,KAAK,CAAC,EAAE,KAAK,GACZ,IAAI;IAiDP,OAAO,CAAC,cAAc;IAyBhB,yBAAyB,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,IAAI,CAAC;CAejB"}
1
+ {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/server/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EACL,KAAK,mBAAmB,EAKzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,uBAAuB;IAM1E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IARhC,OAAO,CAAC,UAAU,CAA2C;IAE7D,OAAO,CAAC,MAAM,CAA2C;gBAGtC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,EACtB,oBAAoB,EAAE,mBAAmB,EAAE,EAClC,YAAY,CAAC,EAAE,aAAa,YAAA;IAGzC,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAe3B,+BAA+B,CACnC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,wBAAwB,EAAE,GACzC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmB3B,0BAA0B,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAmEhC,4BAA4B,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;IA4B1C,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAyBrC,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC;YA2Cf,QAAQ;YAiBR,WAAW;IAgBzB,OAAO,CAAC,cAAc;IAuBtB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,EAAE;IAItD,OAAO,CAAC,sBAAsB;IAU9B,yBAAyB,CAAC,cAAc,EAAE,oBAAoB,GAAG,UAAU;IAoB3E,aAAa,CACX,UAAU,EAAE,MAAM,GACjB,UAAU,GAAG,gCAAgC;IAWhD,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAC5C,KAAK,CAAC,EAAE,KAAK,GACZ,IAAI;IAiDP,OAAO,CAAC,cAAc;IAyBhB,yBAAyB,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,IAAI,CAAC;CAejB"}
@@ -23,22 +23,13 @@ export default class SynchronizationManager {
23
23
  async getSynchronizationUnitsRevision(driveId, syncUnitsQuery) {
24
24
  const drive = await this.getDrive(driveId);
25
25
  const revisions = await this.storage.getSynchronizationUnitsRevision(syncUnitsQuery);
26
- const synchronizationUnits = syncUnitsQuery.map((s) => ({
26
+ return syncUnitsQuery.map((s) => ({
27
27
  ...s,
28
28
  lastUpdated: drive.created,
29
- revision: -1,
29
+ revision: revisions.find((r) => r.documentId === s.documentId &&
30
+ r.scope === s.scope &&
31
+ r.branch === s.branch)?.revision ?? -1,
30
32
  }));
31
- for (const revision of revisions) {
32
- const syncUnit = synchronizationUnits.find((s) => revision.driveId === s.driveId &&
33
- revision.documentId === s.documentId &&
34
- revision.scope === s.scope &&
35
- revision.branch === s.branch);
36
- if (syncUnit) {
37
- syncUnit.revision = revision.revision;
38
- syncUnit.lastUpdated = revision.lastUpdated;
39
- }
40
- }
41
- return synchronizationUnits;
42
33
  }
43
34
  async getSynchronizationUnitsIds(driveId, documentId, scope, branch, documentType) {
44
35
  const drive = await this.getDrive(driveId);
@@ -55,7 +46,7 @@ export default class SynchronizationManager {
55
46
  documentType.includes("powerhouse/document-drive") ||
56
47
  documentType.includes("*"))) {
57
48
  nodes.unshift({
58
- id: "",
49
+ id: drive.state.global.id,
59
50
  documentType: "powerhouse/document-drive",
60
51
  synchronizationUnits: [
61
52
  {
@@ -105,7 +96,6 @@ export default class SynchronizationManager {
105
96
  syncId,
106
97
  scope: syncUnit.scope,
107
98
  branch: syncUnit.branch,
108
- driveId,
109
99
  documentId: node.id,
110
100
  documentType: node.documentType,
111
101
  };
@@ -124,7 +114,6 @@ export default class SynchronizationManager {
124
114
  syncId,
125
115
  scope,
126
116
  branch,
127
- driveId,
128
117
  documentId,
129
118
  documentType,
130
119
  lastUpdated: lastOperation.timestamp ?? document.lastModified,
@@ -163,7 +152,7 @@ export default class SynchronizationManager {
163
152
  }
164
153
  async getDrive(driveId) {
165
154
  try {
166
- const cachedDocument = await this.cache.getDocument("drives", driveId);
155
+ const cachedDocument = await this.cache.getDrive(driveId);
167
156
  if (cachedDocument && isDocumentDrive(cachedDocument)) {
168
157
  return cachedDocument;
169
158
  }
@@ -180,7 +169,7 @@ export default class SynchronizationManager {
180
169
  }
181
170
  async getDocument(driveId, documentId) {
182
171
  try {
183
- const cachedDocument = await this.cache.getDocument(driveId, documentId);
172
+ const cachedDocument = await this.cache.getDocument(documentId);
184
173
  if (cachedDocument) {
185
174
  return cachedDocument;
186
175
  }
@@ -36,7 +36,6 @@ export type IOperationResult<TDocument extends PHDocument = PHDocument> = {
36
36
  export type DriveOperationResult = IOperationResult<DocumentDriveDocument>;
37
37
  export type SynchronizationUnit = {
38
38
  syncId: string;
39
- driveId: string;
40
39
  documentId: string;
41
40
  documentType: string;
42
41
  scope: string;
@@ -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":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,MAAM,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gCAAgC,EACtC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAGhE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,IAAI,CAAC,GAC7C,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnC,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,KAAK,CAC7C,OAAO,uBAAuB,EAC9B,CAAC,CACF,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,SAAS,CAChC,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACzE,uBAAuB,CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG,uBAAuB,GAAG;IAEzD,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,UAAU,IAC1D,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAEtC,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,UAAU,GAAG,UAAU,IAAI;IACxE,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/C,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;AAE3E,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,mBAAmB,EACnB,UAAU,GAAG,aAAa,CAC3B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,oBAAY,eAAe;IACzB,QAAQ,IAAA;IACR,eAAe,IAAA;IACf,aAAa,IAAA;IACb,aAAa,IAAA;IACb,aAAa,IAAA;IACb,WAAW,IAAA;CACZ;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG;IACxE,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AACxE,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,SAAS,GAAG,YAAY,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC;AACxC,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC;AAExC,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,OAAO,GACP,SAAS,GACT,QAAQ,GACR,eAAe,CAAC;AAEpB,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,CACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,EAClB,KAAK,CAAC,EAAE,KAAK,EACb,cAAc,CAAC,EAAE,oBAAoB,KAClC,IAAI,CAAC;IACV,kBAAkB,EAAE,CAClB,MAAM,EAAE,oBAAoB,EAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAClD,UAAU,EAAE,uBAAuB,EACnC,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,KAAK,KACV,IAAI,CAAC;IACV,YAAY,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,kBAAkB,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,KACjB,IAAI,CAAC;IACV,oBAAoB,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAC;IAC5E,UAAU,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,IAAI;KACjD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG;IAChD,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,GAAG;IAC7D,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,EAAE,YAAY,CAAC;CACxB,GACD;IACE,QAAQ,EAAE,cAAc,CAAC;CAC1B,GACD;IACE,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,GACD;IACE,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,GACD;IACE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,GACD;IACE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,GACD;IACE,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,GACD;IACE,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,GACD;IACE,QAAQ,EAAE,2BAA2B,CAAC;IACtC,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,GACD;IACE,QAAQ,EAAE,4BAA4B,CAAC;IACvC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAAG;IACvC,aAAa,EAAE;QACb,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC9C,qBAAqB,CAAC,EAAE,2BAA2B,CAAC;KACrD,CAAC;IAKF,eAAe,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAClD,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,6BAA6B;;CAEzC,CAAC;AAQF,MAAM,WAAW,wBAAwB;IACvC,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAGtC,IAAI,SAAS,IAAI,gBAAgB,CAAC;IAElC,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAC7D,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/B,QAAQ,CACN,KAAK,EAAE,UAAU,EACjB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE7D,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,WAAW,CAAC,SAAS,SAAS,UAAU,EACtC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB,YAAY,CACV,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,aAAa,CACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,eAAe,CACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,WAAW,CACT,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,YAAY,CACV,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,CAAC,mBAAmB,CAAC,EACzC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAC5C,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,CAAC,mBAAmB,CAAC,EACzC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAC5C,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,SAAS,CACP,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,UAAU,CACR,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE7B,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,eAAe,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,aAAa,CACX,UAAU,EAAE,MAAM,GACjB,UAAU,GAAG,gCAAgC,CAAC;IAEjD,8BAA8B;IAC9B,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAElC,sBAAsB,CACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAE5C,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAEvC,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE9B,wBAAwB;IACxB,uBAAuB,IAAI,mBAAmB,EAAE,CAAC;IAEjD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B,EAAE,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC5E;AAED,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GACzD,qBAAqB,GACrB,oBAAoB,CAAC;AAEvB,MAAM,MAAM,uBAAuB,GAAG,CACpC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,KACpB,IAAI,CAAC;AAEV,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAE5C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;IAErE,UAAU,CACR,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3B,8BAA8B,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,mBAAmB,EAAE,EAChC,MAAM,EAAE,kBAAkB,EAC1B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,EAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,IAAI,EAC1E,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7B,sBAAsB,CACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjB,sBAAsB,CACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACvC,eAAe,CACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAAE,GAC/C,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,UAAU,GACV,OAAO,CAAC;AAEZ,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC,CAAC;IACvE,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CACN,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,wBAAwB,GACpC,YAAY,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,CAAC,SAAS,MAAM,WAAW,EAC9B,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAClC,IAAI,CAAC;IAER,EAAE,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC5E;AAED,MAAM,WAAW,uBAAuB;IACtC,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAC3D,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAElC,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAEvC,sBAAsB,CACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAE5C,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE9B,+BAA+B,CAC7B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,wBAAwB,EAAE,GACzC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAGlC,aAAa,CACX,UAAU,EAAE,MAAM,GACjB,UAAU,GAAG,gCAAgC,CAAC;IAEjD,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAC5C,KAAK,CAAC,EAAE,KAAK,GACZ,IAAI,CAAC;IAER,yBAAyB,CACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,yBAAyB,CAAC,cAAc,EAAE,oBAAoB,GAAG,UAAU,CAAC;CAC7E"}
@@ -6,15 +6,19 @@ export declare class BrowserStorage implements IDriveStorage, IDocumentStorage {
6
6
  private db;
7
7
  static DBName: string;
8
8
  static SEP: string;
9
- static DRIVES_KEY: string;
10
9
  static DOCUMENT_KEY: string;
11
10
  static MANIFEST_KEY: string;
12
11
  constructor(namespace?: string);
12
+ clear(): Promise<void>;
13
13
  exists(documentId: string): Promise<boolean>;
14
14
  create(documentId: string, document: PHDocument): Promise<void>;
15
15
  get<TDocument extends PHDocument>(documentId: string): Promise<TDocument>;
16
+ delete(documentId: string): Promise<boolean>;
17
+ removeChild(parentId: string, childId: string): Promise<boolean>;
18
+ addChild(parentId: string, childId: string): Promise<void>;
19
+ getChildren(parentId: string): Promise<string[]>;
16
20
  checkDocumentExists(drive: string, documentId: string): Promise<boolean>;
17
- private getDriveManifest;
21
+ private getManifest;
18
22
  private updateDriveManifest;
19
23
  getDocuments(drive: string): Promise<string[]>;
20
24
  getDocument<TDocument extends PHDocument>(driveId: string, id: string): Promise<TDocument>;
@@ -29,7 +33,6 @@ export declare class BrowserStorage implements IDriveStorage, IDocumentStorage {
29
33
  deleteDrive(id: string): Promise<void>;
30
34
  addDriveOperations(id: string, operations: Operation<DocumentDriveAction>[], header: DocumentHeader): Promise<void>;
31
35
  getSynchronizationUnitsRevision(units: SynchronizationUnitQuery[]): Promise<{
32
- driveId: string;
33
36
  documentId: string;
34
37
  scope: string;
35
38
  branch: string;
@@ -39,7 +42,6 @@ export declare class BrowserStorage implements IDriveStorage, IDocumentStorage {
39
42
  migrateOperationSignatures(): Promise<void>;
40
43
  private migrateDrive;
41
44
  private migrateDocument;
42
- buildDriveKey(driveId: string): string;
43
45
  buildDocumentKey(documentId: string): string;
44
46
  buildManifestKey(driveId: string): string;
45
47
  }
@@ -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,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAOvE,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;IAcxB,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,GAAG,CAAC,SAAS,SAAS,UAAU,EACpC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC;IAiBrB,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;IAIf,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAW9D,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;IAe7B,aAAa,CAAC,OAAO,EAAE,MAAM;IAI7B,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CAGjC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/storage/browser.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@ export class BrowserStorage {
6
6
  db;
7
7
  static DBName = "DOCUMENT_DRIVES";
8
8
  static SEP = ":";
9
- static DRIVES_KEY = "DRIVES";
10
9
  static DOCUMENT_KEY = "DOCUMENT";
11
10
  static MANIFEST_KEY = "MANIFEST";
12
11
  constructor(namespace) {
@@ -16,6 +15,10 @@ export class BrowserStorage {
16
15
  : BrowserStorage.DBName,
17
16
  }));
18
17
  }
18
+ async clear() {
19
+ const db = await this.db;
20
+ await db.clear();
21
+ }
19
22
  ////////////////////////////////
20
23
  // IDocumentStorage
21
24
  ////////////////////////////////
@@ -36,13 +39,61 @@ export class BrowserStorage {
36
39
  }
37
40
  return document;
38
41
  }
42
+ async delete(documentId) {
43
+ const db = await this.db;
44
+ const document = await db.getItem(this.buildDocumentKey(documentId));
45
+ if (!document) {
46
+ return false;
47
+ }
48
+ // delete the document from all other drive manifests
49
+ const drives = await this.getDrives();
50
+ for (const driveId of drives) {
51
+ if (driveId === documentId)
52
+ continue;
53
+ await this.removeChild(driveId, documentId);
54
+ }
55
+ // delete any manifest for this document
56
+ await db.removeItem(this.buildManifestKey(documentId));
57
+ // finally, delete the specified document
58
+ await db.removeItem(this.buildDocumentKey(documentId));
59
+ return true;
60
+ }
61
+ async removeChild(parentId, childId) {
62
+ const manifest = await this.getManifest(parentId);
63
+ const docIndex = manifest.documentIds.indexOf(childId);
64
+ if (docIndex !== -1) {
65
+ manifest.documentIds.splice(docIndex, 1);
66
+ await this.updateDriveManifest(parentId, manifest);
67
+ return true;
68
+ }
69
+ return false;
70
+ }
71
+ async addChild(parentId, childId) {
72
+ if (parentId === childId) {
73
+ throw new Error("Cannot associate a document with itself");
74
+ }
75
+ // check if the child is a parent of the parent
76
+ const children = await this.getChildren(childId);
77
+ if (children.includes(parentId)) {
78
+ throw new Error("Cannot associate a document with its child");
79
+ }
80
+ const manifest = await this.getManifest(parentId);
81
+ if (!manifest.documentIds.includes(childId)) {
82
+ manifest.documentIds.push(childId);
83
+ await this.updateDriveManifest(parentId, manifest);
84
+ }
85
+ }
86
+ async getChildren(parentId) {
87
+ const manifest = await this.getManifest(parentId);
88
+ return manifest.documentIds;
89
+ }
39
90
  ////////////////////////////////
40
91
  // IDriveStorage
41
92
  ////////////////////////////////
42
93
  checkDocumentExists(drive, documentId) {
43
94
  return this.exists(documentId);
44
95
  }
45
- async getDriveManifest(driveId) {
96
+ async getManifest(driveId) {
46
97
  const db = await this.db;
47
98
  const manifest = await db.getItem(this.buildManifestKey(driveId));
48
99
  return manifest || { documentIds: [] };
@@ -52,7 +103,7 @@ export class BrowserStorage {
52
103
  await db.setItem(this.buildManifestKey(driveId), manifest);
53
104
  }
54
105
  async getDocuments(drive) {
55
- const manifest = await this.getDriveManifest(drive);
106
+ const manifest = await this.getManifest(drive);
56
107
  return manifest.documentIds;
57
108
  }
58
109
  async getDocument(driveId, id) {
@@ -61,7 +112,7 @@ export class BrowserStorage {
61
112
  async createDocument(drive, id, document) {
62
113
  await this.create(id, document);
63
114
  // Update the drive manifest to include this document
64
- const manifest = await this.getDriveManifest(drive);
115
+ const manifest = await this.getManifest(drive);
65
116
  if (!manifest.documentIds.includes(id)) {
66
117
  manifest.documentIds.push(id);
67
118
  await this.updateDriveManifest(drive, manifest);
@@ -70,7 +121,7 @@ export class BrowserStorage {
70
121
  async deleteDocument(drive, id) {
71
122
  await (await this.db).removeItem(this.buildDocumentKey(id));
72
123
  // Update the drive manifest to remove this document
73
- const manifest = await this.getDriveManifest(drive);
124
+ const manifest = await this.getManifest(drive);
74
125
  const docIndex = manifest.documentIds.indexOf(id);
75
126
  if (docIndex !== -1) {
76
127
  manifest.documentIds.splice(docIndex, 1);
@@ -97,13 +148,16 @@ export class BrowserStorage {
97
148
  const db = await this.db;
98
149
  const keys = await db.keys();
99
150
  return keys
100
- .filter((key) => key.startsWith(BrowserStorage.DRIVES_KEY))
101
- .map((key) => key.slice(BrowserStorage.DRIVES_KEY.length + BrowserStorage.SEP.length));
151
+ .filter((key) => key.startsWith(BrowserStorage.MANIFEST_KEY))
152
+ .map((key) => key.slice(BrowserStorage.MANIFEST_KEY.length + BrowserStorage.SEP.length));
102
153
  }
103
154
  async getDrive(id) {
104
- const db = await this.db;
105
- const drive = await db.getItem(this.buildDriveKey(id));
106
- if (!drive) {
155
+ let drive;
156
+ try {
157
+ drive = await this.get(id);
158
+ }
159
+ catch {
160
+ // preserve throwing a specialized error for drives
107
161
  throw new DriveNotFoundError(id);
108
162
  }
109
163
  return drive;
@@ -120,8 +174,21 @@ export class BrowserStorage {
120
174
  throw new Error(`Drive with slug ${slug} not found`);
121
175
  }
122
176
  async createDrive(id, drive) {
123
- const db = await this.db;
124
- await db.setItem(this.buildDriveKey(id), drive);
177
+ // check if a drive with the same slug already exists
178
+ const slug = drive.initialState.state.global.slug;
179
+ if (slug) {
180
+ let existingDrive;
181
+ try {
182
+ existingDrive = await this.getDriveBySlug(slug);
183
+ }
184
+ catch {
185
+ // do nothing
186
+ }
187
+ if (existingDrive) {
188
+ throw new Error(`Drive with slug ${slug} already exists`);
189
+ }
190
+ }
191
+ await this.create(id, drive);
125
192
  // Initialize an empty manifest for the new drive
126
193
  await this.updateDriveManifest(id, { documentIds: [] });
127
194
  }
@@ -133,13 +200,13 @@ export class BrowserStorage {
133
200
  // Delete the drive and its manifest
134
201
  const db = await this.db;
135
202
  await db.removeItem(this.buildManifestKey(id));
136
- return db.removeItem(this.buildDriveKey(id));
203
+ return db.removeItem(this.buildDocumentKey(id));
137
204
  }
138
205
  async addDriveOperations(id, operations, header) {
139
206
  const drive = await this.getDrive(id);
140
207
  const mergedOperations = mergeOperations(drive.operations, operations);
141
208
  const db = await this.db;
142
- await db.setItem(this.buildDriveKey(id), {
209
+ await db.setItem(this.buildDocumentKey(id), {
143
210
  ...drive,
144
211
  ...header,
145
212
  operations: mergedOperations,
@@ -148,16 +215,13 @@ export class BrowserStorage {
148
215
  async getSynchronizationUnitsRevision(units) {
149
216
  const results = await Promise.allSettled(units.map(async (unit) => {
150
217
  try {
151
- const document = await (unit.documentId
152
- ? this.getDocument(unit.driveId, unit.documentId)
153
- : this.getDrive(unit.driveId));
218
+ const document = await this.get(unit.documentId);
154
219
  if (!document) {
155
220
  return undefined;
156
221
  }
157
222
  const operation = document.operations[unit.scope].at(-1);
158
223
  if (operation) {
159
224
  return {
160
- driveId: unit.driveId,
161
225
  documentId: unit.documentId,
162
226
  scope: unit.scope,
163
227
  branch: unit.branch,
@@ -190,7 +254,7 @@ export class BrowserStorage {
190
254
  const drive = await this.getDrive(driveId);
191
255
  const migratedDrive = migrateDocumentOperationSignatures(drive);
192
256
  if (migratedDrive !== drive) {
193
- return (await this.db).setItem(this.buildDriveKey(driveId), migratedDrive);
257
+ return (await this.db).setItem(this.buildDocumentKey(driveId), migratedDrive);
194
258
  }
195
259
  }
196
260
  async migrateDocument(drive, id) {
@@ -203,9 +267,6 @@ export class BrowserStorage {
203
267
  ////////////////////////////////
204
268
  // Private methods
205
269
  ////////////////////////////////
206
- buildDriveKey(driveId) {
207
- return `${BrowserStorage.DRIVES_KEY}${BrowserStorage.SEP}${driveId}`;
208
- }
209
270
  buildDocumentKey(documentId) {
210
271
  return `${BrowserStorage.DOCUMENT_KEY}${BrowserStorage.SEP}${documentId}`;
211
272
  }
@@ -8,6 +8,10 @@ export declare class FilesystemStorage implements IDriveStorage, IDocumentStorag
8
8
  exists(documentId: string): Promise<boolean>;
9
9
  create(documentId: string, document: PHDocument): Promise<void>;
10
10
  get<TDocument extends PHDocument>(documentId: string): Promise<TDocument>;
11
+ delete(documentId: string): Promise<boolean>;
12
+ addChild(parentId: string, childId: string): Promise<void>;
13
+ removeChild(parentId: string, childId: string): Promise<boolean>;
14
+ getChildren(parentId: string): Promise<string[]>;
11
15
  getDocuments(drive: string): Promise<string[]>;
12
16
  checkDocumentExists(drive: string, id: string): Promise<boolean>;
13
17
  getDocument<TDocument extends PHDocument>(drive: string, id: string): Promise<TDocument>;
@@ -22,7 +26,6 @@ export declare class FilesystemStorage implements IDriveStorage, IDocumentStorag
22
26
  deleteDrive(id: string): Promise<void>;
23
27
  addDriveOperations(id: string, operations: Operation<DocumentDriveAction>[], header: DocumentHeader): Promise<void>;
24
28
  getSynchronizationUnitsRevision(units: SynchronizationUnitQuery[]): Promise<{
25
- driveId: string;
26
29
  documentId: string;
27
30
  scope: string;
28
31
  branch: string;
@@ -30,9 +33,8 @@ export declare class FilesystemStorage implements IDriveStorage, IDocumentStorag
30
33
  revision: number;
31
34
  }[]>;
32
35
  private _buildDocumentPath;
33
- private _buildDrivePath;
34
36
  private _buildManifestPath;
35
- private getDriveManifest;
37
+ private getManifest;
36
38
  private updateDriveManifest;
37
39
  }
38
40
  //# sourceMappingURL=filesystem.d.ts.map
@@ -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;AAKxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAavE,qBAAa,iBAAkB,YAAW,aAAa,EAAE,gBAAgB;IACvE,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAS5B,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAS/C,GAAG,CAAC,SAAS,SAAS,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAgBnE,YAAY,CAAC,KAAK,EAAE,MAAM;IAKhC,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;IAIf,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;IAgDD,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;YAIZ,gBAAgB;YAWhB,mBAAmB;CAOlC"}
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;AAWxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAavE,qBAAa,iBAAkB,YAAW,aAAa,EAAE,gBAAgB;IACvE,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAS5B,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAS/C,GAAG,CAAC,SAAS,SAAS,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAYnE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAShD,YAAY,CAAC,KAAK,EAAE,MAAM;IAKhC,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;IAIf,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;IASpD,cAAc,CAAC,IAAI,EAAE,MAAM;IAmB3B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IAqBpD,WAAW,CAAC,EAAE,EAAE,MAAM;IAYtB,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,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;IA4CD,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,kBAAkB;YAIZ,WAAW;YAWX,mBAAmB;CAOlC"}
@@ -1,6 +1,6 @@
1
1
  import { DriveNotFoundError } from "#server/error";
2
2
  import { mergeOperations } from "#utils/misc";
3
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
3
+ import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "fs";
4
4
  import fs from "fs/promises";
5
5
  import stringify from "json-stringify-deterministic";
6
6
  import path from "path";
@@ -40,11 +40,64 @@ export class FilesystemStorage {
40
40
  throw new Error(`Document with id ${documentId} not found`);
41
41
  }
42
42
  }
43
+ async delete(documentId) {
44
+ // delete the document from all other drive manifests
45
+ const drives = await this.getDrives();
46
+ for (const driveId of drives) {
47
+ if (driveId === documentId)
48
+ continue;
49
+ await this.removeChild(driveId, documentId);
50
+ }
51
+ // delete any manifest for this document
52
+ try {
53
+ await fs.rm(this._buildManifestPath(documentId));
54
+ }
55
+ catch (error) {
56
+ // there may be no manifest for this document
57
+ }
58
+ // finally, delete the specified document
59
+ const documentPath = this._buildDocumentPath(documentId);
60
+ if (existsSync(documentPath)) {
61
+ unlinkSync(documentPath);
62
+ return Promise.resolve(true);
63
+ }
64
+ return Promise.resolve(false);
65
+ }
66
+ async addChild(parentId, childId) {
67
+ if (parentId === childId) {
68
+ throw new Error("Cannot associate a document with itself");
69
+ }
70
+ // check if the child is a parent of the parent
71
+ const children = await this.getChildren(childId);
72
+ if (children.includes(parentId)) {
73
+ throw new Error("Cannot associate a document with its child");
74
+ }
75
+ // Update the drive manifest to include this document
76
+ const manifest = await this.getManifest(parentId);
77
+ if (!manifest.documentIds.includes(childId)) {
78
+ manifest.documentIds.push(childId);
79
+ await this.updateDriveManifest(parentId, manifest);
80
+ }
81
+ }
82
+ async removeChild(parentId, childId) {
83
+ const manifest = await this.getManifest(parentId);
84
+ const docIndex = manifest.documentIds.indexOf(childId);
85
+ if (docIndex !== -1) {
86
+ manifest.documentIds.splice(docIndex, 1);
87
+ await this.updateDriveManifest(parentId, manifest);
88
+ return true;
89
+ }
90
+ return false;
91
+ }
92
+ async getChildren(parentId) {
93
+ const manifest = await this.getManifest(parentId);
94
+ return manifest.documentIds;
95
+ }
43
96
  ////////////////////////////////
44
97
  // IDriveStorage
45
98
  ////////////////////////////////
46
99
  async getDocuments(drive) {
47
- const manifest = await this.getDriveManifest(drive);
100
+ const manifest = await this.getManifest(drive);
48
101
  return manifest.documentIds;
49
102
  }
50
103
  checkDocumentExists(drive, id) {
@@ -59,7 +112,7 @@ export class FilesystemStorage {
59
112
  encoding: "utf-8",
60
113
  });
61
114
  // Update the drive manifest to include this document
62
- const manifest = await this.getDriveManifest(drive);
115
+ const manifest = await this.getManifest(drive);
63
116
  if (!manifest.documentIds.includes(id)) {
64
117
  manifest.documentIds.push(id);
65
118
  await this.updateDriveManifest(drive, manifest);
@@ -77,7 +130,7 @@ export class FilesystemStorage {
77
130
  }
78
131
  async deleteDocument(drive, id) {
79
132
  // Update the drive manifest to remove this document
80
- const manifest = await this.getDriveManifest(drive);
133
+ const manifest = await this.getManifest(drive);
81
134
  const docIndex = manifest.documentIds.indexOf(id);
82
135
  if (docIndex !== -1) {
83
136
  manifest.documentIds.splice(docIndex, 1);
@@ -89,7 +142,7 @@ export class FilesystemStorage {
89
142
  for (const driveId of drives) {
90
143
  if (driveId === drive)
91
144
  continue;
92
- const otherManifest = await this.getDriveManifest(driveId);
145
+ const otherManifest = await this.getManifest(driveId);
93
146
  if (otherManifest.documentIds.includes(id)) {
94
147
  // Document still referenced by another drive, don't delete the file
95
148
  return Promise.resolve();
@@ -117,18 +170,16 @@ export class FilesystemStorage {
117
170
  // get anything that starts with drive-
118
171
  const files = await fs.readdir(this.basePath, { withFileTypes: true });
119
172
  return (files
120
- .filter((file) => file.name.startsWith("drive-"))
121
- // remove drive- prefix and extension
122
- .map((file) => file.name.replace("drive-", "").replace(".json", "")));
173
+ .filter((file) => file.name.startsWith("manifest-"))
174
+ // remove manifest- prefix and extension
175
+ .map((file) => file.name.replace("manifest-", "").replace(".json", "")));
123
176
  }
124
177
  async getDrive(id) {
125
178
  try {
126
- const content = readFileSync(this._buildDrivePath(id), {
127
- encoding: "utf-8",
128
- });
129
- return JSON.parse(content);
179
+ return await this.get(id);
130
180
  }
131
181
  catch (error) {
182
+ // preserve throwing a specialized error for drives
132
183
  throw new DriveNotFoundError(id);
133
184
  }
134
185
  }
@@ -144,10 +195,21 @@ export class FilesystemStorage {
144
195
  throw new Error(`Drive with slug ${slug} not found`);
145
196
  }
146
197
  async createDrive(id, drive) {
147
- const drivePath = this._buildDrivePath(id);
148
- writeFileSync(drivePath, stringify(drive), {
149
- encoding: "utf-8",
150
- });
198
+ // check if a drive with the same slug already exists
199
+ const slug = drive.initialState.state.global.slug;
200
+ if (slug) {
201
+ let existingDrive;
202
+ try {
203
+ existingDrive = await this.getDriveBySlug(slug);
204
+ }
205
+ catch {
206
+ // do nothing
207
+ }
208
+ if (existingDrive) {
209
+ throw new Error(`Drive with slug ${slug} already exists`);
210
+ }
211
+ }
212
+ await this.create(id, drive);
151
213
  // Initialize an empty manifest for the new drive
152
214
  await this.updateDriveManifest(id, { documentIds: [] });
153
215
  }
@@ -157,15 +219,13 @@ export class FilesystemStorage {
157
219
  // Delete each document from this drive (may not actually delete the file if shared with other drives)
158
220
  await Promise.all(documents.map((doc) => this.deleteDocument(id, doc)));
159
221
  // Delete the drive manifest and the drive itself
160
- await fs.rm(this._buildManifestPath(id)).catch(() => {
161
- /* ignore error if manifest doesn't exist */
162
- });
163
- await fs.rm(this._buildDrivePath(id));
222
+ await fs.rm(this._buildManifestPath(id));
223
+ await fs.rm(this._buildDocumentPath(id));
164
224
  }
165
225
  async addDriveOperations(id, operations, header) {
166
226
  const drive = await this.getDrive(id);
167
227
  const mergedOperations = mergeOperations(drive.operations, operations);
168
- const drivePath = this._buildDrivePath(id);
228
+ const drivePath = this._buildDocumentPath(id);
169
229
  writeFileSync(drivePath, stringify({
170
230
  ...drive,
171
231
  ...header,
@@ -177,16 +237,13 @@ export class FilesystemStorage {
177
237
  async getSynchronizationUnitsRevision(units) {
178
238
  const results = await Promise.allSettled(units.map(async (unit) => {
179
239
  try {
180
- const document = await (unit.documentId
181
- ? this.getDocument(unit.driveId, unit.documentId)
182
- : this.getDrive(unit.driveId));
240
+ const document = await this.get(unit.documentId);
183
241
  if (!document) {
184
242
  return undefined;
185
243
  }
186
244
  const operation = document.operations[unit.scope].at(-1);
187
245
  if (operation) {
188
246
  return {
189
- driveId: unit.driveId,
190
247
  documentId: unit.documentId,
191
248
  scope: unit.scope,
192
249
  branch: unit.branch,
@@ -212,13 +269,10 @@ export class FilesystemStorage {
212
269
  _buildDocumentPath(documentId) {
213
270
  return `${this.basePath}/document-${documentId}.json`;
214
271
  }
215
- _buildDrivePath(driveId) {
216
- return `${this.basePath}/drive-${driveId}.json`;
217
- }
218
272
  _buildManifestPath(driveId) {
219
273
  return `${this.basePath}/manifest-${driveId}.json`;
220
274
  }
221
- async getDriveManifest(driveId) {
275
+ async getManifest(driveId) {
222
276
  const manifestPath = this._buildManifestPath(driveId);
223
277
  try {
224
278
  const content = readFileSync(manifestPath, { encoding: "utf-8" });