@connecttomahdi/rxdb 17.1.0 → 17.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/cjs/plugins/storage-dexie/rx-storage-instance-dexie.js +10 -10
  2. package/dist/cjs/plugins/storage-dexie/rx-storage-instance-dexie.js.map +1 -1
  3. package/dist/cjs/plugins/utils/utils-premium.js +4 -4
  4. package/dist/cjs/plugins/utils/utils-premium.js.map +1 -1
  5. package/dist/esm/package.json +1 -0
  6. package/dist/esm/plugins/storage-dexie/rx-storage-instance-dexie.js +10 -10
  7. package/dist/esm/plugins/storage-dexie/rx-storage-instance-dexie.js.map +1 -1
  8. package/dist/esm/plugins/utils/utils-premium.js +4 -4
  9. package/dist/esm/plugins/utils/utils-premium.js.map +1 -1
  10. package/dist/types/index.d.ts +26 -25
  11. package/dist/types/types/conflict-handling.d.ts +48 -0
  12. package/dist/types/types/couchdb.d.ts +293 -0
  13. package/dist/types/types/index.d.ts +32 -0
  14. package/dist/types/types/modules/index.d.ts +0 -0
  15. package/dist/types/types/modules/mocha.parallel.d.ts +1 -0
  16. package/dist/types/types/plugins/backup.d.ts +35 -0
  17. package/dist/types/types/plugins/cleanup.d.ts +38 -0
  18. package/dist/types/types/plugins/crdt.d.ts +76 -0
  19. package/dist/types/types/plugins/dexie.d.ts +30 -0
  20. package/dist/types/types/plugins/local-documents.d.ts +49 -0
  21. package/dist/types/types/plugins/migration.d.ts +14 -0
  22. package/dist/types/types/plugins/reactivity.d.ts +40 -0
  23. package/dist/types/types/plugins/replication-graphql.d.ts +98 -0
  24. package/dist/types/types/plugins/replication.d.ts +175 -0
  25. package/dist/types/types/plugins/state.d.ts +4 -0
  26. package/dist/types/types/plugins/update.d.ts +23 -0
  27. package/dist/types/types/plugins/webmcp.d.ts +40 -0
  28. package/dist/types/types/query-planner.d.ts +47 -0
  29. package/dist/types/types/replication-protocol.d.ts +296 -0
  30. package/dist/types/types/rx-attachment.d.ts +46 -0
  31. package/dist/types/types/rx-change-event.d.ts +85 -0
  32. package/dist/types/types/rx-collection.d.ts +117 -0
  33. package/dist/types/types/rx-database-internal-store.d.ts +54 -0
  34. package/dist/types/types/rx-database.d.ts +124 -0
  35. package/dist/types/types/rx-document.d.ts +160 -0
  36. package/dist/types/types/rx-error.d.ts +225 -0
  37. package/dist/types/types/rx-plugin.d.ts +167 -0
  38. package/dist/types/types/rx-query.d.ts +144 -0
  39. package/dist/types/types/rx-schema.d.ts +214 -0
  40. package/dist/types/types/rx-storage.d.ts +347 -0
  41. package/dist/types/types/rx-storage.interface.d.ts +312 -0
  42. package/dist/types/types/util.d.ts +180 -0
  43. package/package.json +732 -732
  44. package/scripts/copy-path.mjs +20 -0
  45. package/scripts/fix-types.mjs +15 -8
