@powersync/service-module-mongodb-storage 0.0.0-dev-20260602073133 → 0.0.0-dev-20260803144812

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 (239) hide show
  1. package/CHANGELOG.md +101 -5
  2. package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.d.ts +3 -0
  3. package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.js +41 -0
  4. package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.js.map +1 -0
  5. package/dist/storage/MongoBucketStorage.d.ts +41 -16
  6. package/dist/storage/MongoBucketStorage.js +226 -71
  7. package/dist/storage/MongoBucketStorage.js.map +1 -1
  8. package/dist/storage/implementation/MongoBucketBatch.d.ts +56 -25
  9. package/dist/storage/implementation/MongoBucketBatch.js +110 -62
  10. package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
  11. package/dist/storage/implementation/MongoChecksums.d.ts +41 -13
  12. package/dist/storage/implementation/MongoChecksums.js +36 -121
  13. package/dist/storage/implementation/MongoChecksums.js.map +1 -1
  14. package/dist/storage/implementation/MongoCompactor.d.ts +17 -19
  15. package/dist/storage/implementation/MongoCompactor.js +80 -263
  16. package/dist/storage/implementation/MongoCompactor.js.map +1 -1
  17. package/dist/storage/implementation/MongoHydrationState.d.ts +11 -0
  18. package/dist/storage/implementation/MongoHydrationState.js +49 -0
  19. package/dist/storage/implementation/MongoHydrationState.js.map +1 -0
  20. package/dist/storage/implementation/MongoParameterCompactor.d.ts +7 -6
  21. package/dist/storage/implementation/MongoParameterCompactor.js +25 -2
  22. package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
  23. package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +13 -0
  24. package/dist/storage/implementation/MongoParsedSyncConfigSet.js +64 -0
  25. package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -0
  26. package/dist/storage/implementation/MongoPersistedReplicationStream.d.ts +36 -0
  27. package/dist/storage/implementation/MongoPersistedReplicationStream.js +90 -0
  28. package/dist/storage/implementation/MongoPersistedReplicationStream.js.map +1 -0
  29. package/dist/storage/implementation/MongoPersistedSyncConfigContent.d.ts +25 -0
  30. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +123 -0
  31. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -0
  32. package/dist/storage/implementation/MongoStorageProvider.js +39 -4
  33. package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
  34. package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +57 -29
  35. package/dist/storage/implementation/MongoSyncBucketStorage.js +87 -61
  36. package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
  37. package/dist/storage/implementation/MongoSyncRulesLock.d.ts +1 -1
  38. package/dist/storage/implementation/MongoSyncRulesLock.js +3 -3
  39. package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
  40. package/dist/storage/implementation/MongoWriteCheckpointAPI.d.ts +2 -1
  41. package/dist/storage/implementation/MongoWriteCheckpointAPI.js +171 -24
  42. package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
  43. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.d.ts +8 -0
  44. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js +2 -0
  45. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js.map +1 -0
  46. package/dist/storage/implementation/common/PersistedBatch.d.ts +7 -2
  47. package/dist/storage/implementation/common/PersistedBatch.js +12 -0
  48. package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
  49. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +1 -1
  50. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
  51. package/dist/storage/implementation/createMongoSyncBucketStorage.d.ts +2 -2
  52. package/dist/storage/implementation/createMongoSyncBucketStorage.js +4 -4
  53. package/dist/storage/implementation/createMongoSyncBucketStorage.js.map +1 -1
  54. package/dist/storage/implementation/db.js +17 -15
  55. package/dist/storage/implementation/db.js.map +1 -1
  56. package/dist/storage/implementation/models.d.ts +20 -13
  57. package/dist/storage/implementation/models.js.map +1 -1
  58. package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +9 -1
  59. package/dist/storage/implementation/v1/MongoBucketBatchV1.js +61 -29
  60. package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
  61. package/dist/storage/implementation/v1/MongoChecksumsV1.d.ts +4 -4
  62. package/dist/storage/implementation/v1/MongoChecksumsV1.js +119 -7
  63. package/dist/storage/implementation/v1/MongoChecksumsV1.js.map +1 -1
  64. package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +11 -2
  65. package/dist/storage/implementation/v1/MongoCompactorV1.js +251 -2
  66. package/dist/storage/implementation/v1/MongoCompactorV1.js.map +1 -1
  67. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +18 -19
  68. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +82 -58
  69. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
  70. package/dist/storage/implementation/v1/SingleBucketStoreV1.d.ts +9 -10
  71. package/dist/storage/implementation/v1/SingleBucketStoreV1.js +2 -8
  72. package/dist/storage/implementation/v1/SingleBucketStoreV1.js.map +1 -1
  73. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.d.ts +2 -1
  74. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js +3 -0
  75. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js.map +1 -1
  76. package/dist/storage/implementation/v1/models.d.ts +10 -1
  77. package/dist/storage/implementation/v3/BucketDataContextV3.d.ts +13 -0
  78. package/dist/storage/implementation/v3/BucketDataContextV3.js +23 -0
  79. package/dist/storage/implementation/v3/BucketDataContextV3.js.map +1 -0
  80. package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +8 -4
  81. package/dist/storage/implementation/v3/MongoBucketBatchV3.js +309 -259
  82. package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
  83. package/dist/storage/implementation/v3/MongoChecksumsV3.d.ts +30 -9
  84. package/dist/storage/implementation/v3/MongoChecksumsV3.js +161 -20
  85. package/dist/storage/implementation/v3/MongoChecksumsV3.js.map +1 -1
  86. package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +40 -2
  87. package/dist/storage/implementation/v3/MongoCompactorV3.js +647 -23
  88. package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
  89. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +67 -0
  90. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +351 -0
  91. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -0
  92. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +45 -30
  93. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +272 -140
  94. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
  95. package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +6 -3
  96. package/dist/storage/implementation/v3/PersistedBatchV3.js +84 -21
  97. package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
  98. package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +3 -3
  99. package/dist/storage/implementation/v3/SourceRecordStoreV3.js +13 -11
  100. package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -1
  101. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +15 -13
  102. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +32 -27
  103. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
  104. package/dist/storage/implementation/v3/bucket-format.d.ts +13 -0
  105. package/dist/storage/implementation/v3/bucket-format.js +77 -0
  106. package/dist/storage/implementation/v3/bucket-format.js.map +1 -0
  107. package/dist/storage/implementation/v3/chunking.d.ts +10 -0
  108. package/dist/storage/implementation/v3/chunking.js +30 -0
  109. package/dist/storage/implementation/v3/chunking.js.map +1 -0
  110. package/dist/storage/implementation/v3/models.d.ts +101 -21
  111. package/dist/storage/implementation/v3/models.js +11 -28
  112. package/dist/storage/implementation/v3/models.js.map +1 -1
  113. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +21 -0
  114. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +44 -0
  115. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -0
  116. package/dist/storage/implementation/v3/object-storage/ObjectStorage.d.ts +30 -0
  117. package/dist/storage/implementation/v3/object-storage/ObjectStorage.js +12 -0
  118. package/dist/storage/implementation/v3/object-storage/ObjectStorage.js.map +1 -0
  119. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +70 -0
  120. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +146 -0
  121. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -0
  122. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.d.ts +42 -0
  123. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js +285 -0
  124. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js.map +1 -0
  125. package/dist/storage/implementation/v3/source-table-utils.d.ts +55 -0
  126. package/dist/storage/implementation/v3/source-table-utils.js +214 -0
  127. package/dist/storage/implementation/v3/source-table-utils.js.map +1 -0
  128. package/dist/storage/storage-index.d.ts +4 -4
  129. package/dist/storage/storage-index.js +4 -4
  130. package/dist/storage/storage-index.js.map +1 -1
  131. package/dist/types/types.d.ts +49 -3
  132. package/dist/types/types.js +48 -1
  133. package/dist/types/types.js.map +1 -1
  134. package/dist/utils/test-utils.d.ts +1 -2
  135. package/dist/utils/test-utils.js +7 -1
  136. package/dist/utils/test-utils.js.map +1 -1
  137. package/dist/utils/util.d.ts +9 -2
  138. package/dist/utils/util.js +128 -4
  139. package/dist/utils/util.js.map +1 -1
  140. package/package.json +12 -19
  141. package/src/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.ts +55 -0
  142. package/src/storage/MongoBucketStorage.ts +347 -88
  143. package/src/storage/implementation/MongoBucketBatch.ts +147 -82
  144. package/src/storage/implementation/MongoChecksums.ts +93 -153
  145. package/src/storage/implementation/MongoCompactor.ts +102 -316
  146. package/src/storage/implementation/MongoHydrationState.ts +61 -0
  147. package/src/storage/implementation/MongoParameterCompactor.ts +25 -6
  148. package/src/storage/implementation/MongoParsedSyncConfigSet.ts +88 -0
  149. package/src/storage/implementation/MongoPersistedReplicationStream.ts +118 -0
  150. package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +154 -0
  151. package/src/storage/implementation/MongoStorageProvider.ts +46 -4
  152. package/src/storage/implementation/MongoSyncBucketStorage.ts +121 -87
  153. package/src/storage/implementation/MongoSyncRulesLock.ts +7 -4
  154. package/src/storage/implementation/MongoWriteCheckpointAPI.ts +202 -28
  155. package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +9 -0
  156. package/src/storage/implementation/common/PersistedBatch.ts +19 -3
  157. package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +1 -1
  158. package/src/storage/implementation/createMongoSyncBucketStorage.ts +21 -7
  159. package/src/storage/implementation/db.ts +19 -20
  160. package/src/storage/implementation/models.ts +20 -14
  161. package/src/storage/implementation/v1/MongoBucketBatchV1.ts +75 -37
  162. package/src/storage/implementation/v1/MongoChecksumsV1.ts +154 -12
  163. package/src/storage/implementation/v1/MongoCompactorV1.ts +294 -9
  164. package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +142 -105
  165. package/src/storage/implementation/v1/SingleBucketStoreV1.ts +18 -27
  166. package/src/storage/implementation/v1/VersionedPowerSyncMongoV1.ts +11 -1
  167. package/src/storage/implementation/v1/models.ts +11 -1
  168. package/src/storage/implementation/v3/BucketDataContextV3.ts +32 -0
  169. package/src/storage/implementation/v3/MongoBucketBatchV3.ts +382 -321
  170. package/src/storage/implementation/v3/MongoChecksumsV3.ts +250 -32
  171. package/src/storage/implementation/v3/MongoCompactorV3.ts +847 -32
  172. package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +482 -0
  173. package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +359 -187
  174. package/src/storage/implementation/v3/PersistedBatchV3.ts +118 -37
  175. package/src/storage/implementation/v3/SourceRecordStoreV3.ts +12 -12
  176. package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +46 -36
  177. package/src/storage/implementation/v3/bucket-format.ts +97 -0
  178. package/src/storage/implementation/v3/chunking.ts +40 -0
  179. package/src/storage/implementation/v3/models.ts +132 -55
  180. package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +54 -0
  181. package/src/storage/implementation/v3/object-storage/ObjectStorage.ts +29 -0
  182. package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +171 -0
  183. package/src/storage/implementation/v3/object-storage/S3ObjectStorage.ts +343 -0
  184. package/src/storage/implementation/v3/source-table-utils.ts +392 -0
  185. package/src/storage/storage-index.ts +12 -4
  186. package/src/types/types.ts +58 -1
  187. package/src/utils/test-utils.ts +8 -3
  188. package/src/utils/util.ts +185 -6
  189. package/test/src/__snapshots__/storage.test.ts.snap +0 -75
  190. package/test/src/__snapshots__/storage_sync.test.ts.snap +35 -617
  191. package/test/src/cleanup-stopped-sync-configs.test.ts +671 -0
  192. package/test/src/helpers/MemoryObjectStorage.ts +53 -0
  193. package/test/src/helpers/s3TestFactory.ts +69 -0
  194. package/test/src/object_storage_lifecycle.test.ts +59 -0
  195. package/test/src/setup.ts +6 -1
  196. package/test/src/storage.test.ts +227 -13
  197. package/test/src/storage_compacting.test.ts +1951 -12
  198. package/test/src/storage_object_storage_inline_threshold.test.ts +116 -0
  199. package/test/src/storage_s3_checksums.test.ts +191 -0
  200. package/test/src/storage_s3_compaction_lifecycle.test.ts +417 -0
  201. package/test/src/storage_s3_reading.test.ts +526 -0
  202. package/test/src/storage_s3_writing.test.ts +135 -0
  203. package/test/src/storage_sync.test.ts +1180 -73
  204. package/test/src/storeCurrentData.test.ts +227 -0
  205. package/test/src/util.ts +2 -1
  206. package/tsconfig.json +1 -4
  207. package/tsconfig.tsbuildinfo +1 -1
  208. package/dist/storage/implementation/BucketDefinitionMapping.d.ts +0 -15
  209. package/dist/storage/implementation/BucketDefinitionMapping.js +0 -58
  210. package/dist/storage/implementation/BucketDefinitionMapping.js.map +0 -1
  211. package/dist/storage/implementation/MongoPersistedSyncRules.d.ts +0 -14
  212. package/dist/storage/implementation/MongoPersistedSyncRules.js +0 -67
  213. package/dist/storage/implementation/MongoPersistedSyncRules.js.map +0 -1
  214. package/dist/storage/implementation/MongoPersistedSyncRulesContent.d.ts +0 -29
  215. package/dist/storage/implementation/MongoPersistedSyncRulesContent.js +0 -76
  216. package/dist/storage/implementation/MongoPersistedSyncRulesContent.js.map +0 -1
  217. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.d.ts +0 -13
  218. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js +0 -2
  219. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js.map +0 -1
  220. package/dist/storage/implementation/common/SingleBucketStore.d.ts +0 -54
  221. package/dist/storage/implementation/common/SingleBucketStore.js +0 -3
  222. package/dist/storage/implementation/common/SingleBucketStore.js.map +0 -1
  223. package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +0 -9
  224. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +0 -18
  225. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +0 -1
  226. package/dist/storage/implementation/v3/MongoParameterLookupV3.d.ts +0 -4
  227. package/dist/storage/implementation/v3/MongoParameterLookupV3.js +0 -9
  228. package/dist/storage/implementation/v3/MongoParameterLookupV3.js.map +0 -1
  229. package/dist/storage/implementation/v3/SingleBucketStoreV3.d.ts +0 -18
  230. package/dist/storage/implementation/v3/SingleBucketStoreV3.js +0 -48
  231. package/dist/storage/implementation/v3/SingleBucketStoreV3.js.map +0 -1
  232. package/src/storage/implementation/BucketDefinitionMapping.ts +0 -75
  233. package/src/storage/implementation/MongoPersistedSyncRules.ts +0 -82
  234. package/src/storage/implementation/MongoPersistedSyncRulesContent.ts +0 -101
  235. package/src/storage/implementation/common/MongoSyncBucketStorageContext.ts +0 -15
  236. package/src/storage/implementation/common/SingleBucketStore.ts +0 -63
  237. package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +0 -24
  238. package/src/storage/implementation/v3/MongoParameterLookupV3.ts +0 -11
  239. package/src/storage/implementation/v3/SingleBucketStoreV3.ts +0 -68