@@ -32,9 +32,9 @@ var RxStorageInstanceDexie = exports.RxStorageInstanceDexie = /*#__PURE__*/funct
32
32
  _proto.bulkWrite = async function bulkWrite(documentWrites, context) {
33
33
  ensureNotClosed(this);
34
34
 
35
- /**
36
- * Check some assumptions to ensure RxDB
37
- * does not call the storage with an invalid write.
35
+ /**
36
+ * Check some assumptions to ensure RxDB
37
+ * does not call the storage with an invalid write.
38
38
  */
39
39
  documentWrites.forEach(row => {
40
40
  // ensure revision is set
@@ -51,10 +51,10 @@ var RxStorageInstanceDexie = exports.RxStorageInstanceDexie = /*#__PURE__*/funct
51
51
  error: []
52
52
  };
53
53
 
54
- /**
55
- * Some storages might add any _meta fields
56
- * internally. To ensure RxDB can work with that in the
57
- * test suite, we add a random field here.
54
+ /**
55
+ * Some storages might add any _meta fields
56
+ * internally. To ensure RxDB can work with that in the
57
+ * test suite, we add a random field here.
58
58
  */
59
59
  if (this.devMode) {
60
60
  documentWrites = documentWrites.map(row => {
@@ -80,9 +80,9 @@ var RxStorageInstanceDexie = exports.RxStorageInstanceDexie = /*#__PURE__*/funct
80
80
  categorized = (0, _rxStorageHelper.categorizeBulkWriteRows)(this, this.primaryPath, docsInDbMap, documentWrites, context);
81
81
  ret.error = categorized.errors;
82
82
 
83
- /**
84
- * Batch up the database operations
85
- * so we can later run them in bulk.
83
+ /**
84
+ * Batch up the database operations
85
+ * so we can later run them in bulk.
86
86
  */
87
87
  var bulkPutDocs = [];
88
88
  categorized.bulkInsertDocs.forEach(row => {
@@ -1 +1 @@
1
- {"version":3,"file":"rx-storage-instance-dexie.js","names":["_rxjs","require","_index","_dexieHelper","_dexieQuery","_rxSchemaHelper","_rxStorageHelper","_rxStorageMultiinstance","_rxError","instanceId","now","RxStorageInstanceDexie","exports","storage","databaseName","collectionName","schema","internals","options","settings","devMode","changes$","Subject","primaryPath","getPrimaryFieldOfPrimaryKey","primaryKey","_proto","prototype","bulkWrite","documentWrites","context","ensureNotClosed","forEach","row","document","_rev","previous","newRxError","args","state","ret","error","map","doc","flatCloneDocWithMeta","documentKeys","writeRow","categorized","dexieDb","transaction","dexieTable","dexieAttachmentsTable","docsInDbMap","Map","docsInDbWithInternals","getDocsInDb","docWithDexieInternals","set","categorizeBulkWriteRows","errors","bulkPutDocs","bulkInsertDocs","push","bulkUpdateDocs","d","fromStorageToDexie","booleanIndexes","length","bulkPut","putAttachments","attachmentsAdd","attachment","id","attachmentObjectId","documentId","attachmentId","data","attachmentData","attachmentsUpdate","bulkDelete","attachmentsRemove","ensureNotFalsy","eventBulk","events","lastState","newestRow","checkpoint","lwt","_meta","next","findDocumentsById","ids","deleted","docsInDb","documentInDb","_deleted","query","preparedQuery","dexieQuery","count","queryPlan","selectorSatisfiedByIndex","result","dexieCount","mode","documents","changeStream","asObservable","cleanup","minimumDeletedTime","maxDeletionTime","toRemove","where","below","toArray","removeIds","getAttachmentData","_digest","get","Error","remove","clear","close","closed","complete","closeDexieDb","createDexieStorageInstance","params","getDexieDbWithTables","instance","addRxStorageMultiInstanceSupport","RX_STORAGE_NAME_DEXIE","Promise","resolve"],"sources":["../../../../src/plugins/storage-dexie/rx-storage-instance-dexie.ts"],"sourcesContent":["import {\n Subject,\n Observable\n} from 'rxjs';\nimport {\n now,\n ensureNotFalsy,\n} from '../utils/index.ts';\nimport type {\n RxStorageInstance,\n RxStorageChangeEvent,\n RxDocumentData,\n BulkWriteRow,\n RxStorageBulkWriteResponse,\n RxStorageQueryResult,\n RxJsonSchema,\n RxStorageInstanceCreationParams,\n EventBulk,\n StringKeys,\n RxStorageDefaultCheckpoint,\n CategorizeBulkWriteRowsOutput,\n RxStorageCountResult,\n PreparedQuery\n} from '../../types/index.d.ts';\nimport type {\n DexieSettings,\n DexieStorageInternals\n} from '../../types/plugins/dexie.d.ts';\nimport { RxStorageDexie } from './rx-storage-dexie.ts';\nimport {\n attachmentObjectId,\n closeDexieDb,\n fromStorageToDexie,\n getDexieDbWithTables,\n getDocsInDb,\n RX_STORAGE_NAME_DEXIE\n} from './dexie-helper.ts';\nimport { dexieCount, dexieQuery } from './dexie-query.ts';\nimport { getPrimaryFieldOfPrimaryKey } from '../../rx-schema-helper.ts';\nimport { categorizeBulkWriteRows, flatCloneDocWithMeta } from '../../rx-storage-helper.ts';\nimport { addRxStorageMultiInstanceSupport } from '../../rx-storage-multiinstance.ts';\nimport { newRxError } from '../../rx-error.ts';\n\nlet instanceId = now();\n\n\nexport class RxStorageInstanceDexie<RxDocType> implements RxStorageInstance<\n RxDocType,\n DexieStorageInternals,\n DexieSettings,\n RxStorageDefaultCheckpoint\n> {\n public readonly primaryPath: StringKeys<RxDocumentData<RxDocType>>;\n private changes$: Subject<EventBulk<RxStorageChangeEvent<RxDocumentData<RxDocType>>, RxStorageDefaultCheckpoint>> = new Subject();\n public readonly instanceId = instanceId++;\n public closed?: Promise<void>;\n\n constructor(\n public readonly storage: RxStorageDexie,\n public readonly databaseName: string,\n public readonly collectionName: string,\n public readonly schema: Readonly<RxJsonSchema<RxDocumentData<RxDocType>>>,\n public readonly internals: DexieStorageInternals,\n public readonly options: Readonly<DexieSettings>,\n public readonly settings: DexieSettings,\n public readonly devMode: boolean\n ) {\n this.primaryPath = getPrimaryFieldOfPrimaryKey(this.schema.primaryKey);\n }\n\n async bulkWrite(\n documentWrites: BulkWriteRow<RxDocType>[],\n context: string\n ): Promise<RxStorageBulkWriteResponse<RxDocType>> {\n ensureNotClosed(this);\n\n /**\n * Check some assumptions to ensure RxDB\n * does not call the storage with an invalid write.\n */\n documentWrites.forEach(row => {\n // ensure revision is set\n if (\n !row.document._rev ||\n (\n row.previous &&\n !row.previous._rev\n )\n ) {\n throw newRxError('SNH', { args: { row } });\n }\n });\n\n const state = await this.internals;\n const ret: RxStorageBulkWriteResponse<RxDocType> = {\n error: []\n };\n\n /**\n * Some storages might add any _meta fields\n * internally. To ensure RxDB can work with that in the\n * test suite, we add a random field here.\n */\n if (this.devMode) {\n documentWrites = documentWrites.map(row => {\n const doc = flatCloneDocWithMeta(row.document);\n return {\n previous: row.previous,\n document: doc\n }\n })\n }\n\n\n const documentKeys: string[] = documentWrites.map(writeRow => writeRow.document[this.primaryPath] as any);\n let categorized: CategorizeBulkWriteRowsOutput<RxDocType> | undefined;\n await state.dexieDb.transaction(\n 'rw',\n state.dexieTable,\n state.dexieAttachmentsTable,\n async () => {\n const docsInDbMap = new Map<string, RxDocumentData<RxDocType>>();\n const docsInDbWithInternals = await getDocsInDb<RxDocType>(this.internals, documentKeys);\n docsInDbWithInternals.forEach(docWithDexieInternals => {\n const doc = docWithDexieInternals;\n if (doc) {\n docsInDbMap.set((doc as any)[this.primaryPath], doc as any);\n }\n return doc;\n });\n\n categorized = categorizeBulkWriteRows<RxDocType>(\n this,\n this.primaryPath as any,\n docsInDbMap,\n documentWrites,\n context\n );\n ret.error = categorized.errors;\n\n /**\n * Batch up the database operations\n * so we can later run them in bulk.\n */\n let bulkPutDocs: any[] = [];\n categorized.bulkInsertDocs.forEach(row => {\n bulkPutDocs.push(row.document);\n });\n categorized.bulkUpdateDocs.forEach(row => {\n bulkPutDocs.push(row.document);\n });\n bulkPutDocs = bulkPutDocs.map(d => fromStorageToDexie(state.booleanIndexes, d));\n\n if (bulkPutDocs.length > 0) {\n await state.dexieTable.bulkPut(bulkPutDocs);\n }\n\n // handle attachments\n const putAttachments: { id: string, data: Blob }[] = [];\n categorized.attachmentsAdd.forEach(attachment => {\n putAttachments.push({\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\n data: attachment.attachmentData.data\n });\n });\n categorized.attachmentsUpdate.forEach(attachment => {\n putAttachments.push({\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\n data: attachment.attachmentData.data\n });\n });\n await state.dexieAttachmentsTable.bulkPut(putAttachments);\n await state.dexieAttachmentsTable.bulkDelete(\n categorized.attachmentsRemove.map(attachment => attachmentObjectId(attachment.documentId, attachment.attachmentId))\n );\n\n });\n\n categorized = ensureNotFalsy(categorized);\n if (categorized.eventBulk.events.length > 0) {\n const lastState = ensureNotFalsy(categorized.newestRow).document;\n categorized.eventBulk.checkpoint = {\n id: lastState[this.primaryPath],\n lwt: lastState._meta.lwt\n };\n this.changes$.next(categorized.eventBulk);\n }\n\n return ret;\n }\n\n async findDocumentsById(\n ids: string[],\n deleted: boolean\n ): Promise<RxDocumentData<RxDocType>[]> {\n ensureNotClosed(this);\n const state = await this.internals;\n const ret: RxDocumentData<RxDocType>[] = [];\n\n await state.dexieDb.transaction(\n 'r',\n state.dexieTable,\n async () => {\n const docsInDb = await getDocsInDb<RxDocType>(this.internals, ids);\n docsInDb.forEach(documentInDb => {\n if (\n documentInDb &&\n (!documentInDb._deleted || deleted)\n ) {\n ret.push(documentInDb);\n }\n });\n });\n return ret;\n }\n\n query(preparedQuery: PreparedQuery<RxDocType>): Promise<RxStorageQueryResult<RxDocType>> {\n ensureNotClosed(this);\n return dexieQuery(\n this,\n preparedQuery\n );\n }\n async count(\n preparedQuery: PreparedQuery<RxDocType>\n ): Promise<RxStorageCountResult> {\n if (preparedQuery.queryPlan.selectorSatisfiedByIndex) {\n const result = await dexieCount(this, preparedQuery);\n return {\n count: result,\n mode: 'fast'\n };\n } else {\n const result = await dexieQuery(this, preparedQuery);\n return {\n count: result.documents.length,\n mode: 'slow'\n };\n }\n }\n\n changeStream(): Observable<EventBulk<RxStorageChangeEvent<RxDocumentData<RxDocType>>, RxStorageDefaultCheckpoint>> {\n ensureNotClosed(this);\n return this.changes$.asObservable();\n }\n\n async cleanup(minimumDeletedTime: number): Promise<boolean> {\n ensureNotClosed(this);\n const state = await this.internals;\n await state.dexieDb.transaction(\n 'rw',\n state.dexieTable,\n async () => {\n const maxDeletionTime = now() - minimumDeletedTime;\n const toRemove = await state.dexieTable\n .where('_meta.lwt')\n .below(maxDeletionTime)\n .toArray();\n const removeIds: string[] = [];\n toRemove.forEach((doc: any) => {\n if (doc._deleted === '1') {\n removeIds.push(doc[this.primaryPath]);\n }\n });\n await state.dexieTable.bulkDelete(removeIds);\n }\n );\n\n return true;\n }\n\n async getAttachmentData(documentId: string, attachmentId: string, _digest: string): Promise<Blob> {\n ensureNotClosed(this);\n const state = await this.internals;\n const id = attachmentObjectId(documentId, attachmentId);\n return await state.dexieDb.transaction(\n 'r',\n state.dexieAttachmentsTable,\n async () => {\n\n const attachment = await state.dexieAttachmentsTable.get(id);\n if (attachment) {\n return attachment.data;\n } else {\n throw new Error('attachment missing documentId: ' + documentId + ' attachmentId: ' + attachmentId);\n }\n });\n }\n\n async remove(): Promise<void> {\n ensureNotClosed(this);\n const state = await this.internals;\n await state.dexieTable.clear()\n return this.close();\n }\n\n\n close(): Promise<void> {\n if (this.closed) {\n return this.closed;\n }\n this.closed = (async () => {\n this.changes$.complete();\n await closeDexieDb(this.internals);\n })();\n return this.closed;\n }\n}\n\n\nexport async function createDexieStorageInstance<RxDocType>(\n storage: RxStorageDexie,\n params: RxStorageInstanceCreationParams<RxDocType, DexieSettings>,\n settings: DexieSettings\n): Promise<RxStorageInstanceDexie<RxDocType>> {\n const internals = getDexieDbWithTables(\n params.databaseName,\n params.collectionName,\n settings,\n params.schema\n );\n\n const instance = new RxStorageInstanceDexie(\n storage,\n params.databaseName,\n params.collectionName,\n params.schema,\n internals,\n params.options,\n settings,\n params.devMode\n );\n\n await addRxStorageMultiInstanceSupport(\n RX_STORAGE_NAME_DEXIE,\n params,\n instance\n );\n\n return Promise.resolve(instance);\n}\n\n\n\nfunction ensureNotClosed(\n instance: RxStorageInstanceDexie<any>\n) {\n if (instance.closed) {\n throw new Error('RxStorageInstanceDexie is closed ' + instance.databaseName + '-' + instance.collectionName);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"rx-storage-instance-dexie.js","names":["_rxjs","require","_index","_dexieHelper","_dexieQuery","_rxSchemaHelper","_rxStorageHelper","_rxStorageMultiinstance","_rxError","instanceId","now","RxStorageInstanceDexie","exports","storage","databaseName","collectionName","schema","internals","options","settings","devMode","changes$","Subject","primaryPath","getPrimaryFieldOfPrimaryKey","primaryKey","_proto","prototype","bulkWrite","documentWrites","context","ensureNotClosed","forEach","row","document","_rev","previous","newRxError","args","state","ret","error","map","doc","flatCloneDocWithMeta","documentKeys","writeRow","categorized","dexieDb","transaction","dexieTable","dexieAttachmentsTable","docsInDbMap","Map","docsInDbWithInternals","getDocsInDb","docWithDexieInternals","set","categorizeBulkWriteRows","errors","bulkPutDocs","bulkInsertDocs","push","bulkUpdateDocs","d","fromStorageToDexie","booleanIndexes","length","bulkPut","putAttachments","attachmentsAdd","attachment","id","attachmentObjectId","documentId","attachmentId","data","attachmentData","attachmentsUpdate","bulkDelete","attachmentsRemove","ensureNotFalsy","eventBulk","events","lastState","newestRow","checkpoint","lwt","_meta","next","findDocumentsById","ids","deleted","docsInDb","documentInDb","_deleted","query","preparedQuery","dexieQuery","count","queryPlan","selectorSatisfiedByIndex","result","dexieCount","mode","documents","changeStream","asObservable","cleanup","minimumDeletedTime","maxDeletionTime","toRemove","where","below","toArray","removeIds","getAttachmentData","_digest","get","Error","remove","clear","close","closed","complete","closeDexieDb","createDexieStorageInstance","params","getDexieDbWithTables","instance","addRxStorageMultiInstanceSupport","RX_STORAGE_NAME_DEXIE","Promise","resolve"],"sources":["../../../../src/plugins/storage-dexie/rx-storage-instance-dexie.ts"],"sourcesContent":["import {\r\n Subject,\r\n Observable\r\n} from 'rxjs';\r\nimport {\r\n now,\r\n ensureNotFalsy,\r\n} from '../utils/index.ts';\r\nimport type {\r\n RxStorageInstance,\r\n RxStorageChangeEvent,\r\n RxDocumentData,\r\n BulkWriteRow,\r\n RxStorageBulkWriteResponse,\r\n RxStorageQueryResult,\r\n RxJsonSchema,\r\n RxStorageInstanceCreationParams,\r\n EventBulk,\r\n StringKeys,\r\n RxStorageDefaultCheckpoint,\r\n CategorizeBulkWriteRowsOutput,\r\n RxStorageCountResult,\r\n PreparedQuery\r\n} from '../../types/index.d.ts';\r\nimport type {\r\n DexieSettings,\r\n DexieStorageInternals\r\n} from '../../types/plugins/dexie.d.ts';\r\nimport { RxStorageDexie } from './rx-storage-dexie.ts';\r\nimport {\r\n attachmentObjectId,\r\n closeDexieDb,\r\n fromStorageToDexie,\r\n getDexieDbWithTables,\r\n getDocsInDb,\r\n RX_STORAGE_NAME_DEXIE\r\n} from './dexie-helper.ts';\r\nimport { dexieCount, dexieQuery } from './dexie-query.ts';\r\nimport { getPrimaryFieldOfPrimaryKey } from '../../rx-schema-helper.ts';\r\nimport { categorizeBulkWriteRows, flatCloneDocWithMeta } from '../../rx-storage-helper.ts';\r\nimport { addRxStorageMultiInstanceSupport } from '../../rx-storage-multiinstance.ts';\r\nimport { newRxError } from '../../rx-error.ts';\r\n\r\nlet instanceId = now();\r\n\r\n\r\nexport class RxStorageInstanceDexie<RxDocType> implements RxStorageInstance<\r\n RxDocType,\r\n DexieStorageInternals,\r\n DexieSettings,\r\n RxStorageDefaultCheckpoint\r\n> {\r\n public readonly primaryPath: StringKeys<RxDocumentData<RxDocType>>;\r\n private changes$: Subject<EventBulk<RxStorageChangeEvent<RxDocumentData<RxDocType>>, RxStorageDefaultCheckpoint>> = new Subject();\r\n public readonly instanceId = instanceId++;\r\n public closed?: Promise<void>;\r\n\r\n constructor(\r\n public readonly storage: RxStorageDexie,\r\n public readonly databaseName: string,\r\n public readonly collectionName: string,\r\n public readonly schema: Readonly<RxJsonSchema<RxDocumentData<RxDocType>>>,\r\n public readonly internals: DexieStorageInternals,\r\n public readonly options: Readonly<DexieSettings>,\r\n public readonly settings: DexieSettings,\r\n public readonly devMode: boolean\r\n ) {\r\n this.primaryPath = getPrimaryFieldOfPrimaryKey(this.schema.primaryKey);\r\n }\r\n\r\n async bulkWrite(\r\n documentWrites: BulkWriteRow<RxDocType>[],\r\n context: string\r\n ): Promise<RxStorageBulkWriteResponse<RxDocType>> {\r\n ensureNotClosed(this);\r\n\r\n /**\r\n * Check some assumptions to ensure RxDB\r\n * does not call the storage with an invalid write.\r\n */\r\n documentWrites.forEach(row => {\r\n // ensure revision is set\r\n if (\r\n !row.document._rev ||\r\n (\r\n row.previous &&\r\n !row.previous._rev\r\n )\r\n ) {\r\n throw newRxError('SNH', { args: { row } });\r\n }\r\n });\r\n\r\n const state = await this.internals;\r\n const ret: RxStorageBulkWriteResponse<RxDocType> = {\r\n error: []\r\n };\r\n\r\n /**\r\n * Some storages might add any _meta fields\r\n * internally. To ensure RxDB can work with that in the\r\n * test suite, we add a random field here.\r\n */\r\n if (this.devMode) {\r\n documentWrites = documentWrites.map(row => {\r\n const doc = flatCloneDocWithMeta(row.document);\r\n return {\r\n previous: row.previous,\r\n document: doc\r\n }\r\n })\r\n }\r\n\r\n\r\n const documentKeys: string[] = documentWrites.map(writeRow => writeRow.document[this.primaryPath] as any);\r\n let categorized: CategorizeBulkWriteRowsOutput<RxDocType> | undefined;\r\n await state.dexieDb.transaction(\r\n 'rw',\r\n state.dexieTable,\r\n state.dexieAttachmentsTable,\r\n async () => {\r\n const docsInDbMap = new Map<string, RxDocumentData<RxDocType>>();\r\n const docsInDbWithInternals = await getDocsInDb<RxDocType>(this.internals, documentKeys);\r\n docsInDbWithInternals.forEach(docWithDexieInternals => {\r\n const doc = docWithDexieInternals;\r\n if (doc) {\r\n docsInDbMap.set((doc as any)[this.primaryPath], doc as any);\r\n }\r\n return doc;\r\n });\r\n\r\n categorized = categorizeBulkWriteRows<RxDocType>(\r\n this,\r\n this.primaryPath as any,\r\n docsInDbMap,\r\n documentWrites,\r\n context\r\n );\r\n ret.error = categorized.errors;\r\n\r\n /**\r\n * Batch up the database operations\r\n * so we can later run them in bulk.\r\n */\r\n let bulkPutDocs: any[] = [];\r\n categorized.bulkInsertDocs.forEach(row => {\r\n bulkPutDocs.push(row.document);\r\n });\r\n categorized.bulkUpdateDocs.forEach(row => {\r\n bulkPutDocs.push(row.document);\r\n });\r\n bulkPutDocs = bulkPutDocs.map(d => fromStorageToDexie(state.booleanIndexes, d));\r\n\r\n if (bulkPutDocs.length > 0) {\r\n await state.dexieTable.bulkPut(bulkPutDocs);\r\n }\r\n\r\n // handle attachments\r\n const putAttachments: { id: string, data: Blob }[] = [];\r\n categorized.attachmentsAdd.forEach(attachment => {\r\n putAttachments.push({\r\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\r\n data: attachment.attachmentData.data\r\n });\r\n });\r\n categorized.attachmentsUpdate.forEach(attachment => {\r\n putAttachments.push({\r\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\r\n data: attachment.attachmentData.data\r\n });\r\n });\r\n await state.dexieAttachmentsTable.bulkPut(putAttachments);\r\n await state.dexieAttachmentsTable.bulkDelete(\r\n categorized.attachmentsRemove.map(attachment => attachmentObjectId(attachment.documentId, attachment.attachmentId))\r\n );\r\n\r\n });\r\n\r\n categorized = ensureNotFalsy(categorized);\r\n if (categorized.eventBulk.events.length > 0) {\r\n const lastState = ensureNotFalsy(categorized.newestRow).document;\r\n categorized.eventBulk.checkpoint = {\r\n id: lastState[this.primaryPath],\r\n lwt: lastState._meta.lwt\r\n };\r\n this.changes$.next(categorized.eventBulk);\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n async findDocumentsById(\r\n ids: string[],\r\n deleted: boolean\r\n ): Promise<RxDocumentData<RxDocType>[]> {\r\n ensureNotClosed(this);\r\n const state = await this.internals;\r\n const ret: RxDocumentData<RxDocType>[] = [];\r\n\r\n await state.dexieDb.transaction(\r\n 'r',\r\n state.dexieTable,\r\n async () => {\r\n const docsInDb = await getDocsInDb<RxDocType>(this.internals, ids);\r\n docsInDb.forEach(documentInDb => {\r\n if (\r\n documentInDb &&\r\n (!documentInDb._deleted || deleted)\r\n ) {\r\n ret.push(documentInDb);\r\n }\r\n });\r\n });\r\n return ret;\r\n }\r\n\r\n query(preparedQuery: PreparedQuery<RxDocType>): Promise<RxStorageQueryResult<RxDocType>> {\r\n ensureNotClosed(this);\r\n return dexieQuery(\r\n this,\r\n preparedQuery\r\n );\r\n }\r\n async count(\r\n preparedQuery: PreparedQuery<RxDocType>\r\n ): Promise<RxStorageCountResult> {\r\n if (preparedQuery.queryPlan.selectorSatisfiedByIndex) {\r\n const result = await dexieCount(this, preparedQuery);\r\n return {\r\n count: result,\r\n mode: 'fast'\r\n };\r\n } else {\r\n const result = await dexieQuery(this, preparedQuery);\r\n return {\r\n count: result.documents.length,\r\n mode: 'slow'\r\n };\r\n }\r\n }\r\n\r\n changeStream(): Observable<EventBulk<RxStorageChangeEvent<RxDocumentData<RxDocType>>, RxStorageDefaultCheckpoint>> {\r\n ensureNotClosed(this);\r\n return this.changes$.asObservable();\r\n }\r\n\r\n async cleanup(minimumDeletedTime: number): Promise<boolean> {\r\n ensureNotClosed(this);\r\n const state = await this.internals;\r\n await state.dexieDb.transaction(\r\n 'rw',\r\n state.dexieTable,\r\n async () => {\r\n const maxDeletionTime = now() - minimumDeletedTime;\r\n const toRemove = await state.dexieTable\r\n .where('_meta.lwt')\r\n .below(maxDeletionTime)\r\n .toArray();\r\n const removeIds: string[] = [];\r\n toRemove.forEach((doc: any) => {\r\n if (doc._deleted === '1') {\r\n removeIds.push(doc[this.primaryPath]);\r\n }\r\n });\r\n await state.dexieTable.bulkDelete(removeIds);\r\n }\r\n );\r\n\r\n return true;\r\n }\r\n\r\n async getAttachmentData(documentId: string, attachmentId: string, _digest: string): Promise<Blob> {\r\n ensureNotClosed(this);\r\n const state = await this.internals;\r\n const id = attachmentObjectId(documentId, attachmentId);\r\n return await state.dexieDb.transaction(\r\n 'r',\r\n state.dexieAttachmentsTable,\r\n async () => {\r\n\r\n const attachment = await state.dexieAttachmentsTable.get(id);\r\n if (attachment) {\r\n return attachment.data;\r\n } else {\r\n throw new Error('attachment missing documentId: ' + documentId + ' attachmentId: ' + attachmentId);\r\n }\r\n });\r\n }\r\n\r\n async remove(): Promise<void> {\r\n ensureNotClosed(this);\r\n const state = await this.internals;\r\n await state.dexieTable.clear()\r\n return this.close();\r\n }\r\n\r\n\r\n close(): Promise<void> {\r\n if (this.closed) {\r\n return this.closed;\r\n }\r\n this.closed = (async () => {\r\n this.changes$.complete();\r\n await closeDexieDb(this.internals);\r\n })();\r\n return this.closed;\r\n }\r\n}\r\n\r\n\r\nexport async function createDexieStorageInstance<RxDocType>(\r\n storage: RxStorageDexie,\r\n params: RxStorageInstanceCreationParams<RxDocType, DexieSettings>,\r\n settings: DexieSettings\r\n): Promise<RxStorageInstanceDexie<RxDocType>> {\r\n const internals = getDexieDbWithTables(\r\n params.databaseName,\r\n params.collectionName,\r\n settings,\r\n params.schema\r\n );\r\n\r\n const instance = new RxStorageInstanceDexie(\r\n storage,\r\n params.databaseName,\r\n params.collectionName,\r\n params.schema,\r\n internals,\r\n params.options,\r\n settings,\r\n params.devMode\r\n );\r\n\r\n await addRxStorageMultiInstanceSupport(\r\n RX_STORAGE_NAME_DEXIE,\r\n params,\r\n instance\r\n );\r\n\r\n return Promise.resolve(instance);\r\n}\r\n\r\n\r\n\r\nfunction ensureNotClosed(\r\n instance: RxStorageInstanceDexie<any>\r\n) {\r\n if (instance.closed) {\r\n throw new Error('RxStorageInstanceDexie is closed ' + instance.databaseName + '-' + instance.collectionName);\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -8,10 +8,10 @@ exports.hasPremiumFlag = hasPremiumFlag;
8
8
  var PREMIUM_FLAG_HASH = exports.PREMIUM_FLAG_HASH = '6da4936d1425ff3a5c44c02342c6daf791d266be3ae8479b8ec59e261df41b93';
9
9
  var NON_PREMIUM_COLLECTION_LIMIT = exports.NON_PREMIUM_COLLECTION_LIMIT = 999;
10
10
 
11
- /**
12
- * Here we check if the premium flag has been set.
13
- * This code exists in the open source version of RxDB.
14
- * Yes you are allowed to fork the repo and just overwrite this function.
11
+ /**
12
+ * Here we check if the premium flag has been set.
13
+ * This code exists in the open source version of RxDB.
14
+ * Yes you are allowed to fork the repo and just overwrite this function.
15
15
  */
16
16
  async function hasPremiumFlag() {
17
17
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"utils-premium.js","names":["PREMIUM_FLAG_HASH","exports","NON_PREMIUM_COLLECTION_LIMIT","hasPremiumFlag"],"sources":["../../../../src/plugins/utils/utils-premium.ts"],"sourcesContent":["export const PREMIUM_FLAG_HASH = '6da4936d1425ff3a5c44c02342c6daf791d266be3ae8479b8ec59e261df41b93';\nexport const NON_PREMIUM_COLLECTION_LIMIT = 999;\n\n/**\n * Here we check if the premium flag has been set.\n * This code exists in the open source version of RxDB.\n * Yes you are allowed to fork the repo and just overwrite this function.\n */\nexport async function hasPremiumFlag() {\n return true;\n}\n"],"mappings":";;;;;;;AAAO,IAAMA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,kEAAkE;AAC5F,IAAME,4BAA4B,GAAAD,OAAA,CAAAC,4BAAA,GAAG,GAAG;;AAE/C;AACA;AACA;AACA;AACA;AACO,eAAeC,cAAcA,CAAA,EAAG;EACnC,OAAO,IAAI;AACf","ignoreList":[]}
1
+ {"version":3,"file":"utils-premium.js","names":["PREMIUM_FLAG_HASH","exports","NON_PREMIUM_COLLECTION_LIMIT","hasPremiumFlag"],"sources":["../../../../src/plugins/utils/utils-premium.ts"],"sourcesContent":["export const PREMIUM_FLAG_HASH = '6da4936d1425ff3a5c44c02342c6daf791d266be3ae8479b8ec59e261df41b93';\r\nexport const NON_PREMIUM_COLLECTION_LIMIT = 999;\r\n\r\n/**\r\n * Here we check if the premium flag has been set.\r\n * This code exists in the open source version of RxDB.\r\n * Yes you are allowed to fork the repo and just overwrite this function.\r\n */\r\nexport async function hasPremiumFlag() {\r\n return true;\r\n}\r\n"],"mappings":";;;;;;;AAAO,IAAMA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,kEAAkE;AAC5F,IAAME,4BAA4B,GAAAD,OAAA,CAAAC,4BAAA,GAAG,GAAG;;AAE/C;AACA;AACA;AACA;AACA;AACO,eAAeC,cAAcA,CAAA,EAAG;EACnC,OAAO,IAAI;AACf","ignoreList":[]}
@@ -0,0 +1 @@
1
+ { "type": "module", "sideEffects": false }
@@ -25,9 +25,9 @@ export var RxStorageInstanceDexie = /*#__PURE__*/function () {
25
25
  _proto.bulkWrite = async function bulkWrite(documentWrites, context) {
26
26
  ensureNotClosed(this);
27
27
 
28
- /**
29
- * Check some assumptions to ensure RxDB
30
- * does not call the storage with an invalid write.
28
+ /**
29
+ * Check some assumptions to ensure RxDB
30
+ * does not call the storage with an invalid write.
31
31
  */
32
32
  documentWrites.forEach(row => {
33
33
  // ensure revision is set
@@ -44,10 +44,10 @@ export var RxStorageInstanceDexie = /*#__PURE__*/function () {
44
44
  error: []
45
45
  };
46
46
 
47
- /**
48
- * Some storages might add any _meta fields
49
- * internally. To ensure RxDB can work with that in the
50
- * test suite, we add a random field here.
47
+ /**
48
+ * Some storages might add any _meta fields
49
+ * internally. To ensure RxDB can work with that in the
50
+ * test suite, we add a random field here.
51
51
  */
52
52
  if (this.devMode) {
53
53
  documentWrites = documentWrites.map(row => {
@@ -73,9 +73,9 @@ export var RxStorageInstanceDexie = /*#__PURE__*/function () {
73
73
  categorized = categorizeBulkWriteRows(this, this.primaryPath, docsInDbMap, documentWrites, context);
74
74
  ret.error = categorized.errors;
75
75
 
76
- /**
77
- * Batch up the database operations
78
- * so we can later run them in bulk.
76
+ /**
77
+ * Batch up the database operations
78
+ * so we can later run them in bulk.
79
79
  */
80
80
  var bulkPutDocs = [];
81
81
  categorized.bulkInsertDocs.forEach(row => {
@@ -1 +1 @@
1
- {"version":3,"file":"rx-storage-instance-dexie.js","names":["Subject","now","ensureNotFalsy","attachmentObjectId","closeDexieDb","fromStorageToDexie","getDexieDbWithTables","getDocsInDb","RX_STORAGE_NAME_DEXIE","dexieCount","dexieQuery","getPrimaryFieldOfPrimaryKey","categorizeBulkWriteRows","flatCloneDocWithMeta","addRxStorageMultiInstanceSupport","newRxError","instanceId","RxStorageInstanceDexie","storage","databaseName","collectionName","schema","internals","options","settings","devMode","changes$","primaryPath","primaryKey","_proto","prototype","bulkWrite","documentWrites","context","ensureNotClosed","forEach","row","document","_rev","previous","args","state","ret","error","map","doc","documentKeys","writeRow","categorized","dexieDb","transaction","dexieTable","dexieAttachmentsTable","docsInDbMap","Map","docsInDbWithInternals","docWithDexieInternals","set","errors","bulkPutDocs","bulkInsertDocs","push","bulkUpdateDocs","d","booleanIndexes","length","bulkPut","putAttachments","attachmentsAdd","attachment","id","documentId","attachmentId","data","attachmentData","attachmentsUpdate","bulkDelete","attachmentsRemove","eventBulk","events","lastState","newestRow","checkpoint","lwt","_meta","next","findDocumentsById","ids","deleted","docsInDb","documentInDb","_deleted","query","preparedQuery","count","queryPlan","selectorSatisfiedByIndex","result","mode","documents","changeStream","asObservable","cleanup","minimumDeletedTime","maxDeletionTime","toRemove","where","below","toArray","removeIds","getAttachmentData","_digest","get","Error","remove","clear","close","closed","complete","createDexieStorageInstance","params","instance","Promise","resolve"],"sources":["../../../../src/plugins/storage-dexie/rx-storage-instance-dexie.ts"],"sourcesContent":["import {\n Subject,\n Observable\n} from 'rxjs';\nimport {\n now,\n ensureNotFalsy,\n} from '../utils/index.ts';\nimport type {\n RxStorageInstance,\n RxStorageChangeEvent,\n RxDocumentData,\n BulkWriteRow,\n RxStorageBulkWriteResponse,\n RxStorageQueryResult,\n RxJsonSchema,\n RxStorageInstanceCreationParams,\n EventBulk,\n StringKeys,\n RxStorageDefaultCheckpoint,\n CategorizeBulkWriteRowsOutput,\n RxStorageCountResult,\n PreparedQuery\n} from '../../types/index.d.ts';\nimport type {\n DexieSettings,\n DexieStorageInternals\n} from '../../types/plugins/dexie.d.ts';\nimport { RxStorageDexie } from './rx-storage-dexie.ts';\nimport {\n attachmentObjectId,\n closeDexieDb,\n fromStorageToDexie,\n getDexieDbWithTables,\n getDocsInDb,\n RX_STORAGE_NAME_DEXIE\n} from './dexie-helper.ts';\nimport { dexieCount, dexieQuery } from './dexie-query.ts';\nimport { getPrimaryFieldOfPrimaryKey } from '../../rx-schema-helper.ts';\nimport { categorizeBulkWriteRows, flatCloneDocWithMeta } from '../../rx-storage-helper.ts';\nimport { addRxStorageMultiInstanceSupport } from '../../rx-storage-multiinstance.ts';\nimport { newRxError } from '../../rx-error.ts';\n\nlet instanceId = now();\n\n\nexport class RxStorageInstanceDexie<RxDocType> implements RxStorageInstance<\n RxDocType,\n DexieStorageInternals,\n DexieSettings,\n RxStorageDefaultCheckpoint\n> {\n public readonly primaryPath: StringKeys<RxDocumentData<RxDocType>>;\n private changes$: Subject<EventBulk<RxStorageChangeEvent<RxDocumentData<RxDocType>>, RxStorageDefaultCheckpoint>> = new Subject();\n public readonly instanceId = instanceId++;\n public closed?: Promise<void>;\n\n constructor(\n public readonly storage: RxStorageDexie,\n public readonly databaseName: string,\n public readonly collectionName: string,\n public readonly schema: Readonly<RxJsonSchema<RxDocumentData<RxDocType>>>,\n public readonly internals: DexieStorageInternals,\n public readonly options: Readonly<DexieSettings>,\n public readonly settings: DexieSettings,\n public readonly devMode: boolean\n ) {\n this.primaryPath = getPrimaryFieldOfPrimaryKey(this.schema.primaryKey);\n }\n\n async bulkWrite(\n documentWrites: BulkWriteRow<RxDocType>[],\n context: string\n ): Promise<RxStorageBulkWriteResponse<RxDocType>> {\n ensureNotClosed(this);\n\n /**\n * Check some assumptions to ensure RxDB\n * does not call the storage with an invalid write.\n */\n documentWrites.forEach(row => {\n // ensure revision is set\n if (\n !row.document._rev ||\n (\n row.previous &&\n !row.previous._rev\n )\n ) {\n throw newRxError('SNH', { args: { row } });\n }\n });\n\n const state = await this.internals;\n const ret: RxStorageBulkWriteResponse<RxDocType> = {\n error: []\n };\n\n /**\n * Some storages might add any _meta fields\n * internally. To ensure RxDB can work with that in the\n * test suite, we add a random field here.\n */\n if (this.devMode) {\n documentWrites = documentWrites.map(row => {\n const doc = flatCloneDocWithMeta(row.document);\n return {\n previous: row.previous,\n document: doc\n }\n })\n }\n\n\n const documentKeys: string[] = documentWrites.map(writeRow => writeRow.document[this.primaryPath] as any);\n let categorized: CategorizeBulkWriteRowsOutput<RxDocType> | undefined;\n await state.dexieDb.transaction(\n 'rw',\n state.dexieTable,\n state.dexieAttachmentsTable,\n async () => {\n const docsInDbMap = new Map<string, RxDocumentData<RxDocType>>();\n const docsInDbWithInternals = await getDocsInDb<RxDocType>(this.internals, documentKeys);\n docsInDbWithInternals.forEach(docWithDexieInternals => {\n const doc = docWithDexieInternals;\n if (doc) {\n docsInDbMap.set((doc as any)[this.primaryPath], doc as any);\n }\n return doc;\n });\n\n categorized = categorizeBulkWriteRows<RxDocType>(\n this,\n this.primaryPath as any,\n docsInDbMap,\n documentWrites,\n context\n );\n ret.error = categorized.errors;\n\n /**\n * Batch up the database operations\n * so we can later run them in bulk.\n */\n let bulkPutDocs: any[] = [];\n categorized.bulkInsertDocs.forEach(row => {\n bulkPutDocs.push(row.document);\n });\n categorized.bulkUpdateDocs.forEach(row => {\n bulkPutDocs.push(row.document);\n });\n bulkPutDocs = bulkPutDocs.map(d => fromStorageToDexie(state.booleanIndexes, d));\n\n if (bulkPutDocs.length > 0) {\n await state.dexieTable.bulkPut(bulkPutDocs);\n }\n\n // handle attachments\n const putAttachments: { id: string, data: Blob }[] = [];\n categorized.attachmentsAdd.forEach(attachment => {\n putAttachments.push({\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\n data: attachment.attachmentData.data\n });\n });\n categorized.attachmentsUpdate.forEach(attachment => {\n putAttachments.push({\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\n data: attachment.attachmentData.data\n });\n });\n await state.dexieAttachmentsTable.bulkPut(putAttachments);\n await state.dexieAttachmentsTable.bulkDelete(\n categorized.attachmentsRemove.map(attachment => attachmentObjectId(attachment.documentId, attachment.attachmentId))\n );\n\n });\n\n categorized = ensureNotFalsy(categorized);\n if (categorized.eventBulk.events.length > 0) {\n const lastState = ensureNotFalsy(categorized.newestRow).document;\n categorized.eventBulk.checkpoint = {\n id: lastState[this.primaryPath],\n lwt: lastState._meta.lwt\n };\n this.changes$.next(categorized.eventBulk);\n }\n\n return ret;\n }\n\n async findDocumentsById(\n ids: string[],\n deleted: boolean\n ): Promise<RxDocumentData<RxDocType>[]> {\n ensureNotClosed(this);\n const state = await this.internals;\n const ret: RxDocumentData<RxDocType>[] = [];\n\n await state.dexieDb.transaction(\n 'r',\n state.dexieTable,\n async () => {\n const docsInDb = await getDocsInDb<RxDocType>(this.internals, ids);\n docsInDb.forEach(documentInDb => {\n if (\n documentInDb &&\n (!documentInDb._deleted || deleted)\n ) {\n ret.push(documentInDb);\n }\n });\n });\n return ret;\n }\n\n query(preparedQuery: PreparedQuery<RxDocType>): Promise<RxStorageQueryResult<RxDocType>> {\n ensureNotClosed(this);\n return dexieQuery(\n this,\n preparedQuery\n );\n }\n async count(\n preparedQuery: PreparedQuery<RxDocType>\n ): Promise<RxStorageCountResult> {\n if (preparedQuery.queryPlan.selectorSatisfiedByIndex) {\n const result = await dexieCount(this, preparedQuery);\n return {\n count: result,\n mode: 'fast'\n };\n } else {\n const result = await dexieQuery(this, preparedQuery);\n return {\n count: result.documents.length,\n mode: 'slow'\n };\n }\n }\n\n changeStream(): Observable<EventBulk<RxStorageChangeEvent<RxDocumentData<RxDocType>>, RxStorageDefaultCheckpoint>> {\n ensureNotClosed(this);\n return this.changes$.asObservable();\n }\n\n async cleanup(minimumDeletedTime: number): Promise<boolean> {\n ensureNotClosed(this);\n const state = await this.internals;\n await state.dexieDb.transaction(\n 'rw',\n state.dexieTable,\n async () => {\n const maxDeletionTime = now() - minimumDeletedTime;\n const toRemove = await state.dexieTable\n .where('_meta.lwt')\n .below(maxDeletionTime)\n .toArray();\n const removeIds: string[] = [];\n toRemove.forEach((doc: any) => {\n if (doc._deleted === '1') {\n removeIds.push(doc[this.primaryPath]);\n }\n });\n await state.dexieTable.bulkDelete(removeIds);\n }\n );\n\n return true;\n }\n\n async getAttachmentData(documentId: string, attachmentId: string, _digest: string): Promise<Blob> {\n ensureNotClosed(this);\n const state = await this.internals;\n const id = attachmentObjectId(documentId, attachmentId);\n return await state.dexieDb.transaction(\n 'r',\n state.dexieAttachmentsTable,\n async () => {\n\n const attachment = await state.dexieAttachmentsTable.get(id);\n if (attachment) {\n return attachment.data;\n } else {\n throw new Error('attachment missing documentId: ' + documentId + ' attachmentId: ' + attachmentId);\n }\n });\n }\n\n async remove(): Promise<void> {\n ensureNotClosed(this);\n const state = await this.internals;\n await state.dexieTable.clear()\n return this.close();\n }\n\n\n close(): Promise<void> {\n if (this.closed) {\n return this.closed;\n }\n this.closed = (async () => {\n this.changes$.complete();\n await closeDexieDb(this.internals);\n })();\n return this.closed;\n }\n}\n\n\nexport async function createDexieStorageInstance<RxDocType>(\n storage: RxStorageDexie,\n params: RxStorageInstanceCreationParams<RxDocType, DexieSettings>,\n settings: DexieSettings\n): Promise<RxStorageInstanceDexie<RxDocType>> {\n const internals = getDexieDbWithTables(\n params.databaseName,\n params.collectionName,\n settings,\n params.schema\n );\n\n const instance = new RxStorageInstanceDexie(\n storage,\n params.databaseName,\n params.collectionName,\n params.schema,\n internals,\n params.options,\n settings,\n params.devMode\n );\n\n await addRxStorageMultiInstanceSupport(\n RX_STORAGE_NAME_DEXIE,\n params,\n instance\n );\n\n return Promise.resolve(instance);\n}\n\n\n\nfunction ensureNotClosed(\n instance: RxStorageInstanceDexie<any>\n) {\n if (instance.closed) {\n throw new Error('RxStorageInstanceDexie is closed ' + instance.databaseName + '-' + instance.collectionName);\n }\n}\n"],"mappings":"AAAA,SACIA,OAAO,QAEJ,MAAM;AACb,SACIC,GAAG,EACHC,cAAc,QACX,mBAAmB;AAsB1B,SACIC,kBAAkB,EAClBC,YAAY,EACZC,kBAAkB,EAClBC,oBAAoB,EACpBC,WAAW,EACXC,qBAAqB,QAClB,mBAAmB;AAC1B,SAASC,UAAU,EAAEC,UAAU,QAAQ,kBAAkB;AACzD,SAASC,2BAA2B,QAAQ,2BAA2B;AACvE,SAASC,uBAAuB,EAAEC,oBAAoB,QAAQ,4BAA4B;AAC1F,SAASC,gCAAgC,QAAQ,mCAAmC;AACpF,SAASC,UAAU,QAAQ,mBAAmB;AAE9C,IAAIC,UAAU,GAAGf,GAAG,CAAC,CAAC;AAGtB,WAAagB,sBAAsB;EAW/B,SAAAA,uBACoBC,OAAuB,EACvBC,YAAoB,EACpBC,cAAsB,EACtBC,MAAyD,EACzDC,SAAgC,EAChCC,OAAgC,EAChCC,QAAuB,EACvBC,OAAgB,EAClC;IAAA,KAbMC,QAAQ,GAAoG,IAAI1B,OAAO,CAAC,CAAC;IAAA,KACjHgB,UAAU,GAAGA,UAAU,EAAE;IAAA,KAIrBE,OAAuB,GAAvBA,OAAuB;IAAA,KACvBC,YAAoB,GAApBA,YAAoB;IAAA,KACpBC,cAAsB,GAAtBA,cAAsB;IAAA,KACtBC,MAAyD,GAAzDA,MAAyD;IAAA,KACzDC,SAAgC,GAAhCA,SAAgC;IAAA,KAChCC,OAAgC,GAAhCA,OAAgC;IAAA,KAChCC,QAAuB,GAAvBA,QAAuB;IAAA,KACvBC,OAAgB,GAAhBA,OAAgB;IAEhC,IAAI,CAACE,WAAW,GAAGhB,2BAA2B,CAAC,IAAI,CAACU,MAAM,CAACO,UAAU,CAAC;EAC1E;EAAC,IAAAC,MAAA,GAAAZ,sBAAA,CAAAa,SAAA;EAAAD,MAAA,CAEKE,SAAS,GAAf,eAAMA,SAASA,CACXC,cAAyC,EACzCC,OAAe,EAC+B;IAC9CC,eAAe,CAAC,IAAI,CAAC;;IAErB;AACR;AACA;AACA;IACQF,cAAc,CAACG,OAAO,CAACC,GAAG,IAAI;MAC1B;MACA,IACI,CAACA,GAAG,CAACC,QAAQ,CAACC,IAAI,IAEdF,GAAG,CAACG,QAAQ,IACZ,CAACH,GAAG,CAACG,QAAQ,CAACD,IACjB,EACH;QACE,MAAMvB,UAAU,CAAC,KAAK,EAAE;UAAEyB,IAAI,EAAE;YAAEJ;UAAI;QAAE,CAAC,CAAC;MAC9C;IACJ,CAAC,CAAC;IAEF,IAAMK,KAAK,GAAG,MAAM,IAAI,CAACnB,SAAS;IAClC,IAAMoB,GAA0C,GAAG;MAC/CC,KAAK,EAAE;IACX,CAAC;;IAED;AACR;AACA;AACA;AACA;IACQ,IAAI,IAAI,CAAClB,OAAO,EAAE;MACdO,cAAc,GAAGA,cAAc,CAACY,GAAG,CAACR,GAAG,IAAI;QACvC,IAAMS,GAAG,GAAGhC,oBAAoB,CAACuB,GAAG,CAACC,QAAQ,CAAC;QAC9C,OAAO;UACHE,QAAQ,EAAEH,GAAG,CAACG,QAAQ;UACtBF,QAAQ,EAAEQ;QACd,CAAC;MACL,CAAC,CAAC;IACN;IAGA,IAAMC,YAAsB,GAAGd,cAAc,CAACY,GAAG,CAACG,QAAQ,IAAIA,QAAQ,CAACV,QAAQ,CAAC,IAAI,CAACV,WAAW,CAAQ,CAAC;IACzG,IAAIqB,WAAiE;IACrE,MAAMP,KAAK,CAACQ,OAAO,CAACC,WAAW,CAC3B,IAAI,EACJT,KAAK,CAACU,UAAU,EAChBV,KAAK,CAACW,qBAAqB,EAC3B,YAAY;MACR,IAAMC,WAAW,GAAG,IAAIC,GAAG,CAAoC,CAAC;MAChE,IAAMC,qBAAqB,GAAG,MAAMhD,WAAW,CAAY,IAAI,CAACe,SAAS,EAAEwB,YAAY,CAAC;MACxFS,qBAAqB,CAACpB,OAAO,CAACqB,qBAAqB,IAAI;QACnD,IAAMX,GAAG,GAAGW,qBAAqB;QACjC,IAAIX,GAAG,EAAE;UACLQ,WAAW,CAACI,GAAG,CAAEZ,GAAG,CAAS,IAAI,CAAClB,WAAW,CAAC,EAAEkB,GAAU,CAAC;QAC/D;QACA,OAAOA,GAAG;MACd,CAAC,CAAC;MAEFG,WAAW,GAAGpC,uBAAuB,CACjC,IAAI,EACJ,IAAI,CAACe,WAAW,EAChB0B,WAAW,EACXrB,cAAc,EACdC,OACJ,CAAC;MACDS,GAAG,CAACC,KAAK,GAAGK,WAAW,CAACU,MAAM;;MAE9B;AAChB;AACA;AACA;MACgB,IAAIC,WAAkB,GAAG,EAAE;MAC3BX,WAAW,CAACY,cAAc,CAACzB,OAAO,CAACC,GAAG,IAAI;QACtCuB,WAAW,CAACE,IAAI,CAACzB,GAAG,CAACC,QAAQ,CAAC;MAClC,CAAC,CAAC;MACFW,WAAW,CAACc,cAAc,CAAC3B,OAAO,CAACC,GAAG,IAAI;QACtCuB,WAAW,CAACE,IAAI,CAACzB,GAAG,CAACC,QAAQ,CAAC;MAClC,CAAC,CAAC;MACFsB,WAAW,GAAGA,WAAW,CAACf,GAAG,CAACmB,CAAC,IAAI1D,kBAAkB,CAACoC,KAAK,CAACuB,cAAc,EAAED,CAAC,CAAC,CAAC;MAE/E,IAAIJ,WAAW,CAACM,MAAM,GAAG,CAAC,EAAE;QACxB,MAAMxB,KAAK,CAACU,UAAU,CAACe,OAAO,CAACP,WAAW,CAAC;MAC/C;;MAEA;MACA,IAAMQ,cAA4C,GAAG,EAAE;MACvDnB,WAAW,CAACoB,cAAc,CAACjC,OAAO,CAACkC,UAAU,IAAI;QAC7CF,cAAc,CAACN,IAAI,CAAC;UAChBS,EAAE,EAAEnE,kBAAkB,CAACkE,UAAU,CAACE,UAAU,EAAEF,UAAU,CAACG,YAAY,CAAC;UACtEC,IAAI,EAAEJ,UAAU,CAACK,cAAc,CAACD;QACpC,CAAC,CAAC;MACN,CAAC,CAAC;MACFzB,WAAW,CAAC2B,iBAAiB,CAACxC,OAAO,CAACkC,UAAU,IAAI;QAChDF,cAAc,CAACN,IAAI,CAAC;UAChBS,EAAE,EAAEnE,kBAAkB,CAACkE,UAAU,CAACE,UAAU,EAAEF,UAAU,CAACG,YAAY,CAAC;UACtEC,IAAI,EAAEJ,UAAU,CAACK,cAAc,CAACD;QACpC,CAAC,CAAC;MACN,CAAC,CAAC;MACF,MAAMhC,KAAK,CAACW,qBAAqB,CAACc,OAAO,CAACC,cAAc,CAAC;MACzD,MAAM1B,KAAK,CAACW,qBAAqB,CAACwB,UAAU,CACxC5B,WAAW,CAAC6B,iBAAiB,CAACjC,GAAG,CAACyB,UAAU,IAAIlE,kBAAkB,CAACkE,UAAU,CAACE,UAAU,EAAEF,UAAU,CAACG,YAAY,CAAC,CACtH,CAAC;IAEL,CAAC,CAAC;IAENxB,WAAW,GAAG9C,cAAc,CAAC8C,WAAW,CAAC;IACzC,IAAIA,WAAW,CAAC8B,SAAS,CAACC,MAAM,CAACd,MAAM,GAAG,CAAC,EAAE;MACzC,IAAMe,SAAS,GAAG9E,cAAc,CAAC8C,WAAW,CAACiC,SAAS,CAAC,CAAC5C,QAAQ;MAChEW,WAAW,CAAC8B,SAAS,CAACI,UAAU,GAAG;QAC/BZ,EAAE,EAAEU,SAAS,CAAC,IAAI,CAACrD,WAAW,CAAC;QAC/BwD,GAAG,EAAEH,SAAS,CAACI,KAAK,CAACD;MACzB,CAAC;MACD,IAAI,CAACzD,QAAQ,CAAC2D,IAAI,CAACrC,WAAW,CAAC8B,SAAS,CAAC;IAC7C;IAEA,OAAOpC,GAAG;EACd,CAAC;EAAAb,MAAA,CAEKyD,iBAAiB,GAAvB,eAAMA,iBAAiBA,CACnBC,GAAa,EACbC,OAAgB,EACoB;IACpCtD,eAAe,CAAC,IAAI,CAAC;IACrB,IAAMO,KAAK,GAAG,MAAM,IAAI,CAACnB,SAAS;IAClC,IAAMoB,GAAgC,GAAG,EAAE;IAE3C,MAAMD,KAAK,CAACQ,OAAO,CAACC,WAAW,CAC3B,GAAG,EACHT,KAAK,CAACU,UAAU,EAChB,YAAY;MACR,IAAMsC,QAAQ,GAAG,MAAMlF,WAAW,CAAY,IAAI,CAACe,SAAS,EAAEiE,GAAG,CAAC;MAClEE,QAAQ,CAACtD,OAAO,CAACuD,YAAY,IAAI;QAC7B,IACIA,YAAY,KACX,CAACA,YAAY,CAACC,QAAQ,IAAIH,OAAO,CAAC,EACrC;UACE9C,GAAG,CAACmB,IAAI,CAAC6B,YAAY,CAAC;QAC1B;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;IACN,OAAOhD,GAAG;EACd,CAAC;EAAAb,MAAA,CAED+D,KAAK,GAAL,SAAAA,KAAKA,CAACC,aAAuC,EAA4C;IACrF3D,eAAe,CAAC,IAAI,CAAC;IACrB,OAAOxB,UAAU,CACb,IAAI,EACJmF,aACJ,CAAC;EACL,CAAC;EAAAhE,MAAA,CACKiE,KAAK,GAAX,eAAMA,KAAKA,CACPD,aAAuC,EACV;IAC7B,IAAIA,aAAa,CAACE,SAAS,CAACC,wBAAwB,EAAE;MAClD,IAAMC,MAAM,GAAG,MAAMxF,UAAU,CAAC,IAAI,EAAEoF,aAAa,CAAC;MACpD,OAAO;QACHC,KAAK,EAAEG,MAAM;QACbC,IAAI,EAAE;MACV,CAAC;IACL,CAAC,MAAM;MACH,IAAMD,OAAM,GAAG,MAAMvF,UAAU,CAAC,IAAI,EAAEmF,aAAa,CAAC;MACpD,OAAO;QACHC,KAAK,EAAEG,OAAM,CAACE,SAAS,CAAClC,MAAM;QAC9BiC,IAAI,EAAE;MACV,CAAC;IACL;EACJ,CAAC;EAAArE,MAAA,CAEDuE,YAAY,GAAZ,SAAAA,YAAYA,CAAA,EAAuG;IAC/GlE,eAAe,CAAC,IAAI,CAAC;IACrB,OAAO,IAAI,CAACR,QAAQ,CAAC2E,YAAY,CAAC,CAAC;EACvC,CAAC;EAAAxE,MAAA,CAEKyE,OAAO,GAAb,eAAMA,OAAOA,CAACC,kBAA0B,EAAoB;IACxDrE,eAAe,CAAC,IAAI,CAAC;IACrB,IAAMO,KAAK,GAAG,MAAM,IAAI,CAACnB,SAAS;IAClC,MAAMmB,KAAK,CAACQ,OAAO,CAACC,WAAW,CAC3B,IAAI,EACJT,KAAK,CAACU,UAAU,EAChB,YAAY;MACR,IAAMqD,eAAe,GAAGvG,GAAG,CAAC,CAAC,GAAGsG,kBAAkB;MAClD,IAAME,QAAQ,GAAG,MAAMhE,KAAK,CAACU,UAAU,CAClCuD,KAAK,CAAC,WAAW,CAAC,CAClBC,KAAK,CAACH,eAAe,CAAC,CACtBI,OAAO,CAAC,CAAC;MACd,IAAMC,SAAmB,GAAG,EAAE;MAC9BJ,QAAQ,CAACtE,OAAO,CAAEU,GAAQ,IAAK;QAC3B,IAAIA,GAAG,CAAC8C,QAAQ,KAAK,GAAG,EAAE;UACtBkB,SAAS,CAAChD,IAAI,CAAChB,GAAG,CAAC,IAAI,CAAClB,WAAW,CAAC,CAAC;QACzC;MACJ,CAAC,CAAC;MACF,MAAMc,KAAK,CAACU,UAAU,CAACyB,UAAU,CAACiC,SAAS,CAAC;IAChD,CACJ,CAAC;IAED,OAAO,IAAI;EACf,CAAC;EAAAhF,MAAA,CAEKiF,iBAAiB,GAAvB,eAAMA,iBAAiBA,CAACvC,UAAkB,EAAEC,YAAoB,EAAEuC,OAAe,EAAiB;IAC9F7E,eAAe,CAAC,IAAI,CAAC;IACrB,IAAMO,KAAK,GAAG,MAAM,IAAI,CAACnB,SAAS;IAClC,IAAMgD,EAAE,GAAGnE,kBAAkB,CAACoE,UAAU,EAAEC,YAAY,CAAC;IACvD,OAAO,MAAM/B,KAAK,CAACQ,OAAO,CAACC,WAAW,CAClC,GAAG,EACHT,KAAK,CAACW,qBAAqB,EAC3B,YAAY;MAER,IAAMiB,UAAU,GAAG,MAAM5B,KAAK,CAACW,qBAAqB,CAAC4D,GAAG,CAAC1C,EAAE,CAAC;MAC5D,IAAID,UAAU,EAAE;QACZ,OAAOA,UAAU,CAACI,IAAI;MAC1B,CAAC,MAAM;QACH,MAAM,IAAIwC,KAAK,CAAC,iCAAiC,GAAG1C,UAAU,GAAG,iBAAiB,GAAGC,YAAY,CAAC;MACtG;IACJ,CAAC,CAAC;EACV,CAAC;EAAA3C,MAAA,CAEKqF,MAAM,GAAZ,eAAMA,MAAMA,CAAA,EAAkB;IAC1BhF,eAAe,CAAC,IAAI,CAAC;IACrB,IAAMO,KAAK,GAAG,MAAM,IAAI,CAACnB,SAAS;IAClC,MAAMmB,KAAK,CAACU,UAAU,CAACgE,KAAK,CAAC,CAAC;IAC9B,OAAO,IAAI,CAACC,KAAK,CAAC,CAAC;EACvB,CAAC;EAAAvF,MAAA,CAGDuF,KAAK,GAAL,SAAAA,KAAKA,CAAA,EAAkB;IACnB,IAAI,IAAI,CAACC,MAAM,EAAE;MACb,OAAO,IAAI,CAACA,MAAM;IACtB;IACA,IAAI,CAACA,MAAM,GAAG,CAAC,YAAY;MACvB,IAAI,CAAC3F,QAAQ,CAAC4F,QAAQ,CAAC,CAAC;MACxB,MAAMlH,YAAY,CAAC,IAAI,CAACkB,SAAS,CAAC;IACtC,CAAC,EAAE,CAAC;IACJ,OAAO,IAAI,CAAC+F,MAAM;EACtB,CAAC;EAAA,OAAApG,sBAAA;AAAA;AAIL,OAAO,eAAesG,0BAA0BA,CAC5CrG,OAAuB,EACvBsG,MAAiE,EACjEhG,QAAuB,EACmB;EAC1C,IAAMF,SAAS,GAAGhB,oBAAoB,CAClCkH,MAAM,CAACrG,YAAY,EACnBqG,MAAM,CAACpG,cAAc,EACrBI,QAAQ,EACRgG,MAAM,CAACnG,MACX,CAAC;EAED,IAAMoG,QAAQ,GAAG,IAAIxG,sBAAsB,CACvCC,OAAO,EACPsG,MAAM,CAACrG,YAAY,EACnBqG,MAAM,CAACpG,cAAc,EACrBoG,MAAM,CAACnG,MAAM,EACbC,SAAS,EACTkG,MAAM,CAACjG,OAAO,EACdC,QAAQ,EACRgG,MAAM,CAAC/F,OACX,CAAC;EAED,MAAMX,gCAAgC,CAClCN,qBAAqB,EACrBgH,MAAM,EACNC,QACJ,CAAC;EAED,OAAOC,OAAO,CAACC,OAAO,CAACF,QAAQ,CAAC;AACpC;AAIA,SAASvF,eAAeA,CACpBuF,QAAqC,EACvC;EACE,IAAIA,QAAQ,CAACJ,MAAM,EAAE;IACjB,MAAM,IAAIJ,KAAK,CAAC,mCAAmC,GAAGQ,QAAQ,CAACtG,YAAY,GAAG,GAAG,GAAGsG,QAAQ,CAACrG,cAAc,CAAC;EAChH;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"rx-storage-instance-dexie.js","names":["Subject","now","ensureNotFalsy","attachmentObjectId","closeDexieDb","fromStorageToDexie","getDexieDbWithTables","getDocsInDb","RX_STORAGE_NAME_DEXIE","dexieCount","dexieQuery","getPrimaryFieldOfPrimaryKey","categorizeBulkWriteRows","flatCloneDocWithMeta","addRxStorageMultiInstanceSupport","newRxError","instanceId","RxStorageInstanceDexie","storage","databaseName","collectionName","schema","internals","options","settings","devMode","changes$","primaryPath","primaryKey","_proto","prototype","bulkWrite","documentWrites","context","ensureNotClosed","forEach","row","document","_rev","previous","args","state","ret","error","map","doc","documentKeys","writeRow","categorized","dexieDb","transaction","dexieTable","dexieAttachmentsTable","docsInDbMap","Map","docsInDbWithInternals","docWithDexieInternals","set","errors","bulkPutDocs","bulkInsertDocs","push","bulkUpdateDocs","d","booleanIndexes","length","bulkPut","putAttachments","attachmentsAdd","attachment","id","documentId","attachmentId","data","attachmentData","attachmentsUpdate","bulkDelete","attachmentsRemove","eventBulk","events","lastState","newestRow","checkpoint","lwt","_meta","next","findDocumentsById","ids","deleted","docsInDb","documentInDb","_deleted","query","preparedQuery","count","queryPlan","selectorSatisfiedByIndex","result","mode","documents","changeStream","asObservable","cleanup","minimumDeletedTime","maxDeletionTime","toRemove","where","below","toArray","removeIds","getAttachmentData","_digest","get","Error","remove","clear","close","closed","complete","createDexieStorageInstance","params","instance","Promise","resolve"],"sources":["../../../../src/plugins/storage-dexie/rx-storage-instance-dexie.ts"],"sourcesContent":["import {\r\n Subject,\r\n Observable\r\n} from 'rxjs';\r\nimport {\r\n now,\r\n ensureNotFalsy,\r\n} from '../utils/index.ts';\r\nimport type {\r\n RxStorageInstance,\r\n RxStorageChangeEvent,\r\n RxDocumentData,\r\n BulkWriteRow,\r\n RxStorageBulkWriteResponse,\r\n RxStorageQueryResult,\r\n RxJsonSchema,\r\n RxStorageInstanceCreationParams,\r\n EventBulk,\r\n StringKeys,\r\n RxStorageDefaultCheckpoint,\r\n CategorizeBulkWriteRowsOutput,\r\n RxStorageCountResult,\r\n PreparedQuery\r\n} from '../../types/index.d.ts';\r\nimport type {\r\n DexieSettings,\r\n DexieStorageInternals\r\n} from '../../types/plugins/dexie.d.ts';\r\nimport { RxStorageDexie } from './rx-storage-dexie.ts';\r\nimport {\r\n attachmentObjectId,\r\n closeDexieDb,\r\n fromStorageToDexie,\r\n getDexieDbWithTables,\r\n getDocsInDb,\r\n RX_STORAGE_NAME_DEXIE\r\n} from './dexie-helper.ts';\r\nimport { dexieCount, dexieQuery } from './dexie-query.ts';\r\nimport { getPrimaryFieldOfPrimaryKey } from '../../rx-schema-helper.ts';\r\nimport { categorizeBulkWriteRows, flatCloneDocWithMeta } from '../../rx-storage-helper.ts';\r\nimport { addRxStorageMultiInstanceSupport } from '../../rx-storage-multiinstance.ts';\r\nimport { newRxError } from '../../rx-error.ts';\r\n\r\nlet instanceId = now();\r\n\r\n\r\nexport class RxStorageInstanceDexie<RxDocType> implements RxStorageInstance<\r\n RxDocType,\r\n DexieStorageInternals,\r\n DexieSettings,\r\n RxStorageDefaultCheckpoint\r\n> {\r\n public readonly primaryPath: StringKeys<RxDocumentData<RxDocType>>;\r\n private changes$: Subject<EventBulk<RxStorageChangeEvent<RxDocumentData<RxDocType>>, RxStorageDefaultCheckpoint>> = new Subject();\r\n public readonly instanceId = instanceId++;\r\n public closed?: Promise<void>;\r\n\r\n constructor(\r\n public readonly storage: RxStorageDexie,\r\n public readonly databaseName: string,\r\n public readonly collectionName: string,\r\n public readonly schema: Readonly<RxJsonSchema<RxDocumentData<RxDocType>>>,\r\n public readonly internals: DexieStorageInternals,\r\n public readonly options: Readonly<DexieSettings>,\r\n public readonly settings: DexieSettings,\r\n public readonly devMode: boolean\r\n ) {\r\n this.primaryPath = getPrimaryFieldOfPrimaryKey(this.schema.primaryKey);\r\n }\r\n\r\n async bulkWrite(\r\n documentWrites: BulkWriteRow<RxDocType>[],\r\n context: string\r\n ): Promise<RxStorageBulkWriteResponse<RxDocType>> {\r\n ensureNotClosed(this);\r\n\r\n /**\r\n * Check some assumptions to ensure RxDB\r\n * does not call the storage with an invalid write.\r\n */\r\n documentWrites.forEach(row => {\r\n // ensure revision is set\r\n if (\r\n !row.document._rev ||\r\n (\r\n row.previous &&\r\n !row.previous._rev\r\n )\r\n ) {\r\n throw newRxError('SNH', { args: { row } });\r\n }\r\n });\r\n\r\n const state = await this.internals;\r\n const ret: RxStorageBulkWriteResponse<RxDocType> = {\r\n error: []\r\n };\r\n\r\n /**\r\n * Some storages might add any _meta fields\r\n * internally. To ensure RxDB can work with that in the\r\n * test suite, we add a random field here.\r\n */\r\n if (this.devMode) {\r\n documentWrites = documentWrites.map(row => {\r\n const doc = flatCloneDocWithMeta(row.document);\r\n return {\r\n previous: row.previous,\r\n document: doc\r\n }\r\n })\r\n }\r\n\r\n\r\n const documentKeys: string[] = documentWrites.map(writeRow => writeRow.document[this.primaryPath] as any);\r\n let categorized: CategorizeBulkWriteRowsOutput<RxDocType> | undefined;\r\n await state.dexieDb.transaction(\r\n 'rw',\r\n state.dexieTable,\r\n state.dexieAttachmentsTable,\r\n async () => {\r\n const docsInDbMap = new Map<string, RxDocumentData<RxDocType>>();\r\n const docsInDbWithInternals = await getDocsInDb<RxDocType>(this.internals, documentKeys);\r\n docsInDbWithInternals.forEach(docWithDexieInternals => {\r\n const doc = docWithDexieInternals;\r\n if (doc) {\r\n docsInDbMap.set((doc as any)[this.primaryPath], doc as any);\r\n }\r\n return doc;\r\n });\r\n\r\n categorized = categorizeBulkWriteRows<RxDocType>(\r\n this,\r\n this.primaryPath as any,\r\n docsInDbMap,\r\n documentWrites,\r\n context\r\n );\r\n ret.error = categorized.errors;\r\n\r\n /**\r\n * Batch up the database operations\r\n * so we can later run them in bulk.\r\n */\r\n let bulkPutDocs: any[] = [];\r\n categorized.bulkInsertDocs.forEach(row => {\r\n bulkPutDocs.push(row.document);\r\n });\r\n categorized.bulkUpdateDocs.forEach(row => {\r\n bulkPutDocs.push(row.document);\r\n });\r\n bulkPutDocs = bulkPutDocs.map(d => fromStorageToDexie(state.booleanIndexes, d));\r\n\r\n if (bulkPutDocs.length > 0) {\r\n await state.dexieTable.bulkPut(bulkPutDocs);\r\n }\r\n\r\n // handle attachments\r\n const putAttachments: { id: string, data: Blob }[] = [];\r\n categorized.attachmentsAdd.forEach(attachment => {\r\n putAttachments.push({\r\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\r\n data: attachment.attachmentData.data\r\n });\r\n });\r\n categorized.attachmentsUpdate.forEach(attachment => {\r\n putAttachments.push({\r\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\r\n data: attachment.attachmentData.data\r\n });\r\n });\r\n await state.dexieAttachmentsTable.bulkPut(putAttachments);\r\n await state.dexieAttachmentsTable.bulkDelete(\r\n categorized.attachmentsRemove.map(attachment => attachmentObjectId(attachment.documentId, attachment.attachmentId))\r\n );\r\n\r\n });\r\n\r\n categorized = ensureNotFalsy(categorized);\r\n if (categorized.eventBulk.events.length > 0) {\r\n const lastState = ensureNotFalsy(categorized.newestRow).document;\r\n categorized.eventBulk.checkpoint = {\r\n id: lastState[this.primaryPath],\r\n lwt: lastState._meta.lwt\r\n };\r\n this.changes$.next(categorized.eventBulk);\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n async findDocumentsById(\r\n ids: string[],\r\n deleted: boolean\r\n ): Promise<RxDocumentData<RxDocType>[]> {\r\n ensureNotClosed(this);\r\n const state = await this.internals;\r\n const ret: RxDocumentData<RxDocType>[] = [];\r\n\r\n await state.dexieDb.transaction(\r\n 'r',\r\n state.dexieTable,\r\n async () => {\r\n const docsInDb = await getDocsInDb<RxDocType>(this.internals, ids);\r\n docsInDb.forEach(documentInDb => {\r\n if (\r\n documentInDb &&\r\n (!documentInDb._deleted || deleted)\r\n ) {\r\n ret.push(documentInDb);\r\n }\r\n });\r\n });\r\n return ret;\r\n }\r\n\r\n query(preparedQuery: PreparedQuery<RxDocType>): Promise<RxStorageQueryResult<RxDocType>> {\r\n ensureNotClosed(this);\r\n return dexieQuery(\r\n this,\r\n preparedQuery\r\n );\r\n }\r\n async count(\r\n preparedQuery: PreparedQuery<RxDocType>\r\n ): Promise<RxStorageCountResult> {\r\n if (preparedQuery.queryPlan.selectorSatisfiedByIndex) {\r\n const result = await dexieCount(this, preparedQuery);\r\n return {\r\n count: result,\r\n mode: 'fast'\r\n };\r\n } else {\r\n const result = await dexieQuery(this, preparedQuery);\r\n return {\r\n count: result.documents.length,\r\n mode: 'slow'\r\n };\r\n }\r\n }\r\n\r\n changeStream(): Observable<EventBulk<RxStorageChangeEvent<RxDocumentData<RxDocType>>, RxStorageDefaultCheckpoint>> {\r\n ensureNotClosed(this);\r\n return this.changes$.asObservable();\r\n }\r\n\r\n async cleanup(minimumDeletedTime: number): Promise<boolean> {\r\n ensureNotClosed(this);\r\n const state = await this.internals;\r\n await state.dexieDb.transaction(\r\n 'rw',\r\n state.dexieTable,\r\n async () => {\r\n const maxDeletionTime = now() - minimumDeletedTime;\r\n const toRemove = await state.dexieTable\r\n .where('_meta.lwt')\r\n .below(maxDeletionTime)\r\n .toArray();\r\n const removeIds: string[] = [];\r\n toRemove.forEach((doc: any) => {\r\n if (doc._deleted === '1') {\r\n removeIds.push(doc[this.primaryPath]);\r\n }\r\n });\r\n await state.dexieTable.bulkDelete(removeIds);\r\n }\r\n );\r\n\r\n return true;\r\n }\r\n\r\n async getAttachmentData(documentId: string, attachmentId: string, _digest: string): Promise<Blob> {\r\n ensureNotClosed(this);\r\n const state = await this.internals;\r\n const id = attachmentObjectId(documentId, attachmentId);\r\n return await state.dexieDb.transaction(\r\n 'r',\r\n state.dexieAttachmentsTable,\r\n async () => {\r\n\r\n const attachment = await state.dexieAttachmentsTable.get(id);\r\n if (attachment) {\r\n return attachment.data;\r\n } else {\r\n throw new Error('attachment missing documentId: ' + documentId + ' attachmentId: ' + attachmentId);\r\n }\r\n });\r\n }\r\n\r\n async remove(): Promise<void> {\r\n ensureNotClosed(this);\r\n const state = await this.internals;\r\n await state.dexieTable.clear()\r\n return this.close();\r\n }\r\n\r\n\r\n close(): Promise<void> {\r\n if (this.closed) {\r\n return this.closed;\r\n }\r\n this.closed = (async () => {\r\n this.changes$.complete();\r\n await closeDexieDb(this.internals);\r\n })();\r\n return this.closed;\r\n }\r\n}\r\n\r\n\r\nexport async function createDexieStorageInstance<RxDocType>(\r\n storage: RxStorageDexie,\r\n params: RxStorageInstanceCreationParams<RxDocType, DexieSettings>,\r\n settings: DexieSettings\r\n): Promise<RxStorageInstanceDexie<RxDocType>> {\r\n const internals = getDexieDbWithTables(\r\n params.databaseName,\r\n params.collectionName,\r\n settings,\r\n params.schema\r\n );\r\n\r\n const instance = new RxStorageInstanceDexie(\r\n storage,\r\n params.databaseName,\r\n params.collectionName,\r\n params.schema,\r\n internals,\r\n params.options,\r\n settings,\r\n params.devMode\r\n );\r\n\r\n await addRxStorageMultiInstanceSupport(\r\n RX_STORAGE_NAME_DEXIE,\r\n params,\r\n instance\r\n );\r\n\r\n return Promise.resolve(instance);\r\n}\r\n\r\n\r\n\r\nfunction ensureNotClosed(\r\n instance: RxStorageInstanceDexie<any>\r\n) {\r\n if (instance.closed) {\r\n throw new Error('RxStorageInstanceDexie is closed ' + instance.databaseName + '-' + instance.collectionName);\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,10 @@
1
1
  export var PREMIUM_FLAG_HASH = '6da4936d1425ff3a5c44c02342c6daf791d266be3ae8479b8ec59e261df41b93';
2
2
  export var NON_PREMIUM_COLLECTION_LIMIT = 999;
3
3
 
4
- /**
5
- * Here we check if the premium flag has been set.
6
- * This code exists in the open source version of RxDB.
7
- * Yes you are allowed to fork the repo and just overwrite this function.
4
+ /**
5
+ * Here we check if the premium flag has been set.
6
+ * This code exists in the open source version of RxDB.
7
+ * Yes you are allowed to fork the repo and just overwrite this function.
8
8
  */
9
9
  export async function hasPremiumFlag() {
10
10
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"utils-premium.js","names":["PREMIUM_FLAG_HASH","NON_PREMIUM_COLLECTION_LIMIT","hasPremiumFlag"],"sources":["../../../../src/plugins/utils/utils-premium.ts"],"sourcesContent":["export const PREMIUM_FLAG_HASH = '6da4936d1425ff3a5c44c02342c6daf791d266be3ae8479b8ec59e261df41b93';\nexport const NON_PREMIUM_COLLECTION_LIMIT = 999;\n\n/**\n * Here we check if the premium flag has been set.\n * This code exists in the open source version of RxDB.\n * Yes you are allowed to fork the repo and just overwrite this function.\n */\nexport async function hasPremiumFlag() {\n return true;\n}\n"],"mappings":"AAAA,OAAO,IAAMA,iBAAiB,GAAG,kEAAkE;AACnG,OAAO,IAAMC,4BAA4B,GAAG,GAAG;;AAE/C;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,cAAcA,CAAA,EAAG;EACnC,OAAO,IAAI;AACf","ignoreList":[]}
1
+ {"version":3,"file":"utils-premium.js","names":["PREMIUM_FLAG_HASH","NON_PREMIUM_COLLECTION_LIMIT","hasPremiumFlag"],"sources":["../../../../src/plugins/utils/utils-premium.ts"],"sourcesContent":["export const PREMIUM_FLAG_HASH = '6da4936d1425ff3a5c44c02342c6daf791d266be3ae8479b8ec59e261df41b93';\r\nexport const NON_PREMIUM_COLLECTION_LIMIT = 999;\r\n\r\n/**\r\n * Here we check if the premium flag has been set.\r\n * This code exists in the open source version of RxDB.\r\n * Yes you are allowed to fork the repo and just overwrite this function.\r\n */\r\nexport async function hasPremiumFlag() {\r\n return true;\r\n}\r\n"],"mappings":"AAAA,OAAO,IAAMA,iBAAiB,GAAG,kEAAkE;AACnG,OAAO,IAAMC,4BAA4B,GAAG,GAAG;;AAE/C;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,cAAcA,CAAA,EAAG;EACnC,OAAO,IAAI;AACf","ignoreList":[]}
@@ -1,29 +1,30 @@
1
- /**
1
+ // @ts-nocheck
2
+ /**
2
3
  * this is the main entry-point
3
4
  * for when the you call "import from 'rxdb'".
4
5
  */
5
- export * from './plugin.ts';
6
- export * from './rx-database.ts';
7
- export * from './rx-error.ts';
8
- export * from './rx-database-internal-store.ts';
9
- export * from './overwritable.ts';
10
- export * from './rx-collection.ts';
11
- export * from './rx-collection-helper.ts';
12
- export * from './rx-document.ts';
13
- export * from './rx-change-event.ts';
14
- export * from './rx-document-prototype-merge.ts';
15
- export * from './rx-query.ts';
16
- export * from './rx-query-single-result.ts';
17
- export * from './rx-query-helper.ts';
18
- export * from './rx-schema.ts';
19
- export * from './rx-schema-helper.ts';
20
- export * from './rx-storage-helper.ts';
21
- export * from './replication-protocol/index.ts';
22
- export * from './rx-storage-multiinstance.ts';
23
- export * from './custom-index.ts';
24
- export * from './query-planner.ts';
25
- export * from './plugin-helpers.ts';
26
- export * from './plugins/utils/index.ts';
27
- export * from './hooks.ts';
28
- export * from './query-cache.ts';
6
+ export * from './plugin.d.ts';
7
+ export * from './rx-database.d.ts';
8
+ export * from './rx-error.d.ts';
9
+ export * from './rx-database-internal-store.d.ts';
10
+ export * from './overwritable.d.ts';
11
+ export * from './rx-collection.d.ts';
12
+ export * from './rx-collection-helper.d.ts';
13
+ export * from './rx-document.d.ts';
14
+ export * from './rx-change-event.d.ts';
15
+ export * from './rx-document-prototype-merge.d.ts';
16
+ export * from './rx-query.d.ts';
17
+ export * from './rx-query-single-result.d.ts';
18
+ export * from './rx-query-helper.d.ts';
19
+ export * from './rx-schema.d.ts';
20
+ export * from './rx-schema-helper.d.ts';
21
+ export * from './rx-storage-helper.d.ts';
22
+ export * from './replication-protocol/index.d.ts';
23
+ export * from './rx-storage-multiinstance.d.ts';
24
+ export * from './custom-index.d.ts';
25
+ export * from './query-planner.d.ts';
26
+ export * from './plugin-helpers.d.ts';
27
+ export * from './plugins/utils/index.d.ts';
28
+ export * from './hooks.d.ts';
29
+ export * from './query-cache.d.ts';
29
30
  export type * from './types/index.d.ts';
@@ -0,0 +1,48 @@
1
+ import type { WithDeleted } from './rx-storage.d.ts';
2
+
3
+ /**
4
+ * Notice that the conflict handler input/output
5
+ * does not work on RxDocumentData<RxDocType>, but only on WithDeleted<RxDocType>.
6
+ * This is because the _meta attributes are meant for the local storing of document data, they not replicated
7
+ * and therefore cannot be used to resolve conflicts.
8
+ */
9
+ export type RxConflictHandlerInput<RxDocType> = {
10
+ assumedMasterState?: WithDeleted<RxDocType>;
11
+ realMasterState: WithDeleted<RxDocType>;
12
+ newDocumentState: WithDeleted<RxDocType>;
13
+ };
14
+
15
+ /**
16
+ * The conflict handler either returns:
17
+ * - The resolved new document state
18
+ * - A flag to identify the given 'realMasterState' and 'newDocumentState'
19
+ * as being exactly equal, so no conflict has to be resolved.
20
+ */
21
+ export type RxConflictHandlerOutput<RxDocType> = {
22
+ isEqual: false;
23
+ documentData: WithDeleted<RxDocType>;
24
+ } | {
25
+ isEqual: true;
26
+ };
27
+
28
+ export type RxConflictHandlerOld<RxDocType> = (
29
+ i: RxConflictHandlerInput<RxDocType>,
30
+ context: string
31
+ ) => Promise<RxConflictHandlerOutput<RxDocType>>;
32
+
33
+
34
+ export type RxConflictHandler<RxDocType> = {
35
+ /**
36
+ * This must be non-async
37
+ * because it will be called very often and must be fast.
38
+ */
39
+ isEqual: (
40
+ a: WithDeleted<RxDocType>,
41
+ b: WithDeleted<RxDocType>,
42
+ context: string
43
+ ) => boolean;
44
+ resolve: (
45
+ i: RxConflictHandlerInput<RxDocType>,
46
+ context: string
47
+ ) => Promise<WithDeleted<RxDocType>>;
48
+ };