@@ -1,55 +1,63 @@
1
- import { LEGACY_STORAGE_VERSION, storage } from '@powersync/service-core';
2
- import { DO_NOT_LOG, ErrorCode, ServiceError } from '@powersync/lib-services-framework';
1
+ import { LEGACY_STORAGE_VERSION, SingleSyncConfigBucketDefinitionMapping, storage } from '@powersync/service-core';
2
+ import { DO_NOT_LOG, ErrorCode, logger, ServiceError } from '@powersync/lib-services-framework';
3
3
  import { v4 as uuid } from 'uuid';
4
4
  import * as lib_mongo from '@powersync/lib-service-mongodb';
5
+ import { describeIncrementalSyncConfigUpdate, formatIncrementalSyncConfigUpdateLog, isCompatible } from '@powersync/service-core';
5
6
  import { ObjectId } from 'bson';
6
- import { generateSlotName } from '../utils/util.js';
7
- import { BucketDefinitionMapping } from './implementation/BucketDefinitionMapping.js';
7
+ import { DEFAULT_CLEAR_BATCH_THROTTLE_RATE } from '../types/types.js';
8
+ import { generateReplicationStreamName } from '../utils/util.js';
8
9
  import { createMongoSyncBucketStorage } from './implementation/createMongoSyncBucketStorage.js';
9
10
  import { getMongoStorageConfig } from './implementation/models.js';
10
- import { MongoPersistedSyncRulesContentV1, MongoPersistedSyncRulesContentV3 } from './implementation/MongoPersistedSyncRulesContent.js';
11
+ import { MongoPersistedReplicationStream } from './implementation/MongoPersistedReplicationStream.js';
11
12
  import { syncRuleStateUpdatePipeline } from './implementation/SyncRuleStateUpdate.js';
12
13
  export class MongoBucketStorage extends storage.BucketStorageFactory {
13
- internalOptions;
14
+ options;
14
15
  [DO_NOT_LOG] = true;
15
16
  client;
16
17
  session;
17
- // TODO: This is still Postgres specific and needs to be reworked
18
- slot_name_prefix;
18
+ replicationStreamNamePrefix;
19
19
  activeStorageCache;
20
20
  db;
21
- constructor(db, options, internalOptions) {
21
+ constructor(db, options) {
22
22
  super();
23
- this.internalOptions = internalOptions;
23
+ this.options = options;
24
24
  this.client = db.client;
25
25
  this.db = db;
26
26
  this.session = this.client.startSession();
27
- this.slot_name_prefix = options.slot_name_prefix;
27
+ this.replicationStreamNamePrefix = options.replicationStreamNamePrefix;
28
28
  }
29
29
  async [Symbol.asyncDispose]() {
30
30
  // No-op
31
31
  }
32
- getInstance(syncRules, options) {
33
- let { id, slot_name } = syncRules;
34
- if (typeof id == 'bigint') {
35
- id = Number(id);
32
+ getInstance(replicationStream, options) {
33
+ if (!(replicationStream instanceof MongoPersistedReplicationStream)) {
34
+ throw new Error(`Expected MongoPersistedReplicationStream`);
36
35
  }
37
- const storageConfig = syncRules.getStorageConfig();
38
- const storage = createMongoSyncBucketStorage(this, id, syncRules, slot_name, undefined, {
39
- ...this.internalOptions,
40
- storageConfig
36
+ let { replicationStreamId, replicationStreamName } = replicationStream;
37
+ if (typeof replicationStreamId == 'bigint') {
38
+ replicationStreamId = Number(replicationStreamId);
39
+ }
40
+ const storageConfig = replicationStream.getStorageConfig();
41
+ const syncRuleStorage = createMongoSyncBucketStorage(this, replicationStreamId, replicationStream, replicationStreamName, undefined, {
42
+ checksumOptions: this.options.checksumOptions,
43
+ readPreference: this.options.readPreference,
44
+ checksumCacheTtlMs: this.options.checksumCacheTtlMs,
45
+ storageConfig,
46
+ objectStorage: this.options.objectStorage,
47
+ inlineThresholdBytes: this.options.inlineThresholdBytes,
48
+ clearBatchThrottleRate: this.options.clearBatchThrottleRate ?? DEFAULT_CLEAR_BATCH_THROTTLE_RATE
41
49
  });
42
50
  if (!options?.skipLifecycleHooks) {
43
- this.iterateListeners((cb) => cb.syncStorageCreated?.(storage));
51
+ this.iterateListeners((cb) => cb.syncStorageCreated?.(syncRuleStorage));
44
52
  }
45
- storage.registerListener({
53
+ syncRuleStorage.registerListener({
46
54
  batchStarted: (batch) => {
47
55
  batch.registerListener({
48
56
  replicationEvent: (payload) => this.iterateListeners((cb) => cb.replicationEvent?.(payload))
49
57
  });
50
58
  }
51
59
  });
52
- return storage;
60
+ return syncRuleStorage;
53
61
  }
54
62
  async getSystemIdentifier() {
55
63
  const { setName: id } = await this.db.db.command({
@@ -63,35 +71,35 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
63
71
  type: lib_mongo.MONGO_CONNECTION_TYPE
64
72
  };
65
73
  }
66
- async restartReplication(sync_rules_group_id) {
67
- const next = await this.getNextSyncRulesContent();
68
- const active = await this.getActiveSyncRulesContent();
69
- if (next != null && next.id == sync_rules_group_id) {
74
+ async restartReplication(replicationStreamId) {
75
+ const next = await this.getDeployingSyncConfig();
76
+ const active = await this.getActiveSyncConfig();
77
+ if (next != null && next.content.replicationStreamId == replicationStreamId) {
70
78
  // We need to redo the "next" replication stream
71
- await this.updateSyncRules(next.asUpdateOptions());
79
+ await this.updateSyncRules(next.content.asUpdateOptions());
72
80
  // Pro-actively stop replicating
73
81
  await this.db.sync_rules.updateOne({
74
- _id: next.id,
82
+ _id: next.content.replicationStreamId,
75
83
  state: storage.SyncRuleState.PROCESSING
76
84
  }, syncRuleStateUpdatePipeline(storage.SyncRuleState.STOP));
77
85
  await this.db.notifyCheckpoint();
78
86
  }
79
- else if (next == null && active?.id == sync_rules_group_id) {
87
+ else if (next == null && active?.content.replicationStreamId == replicationStreamId) {
80
88
  // Slot removed for "active" replication stream, while there is no "next" one.
81
- await this.updateSyncRules(active.asUpdateOptions());
89
+ await this.updateSyncRules(active.content.asUpdateOptions());
82
90
  // In this case we keep the old one as active for clients, so that that existing clients
83
91
  // can still get the latest data while we replicate the new ones.
84
92
  // It will however not replicate anymore.
85
93
  await this.db.sync_rules.updateOne({
86
- _id: active.id,
94
+ _id: active.content.replicationStreamId,
87
95
  state: storage.SyncRuleState.ACTIVE
88
96
  }, syncRuleStateUpdatePipeline(storage.SyncRuleState.ERRORED));
89
97
  await this.db.notifyCheckpoint();
90
98
  }
91
- else if (next != null && active?.id == sync_rules_group_id) {
99
+ else if (next != null && active?.content.replicationStreamId == replicationStreamId) {
92
100
  // Already have next replication stream, but need to stop replicating the active one.
93
101
  await this.db.sync_rules.updateOne({
94
- _id: active.id,
102
+ _id: active.content.replicationStreamId,
95
103
  state: storage.SyncRuleState.ACTIVE
96
104
  }, syncRuleStateUpdatePipeline(storage.SyncRuleState.ERRORED));
97
105
  await this.db.notifyCheckpoint();
@@ -102,6 +110,31 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
102
110
  const versioned = this.db.versioned(storageConfig);
103
111
  const session = this.session;
104
112
  await session.withTransaction(async () => {
113
+ const active = await this.db.sync_rules.findOne({
114
+ state: storage.SyncRuleState.ACTIVE,
115
+ storage_version: storageVersion
116
+ }, { session, sort: { _id: -1 }, limit: 1 });
117
+ if (active != null) {
118
+ const existingConfigDocs = await this.loadSyncConfigDefinitions(versioned, active, session);
119
+ if (this.options.supportsMultipleSyncConfigs &&
120
+ isCompatible(existingConfigDocs.map((d) => d.serialized_plan ?? null), options.config, logger)) {
121
+ logger.info(`Using incremental reprocessing`);
122
+ await this.db.sync_rules.updateMany({
123
+ state: storage.SyncRuleState.PROCESSING
124
+ }, syncRuleStateUpdatePipeline(storage.SyncRuleState.STOP), { session });
125
+ await this.stopEmbeddedDeployingConfigs(active, session);
126
+ rules = await this.appendSyncConfigToStream({
127
+ versioned,
128
+ existing: active,
129
+ existingConfigDocs,
130
+ options,
131
+ storageVersion,
132
+ session
133
+ });
134
+ return;
135
+ }
136
+ await this.stopEmbeddedDeployingConfigs(active, session);
137
+ }
105
138
  // Only have a single replication stream with PROCESSING.
106
139
  await this.db.sync_rules.updateMany({
107
140
  state: storage.SyncRuleState.PROCESSING
@@ -118,8 +151,12 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
118
151
  session
119
152
  });
120
153
  const id = Number(id_doc.op_id);
121
- const slot_name = generateSlotName(this.slot_name_prefix, id);
122
- const mapping = BucketDefinitionMapping.fromParsedSyncRules(options.config.parsed);
154
+ const replicationStreamName = generateReplicationStreamName(this.replicationStreamNamePrefix, id);
155
+ const mapping = options.config.plan == null
156
+ ? // For legacy sync rules and streams, use the parsed config directly to create a mapping
157
+ SingleSyncConfigBucketDefinitionMapping.fromParsedSyncConfig(options.config.parsed)
158
+ : // For new sync streams, always use the serialized version
159
+ SingleSyncConfigBucketDefinitionMapping.constructIncrementalMappingFromSerializedPlans([], options.config.plan.plan, []);
123
160
  const syncConfigDoc = {
124
161
  _id: new ObjectId(),
125
162
  replication_stream_id: id,
@@ -137,7 +174,6 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
137
174
  {
138
175
  _id: syncConfigDoc._id,
139
176
  state: storage.SyncRuleState.PROCESSING,
140
- keepalive_op: null,
141
177
  last_checkpoint: null,
142
178
  last_checkpoint_lsn: null,
143
179
  no_checkpoint_before: null,
@@ -146,22 +182,126 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
146
182
  ],
147
183
  snapshot_lsn: undefined,
148
184
  state: storage.SyncRuleState.PROCESSING,
149
- slot_name: slot_name,
185
+ slot_name: replicationStreamName,
150
186
  last_checkpoint_ts: null,
151
187
  last_fatal_error: null,
152
188
  last_fatal_error_ts: null,
153
189
  last_keepalive_ts: null
154
190
  };
155
191
  await this.db.sync_rules.insertOne(doc, { session });
156
- await this.db.notifyCheckpoint();
157
- rules = new MongoPersistedSyncRulesContentV3(this.db, doc, syncConfigDoc);
192
+ rules = new MongoPersistedReplicationStream(this.db, doc, [syncConfigDoc]);
158
193
  if (options.lock) {
159
194
  // The lock is persisted on rules.current_lock
160
195
  await rules.lock(session);
161
196
  }
162
197
  });
198
+ // Notify only after the transaction has committed, so listeners cannot observe pre-commit state.
199
+ await this.db.notifyCheckpoint();
163
200
  return rules;
164
201
  }
202
+ async loadSyncConfigDefinitions(versioned, existing, session) {
203
+ const activeConfigIds = existing.sync_configs
204
+ .filter((config) => config.state == storage.SyncRuleState.ACTIVE)
205
+ .map((config) => config._id);
206
+ return versioned.syncConfigDefinitions
207
+ .find({
208
+ _id: { $in: activeConfigIds }
209
+ }, { session })
210
+ .toArray();
211
+ }
212
+ /**
213
+ * Load _all_ definition mappings for a replication stream - used as a base to generate new ids.
214
+ */
215
+ async loadHistoricalSyncConfigRuleMappings(versioned, replicationStreamId, session) {
216
+ return versioned.syncConfigDefinitions
217
+ .find({
218
+ replication_stream_id: replicationStreamId
219
+ }, {
220
+ session,
221
+ projection: {
222
+ rule_mapping: 1
223
+ }
224
+ })
225
+ .toArray();
226
+ }
227
+ async stopEmbeddedDeployingConfigs(existing, session) {
228
+ const deployingConfigs = existing.sync_configs
229
+ .filter((config) => config.state == storage.SyncRuleState.PROCESSING)
230
+ .map((config) => config._id);
231
+ if (deployingConfigs.length == 0) {
232
+ return;
233
+ }
234
+ await this.db.sync_rules.updateOne({
235
+ _id: existing._id,
236
+ 'sync_configs._id': { $in: deployingConfigs }
237
+ }, {
238
+ $set: {
239
+ 'sync_configs.$[config].state': storage.SyncRuleState.STOP
240
+ }
241
+ }, {
242
+ session,
243
+ arrayFilters: [{ 'config._id': { $in: deployingConfigs } }]
244
+ });
245
+ }
246
+ logIncrementalDefinitionChanges(changes) {
247
+ logger.info(`Incremental reprocessing sync config update:\n${formatIncrementalSyncConfigUpdateLog(changes)}`);
248
+ }
249
+ async appendSyncConfigToStream(options) {
250
+ const { versioned, existing, existingConfigDocs, options: updateOptions, storageVersion, session } = options;
251
+ const compatibleConfigs = existingConfigDocs.map((doc) => ({
252
+ plan: doc.serialized_plan.plan,
253
+ mapping: SingleSyncConfigBucketDefinitionMapping.fromPersistedMapping(doc.rule_mapping)
254
+ }));
255
+ const historicalRuleMappings = await this.loadHistoricalSyncConfigRuleMappings(versioned, existing._id, session);
256
+ const reservedMappings = historicalRuleMappings.map((doc) => SingleSyncConfigBucketDefinitionMapping.fromPersistedMapping(doc.rule_mapping));
257
+ const mappingResult = SingleSyncConfigBucketDefinitionMapping.constructIncrementalMappingWithChanges(compatibleConfigs, updateOptions.config.plan.plan, reservedMappings);
258
+ const mapping = mappingResult.mapping;
259
+ this.logIncrementalDefinitionChanges(describeIncrementalSyncConfigUpdate({
260
+ activeMappings: existingConfigDocs.map((doc) => SingleSyncConfigBucketDefinitionMapping.fromPersistedMapping(doc.rule_mapping)),
261
+ newMapping: mapping,
262
+ newSyncConfig: updateOptions.config.parsed,
263
+ mappingChanges: mappingResult.changes
264
+ }));
265
+ const syncConfigDoc = {
266
+ _id: new ObjectId(),
267
+ replication_stream_id: existing._id,
268
+ created_at: new Date(),
269
+ storage_version: storageVersion,
270
+ content: updateOptions.config.yaml,
271
+ serialized_plan: updateOptions.config.plan,
272
+ rule_mapping: mapping.serialize()
273
+ };
274
+ await versioned.syncConfigDefinitions.insertOne(syncConfigDoc, { session });
275
+ const syncConfigState = {
276
+ _id: syncConfigDoc._id,
277
+ state: storage.SyncRuleState.PROCESSING,
278
+ last_checkpoint: null,
279
+ last_checkpoint_lsn: null,
280
+ no_checkpoint_before: null,
281
+ snapshot_done: false
282
+ };
283
+ await this.db.sync_rules.updateOne({ _id: existing._id }, {
284
+ $push: {
285
+ sync_configs: syncConfigState
286
+ },
287
+ $set: {
288
+ last_fatal_error: null,
289
+ last_fatal_error_ts: null
290
+ }
291
+ }, { session });
292
+ const syncConfigStates = [
293
+ ...existing.sync_configs.filter((config) => config.state == storage.SyncRuleState.ACTIVE),
294
+ syncConfigState
295
+ ];
296
+ const stream = new MongoPersistedReplicationStream(this.db, {
297
+ ...existing,
298
+ sync_configs: syncConfigStates
299
+ }, [...existingConfigDocs, syncConfigDoc]);
300
+ // The stream already exists, so an active replication job may already hold the stream lock.
301
+ // Deployment only persists the appended sync config; replication job locking is handled by
302
+ // the replicator.
303
+ return stream;
304
+ }
165
305
  async updateSyncRules(options) {
166
306
  const storageVersion = options.storageVersion ?? options.config.parsed.config.storageVersion ?? storage.CURRENT_STORAGE_VERSION;
167
307
  const storageConfig = getMongoStorageConfig(storageVersion);
@@ -187,7 +327,7 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
187
327
  session
188
328
  });
189
329
  const id = Number(id_doc.op_id);
190
- const slot_name = generateSlotName(this.slot_name_prefix, id);
330
+ const slot_name = generateReplicationStreamName(this.replicationStreamNamePrefix, id);
191
331
  const doc = {
192
332
  _id: id,
193
333
  storage_version: storageVersion,
@@ -208,7 +348,7 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
208
348
  };
209
349
  await this.db.sync_rules.insertOne(doc, { session });
210
350
  await this.db.notifyCheckpoint();
211
- rules = new MongoPersistedSyncRulesContentV1(this.db, doc);
351
+ rules = new MongoPersistedReplicationStream(this.db, doc);
212
352
  if (options.lock) {
213
353
  // The lock is persisted on rules.current_lock
214
354
  await rules.lock(session);
@@ -216,77 +356,92 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
216
356
  });
217
357
  return rules;
218
358
  }
219
- async getActiveSyncRulesContent() {
359
+ async getActiveSyncConfig() {
220
360
  const doc = await this.db.sync_rules.findOne({
221
361
  state: { $in: [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED] }
222
362
  }, { sort: { _id: -1 }, limit: 1 });
223
- return this.getSyncRulesContent(doc, [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED]);
363
+ return this.resolvedSyncConfigFromDoc(doc, [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED], {
364
+ cacheActiveStorage: true
365
+ });
224
366
  }
225
- async getSyncRulesContent(doc, stateFilter) {
367
+ async replicationStreamFromDoc(doc, stateFilter) {
226
368
  if (doc == null) {
227
369
  return null;
228
370
  }
229
371
  const storageConfig = getMongoStorageConfig(doc.storage_version ?? LEGACY_STORAGE_VERSION);
230
372
  if (storageConfig.incrementalReprocessing) {
231
373
  const v3 = doc;
232
- const active = v3.sync_configs.find((c) => stateFilter.includes(c.state));
233
- if (active == null) {
374
+ const matching = v3.sync_configs.filter((c) => stateFilter.includes(c.state));
375
+ if (matching.length == 0) {
234
376
  return null;
235
377
  }
236
378
  // TODO: cache the config. It could specifically help for the main replication loop
237
379
  // that checks for active replication streams.
238
380
  // It is not a major bottleneck though, since it only runs once every couple of seconds at most.
239
381
  const db = this.db.versioned(storageConfig);
240
- const syncConfigDoc = await db.syncConfigDefinitions.findOne({ _id: active._id });
241
- if (syncConfigDoc == null) {
382
+ const syncConfigDocs = await db.syncConfigDefinitions
383
+ .find({
384
+ _id: { $in: matching.map((config) => config._id) }
385
+ })
386
+ .toArray();
387
+ if (syncConfigDocs.length == 0) {
242
388
  return null;
243
389
  }
244
- return new MongoPersistedSyncRulesContentV3(this.db, v3, syncConfigDoc);
390
+ return new MongoPersistedReplicationStream(this.db, v3, syncConfigDocs);
245
391
  }
246
- return new MongoPersistedSyncRulesContentV1(this.db, doc);
392
+ return new MongoPersistedReplicationStream(this.db, doc);
247
393
  }
248
- async getNextSyncRulesContent() {
394
+ async getDeployingSyncConfig() {
249
395
  const doc = await this.db.sync_rules.findOne({
250
- state: storage.SyncRuleState.PROCESSING
396
+ $or: [{ state: storage.SyncRuleState.PROCESSING }, { 'sync_configs.state': storage.SyncRuleState.PROCESSING }]
251
397
  }, { sort: { _id: -1 }, limit: 1 });
252
- return this.getSyncRulesContent(doc, [storage.SyncRuleState.PROCESSING]);
398
+ return this.resolvedSyncConfigFromDoc(doc, [storage.SyncRuleState.PROCESSING]);
253
399
  }
254
- async getReplicatingSyncRules() {
400
+ async getReplicatingReplicationStreams() {
255
401
  const docs = await this.db.sync_rules
256
402
  .find({
257
403
  state: { $in: [storage.SyncRuleState.PROCESSING, storage.SyncRuleState.ACTIVE] }
258
404
  })
259
405
  .toArray();
260
406
  return (await Promise.all(docs.map((doc) => {
261
- return this.getSyncRulesContent(doc, [storage.SyncRuleState.PROCESSING, storage.SyncRuleState.ACTIVE]);
407
+ return this.replicationStreamFromDoc(doc, [storage.SyncRuleState.PROCESSING, storage.SyncRuleState.ACTIVE]);
262
408
  }))).filter((r) => r != null);
263
409
  }
264
- async getStoppedSyncRules() {
410
+ async getStoppedReplicationStreams() {
265
411
  const docs = await this.db.sync_rules
266
412
  .find({
267
413
  state: storage.SyncRuleState.STOP
268
414
  })
269
415
  .toArray();
270
416
  return (await Promise.all(docs.map((doc) => {
271
- return this.getSyncRulesContent(doc, [storage.SyncRuleState.STOP]);
417
+ return this.replicationStreamFromDoc(doc, [storage.SyncRuleState.STOP]);
272
418
  }))).filter((d) => d != null);
273
419
  }
274
- async getActiveStorage() {
275
- const content = await this.getActiveSyncRulesContent();
276
- if (content == null) {
420
+ async resolvedSyncConfigFromDoc(doc, stateFilter, options = {}) {
421
+ const stream = await this.replicationStreamFromDoc(doc, stateFilter);
422
+ if (stream == null) {
277
423
  return null;
278
424
  }
279
- // It is important that this instance is cached.
280
- // Not for the instance construction itself, but to ensure that internal caches on the instance
281
- // are re-used properly.
282
- if (this.activeStorageCache?.group_id == content.id) {
283
- return this.activeStorageCache;
284
- }
285
- else {
286
- const instance = this.getInstance(content);
287
- this.activeStorageCache = instance;
288
- return instance;
289
- }
425
+ const content = stream.syncConfigContent[0];
426
+ const thisFactory = this;
427
+ return {
428
+ content,
429
+ replicationStream: stream,
430
+ get storage() {
431
+ // It is important that this instance is cached.
432
+ // Not for the instance construction itself, but to ensure that internal caches on the instance
433
+ // are re-used properly.
434
+ if (options.cacheActiveStorage &&
435
+ thisFactory.activeStorageCache?.replicationStream.replicationJobId == stream.replicationJobId) {
436
+ return thisFactory.activeStorageCache;
437
+ }
438
+ const instance = thisFactory.getInstance(stream);
439
+ if (options.cacheActiveStorage) {
440
+ thisFactory.activeStorageCache = instance;
441
+ }
442
+ return instance;
443
+ }
444
+ };
290
445
  }
291
446
  async getStorageMetrics() {
292
447
  const ignoreNotExisting = (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"MongoBucketStorage.js","sourceRoot":"","sources":["../../src/storage/MongoBucketStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,sBAAsB,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAEtF,OAAO,EAAE,4BAA4B,EAAE,MAAM,kDAAkD,CAAC;AAEhG,OAAO,EAAE,qBAAqB,EAAuC,MAAM,4BAA4B,CAAC;AAExG,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EACjC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAStF,MAAM,OAAO,kBAAmB,SAAQ,OAAO,CAAC,oBAAoB;IAiBxD;IAhBV,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAEH,MAAM,CAAoB;IAC1B,OAAO,CAAsB;IAC9C,iEAAiE;IACjD,gBAAgB,CAAS;IAEjC,kBAAkB,CAAqC;IAE/C,EAAE,CAAiB;IAEnC,YACE,EAAkB,EAClB,OAEC,EACO,eAA2C;QAEnD,KAAK,EAAE,CAAC;QAFA,oBAAe,GAAf,eAAe,CAA4B;QAGnD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC1C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,QAAQ;IACV,CAAC;IAED,WAAW,CAAC,SAA4C,EAAE,OAA2B;QACnF,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;QAClC,IAAK,OAAO,EAAU,IAAI,QAAQ,EAAE,CAAC;YACnC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,aAAa,GAAI,SAA8C,CAAC,gBAAgB,EAAE,CAAC;QACzF,MAAM,OAAO,GAAG,4BAA4B,CAC1C,IAAI,EACJ,EAAE,EACF,SAA6C,EAC7C,SAAS,EACT,SAAS,EACT;YACE,GAAG,IAAI,CAAC,eAAe;YACvB,aAAa;SACd,CACF,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,CAAC,gBAAgB,CAAC;YACvB,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;gBACtB,KAAK,CAAC,gBAAgB,CAAC;oBACrB,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC;iBAC7F,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;YAC/C,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CACpB,SAAS,CAAC,WAAW,EACrB,oEAAoE,CACrE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,EAAE;YACF,IAAI,EAAE,SAAS,CAAC,qBAAqB;SACtC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,mBAA2B;QAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEtD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,mBAAmB,EAAE,CAAC;YACnD,gDAAgD;YAChD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YACnD,gCAAgC;YAChC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAChC;gBACE,GAAG,EAAE,IAAI,CAAC,EAAE;gBACZ,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU;aACxC,EACD,2BAA2B,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CACxD,CAAC;YACF,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,mBAAmB,EAAE,CAAC;YAC7D,8EAA8E;YAC9E,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;YAErD,wFAAwF;YACxF,iEAAiE;YACjE,yCAAyC;YAEzC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAChC;gBACE,GAAG,EAAE,MAAM,CAAC,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;aACpC,EACD,2BAA2B,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAC3D,CAAC;YACF,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,mBAAmB,EAAE,CAAC;YAC7D,qFAAqF;YAErF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAChC;gBACE,GAAG,EAAE,MAAM,CAAC,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;aACpC,EACD,2BAA2B,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAC3D,CAAC;YACF,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,OAAuC,EACvC,cAAsB,EACtB,aAA4B;QAE5B,IAAI,KAAK,GAAiD,SAAS,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAA8B,CAAC;QAEhF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YACvC,yDAAyD;YACzD,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CACjC;gBACE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU;aACxC,EACD,2BAA2B,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EACvD,EAAE,OAAO,EAAE,CACZ,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAC1D;gBACE,GAAG,EAAE,YAAY;aAClB,EACD;gBACE,IAAI,EAAE;oBACJ,KAAK,EAAE,EAAE;iBACV;aACF,EACD;gBACE,MAAM,EAAE,IAAI;gBACZ,cAAc,EAAE,OAAO;gBACvB,OAAO;aACR,CACF,CAAC;YAEF,MAAM,EAAE,GAAG,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAE9D,MAAM,OAAO,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnF,MAAM,aAAa,GAAyB;gBAC1C,GAAG,EAAE,IAAI,QAAQ,EAAE;gBACnB,qBAAqB,EAAE,EAAE;gBACzB,UAAU,EAAE,IAAI,IAAI,EAAE;gBACtB,eAAe,EAAE,cAAc;gBAC/B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;gBAC5B,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;gBACpC,YAAY,EAAE,OAAO,CAAC,SAAS,EAAE;aAClC,CAAC;YACF,MAAM,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAE5E,MAAM,GAAG,GAAgC;gBACvC,GAAG,EAAE,EAAE;gBACP,eAAe,EAAE,cAAc;gBAC/B,YAAY,EAAE;oBACZ;wBACE,GAAG,EAAE,aAAa,CAAC,GAAG;wBACtB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU;wBACvC,YAAY,EAAE,IAAI;wBAClB,eAAe,EAAE,IAAI;wBACrB,mBAAmB,EAAE,IAAI;wBACzB,oBAAoB,EAAE,IAAI;wBAC1B,aAAa,EAAE,KAAK;qBACrB;iBACF;gBACD,YAAY,EAAE,SAAS;gBACvB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU;gBACvC,SAAS,EAAE,SAAS;gBACpB,kBAAkB,EAAE,IAAI;gBACxB,gBAAgB,EAAE,IAAI;gBACtB,mBAAmB,EAAE,IAAI;gBACzB,iBAAiB,EAAE,IAAI;aACxB,CAAC;YAEF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,gCAAgC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;YAC1E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,8CAA8C;gBAC9C,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,OAAuC;QAEvC,MAAM,cAAc,GAClB,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,uBAAuB,CAAC;QAE3G,MAAM,aAAa,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,aAAa,CAAC,uBAAuB,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,KAAK,GAAiD,SAAS,CAAC;QAEpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YACvC,yDAAyD;YACzD,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CACjC;gBACE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU;aACxC,EACD,2BAA2B,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EACvD,EAAE,OAAO,EAAE,CACZ,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAC1D;gBACE,GAAG,EAAE,YAAY;aAClB,EACD;gBACE,IAAI,EAAE;oBACJ,KAAK,EAAE,EAAE;iBACV;aACF,EACD;gBACE,MAAM,EAAE,IAAI;gBACZ,cAAc,EAAE,OAAO;gBACvB,OAAO;aACR,CACF,CAAC;YAEF,MAAM,EAAE,GAAG,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAE9D,MAAM,GAAG,GAAuB;gBAC9B,GAAG,EAAE,EAAE;gBACP,eAAe,EAAE,cAAc;gBAC/B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;gBAC5B,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;gBACpC,eAAe,EAAE,IAAI;gBACrB,mBAAmB,EAAE,IAAI;gBACzB,oBAAoB,EAAE,IAAI;gBAC1B,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,KAAK;gBACpB,YAAY,EAAE,SAAS;gBACvB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU;gBACvC,SAAS,EAAE,SAAS;gBACpB,kBAAkB,EAAE,IAAI;gBACxB,gBAAgB,EAAE,IAAI;gBACtB,mBAAmB,EAAE,IAAI;gBACzB,iBAAiB,EAAE,IAAI;aACxB,CAAC;YAEF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,gCAAgC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,8CAA8C;gBAC9C,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,yBAAyB;QAG7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAC1C;YACE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;SAC9E,EACD,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAChC,CAAC;QAEF,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACtG,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,GAAgC,EAAE,WAAoC;QACtG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,eAAe,IAAI,sBAAsB,CAAC,CAAC;QAE3F,IAAI,aAAa,CAAC,uBAAuB,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,GAAkC,CAAC;YAC9C,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,mFAAmF;YACnF,8CAA8C;YAC9C,gGAAgG;YAChG,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAA8B,CAAC;YACzE,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAClF,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,gCAAgC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAI,gCAAgC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAyB,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAC1C;YACE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU;SACxC,EACD,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAChC,CAAC;QAEF,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU;aAClC,IAAI,CAAC;YACJ,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;SACjF,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACzG,CAAC,CAAC,CACH,CACF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU;aAClC,IAAI,CAAC;YACJ,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI;SAClC,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CACH,CACF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACvD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gDAAgD;QAChD,+FAA+F;QAC/F,wBAAwB;QACxB,IAAI,IAAI,CAAC,kBAAkB,EAAE,QAAQ,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;YACnC,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,iBAAiB,GAAG,CAAC,CAAU,EAAE,EAAE;YACvC,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,mBAAmB,EAAE,CAAC;gBACzE,sCAAsC;gBACtC,OAAO,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEF,kEAAkE;QAClE,2HAA2H;QAE3H,MAAM,yBAAyB,GAAG,KAAK,EAA4B,UAA+B,EAAE,EAAE;YACpG,6FAA6F;YAC7F,wEAAwE;YACxE,MAAM,MAAM,GACV,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM;gBAC5G,CAAC,CAAC;YACJ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,UAAU;iBACd,SAAS,CAAC;gBACT;oBACE,UAAU,EAAE;wBACV,YAAY,EAAE,EAAE;qBACjB;iBACF;aACF,CAAC;iBACD,OAAO,EAAE;iBACT,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,MAAM,oBAAoB,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAClF,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/C,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAC/D,UAAU;aACP,SAAS,CAAC;YACT;gBACE,UAAU,EAAE;oBACV,YAAY,EAAE,EAAE;iBACjB;aACF;SACF,CAAC;aACD,OAAO,EAAE;aACT,KAAK,CAAC,iBAAiB,CAAC,CAC5B,CACF,CAAC;QAEF,MAAM,oBAAoB,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAExF,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/C,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,kCAAkC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACtE,UAAU;aACP,SAAS,CAAC;YACT;gBACE,UAAU,EAAE;oBACV,YAAY,EAAE,EAAE;iBACjB;aACF;SACF,CAAC;aACD,OAAO,EAAE;aACT,KAAK,CAAC,iBAAiB,CAAC,CAC5B,CACF,CAAC;QAEF,MAAM,0BAA0B,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAEzF,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,GAAG,CAChD,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,gCAAgC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACpE,UAAU;aACP,SAAS,CAAC;YACT;gBACE,UAAU,EAAE;oBACV,YAAY,EAAE,EAAE;iBACjB;aACF;SACF,CAAC;aACD,OAAO,EAAE;aACT,KAAK,CAAC,iBAAiB,CAAC,CAC5B,CACF,CAAC;QACF,OAAO;YACL,qBAAqB,EACnB,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;gBACjD,uBAAuB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzG,qBAAqB,EACnB,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;gBACjD,uBAAuB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzG,sBAAsB,EACpB,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC;gBAC9D,wBAAwB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;SAClH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC5C,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBACnD,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK;gBACzB,IAAI,EAAE,4BAA4B;aACnC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC5B,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC/B,GAAG,EAAE,IAAI,EAAE;iBACZ,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACxC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aACvB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAS,CAAC,GAAG,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"MongoBucketStorage.js","sourceRoot":"","sources":["../../src/storage/MongoBucketStorage.ts"],"names":[],"mappings":"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"}