@connecttomahdi/rxdb 17.0.0-beta.17 → 17.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -0
- package/CHANGELOG.md +47 -4
- package/CLAUDE.md +2 -0
- package/dist/cjs/change-event-buffer.js +2 -1
- package/dist/cjs/change-event-buffer.js.map +1 -1
- package/dist/cjs/custom-index.js +85 -12
- package/dist/cjs/custom-index.js.map +1 -1
- package/dist/cjs/doc-cache.js +117 -35
- package/dist/cjs/doc-cache.js.map +1 -1
- package/dist/cjs/event-reduce.js +10 -1
- package/dist/cjs/event-reduce.js.map +1 -1
- package/dist/cjs/plugin-helpers.js +16 -0
- package/dist/cjs/plugin-helpers.js.map +1 -1
- package/dist/cjs/plugins/attachments/index.js +3 -3
- package/dist/cjs/plugins/attachments/index.js.map +1 -1
- package/dist/cjs/plugins/cleanup/cleanup.js +5 -3
- package/dist/cjs/plugins/cleanup/cleanup.js.map +1 -1
- package/dist/cjs/plugins/crdt/index.js +52 -0
- package/dist/cjs/plugins/crdt/index.js.map +1 -1
- package/dist/cjs/plugins/dev-mode/check-query.js +7 -1
- package/dist/cjs/plugins/dev-mode/check-query.js.map +1 -1
- package/dist/cjs/plugins/dev-mode/check-schema.js +2 -1
- package/dist/cjs/plugins/dev-mode/check-schema.js.map +1 -1
- package/dist/cjs/plugins/dev-mode/error-messages.js +43 -5
- package/dist/cjs/plugins/dev-mode/error-messages.js.map +1 -1
- package/dist/cjs/plugins/encryption-crypto-js/index.js +22 -6
- package/dist/cjs/plugins/encryption-crypto-js/index.js.map +1 -1
- package/dist/cjs/plugins/leader-election/index.js +5 -5
- package/dist/cjs/plugins/leader-election/index.js.map +1 -1
- package/dist/cjs/plugins/local-documents/local-documents.js +20 -13
- package/dist/cjs/plugins/local-documents/local-documents.js.map +1 -1
- package/dist/cjs/plugins/migration-schema/migration-helpers.js +3 -0
- package/dist/cjs/plugins/migration-schema/migration-helpers.js.map +1 -1
- package/dist/cjs/plugins/migration-schema/rx-migration-state.js +1 -1
- package/dist/cjs/plugins/migration-schema/rx-migration-state.js.map +1 -1
- package/dist/cjs/plugins/pipeline/rx-pipeline.js +5 -1
- package/dist/cjs/plugins/pipeline/rx-pipeline.js.map +1 -1
- package/dist/cjs/plugins/query-builder/mquery/nosql-query-builder.js +4 -2
- package/dist/cjs/plugins/query-builder/mquery/nosql-query-builder.js.map +1 -1
- package/dist/cjs/plugins/replication/index.js +40 -2
- package/dist/cjs/plugins/replication/index.js.map +1 -1
- package/dist/cjs/plugins/replication-google-drive/document-handling.js +17 -6
- package/dist/cjs/plugins/replication-google-drive/document-handling.js.map +1 -1
- package/dist/cjs/plugins/replication-google-drive/google-drive-helper.js +1 -1
- package/dist/cjs/plugins/replication-google-drive/google-drive-helper.js.map +1 -1
- package/dist/cjs/plugins/replication-google-drive/google-drive-types.js.map +1 -1
- package/dist/cjs/plugins/replication-google-drive/signaling.js +4 -1
- package/dist/cjs/plugins/replication-google-drive/signaling.js.map +1 -1
- package/dist/cjs/plugins/replication-google-drive/upstream.js +7 -4
- package/dist/cjs/plugins/replication-google-drive/upstream.js.map +1 -1
- package/dist/cjs/plugins/replication-microsoft-onedrive/signaling.js +4 -1
- package/dist/cjs/plugins/replication-microsoft-onedrive/signaling.js.map +1 -1
- package/dist/cjs/plugins/state/rx-state.js +14 -3
- package/dist/cjs/plugins/state/rx-state.js.map +1 -1
- package/dist/cjs/plugins/storage-dexie/rx-storage-instance-dexie.js +10 -17
- package/dist/cjs/plugins/storage-dexie/rx-storage-instance-dexie.js.map +1 -1
- package/dist/cjs/plugins/storage-memory/binary-search-bounds.js +112 -40
- package/dist/cjs/plugins/storage-memory/binary-search-bounds.js.map +1 -1
- package/dist/cjs/plugins/storage-memory/memory-helper.js +127 -40
- package/dist/cjs/plugins/storage-memory/memory-helper.js.map +1 -1
- package/dist/cjs/plugins/storage-memory/memory-indexes.js +1 -0
- package/dist/cjs/plugins/storage-memory/memory-indexes.js.map +1 -1
- package/dist/cjs/plugins/storage-memory/memory-types.js.map +1 -1
- package/dist/cjs/plugins/storage-memory/rx-storage-instance-memory.js +97 -37
- package/dist/cjs/plugins/storage-memory/rx-storage-instance-memory.js.map +1 -1
- package/dist/cjs/plugins/storage-mongodb/mongodb-helper.js +42 -1
- package/dist/cjs/plugins/storage-mongodb/mongodb-helper.js.map +1 -1
- package/dist/cjs/plugins/storage-mongodb/rx-storage-instance-mongodb.js +7 -7
- package/dist/cjs/plugins/storage-mongodb/rx-storage-instance-mongodb.js.map +1 -1
- package/dist/cjs/plugins/test-utils/config.js +1 -1
- package/dist/cjs/plugins/test-utils/config.js.map +1 -1
- package/dist/cjs/plugins/test-utils/performance.js +122 -92
- package/dist/cjs/plugins/test-utils/performance.js.map +1 -1
- package/dist/cjs/plugins/test-utils/schema-objects.js +1 -1
- package/dist/cjs/plugins/test-utils/schema-objects.js.map +1 -1
- package/dist/cjs/plugins/test-utils/test-util.js +62 -0
- package/dist/cjs/plugins/test-utils/test-util.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-map.js +2 -2
- package/dist/cjs/plugins/utils/utils-map.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-object-deep-equal.js +3 -2
- package/dist/cjs/plugins/utils/utils-object-deep-equal.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-object-dot-prop.js +25 -0
- package/dist/cjs/plugins/utils/utils-object-dot-prop.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-object.js +102 -27
- package/dist/cjs/plugins/utils/utils-object.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-other.js +9 -4
- package/dist/cjs/plugins/utils/utils-other.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-premium.js +1 -19
- package/dist/cjs/plugins/utils/utils-premium.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-revision.js +20 -10
- package/dist/cjs/plugins/utils/utils-revision.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-rxdb-version.js +1 -1
- package/dist/cjs/plugins/utils/utils-rxdb-version.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-string.js +11 -8
- package/dist/cjs/plugins/utils/utils-string.js.map +1 -1
- package/dist/cjs/plugins/utils/utils-time.js +21 -16
- package/dist/cjs/plugins/utils/utils-time.js.map +1 -1
- package/dist/cjs/query-cache.js +6 -4
- package/dist/cjs/query-cache.js.map +1 -1
- package/dist/cjs/query-planner.js +2 -2
- package/dist/cjs/query-planner.js.map +1 -1
- package/dist/cjs/replication-protocol/downstream.js +1 -1
- package/dist/cjs/replication-protocol/downstream.js.map +1 -1
- package/dist/cjs/rx-collection-helper.js +11 -6
- package/dist/cjs/rx-collection-helper.js.map +1 -1
- package/dist/cjs/rx-collection.js +34 -6
- package/dist/cjs/rx-collection.js.map +1 -1
- package/dist/cjs/rx-database.js +40 -7
- package/dist/cjs/rx-database.js.map +1 -1
- package/dist/cjs/rx-document.js +10 -3
- package/dist/cjs/rx-document.js.map +1 -1
- package/dist/cjs/rx-query-helper.js +35 -12
- package/dist/cjs/rx-query-helper.js.map +1 -1
- package/dist/cjs/rx-query-single-result.js +9 -2
- package/dist/cjs/rx-query-single-result.js.map +1 -1
- package/dist/cjs/rx-query.js +72 -29
- package/dist/cjs/rx-query.js.map +1 -1
- package/dist/cjs/rx-schema-helper.js +9 -3
- package/dist/cjs/rx-schema-helper.js.map +1 -1
- package/dist/cjs/rx-schema.js +1 -0
- package/dist/cjs/rx-schema.js.map +1 -1
- package/dist/cjs/rx-storage-helper.js +212 -129
- package/dist/cjs/rx-storage-helper.js.map +1 -1
- package/dist/cjs/types/rx-error.d.js.map +1 -1
- package/dist/cjs/types/rx-schema.d.js.map +1 -1
- package/dist/esm/change-event-buffer.js +2 -1
- package/dist/esm/change-event-buffer.js.map +1 -1
- package/dist/esm/custom-index.js +85 -12
- package/dist/esm/custom-index.js.map +1 -1
- package/dist/esm/doc-cache.js +118 -36
- package/dist/esm/doc-cache.js.map +1 -1
- package/dist/esm/event-reduce.js +10 -1
- package/dist/esm/event-reduce.js.map +1 -1
- package/dist/esm/plugin-helpers.js +16 -0
- package/dist/esm/plugin-helpers.js.map +1 -1
- package/dist/esm/plugins/attachments/index.js +3 -3
- package/dist/esm/plugins/attachments/index.js.map +1 -1
- package/dist/esm/plugins/cleanup/cleanup.js +5 -3
- package/dist/esm/plugins/cleanup/cleanup.js.map +1 -1
- package/dist/esm/plugins/crdt/index.js +52 -0
- package/dist/esm/plugins/crdt/index.js.map +1 -1
- package/dist/esm/plugins/dev-mode/check-query.js +7 -1
- package/dist/esm/plugins/dev-mode/check-query.js.map +1 -1
- package/dist/esm/plugins/dev-mode/check-schema.js +2 -1
- package/dist/esm/plugins/dev-mode/check-schema.js.map +1 -1
- package/dist/esm/plugins/dev-mode/error-messages.js +43 -5
- package/dist/esm/plugins/dev-mode/error-messages.js.map +1 -1
- package/dist/esm/plugins/encryption-crypto-js/index.js +22 -6
- package/dist/esm/plugins/encryption-crypto-js/index.js.map +1 -1
- package/dist/esm/plugins/leader-election/index.js +4 -4
- package/dist/esm/plugins/leader-election/index.js.map +1 -1
- package/dist/esm/plugins/local-documents/local-documents.js +20 -13
- package/dist/esm/plugins/local-documents/local-documents.js.map +1 -1
- package/dist/esm/plugins/migration-schema/migration-helpers.js +3 -0
- package/dist/esm/plugins/migration-schema/migration-helpers.js.map +1 -1
- package/dist/esm/plugins/migration-schema/rx-migration-state.js +1 -1
- package/dist/esm/plugins/migration-schema/rx-migration-state.js.map +1 -1
- package/dist/esm/plugins/pipeline/rx-pipeline.js +5 -1
- package/dist/esm/plugins/pipeline/rx-pipeline.js.map +1 -1
- package/dist/esm/plugins/query-builder/mquery/nosql-query-builder.js +4 -2
- package/dist/esm/plugins/query-builder/mquery/nosql-query-builder.js.map +1 -1
- package/dist/esm/plugins/replication/index.js +40 -2
- package/dist/esm/plugins/replication/index.js.map +1 -1
- package/dist/esm/plugins/replication-google-drive/document-handling.js +17 -6
- package/dist/esm/plugins/replication-google-drive/document-handling.js.map +1 -1
- package/dist/esm/plugins/replication-google-drive/google-drive-helper.js +1 -1
- package/dist/esm/plugins/replication-google-drive/google-drive-helper.js.map +1 -1
- package/dist/esm/plugins/replication-google-drive/google-drive-types.js.map +1 -1
- package/dist/esm/plugins/replication-google-drive/signaling.js +4 -1
- package/dist/esm/plugins/replication-google-drive/signaling.js.map +1 -1
- package/dist/esm/plugins/replication-google-drive/upstream.js +7 -4
- package/dist/esm/plugins/replication-google-drive/upstream.js.map +1 -1
- package/dist/esm/plugins/replication-microsoft-onedrive/signaling.js +4 -1
- package/dist/esm/plugins/replication-microsoft-onedrive/signaling.js.map +1 -1
- package/dist/esm/plugins/state/rx-state.js +15 -4
- package/dist/esm/plugins/state/rx-state.js.map +1 -1
- package/dist/esm/plugins/storage-dexie/rx-storage-instance-dexie.js +11 -18
- package/dist/esm/plugins/storage-dexie/rx-storage-instance-dexie.js.map +1 -1
- package/dist/esm/plugins/storage-memory/binary-search-bounds.js +107 -40
- package/dist/esm/plugins/storage-memory/binary-search-bounds.js.map +1 -1
- package/dist/esm/plugins/storage-memory/memory-helper.js +128 -41
- package/dist/esm/plugins/storage-memory/memory-helper.js.map +1 -1
- package/dist/esm/plugins/storage-memory/memory-indexes.js +1 -0
- package/dist/esm/plugins/storage-memory/memory-indexes.js.map +1 -1
- package/dist/esm/plugins/storage-memory/memory-types.js.map +1 -1
- package/dist/esm/plugins/storage-memory/rx-storage-instance-memory.js +90 -30
- package/dist/esm/plugins/storage-memory/rx-storage-instance-memory.js.map +1 -1
- package/dist/esm/plugins/storage-mongodb/mongodb-helper.js +39 -0
- package/dist/esm/plugins/storage-mongodb/mongodb-helper.js.map +1 -1
- package/dist/esm/plugins/storage-mongodb/rx-storage-instance-mongodb.js +8 -8
- package/dist/esm/plugins/storage-mongodb/rx-storage-instance-mongodb.js.map +1 -1
- package/dist/esm/plugins/test-utils/config.js +1 -1
- package/dist/esm/plugins/test-utils/config.js.map +1 -1
- package/dist/esm/plugins/test-utils/performance.js +122 -92
- package/dist/esm/plugins/test-utils/performance.js.map +1 -1
- package/dist/esm/plugins/test-utils/schema-objects.js +1 -1
- package/dist/esm/plugins/test-utils/schema-objects.js.map +1 -1
- package/dist/esm/plugins/test-utils/test-util.js +59 -0
- package/dist/esm/plugins/test-utils/test-util.js.map +1 -1
- package/dist/esm/plugins/utils/utils-map.js +2 -2
- package/dist/esm/plugins/utils/utils-map.js.map +1 -1
- package/dist/esm/plugins/utils/utils-object-deep-equal.js +3 -2
- package/dist/esm/plugins/utils/utils-object-deep-equal.js.map +1 -1
- package/dist/esm/plugins/utils/utils-object-dot-prop.js +25 -0
- package/dist/esm/plugins/utils/utils-object-dot-prop.js.map +1 -1
- package/dist/esm/plugins/utils/utils-object.js +102 -27
- package/dist/esm/plugins/utils/utils-object.js.map +1 -1
- package/dist/esm/plugins/utils/utils-other.js +9 -4
- package/dist/esm/plugins/utils/utils-other.js.map +1 -1
- package/dist/esm/plugins/utils/utils-premium.js +1 -19
- package/dist/esm/plugins/utils/utils-premium.js.map +1 -1
- package/dist/esm/plugins/utils/utils-revision.js +20 -10
- package/dist/esm/plugins/utils/utils-revision.js.map +1 -1
- package/dist/esm/plugins/utils/utils-rxdb-version.js +1 -1
- package/dist/esm/plugins/utils/utils-rxdb-version.js.map +1 -1
- package/dist/esm/plugins/utils/utils-string.js +11 -8
- package/dist/esm/plugins/utils/utils-string.js.map +1 -1
- package/dist/esm/plugins/utils/utils-time.js +21 -16
- package/dist/esm/plugins/utils/utils-time.js.map +1 -1
- package/dist/esm/query-cache.js +7 -5
- package/dist/esm/query-cache.js.map +1 -1
- package/dist/esm/query-planner.js +2 -2
- package/dist/esm/query-planner.js.map +1 -1
- package/dist/esm/replication-protocol/downstream.js +1 -1
- package/dist/esm/replication-protocol/downstream.js.map +1 -1
- package/dist/esm/rx-collection-helper.js +12 -7
- package/dist/esm/rx-collection-helper.js.map +1 -1
- package/dist/esm/rx-collection.js +35 -7
- package/dist/esm/rx-collection.js.map +1 -1
- package/dist/esm/rx-database.js +40 -7
- package/dist/esm/rx-database.js.map +1 -1
- package/dist/esm/rx-document.js +11 -4
- package/dist/esm/rx-document.js.map +1 -1
- package/dist/esm/rx-query-helper.js +35 -12
- package/dist/esm/rx-query-helper.js.map +1 -1
- package/dist/esm/rx-query-single-result.js +10 -3
- package/dist/esm/rx-query-single-result.js.map +1 -1
- package/dist/esm/rx-query.js +72 -29
- package/dist/esm/rx-query.js.map +1 -1
- package/dist/esm/rx-schema-helper.js +9 -3
- package/dist/esm/rx-schema-helper.js.map +1 -1
- package/dist/esm/rx-schema.js +1 -0
- package/dist/esm/rx-schema.js.map +1 -1
- package/dist/esm/rx-storage-helper.js +176 -94
- package/dist/esm/rx-storage-helper.js.map +1 -1
- package/dist/esm/types/rx-error.d.js.map +1 -1
- package/dist/esm/types/rx-schema.d.js.map +1 -1
- package/dist/types/custom-index.d.ts +5 -0
- package/dist/types/doc-cache.d.ts +1 -1
- package/dist/types/index.d.ts +25 -26
- package/dist/types/plugins/dev-mode/error-messages.d.ts +36 -0
- package/dist/types/plugins/leader-election/index.d.ts +1 -0
- package/dist/types/plugins/replication-google-drive/document-handling.d.ts +4 -1
- package/dist/types/plugins/replication-google-drive/google-drive-types.d.ts +1 -0
- package/dist/types/plugins/state/rx-state.d.ts +1 -1
- package/dist/types/plugins/storage-denokv/index.d.ts +1 -1
- package/dist/types/plugins/storage-dexie/rx-storage-dexie.d.ts +1 -1
- package/dist/types/plugins/storage-localstorage/index.d.ts +1 -1
- package/dist/types/plugins/storage-memory/binary-search-bounds.d.ts +21 -10
- package/dist/types/plugins/storage-memory/memory-helper.d.ts +7 -3
- package/dist/types/plugins/storage-memory/memory-types.d.ts +5 -0
- package/dist/types/plugins/storage-mongodb/mongodb-helper.d.ts +9 -1
- package/dist/types/plugins/storage-mongodb/rx-storage-instance-mongodb.d.ts +2 -2
- package/dist/types/plugins/storage-mongodb/rx-storage-mongodb.d.ts +1 -1
- package/dist/types/plugins/storage-remote/rx-storage-remote.d.ts +1 -1
- package/dist/types/plugins/storage-sqlite/index.d.ts +1 -1
- package/dist/types/plugins/test-utils/performance.d.ts +36 -0
- package/dist/types/plugins/test-utils/test-util.d.ts +17 -0
- package/dist/types/plugins/utils/utils-object.d.ts +8 -3
- package/dist/types/plugins/utils/utils-premium.d.ts +0 -2
- package/dist/types/plugins/utils/utils-rxdb-version.d.ts +1 -1
- package/dist/types/rx-database.d.ts +1 -1
- package/dist/types/rx-query-single-result.d.ts +1 -1
- package/dist/types/rx-query.d.ts +3 -2
- package/dist/types/rx-storage-helper.d.ts +15 -0
- package/eslint.config.mjs +2 -1
- package/package.json +732 -729
- package/scripts/check-code-block-line-length.js +91 -0
- package/scripts/check-em-dashes.js +53 -0
- package/scripts/docs-fetch-git-history.mjs +36 -0
- package/scripts/install-foundationdb.sh +0 -6
- package/scripts/notify-indexnow.mjs +171 -0
- package/scripts/start-foundationdb-docker.sh +73 -0
- package/src/change-event-buffer.ts +4 -1
- package/src/custom-index.ts +93 -16
- package/src/doc-cache.ts +117 -41
- package/src/event-reduce.ts +10 -1
- package/src/plugin-helpers.ts +10 -0
- package/src/plugins/attachments/index.ts +10 -12
- package/src/plugins/cleanup/cleanup.ts +5 -3
- package/src/plugins/crdt/index.ts +55 -0
- package/src/plugins/dev-mode/check-query.ts +7 -1
- package/src/plugins/dev-mode/check-schema.ts +2 -1
- package/src/plugins/dev-mode/error-messages.ts +45 -5
- package/src/plugins/encryption-crypto-js/index.ts +18 -6
- package/src/plugins/leader-election/index.ts +9 -8
- package/src/plugins/local-documents/local-documents.ts +21 -12
- package/src/plugins/migration-schema/migration-helpers.ts +3 -0
- package/src/plugins/migration-schema/rx-migration-state.ts +1 -1
- package/src/plugins/pipeline/rx-pipeline.ts +5 -1
- package/src/plugins/query-builder/mquery/nosql-query-builder.ts +8 -2
- package/src/plugins/replication/index.ts +41 -3
- package/src/plugins/replication-google-drive/document-handling.ts +17 -5
- package/src/plugins/replication-google-drive/google-drive-helper.ts +1 -1
- package/src/plugins/replication-google-drive/google-drive-types.ts +1 -0
- package/src/plugins/replication-google-drive/signaling.ts +4 -1
- package/src/plugins/replication-google-drive/upstream.ts +7 -4
- package/src/plugins/replication-microsoft-onedrive/signaling.ts +4 -1
- package/src/plugins/state/rx-state.ts +17 -5
- package/src/plugins/storage-dexie/rx-storage-instance-dexie.ts +0 -27
- package/src/plugins/storage-memory/binary-search-bounds.ts +105 -40
- package/src/plugins/storage-memory/memory-helper.ts +158 -67
- package/src/plugins/storage-memory/memory-indexes.ts +1 -0
- package/src/plugins/storage-memory/memory-types.ts +5 -0
- package/src/plugins/storage-memory/rx-storage-instance-memory.ts +104 -53
- package/src/plugins/storage-mongodb/mongodb-helper.ts +43 -1
- package/src/plugins/storage-mongodb/rx-storage-instance-mongodb.ts +11 -9
- package/src/plugins/test-utils/config.ts +2 -1
- package/src/plugins/test-utils/performance.ts +159 -85
- package/src/plugins/test-utils/schema-objects.ts +1 -1
- package/src/plugins/test-utils/test-util.ts +71 -0
- package/src/plugins/utils/utils-map.ts +2 -2
- package/src/plugins/utils/utils-object-deep-equal.ts +2 -4
- package/src/plugins/utils/utils-object-dot-prop.ts +25 -0
- package/src/plugins/utils/utils-object.ts +103 -28
- package/src/plugins/utils/utils-other.ts +9 -4
- package/src/plugins/utils/utils-premium.ts +11 -37
- package/src/plugins/utils/utils-revision.ts +20 -9
- package/src/plugins/utils/utils-rxdb-version.ts +1 -1
- package/src/plugins/utils/utils-string.ts +11 -9
- package/src/plugins/utils/utils-time.ts +21 -17
- package/src/query-cache.ts +6 -5
- package/src/query-planner.ts +2 -2
- package/src/replication-protocol/downstream.ts +1 -1
- package/src/rx-collection-helper.ts +12 -6
- package/src/rx-collection.ts +39 -8
- package/src/rx-database.ts +49 -17
- package/src/rx-document.ts +12 -3
- package/src/rx-query-helper.ts +36 -15
- package/src/rx-query-single-result.ts +10 -3
- package/src/rx-query.ts +48 -8
- package/src/rx-schema-helper.ts +7 -4
- package/src/rx-schema.ts +1 -0
- package/src/rx-storage-helper.ts +210 -139
- package/src/types/rx-error.d.ts +3 -0
- package/src/types/rx-schema.d.ts +5 -0
- package/dist/esm/package.json +0 -1
- package/dist/types/types/conflict-handling.d.ts +0 -48
- package/dist/types/types/couchdb.d.ts +0 -293
- package/dist/types/types/index.d.ts +0 -32
- package/dist/types/types/modules/index.d.ts +0 -0
- package/dist/types/types/modules/mocha.parallel.d.ts +0 -1
- package/dist/types/types/plugins/backup.d.ts +0 -35
- package/dist/types/types/plugins/cleanup.d.ts +0 -38
- package/dist/types/types/plugins/crdt.d.ts +0 -76
- package/dist/types/types/plugins/dexie.d.ts +0 -30
- package/dist/types/types/plugins/local-documents.d.ts +0 -49
- package/dist/types/types/plugins/migration.d.ts +0 -14
- package/dist/types/types/plugins/reactivity.d.ts +0 -40
- package/dist/types/types/plugins/replication-graphql.d.ts +0 -98
- package/dist/types/types/plugins/replication.d.ts +0 -175
- package/dist/types/types/plugins/state.d.ts +0 -4
- package/dist/types/types/plugins/update.d.ts +0 -23
- package/dist/types/types/plugins/webmcp.d.ts +0 -40
- package/dist/types/types/query-planner.d.ts +0 -47
- package/dist/types/types/replication-protocol.d.ts +0 -296
- package/dist/types/types/rx-attachment.d.ts +0 -46
- package/dist/types/types/rx-change-event.d.ts +0 -85
- package/dist/types/types/rx-collection.d.ts +0 -117
- package/dist/types/types/rx-database-internal-store.d.ts +0 -54
- package/dist/types/types/rx-database.d.ts +0 -124
- package/dist/types/types/rx-document.d.ts +0 -160
- package/dist/types/types/rx-error.d.ts +0 -222
- package/dist/types/types/rx-plugin.d.ts +0 -167
- package/dist/types/types/rx-query.d.ts +0 -144
- package/dist/types/types/rx-schema.d.ts +0 -209
- package/dist/types/types/rx-storage.d.ts +0 -347
- package/dist/types/types/rx-storage.interface.d.ts +0 -312
- package/dist/types/types/util.d.ts +0 -180
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-object.js","names":["deepFreeze","o","Object","freeze","getOwnPropertyNames","forEach","prop","prototype","hasOwnProperty","call","isFrozen","objectPathMonad","objectPath","split","splitLength","length","obj","currentVal","i","subPath","getFromObjectOrThrow","key","val","Error","flattenObject","ob","toReturn","flatObject","x","flatClone","assign","firstPropertyNameOfObject","keys","firstPropertyValueOfObject","sortObject","noArraySort","Array","isArray","sort","a","b","localeCompare","map","out","deepClone","src","Blob","ret","dest","clone","exports","overwriteGetterForCaching","getterName","value","defineProperty","get","hasDeepProperty","property","has","find","item","findUndefinedPath","parentPath","currentPath","result"],"sources":["../../../../src/plugins/utils/utils-object.ts"],"sourcesContent":["import type {\r\n DeepReadonlyObject\r\n} from '../../types/index.d.ts';\r\n\r\nexport function deepFreeze<T>(o: T): T {\r\n Object.freeze(o);\r\n Object.getOwnPropertyNames(o).forEach(function (prop) {\r\n if (\r\n Object.prototype.hasOwnProperty.call(o, prop) &&\r\n (o as any)[prop] !== null &&\r\n (\r\n typeof (o as any)[prop] === 'object'\r\n ||\r\n typeof (o as any)[prop] === 'function'\r\n ) &&\r\n !Object.isFrozen((o as any)[prop])\r\n ) {\r\n deepFreeze((o as any)[prop]);\r\n }\r\n });\r\n return o;\r\n}\r\n\r\n\r\n\r\n/**\r\n * To get specific nested path values from objects,\r\n * RxDB normally uses the 'dot-prop' npm module.\r\n * But when performance is really relevant, this is not fast enough.\r\n * Instead we use a monad that can prepare some stuff up front\r\n * and we can reuse the generated function.\r\n */\r\nexport type ObjectPathMonadFunction<T, R = any> = (obj: T) => R;\r\nexport function objectPathMonad<T, R = any>(objectPath: string): ObjectPathMonadFunction<T, R> {\r\n const split = objectPath.split('.');\r\n\r\n // reuse this variable for better performance.\r\n const splitLength = split.length;\r\n\r\n /**\r\n * Performance shortcut,\r\n * if no nested path is used,\r\n * directly return the field of the object.\r\n */\r\n if (splitLength === 1) {\r\n return (obj: T) => (obj as any)[objectPath];\r\n }\r\n\r\n\r\n return (obj: T) => {\r\n let currentVal: any = obj;\r\n for (let i = 0; i < splitLength; ++i) {\r\n const subPath = split[i];\r\n currentVal = currentVal[subPath];\r\n if (typeof currentVal === 'undefined') {\r\n return currentVal;\r\n }\r\n }\r\n return currentVal;\r\n };\r\n}\r\n\r\n\r\nexport function getFromObjectOrThrow<V>(\r\n obj: { [k: string]: V; },\r\n key: string\r\n): V {\r\n const val = obj[key];\r\n if (!val) {\r\n throw new Error('missing value from object ' + key);\r\n }\r\n return val;\r\n}\r\n\r\n/**\r\n * returns a flattened object\r\n * @link https://gist.github.com/penguinboy/762197\r\n */\r\nexport function flattenObject(ob: any) {\r\n const toReturn: any = {};\r\n\r\n for (const i in ob) {\r\n if (!Object.prototype.hasOwnProperty.call(ob, i)) continue;\r\n if ((typeof ob[i]) === 'object') {\r\n const flatObject = flattenObject(ob[i]);\r\n for (const x in flatObject) {\r\n if (!Object.prototype.hasOwnProperty.call(flatObject, x)) continue;\r\n toReturn[i + '.' + x] = flatObject[x];\r\n }\r\n } else {\r\n toReturn[i] = ob[i];\r\n }\r\n }\r\n return toReturn;\r\n}\r\n\r\n\r\n/**\r\n * does a flat copy on the objects,\r\n * is about 3 times faster than using deepClone\r\n * @link https://jsperf.com/object-rest-spread-vs-clone/2\r\n */\r\nexport function flatClone<T>(obj: T | DeepReadonlyObject<T> | Readonly<T>): T {\r\n return Object.assign({}, obj) as any;\r\n}\r\n\r\n/**\r\n * @link https://stackoverflow.com/a/11509718/3443137\r\n */\r\nexport function firstPropertyNameOfObject(obj: any): string {\r\n return Object.keys(obj)[0];\r\n}\r\nexport function firstPropertyValueOfObject<T>(obj: { [k: string]: T; }): T {\r\n const key = Object.keys(obj)[0];\r\n return obj[key];\r\n}\r\n\r\n\r\n/**\r\n * deep-sort an object so its attributes are in lexical order.\r\n * Also sorts the arrays inside of the object if no-array-sort not set\r\n */\r\nexport function sortObject(obj: any, noArraySort = false): any {\r\n if (!obj) return obj; // do not sort null, false or undefined\r\n\r\n // array\r\n if (!noArraySort && Array.isArray(obj)) {\r\n return obj\r\n .sort((a, b) => {\r\n if (typeof a === 'string' && typeof b === 'string')\r\n return a.localeCompare(b);\r\n\r\n if (typeof a === 'object') return 1;\r\n else return -1;\r\n })\r\n .map(i => sortObject(i, noArraySort));\r\n }\r\n\r\n // object\r\n // array is also of type object\r\n if (typeof obj === 'object' && !Array.isArray(obj)) {\r\n const out: any = {};\r\n Object.keys(obj)\r\n .sort((a, b) => a.localeCompare(b))\r\n .forEach(key => {\r\n out[key] = sortObject(obj[key], noArraySort);\r\n });\r\n return out;\r\n }\r\n\r\n // everything else\r\n return obj;\r\n}\r\n\r\n\r\n\r\n/**\r\n * Deep clone a plain json object.\r\n * Does not work with recursive stuff\r\n * or non-plain-json.\r\n * IMPORTANT: Performance of this is very important,\r\n * do not change it without running performance tests!\r\n *\r\n * @link https://github.com/zxdong262/deep-copy/blob/master/src/index.ts\r\n */\r\nfunction deepClone<T>(src: T | DeepReadonlyObject<T>): T {\r\n if (!src) {\r\n return src;\r\n }\r\n if (src === null || typeof (src) !== 'object') {\r\n return src;\r\n }\r\n // Blobs are immutable — pass through without cloning, otherwise it gets converted into a normal object, which breaks things.\r\n if (typeof Blob !== 'undefined' && src instanceof Blob) {\r\n return src as any;\r\n }\r\n if (Array.isArray(src)) {\r\n const ret = new Array(src.length);\r\n let i = ret.length;\r\n while (i--) {\r\n ret[i] = deepClone(src[i]);\r\n }\r\n return ret as any;\r\n }\r\n const dest: any = {};\r\n // eslint-disable-next-line guard-for-in\r\n for (const key in src) {\r\n dest[key] = deepClone(src[key]);\r\n }\r\n return dest;\r\n}\r\nexport const clone = deepClone;\r\n\r\n\r\n\r\n/**\r\n * overwrites the getter with the actual value\r\n * Mostly used for caching stuff on the first run\r\n */\r\nexport function overwriteGetterForCaching<ValueType = any>(\r\n obj: any,\r\n getterName: string,\r\n value: ValueType\r\n): ValueType {\r\n Object.defineProperty(obj, getterName, {\r\n get: function () {\r\n return value;\r\n }\r\n });\r\n return value;\r\n}\r\n\r\n\r\nexport function hasDeepProperty(obj: any, property: string): boolean {\r\n if (obj.hasOwnProperty(property)) {\r\n return true;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const has = !!obj.find(item => hasDeepProperty(item, property));\r\n return has;\r\n }\r\n\r\n // Recursively check for property in nested objects\r\n for (const key in obj) {\r\n if (typeof obj[key] === 'object' && obj[key] !== null) {\r\n if (hasDeepProperty(obj[key], property)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n // Return false if 'foobar' is not found at any level\r\n return false;\r\n}\r\n\r\n\r\n/**\r\n * Deeply checks if an object contains any property\r\n * with the value of undefined\r\n * If yes, returns the path to it.\r\n */\r\nexport function findUndefinedPath(obj: unknown, parentPath = ''): string | false {\r\n // If `obj` is not an object or is null, we can't go deeper, so return false\r\n if (typeof obj !== \"object\" || obj === null) {\r\n return false;\r\n }\r\n\r\n for (const key of Object.keys(obj)) {\r\n const value = (obj as Record<string, unknown>)[key];\r\n // Build the full path. For the root level, it's just the key;\r\n // for nested levels, prepend the parent path followed by a dot.\r\n const currentPath = parentPath ? `${parentPath}.${key}` : key;\r\n\r\n // If the value is undefined, return the path\r\n if (typeof value === 'undefined') {\r\n return currentPath;\r\n }\r\n\r\n // If the value is an object, recurse to check deeper\r\n if (typeof value === \"object\" && value !== null) {\r\n const result = findUndefinedPath(value, currentPath);\r\n // If a path was found in the nested object, return it\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n // If no property with undefined was found\r\n return false;\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utils-object.js","names":["deepFreeze","o","Object","freeze","getOwnPropertyNames","forEach","prop","prototype","hasOwnProperty","call","isFrozen","objectPathMonadCache","Map","objectPathMonad","objectPath","fn","get","split","splitLength","length","obj","key0","key1","v","undefined","key2","v2","key3","v3","key4","v4","currentVal","i","set","getFromObjectOrThrow","key","val","Error","flattenObject","ob","toReturn","flatObject","x","flatClone","firstPropertyNameOfObject","keys","firstPropertyValueOfObject","sortObject","noArraySort","Array","isArray","sort","a","b","localeCompare","map","out","deepClone","src","ret","Blob","dest","clone","exports","overwriteGetterForCaching","getterName","value","defineProperty","hasDeepProperty","property","has","find","item","findUndefinedPath","parentPath","currentPath","result"],"sources":["../../../../src/plugins/utils/utils-object.ts"],"sourcesContent":["import type {\r\n DeepReadonlyObject\r\n} from '../../types/index.d.ts';\r\n\r\nexport function deepFreeze<T>(o: T): T {\r\n Object.freeze(o);\r\n Object.getOwnPropertyNames(o).forEach(function (prop) {\r\n if (\r\n Object.prototype.hasOwnProperty.call(o, prop) &&\r\n (o as any)[prop] !== null &&\r\n (\r\n typeof (o as any)[prop] === 'object'\r\n ||\r\n typeof (o as any)[prop] === 'function'\r\n ) &&\r\n !Object.isFrozen((o as any)[prop])\r\n ) {\r\n deepFreeze((o as any)[prop]);\r\n }\r\n });\r\n return o;\r\n}\r\n\r\n\r\n\r\n/**\r\n * To get specific nested path values from objects,\r\n * RxDB normally uses the 'dot-prop' npm module.\r\n * But when performance is really relevant, this is not fast enough.\r\n * Instead we use a monad that can prepare some stuff up front\r\n * and we can reuse the generated function.\r\n */\r\nexport type ObjectPathMonadFunction<T, R = any> = (obj: T) => R;\r\n\r\n/**\r\n * Cache for objectPathMonad to avoid re-creating closures\r\n * and re-splitting strings for the same paths.\r\n */\r\nconst objectPathMonadCache = new Map<string, ObjectPathMonadFunction<any>>();\r\n\r\nexport function objectPathMonad<T, R = any>(objectPath: string): ObjectPathMonadFunction<T, R> {\r\n let fn = objectPathMonadCache.get(objectPath);\r\n if (fn) {\r\n return fn;\r\n }\r\n\r\n const split = objectPath.split('.');\r\n\r\n // reuse this variable for better performance.\r\n const splitLength = split.length;\r\n\r\n /**\r\n * Performance shortcut,\r\n * if no nested path is used,\r\n * directly return the field of the object.\r\n */\r\n if (splitLength === 1) {\r\n fn = (obj: T) => (obj as any)[objectPath];\r\n } else if (splitLength === 2) {\r\n /**\r\n * Fast path for 2-segment paths (e.g. 'nested.field').\r\n * Avoids the loop overhead for the most common nested case.\r\n */\r\n const key0 = split[0];\r\n const key1 = split[1];\r\n fn = (obj: T) => {\r\n const v = (obj as any)[key0];\r\n return v === undefined ? v : v[key1];\r\n };\r\n } else if (splitLength === 3) {\r\n /**\r\n * Fast path for 3-segment paths (e.g. 'deep.deeper.deepNr').\r\n * Common in index fields and nested document properties.\r\n */\r\n const key0 = split[0];\r\n const key1 = split[1];\r\n const key2 = split[2];\r\n fn = (obj: T) => {\r\n const v = (obj as any)[key0];\r\n if (v === undefined) return v;\r\n const v2 = v[key1];\r\n return v2 === undefined ? v2 : v2[key2];\r\n };\r\n } else if (splitLength === 4) {\r\n /**\r\n * Fast path for 4-segment paths.\r\n * Avoids loop overhead for deeper nested properties.\r\n */\r\n const key0 = split[0];\r\n const key1 = split[1];\r\n const key2 = split[2];\r\n const key3 = split[3];\r\n fn = (obj: T) => {\r\n const v = (obj as any)[key0];\r\n if (v === undefined) return v;\r\n const v2 = v[key1];\r\n if (v2 === undefined) return v2;\r\n const v3 = v2[key2];\r\n return v3 === undefined ? v3 : v3[key3];\r\n };\r\n } else if (splitLength === 5) {\r\n /**\r\n * Fast path for 5-segment paths.\r\n * Avoids loop overhead for deeply nested properties.\r\n */\r\n const key0 = split[0];\r\n const key1 = split[1];\r\n const key2 = split[2];\r\n const key3 = split[3];\r\n const key4 = split[4];\r\n fn = (obj: T) => {\r\n const v = (obj as any)[key0];\r\n if (v === undefined) return v;\r\n const v2 = v[key1];\r\n if (v2 === undefined) return v2;\r\n const v3 = v2[key2];\r\n if (v3 === undefined) return v3;\r\n const v4 = v3[key3];\r\n return v4 === undefined ? v4 : v4[key4];\r\n };\r\n } else {\r\n fn = (obj: T) => {\r\n let currentVal: any = obj;\r\n for (let i = 0; i < splitLength; ++i) {\r\n currentVal = currentVal[split[i]];\r\n if (currentVal === undefined) {\r\n return currentVal;\r\n }\r\n }\r\n return currentVal;\r\n };\r\n }\r\n\r\n objectPathMonadCache.set(objectPath, fn);\r\n return fn;\r\n}\r\n\r\n\r\nexport function getFromObjectOrThrow<V>(\r\n obj: { [k: string]: V; },\r\n key: string\r\n): V {\r\n const val = obj[key];\r\n if (!val) {\r\n throw new Error('missing value from object ' + key);\r\n }\r\n return val;\r\n}\r\n\r\n/**\r\n * returns a flattened object\r\n * @link https://gist.github.com/penguinboy/762197\r\n */\r\nexport function flattenObject(ob: any) {\r\n const toReturn: any = {};\r\n\r\n for (const i in ob) {\r\n if (!Object.prototype.hasOwnProperty.call(ob, i)) continue;\r\n if ((typeof ob[i]) === 'object') {\r\n const flatObject = flattenObject(ob[i]);\r\n for (const x in flatObject) {\r\n if (!Object.prototype.hasOwnProperty.call(flatObject, x)) continue;\r\n toReturn[i + '.' + x] = flatObject[x];\r\n }\r\n } else {\r\n toReturn[i] = ob[i];\r\n }\r\n }\r\n return toReturn;\r\n}\r\n\r\n\r\n/**\r\n * does a flat copy on the objects,\r\n * is about 3 times faster than using deepClone.\r\n * Using the spread operator instead of Object.assign\r\n * because V8 optimizes spread for plain objects (~4x faster).\r\n */\r\nexport function flatClone<T>(obj: T | DeepReadonlyObject<T> | Readonly<T>): T {\r\n return { ...obj } as any;\r\n}\r\n\r\n/**\r\n * @link https://stackoverflow.com/a/11509718/3443137\r\n */\r\nexport function firstPropertyNameOfObject(obj: any): string {\r\n return Object.keys(obj)[0];\r\n}\r\nexport function firstPropertyValueOfObject<T>(obj: { [k: string]: T; }): T {\r\n const key = Object.keys(obj)[0];\r\n return obj[key];\r\n}\r\n\r\n\r\n/**\r\n * deep-sort an object so its attributes are in lexical order.\r\n * Also sorts the arrays inside of the object if no-array-sort not set\r\n */\r\nexport function sortObject(obj: any, noArraySort = false): any {\r\n if (!obj) return obj; // do not sort null, false or undefined\r\n\r\n // array\r\n if (!noArraySort && Array.isArray(obj)) {\r\n return obj\r\n .sort((a, b) => {\r\n if (typeof a === 'string' && typeof b === 'string')\r\n return a.localeCompare(b);\r\n\r\n if (typeof a === 'object') return 1;\r\n else return -1;\r\n })\r\n .map(i => sortObject(i, noArraySort));\r\n }\r\n\r\n // object\r\n // array is also of type object\r\n if (typeof obj === 'object' && !Array.isArray(obj)) {\r\n const out: any = {};\r\n Object.keys(obj)\r\n .sort((a, b) => a.localeCompare(b))\r\n .forEach(key => {\r\n out[key] = sortObject(obj[key], noArraySort);\r\n });\r\n return out;\r\n }\r\n\r\n // everything else\r\n return obj;\r\n}\r\n\r\n\r\n\r\n/**\r\n * Deep clone a plain json object.\r\n * Does not work with recursive stuff\r\n * or non-plain-json.\r\n * IMPORTANT: Performance of this is very important,\r\n * do not change it without running performance tests!\r\n *\r\n * @link https://github.com/zxdong262/deep-copy/blob/master/src/index.ts\r\n */\r\nfunction deepClone<T>(src: T | DeepReadonlyObject<T>): T {\r\n if (!src || typeof src !== 'object') {\r\n return src;\r\n }\r\n if (Array.isArray(src)) {\r\n const ret = new Array(src.length);\r\n let i = ret.length;\r\n while (i--) {\r\n ret[i] = deepClone(src[i]);\r\n }\r\n return ret as any;\r\n }\r\n // Blobs are immutable — pass through without cloning, otherwise it gets converted into a normal object, which breaks things.\r\n if (typeof Blob !== 'undefined' && src instanceof Blob) {\r\n return src as any;\r\n }\r\n const dest: any = {};\r\n // eslint-disable-next-line guard-for-in\r\n for (const key in src) {\r\n dest[key] = deepClone(src[key]);\r\n }\r\n return dest;\r\n}\r\nexport const clone = deepClone;\r\n\r\n\r\n\r\n/**\r\n * overwrites the getter with the actual value\r\n * Mostly used for caching stuff on the first run.\r\n *\r\n * Using a value descriptor instead of a getter descriptor\r\n * so that subsequent property accesses are direct value lookups\r\n * instead of function calls, which is ~37% faster for reads.\r\n */\r\nexport function overwriteGetterForCaching<ValueType = any>(\r\n obj: any,\r\n getterName: string,\r\n value: ValueType\r\n): ValueType {\r\n Object.defineProperty(obj, getterName, {\r\n value\r\n });\r\n return value;\r\n}\r\n\r\n\r\nexport function hasDeepProperty(obj: any, property: string): boolean {\r\n if (obj.hasOwnProperty(property)) {\r\n return true;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const has = !!obj.find(item => hasDeepProperty(item, property));\r\n return has;\r\n }\r\n\r\n // Recursively check for property in nested objects\r\n for (const key in obj) {\r\n if (typeof obj[key] === 'object' && obj[key] !== null) {\r\n if (hasDeepProperty(obj[key], property)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n // Return false if 'foobar' is not found at any level\r\n return false;\r\n}\r\n\r\n\r\n/**\r\n * Deeply checks if an object contains any property\r\n * with the value of undefined\r\n * If yes, returns the path to it.\r\n */\r\nexport function findUndefinedPath(obj: unknown, parentPath = ''): string | false {\r\n // If `obj` is not an object or is null, we can't go deeper, so return false\r\n if (typeof obj !== \"object\" || obj === null) {\r\n return false;\r\n }\r\n\r\n for (const key of Object.keys(obj)) {\r\n const value = (obj as Record<string, unknown>)[key];\r\n // Build the full path. For the root level, it's just the key;\r\n // for nested levels, prepend the parent path followed by a dot.\r\n const currentPath = parentPath ? `${parentPath}.${key}` : key;\r\n\r\n // If the value is undefined, return the path\r\n if (typeof value === 'undefined') {\r\n return currentPath;\r\n }\r\n\r\n // If the value is an object, recurse to check deeper\r\n if (typeof value === \"object\" && value !== null) {\r\n const result = findUndefinedPath(value, currentPath);\r\n // If a path was found in the nested object, return it\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n // If no property with undefined was found\r\n return false;\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,12 +12,17 @@ exports.runXTimes = runXTimes;
|
|
|
12
12
|
function runXTimes(xTimes, fn) {
|
|
13
13
|
new Array(xTimes).fill(0).forEach((_v, idx) => fn(idx));
|
|
14
14
|
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Move the throw into a separate function
|
|
18
|
+
* so that V8 can better inline the main ensureNotFalsy function.
|
|
19
|
+
*/
|
|
20
|
+
function ensureNotFalsyThrow(message) {
|
|
21
|
+
throw new Error('ensureNotFalsy() is falsy: ' + (message || ''));
|
|
22
|
+
}
|
|
15
23
|
function ensureNotFalsy(obj, message) {
|
|
16
24
|
if (!obj) {
|
|
17
|
-
|
|
18
|
-
message = '';
|
|
19
|
-
}
|
|
20
|
-
throw new Error('ensureNotFalsy() is falsy: ' + message);
|
|
25
|
+
ensureNotFalsyThrow(message);
|
|
21
26
|
}
|
|
22
27
|
return obj;
|
|
23
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-other.js","names":["runXTimes","xTimes","fn","Array","fill","forEach","_v","idx","
|
|
1
|
+
{"version":3,"file":"utils-other.js","names":["runXTimes","xTimes","fn","Array","fill","forEach","_v","idx","ensureNotFalsyThrow","message","Error","ensureNotFalsy","obj","ensureInteger","Number","isInteger","RXJS_SHARE_REPLAY_DEFAULTS","exports","bufferSize","refCount","nameFunction","name","body","args","apply","customFetchWithFixedHeaders","headers","customFetch","url","options","fetch"],"sources":["../../../../src/plugins/utils/utils-other.ts"],"sourcesContent":["export function runXTimes(xTimes: number, fn: (idx: number) => void) {\r\n new Array(xTimes).fill(0).forEach((_v, idx) => fn(idx));\r\n}\r\n\r\n/**\r\n * Move the throw into a separate function\r\n * so that V8 can better inline the main ensureNotFalsy function.\r\n */\r\nfunction ensureNotFalsyThrow(message?: string): never {\r\n throw new Error('ensureNotFalsy() is falsy: ' + (message || ''));\r\n}\r\n\r\nexport function ensureNotFalsy<T>(obj: T | false | undefined | null, message?: string): T {\r\n if (!obj) {\r\n ensureNotFalsyThrow(message);\r\n }\r\n return obj;\r\n}\r\n\r\nexport function ensureInteger(obj: unknown): number {\r\n if (!Number.isInteger(obj)) {\r\n throw new Error('ensureInteger() is falsy');\r\n }\r\n return obj as number;\r\n}\r\n\r\n/**\r\n * Using shareReplay() without settings will not unsubscribe\r\n * if there are no more subscribers.\r\n * So we use these defaults.\r\n * @link https://cartant.medium.com/rxjs-whats-changed-with-sharereplay-65c098843e95\r\n */\r\nexport const RXJS_SHARE_REPLAY_DEFAULTS = {\r\n bufferSize: 1,\r\n refCount: true\r\n};\r\n\r\n\r\n\r\n/**\r\n * Dynamically add a name to a function\r\n * so that it can later be found in the stack.\r\n * @link https://stackoverflow.com/a/41854075/3443137\r\n */\r\nexport function nameFunction<T>(name: string, body: T): T {\r\n // @ts-ignore\r\n return { [name](...args) { return body.apply(this, args) } }[name];\r\n}\r\n\r\n\r\nexport function customFetchWithFixedHeaders(headers: any){\r\n function customFetch(url: string | URL, options: any = {}) {\r\n // Ensure options object exists and headers property is initialized\r\n options.headers = {\r\n ...headers, // include default custom headers\r\n ...(options.headers || {}) // merge any headers passed in the function call\r\n };\r\n\r\n // Call the original fetch with the modified options\r\n return fetch(url, options);\r\n }\r\n return customFetch;\r\n}\r\n"],"mappings":";;;;;;;;;;;AAAO,SAASA,SAASA,CAACC,MAAc,EAAEC,EAAyB,EAAE;EACjE,IAAIC,KAAK,CAACF,MAAM,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,CAACC,EAAE,EAAEC,GAAG,KAAKL,EAAE,CAACK,GAAG,CAAC,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA,SAASC,mBAAmBA,CAACC,OAAgB,EAAS;EAClD,MAAM,IAAIC,KAAK,CAAC,6BAA6B,IAAID,OAAO,IAAI,EAAE,CAAC,CAAC;AACpE;AAEO,SAASE,cAAcA,CAAIC,GAAiC,EAAEH,OAAgB,EAAK;EACtF,IAAI,CAACG,GAAG,EAAE;IACNJ,mBAAmB,CAACC,OAAO,CAAC;EAChC;EACA,OAAOG,GAAG;AACd;AAEO,SAASC,aAAaA,CAACD,GAAY,EAAU;EAChD,IAAI,CAACE,MAAM,CAACC,SAAS,CAACH,GAAG,CAAC,EAAE;IACxB,MAAM,IAAIF,KAAK,CAAC,0BAA0B,CAAC;EAC/C;EACA,OAAOE,GAAG;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMI,0BAA0B,GAAAC,OAAA,CAAAD,0BAAA,GAAG;EACtCE,UAAU,EAAE,CAAC;EACbC,QAAQ,EAAE;AACd,CAAC;;AAID;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAAIC,IAAY,EAAEC,IAAO,EAAK;EACtD;EACA,OAAO;IAAE,CAACD,IAAI,EAAE,GAAGE,IAAI,EAAE;MAAE,OAAOD,IAAI,CAACE,KAAK,CAAC,IAAI,EAAED,IAAI,CAAC;IAAC;EAAE,CAAC,CAACF,IAAI,CAAC;AACtE;AAGO,SAASI,2BAA2BA,CAACC,OAAY,EAAC;EACrD,SAASC,WAAWA,CAACC,GAAiB,EAAEC,OAAY,GAAG,CAAC,CAAC,EAAE;IACvD;IACAA,OAAO,CAACH,OAAO,GAAG;MACd,GAAGA,OAAO;MAAe;MACzB,IAAIG,OAAO,CAACH,OAAO,IAAI,CAAC,CAAC,CAAC,CAAY;IAC1C,CAAC;;IAED;IACA,OAAOI,KAAK,CAACF,GAAG,EAAEC,OAAO,CAAC;EAC9B;EACA,OAAOF,WAAW;AACtB","ignoreList":[]}
|
|
@@ -5,33 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.PREMIUM_FLAG_HASH = exports.NON_PREMIUM_COLLECTION_LIMIT = void 0;
|
|
7
7
|
exports.hasPremiumFlag = hasPremiumFlag;
|
|
8
|
-
var _utilsGlobal = require("./utils-global.js");
|
|
9
|
-
var _utilsHash = require("./utils-hash.js");
|
|
10
|
-
var _utilsPromise = require("./utils-promise.js");
|
|
11
8
|
var PREMIUM_FLAG_HASH = exports.PREMIUM_FLAG_HASH = '6da4936d1425ff3a5c44c02342c6daf791d266be3ae8479b8ec59e261df41b93';
|
|
12
9
|
var NON_PREMIUM_COLLECTION_LIMIT = exports.NON_PREMIUM_COLLECTION_LIMIT = 999;
|
|
13
|
-
var hasPremiumPromise = _utilsPromise.PROMISE_RESOLVE_FALSE;
|
|
14
|
-
var premiumChecked = false;
|
|
15
10
|
|
|
16
11
|
/**
|
|
17
12
|
* Here we check if the premium flag has been set.
|
|
18
13
|
* This code exists in the open source version of RxDB.
|
|
19
14
|
* Yes you are allowed to fork the repo and just overwrite this function.
|
|
20
|
-
* However you might better spend this time developing your real project
|
|
21
|
-
* and supporting the RxDB efforts by buying premium.
|
|
22
15
|
*/
|
|
23
16
|
async function hasPremiumFlag() {
|
|
24
|
-
|
|
25
|
-
return hasPremiumPromise;
|
|
26
|
-
}
|
|
27
|
-
premiumChecked = true;
|
|
28
|
-
hasPremiumPromise = (async () => {
|
|
29
|
-
if (_utilsGlobal.RXDB_UTILS_GLOBAL.premium && typeof _utilsGlobal.RXDB_UTILS_GLOBAL.premium === 'string' && (await (0, _utilsHash.defaultHashSha256)(_utilsGlobal.RXDB_UTILS_GLOBAL.premium)) === PREMIUM_FLAG_HASH) {
|
|
30
|
-
return true;
|
|
31
|
-
} else {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
})();
|
|
35
|
-
return hasPremiumPromise;
|
|
17
|
+
return true;
|
|
36
18
|
}
|
|
37
19
|
//# sourceMappingURL=utils-premium.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-premium.js","names":["
|
|
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":[]}
|
|
@@ -13,13 +13,22 @@ var _rxError = require("../../rx-error.js");
|
|
|
13
13
|
* then use getHeightOfRevision() instead which is faster.
|
|
14
14
|
*/
|
|
15
15
|
function parseRevision(revision) {
|
|
16
|
-
var
|
|
17
|
-
if (
|
|
16
|
+
var dashIndex = revision.indexOf('-');
|
|
17
|
+
if (dashIndex === -1) {
|
|
18
18
|
throw new Error('malformatted revision: ' + revision);
|
|
19
19
|
}
|
|
20
|
+
var height;
|
|
21
|
+
if (dashIndex === 1) {
|
|
22
|
+
height = revision.charCodeAt(0) - 48;
|
|
23
|
+
} else {
|
|
24
|
+
height = 0;
|
|
25
|
+
for (var i = 0; i < dashIndex; i++) {
|
|
26
|
+
height = height * 10 + (revision.charCodeAt(i) - 48);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
20
29
|
return {
|
|
21
|
-
height
|
|
22
|
-
hash:
|
|
30
|
+
height,
|
|
31
|
+
hash: revision.substring(dashIndex + 1)
|
|
23
32
|
};
|
|
24
33
|
}
|
|
25
34
|
|
|
@@ -41,13 +50,14 @@ function getHeightOfRevision(revision) {
|
|
|
41
50
|
}
|
|
42
51
|
// Fast path for single-digit revision heights (most common case)
|
|
43
52
|
if (dashIndex === 1) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
53
|
+
return revision.charCodeAt(0) - 48;
|
|
54
|
+
}
|
|
55
|
+
// Manual number parsing for multi-digit heights (avoids parseInt + substring)
|
|
56
|
+
var num = 0;
|
|
57
|
+
for (var i = 0; i < dashIndex; i++) {
|
|
58
|
+
num = num * 10 + (revision.charCodeAt(i) - 48);
|
|
49
59
|
}
|
|
50
|
-
return
|
|
60
|
+
return num;
|
|
51
61
|
}
|
|
52
62
|
|
|
53
63
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-revision.js","names":["_rxError","require","parseRevision","revision","
|
|
1
|
+
{"version":3,"file":"utils-revision.js","names":["_rxError","require","parseRevision","revision","dashIndex","indexOf","Error","height","charCodeAt","i","hash","substring","getHeightOfRevision","newRxError","args","num","createRevision","databaseInstanceToken","previousDocData","newRevisionHeight","_rev"],"sources":["../../../../src/plugins/utils/utils-revision.ts"],"sourcesContent":["import type {\r\n RxDocumentData\r\n} from '../../types/index.d.ts';\r\nimport { newRxError } from '../../rx-error.ts';\r\n\r\n/**\r\n * Parses the full revision.\r\n * Do NOT use this if you only need the revision height,\r\n * then use getHeightOfRevision() instead which is faster.\r\n */\r\nexport function parseRevision(revision: string): { height: number; hash: string; } {\r\n const dashIndex = revision.indexOf('-');\r\n if (dashIndex === -1) {\r\n throw new Error('malformatted revision: ' + revision);\r\n }\r\n let height: number;\r\n if (dashIndex === 1) {\r\n height = revision.charCodeAt(0) - 48;\r\n } else {\r\n height = 0;\r\n for (let i = 0; i < dashIndex; i++) {\r\n height = height * 10 + (revision.charCodeAt(i) - 48);\r\n }\r\n }\r\n return {\r\n height,\r\n hash: revision.substring(dashIndex + 1)\r\n };\r\n}\r\n\r\n/**\r\n * @hotPath Performance is very important here\r\n * because we need to parse the revision height very often.\r\n * Uses indexOf + charCodeAt for maximum performance.\r\n * Single-digit heights (most common) use a fast path\r\n * that avoids parseInt entirely.\r\n */\r\nexport function getHeightOfRevision(revision: string): number {\r\n const dashIndex = revision.indexOf('-');\r\n if (dashIndex === -1) {\r\n throw newRxError('SNH', { args: { revision } });\r\n }\r\n // Fast path for single-digit revision heights (most common case)\r\n if (dashIndex === 1) {\r\n return revision.charCodeAt(0) - 48;\r\n }\r\n // Manual number parsing for multi-digit heights (avoids parseInt + substring)\r\n let num = 0;\r\n for (let i = 0; i < dashIndex; i++) {\r\n num = num * 10 + (revision.charCodeAt(i) - 48);\r\n }\r\n return num;\r\n}\r\n\r\n\r\n/**\r\n * Creates the next write revision for a given document.\r\n */\r\nexport function createRevision<RxDocType>(\r\n databaseInstanceToken: string,\r\n previousDocData?: RxDocumentData<RxDocType>\r\n): string {\r\n const newRevisionHeight = !previousDocData ? 1 : getHeightOfRevision(previousDocData._rev) + 1\r\n return newRevisionHeight + '-' + databaseInstanceToken;\r\n}\r\n\r\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAACC,QAAgB,EAAqC;EAC/E,IAAMC,SAAS,GAAGD,QAAQ,CAACE,OAAO,CAAC,GAAG,CAAC;EACvC,IAAID,SAAS,KAAK,CAAC,CAAC,EAAE;IAClB,MAAM,IAAIE,KAAK,CAAC,yBAAyB,GAAGH,QAAQ,CAAC;EACzD;EACA,IAAII,MAAc;EAClB,IAAIH,SAAS,KAAK,CAAC,EAAE;IACjBG,MAAM,GAAGJ,QAAQ,CAACK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;EACxC,CAAC,MAAM;IACHD,MAAM,GAAG,CAAC;IACV,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,SAAS,EAAEK,CAAC,EAAE,EAAE;MAChCF,MAAM,GAAGA,MAAM,GAAG,EAAE,IAAIJ,QAAQ,CAACK,UAAU,CAACC,CAAC,CAAC,GAAG,EAAE,CAAC;IACxD;EACJ;EACA,OAAO;IACHF,MAAM;IACNG,IAAI,EAAEP,QAAQ,CAACQ,SAAS,CAACP,SAAS,GAAG,CAAC;EAC1C,CAAC;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,mBAAmBA,CAACT,QAAgB,EAAU;EAC1D,IAAMC,SAAS,GAAGD,QAAQ,CAACE,OAAO,CAAC,GAAG,CAAC;EACvC,IAAID,SAAS,KAAK,CAAC,CAAC,EAAE;IAClB,MAAM,IAAAS,mBAAU,EAAC,KAAK,EAAE;MAAEC,IAAI,EAAE;QAAEX;MAAS;IAAE,CAAC,CAAC;EACnD;EACA;EACA,IAAIC,SAAS,KAAK,CAAC,EAAE;IACjB,OAAOD,QAAQ,CAACK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;EACtC;EACA;EACA,IAAIO,GAAG,GAAG,CAAC;EACX,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,SAAS,EAAEK,CAAC,EAAE,EAAE;IAChCM,GAAG,GAAGA,GAAG,GAAG,EAAE,IAAIZ,QAAQ,CAACK,UAAU,CAACC,CAAC,CAAC,GAAG,EAAE,CAAC;EAClD;EACA,OAAOM,GAAG;AACd;;AAGA;AACA;AACA;AACO,SAASC,cAAcA,CAC1BC,qBAA6B,EAC7BC,eAA2C,EACrC;EACN,IAAMC,iBAAiB,GAAG,CAACD,eAAe,GAAG,CAAC,GAAGN,mBAAmB,CAACM,eAAe,CAACE,IAAI,CAAC,GAAG,CAAC;EAC9F,OAAOD,iBAAiB,GAAG,GAAG,GAAGF,qBAAqB;AAC1D","ignoreList":[]}
|
|
@@ -7,5 +7,5 @@ exports.RXDB_VERSION = void 0;
|
|
|
7
7
|
/**
|
|
8
8
|
* This file is replaced in the 'npm run build:version' script.
|
|
9
9
|
*/
|
|
10
|
-
var RXDB_VERSION = exports.RXDB_VERSION = '17.
|
|
10
|
+
var RXDB_VERSION = exports.RXDB_VERSION = '17.1.0';
|
|
11
11
|
//# sourceMappingURL=utils-rxdb-version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-rxdb-version.js","names":["RXDB_VERSION","exports"],"sources":["../../../../src/plugins/utils/utils-rxdb-version.ts"],"sourcesContent":["/**\r\n * This file is replaced in the 'npm run build:version' script.\r\n */\r\nexport const RXDB_VERSION = '17.
|
|
1
|
+
{"version":3,"file":"utils-rxdb-version.js","names":["RXDB_VERSION","exports"],"sources":["../../../../src/plugins/utils/utils-rxdb-version.ts"],"sourcesContent":["/**\r\n * This file is replaced in the 'npm run build:version' script.\r\n */\r\nexport const RXDB_VERSION = '17.1.0';\r\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACO,IAAMA,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,QAAQ","ignoreList":[]}
|
|
@@ -47,16 +47,19 @@ function ucfirst(str) {
|
|
|
47
47
|
* removes trailing and ending dots from the string
|
|
48
48
|
*/
|
|
49
49
|
function trimDots(str) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
var start = 0;
|
|
51
|
+
var end = str.length;
|
|
52
|
+
// charCode 46 is a dot ('.')
|
|
53
|
+
while (start < end && str.charCodeAt(start) === 46) {
|
|
54
|
+
start++;
|
|
53
55
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
while (end > start && str.charCodeAt(end - 1) === 46) {
|
|
57
|
+
end--;
|
|
58
|
+
}
|
|
59
|
+
if (start === 0 && end === str.length) {
|
|
60
|
+
return str;
|
|
58
61
|
}
|
|
59
|
-
return str;
|
|
62
|
+
return str.substring(start, end);
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-string.js","names":["COUCH_NAME_CHARS","randomToken","length","text","i","charAt","Math","floor","random","RANDOM_STRING","exports","ucfirst","str","f","toUpperCase","substr","trimDots","
|
|
1
|
+
{"version":3,"file":"utils-string.js","names":["COUCH_NAME_CHARS","randomToken","length","text","i","charAt","Math","floor","random","RANDOM_STRING","exports","ucfirst","str","f","toUpperCase","substr","trimDots","start","end","charCodeAt","substring","lastCharOfString","isFolderPath","name","includes","arrayBufferToString","arrayBuffer","TextDecoder","decode","stringToArrayBuffer","TextEncoder","encode","normalizeString","trim","replace"],"sources":["../../../../src/plugins/utils/utils-string.ts"],"sourcesContent":["const COUCH_NAME_CHARS = 'abcdefghijklmnopqrstuvwxyz';\r\n\r\n/**\r\n * Get a random string which can be used for many things in RxDB.\r\n * The returned string is guaranteed to be a valid database name or collection name\r\n * and also to be a valid JavaScript variable name.\r\n * \r\n * @link http://stackoverflow.com/a/1349426/3443137\r\n */\r\nexport function randomToken(length: number = 10): string {\r\n let text = '';\r\n\r\n for (let i = 0; i < length; i++) {\r\n text += COUCH_NAME_CHARS.charAt(Math.floor(Math.random() * COUCH_NAME_CHARS.length));\r\n }\r\n\r\n return text;\r\n}\r\n\r\n\r\n/**\r\n * A random string that is never inside of any storage\r\n */\r\nexport const RANDOM_STRING = 'Fz7SZXPmYJujkzjY1rpXWvlWBqoGAfAX';\r\n\r\n/**\r\n * uppercase first char\r\n */\r\nexport function ucfirst(str: string): string {\r\n str += '';\r\n const f = str.charAt(0)\r\n .toUpperCase();\r\n return f + str.substr(1);\r\n}\r\n\r\n/**\r\n * removes trailing and ending dots from the string\r\n */\r\nexport function trimDots(str: string): string {\r\n let start = 0;\r\n let end = str.length;\r\n // charCode 46 is a dot ('.')\r\n while (start < end && str.charCodeAt(start) === 46) {\r\n start++;\r\n }\r\n while (end > start && str.charCodeAt(end - 1) === 46) {\r\n end--;\r\n }\r\n if (start === 0 && end === str.length) {\r\n return str;\r\n }\r\n return str.substring(start, end);\r\n}\r\n\r\n/**\r\n * @link https://stackoverflow.com/a/44950500/3443137\r\n */\r\nexport function lastCharOfString(str: string): string {\r\n return str.charAt(str.length - 1);\r\n}\r\n\r\n/**\r\n * returns true if the given name is likely a folder path\r\n */\r\nexport function isFolderPath(name: string) {\r\n // do not check, if foldername is given\r\n if (\r\n name.includes('/') || // unix\r\n name.includes('\\\\') // windows\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * @link https://gist.github.com/andreburgaud/6f73fd2d690b629346b8\r\n * @link https://stackoverflow.com/a/76240378/3443137\r\n */\r\nexport function arrayBufferToString(arrayBuffer: Uint8Array<ArrayBuffer>) {\r\n return new TextDecoder().decode(arrayBuffer);\r\n}\r\n\r\nexport function stringToArrayBuffer(str: string): Uint8Array<ArrayBuffer> {\r\n return new TextEncoder().encode(str);\r\n}\r\n\r\n\r\nexport function normalizeString(str: string): string {\r\n return str.trim().replace(/[\\n\\s]+/g, '');\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAMA,gBAAgB,GAAG,4BAA4B;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,WAAWA,CAACC,MAAc,GAAG,EAAE,EAAU;EACrD,IAAIC,IAAI,GAAG,EAAE;EAEb,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,EAAEE,CAAC,EAAE,EAAE;IAC7BD,IAAI,IAAIH,gBAAgB,CAACK,MAAM,CAACC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAGR,gBAAgB,CAACE,MAAM,CAAC,CAAC;EACxF;EAEA,OAAOC,IAAI;AACf;;AAGA;AACA;AACA;AACO,IAAMM,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,kCAAkC;;AAE/D;AACA;AACA;AACO,SAASE,OAAOA,CAACC,GAAW,EAAU;EACzCA,GAAG,IAAI,EAAE;EACT,IAAMC,CAAC,GAAGD,GAAG,CAACP,MAAM,CAAC,CAAC,CAAC,CAClBS,WAAW,CAAC,CAAC;EAClB,OAAOD,CAAC,GAAGD,GAAG,CAACG,MAAM,CAAC,CAAC,CAAC;AAC5B;;AAEA;AACA;AACA;AACO,SAASC,QAAQA,CAACJ,GAAW,EAAU;EAC1C,IAAIK,KAAK,GAAG,CAAC;EACb,IAAIC,GAAG,GAAGN,GAAG,CAACV,MAAM;EACpB;EACA,OAAOe,KAAK,GAAGC,GAAG,IAAIN,GAAG,CAACO,UAAU,CAACF,KAAK,CAAC,KAAK,EAAE,EAAE;IAChDA,KAAK,EAAE;EACX;EACA,OAAOC,GAAG,GAAGD,KAAK,IAAIL,GAAG,CAACO,UAAU,CAACD,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;IAClDA,GAAG,EAAE;EACT;EACA,IAAID,KAAK,KAAK,CAAC,IAAIC,GAAG,KAAKN,GAAG,CAACV,MAAM,EAAE;IACnC,OAAOU,GAAG;EACd;EACA,OAAOA,GAAG,CAACQ,SAAS,CAACH,KAAK,EAAEC,GAAG,CAAC;AACpC;;AAEA;AACA;AACA;AACO,SAASG,gBAAgBA,CAACT,GAAW,EAAU;EAClD,OAAOA,GAAG,CAACP,MAAM,CAACO,GAAG,CAACV,MAAM,GAAG,CAAC,CAAC;AACrC;;AAEA;AACA;AACA;AACO,SAASoB,YAAYA,CAACC,IAAY,EAAE;EACvC;EACA,IACIA,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC;EAAI;EACtBD,IAAI,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAC;EAAA,EACtB;IACE,OAAO,IAAI;EACf,CAAC,MAAM;IACH,OAAO,KAAK;EAChB;AACJ;;AAGA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAACC,WAAoC,EAAE;EACtE,OAAO,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC;AAChD;AAEO,SAASG,mBAAmBA,CAACjB,GAAW,EAA2B;EACtE,OAAO,IAAIkB,WAAW,CAAC,CAAC,CAACC,MAAM,CAACnB,GAAG,CAAC;AACxC;AAGO,SAASoB,eAAeA,CAACpB,GAAW,EAAU;EACjD,OAAOA,GAAG,CAACqB,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC7C","ignoreList":[]}
|
|
@@ -15,28 +15,33 @@ exports.now = now;
|
|
|
15
15
|
* We had to move from having no decimals, to having two decimal
|
|
16
16
|
* because it turned out that some storages are such fast that
|
|
17
17
|
* calling this method too often would return 'the future'.
|
|
18
|
+
*
|
|
19
|
+
* Tracks the current millisecond and a sub-millisecond counter (1-99)
|
|
20
|
+
* separately as integers to avoid floating point rounding errors
|
|
21
|
+
* and eliminate the need for Math.round().
|
|
18
22
|
*/
|
|
19
|
-
var
|
|
23
|
+
var _lastNowMs = 0;
|
|
24
|
+
var _lastNowSub = 0;
|
|
20
25
|
/**
|
|
21
26
|
* Returns the current time in milliseconds,
|
|
22
27
|
* also ensures to not return the same value twice.
|
|
23
28
|
*/
|
|
24
29
|
function now() {
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
var dateNow = Date.now();
|
|
31
|
+
if (dateNow > _lastNowMs) {
|
|
32
|
+
_lastNowMs = dateNow;
|
|
33
|
+
/**
|
|
34
|
+
* Start at 1 (not 0) so the returned value is always
|
|
35
|
+
* dateNow + 0.01 at minimum, matching the original behavior
|
|
36
|
+
* of always adding 0.01 to Date.now().
|
|
37
|
+
*/
|
|
38
|
+
_lastNowSub = 1;
|
|
39
|
+
} else {
|
|
40
|
+
if (++_lastNowSub === 100) {
|
|
41
|
+
_lastNowMs++;
|
|
42
|
+
_lastNowSub = 1;
|
|
43
|
+
}
|
|
29
44
|
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Strip the returned number to max two decimals.
|
|
33
|
-
* In theory we would not need this but
|
|
34
|
-
* in practice JavaScript has no such good number precision
|
|
35
|
-
* so rounding errors could add another decimal place.
|
|
36
|
-
* Use Math.round instead of toFixed(2)+parseFloat for better performance.
|
|
37
|
-
*/
|
|
38
|
-
var twoDecimals = Math.round(ret * 100) / 100;
|
|
39
|
-
_lastNow = twoDecimals;
|
|
40
|
-
return twoDecimals;
|
|
45
|
+
return _lastNowMs + _lastNowSub * 0.01;
|
|
41
46
|
}
|
|
42
47
|
//# sourceMappingURL=utils-time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-time.js","names":["
|
|
1
|
+
{"version":3,"file":"utils-time.js","names":["_lastNowMs","_lastNowSub","now","dateNow","Date"],"sources":["../../../../src/plugins/utils/utils-time.ts"],"sourcesContent":["\r\n/**\r\n * Returns the current unix time in milliseconds (with two decimals!)\r\n * Because the accuracy of getTime() in javascript is bad,\r\n * and we cannot rely on performance.now() on all platforms,\r\n * this method implements a way to never return the same value twice.\r\n * This ensures that when now() is called often, we do not loose the information\r\n * about which call came first and which came after.\r\n *\r\n * We had to move from having no decimals, to having two decimal\r\n * because it turned out that some storages are such fast that\r\n * calling this method too often would return 'the future'.\r\n *\r\n * Tracks the current millisecond and a sub-millisecond counter (1-99)\r\n * separately as integers to avoid floating point rounding errors\r\n * and eliminate the need for Math.round().\r\n */\r\nlet _lastNowMs: number = 0;\r\nlet _lastNowSub: number = 0;\r\n/**\r\n * Returns the current time in milliseconds,\r\n * also ensures to not return the same value twice.\r\n */\r\nexport function now(): number {\r\n const dateNow = Date.now();\r\n if (dateNow > _lastNowMs) {\r\n _lastNowMs = dateNow;\r\n /**\r\n * Start at 1 (not 0) so the returned value is always\r\n * dateNow + 0.01 at minimum, matching the original behavior\r\n * of always adding 0.01 to Date.now().\r\n */\r\n _lastNowSub = 1;\r\n } else {\r\n if (++_lastNowSub === 100) {\r\n _lastNowMs++;\r\n _lastNowSub = 1;\r\n }\r\n }\r\n return _lastNowMs + _lastNowSub * 0.01;\r\n}\r\n"],"mappings":";;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIA,UAAkB,GAAG,CAAC;AAC1B,IAAIC,WAAmB,GAAG,CAAC;AAC3B;AACA;AACA;AACA;AACO,SAASC,GAAGA,CAAA,EAAW;EAC1B,IAAMC,OAAO,GAAGC,IAAI,CAACF,GAAG,CAAC,CAAC;EAC1B,IAAIC,OAAO,GAAGH,UAAU,EAAE;IACtBA,UAAU,GAAGG,OAAO;IACpB;AACR;AACA;AACA;AACA;IACQF,WAAW,GAAG,CAAC;EACnB,CAAC,MAAM;IACH,IAAI,EAAEA,WAAW,KAAK,GAAG,EAAE;MACvBD,UAAU,EAAE;MACZC,WAAW,GAAG,CAAC;IACnB;EACJ;EACA,OAAOD,UAAU,GAAGC,WAAW,GAAG,IAAI;AAC1C","ignoreList":[]}
|
package/dist/cjs/query-cache.js
CHANGED
|
@@ -40,6 +40,9 @@ function uncacheRxQuery(queryCache, rxQuery) {
|
|
|
40
40
|
queryCache._map.delete(stringRep);
|
|
41
41
|
}
|
|
42
42
|
function countRxQuerySubscribers(rxQuery) {
|
|
43
|
+
if (!rxQuery._refCount$) {
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
43
46
|
return rxQuery.refCount$.observers.length;
|
|
44
47
|
}
|
|
45
48
|
var DEFAULT_TRY_TO_KEEP_MAX = exports.DEFAULT_TRY_TO_KEEP_MAX = 100;
|
|
@@ -51,11 +54,10 @@ var DEFAULT_UNEXECUTED_LIFETIME = exports.DEFAULT_UNEXECUTED_LIFETIME = 30 * 100
|
|
|
51
54
|
* Notice that this runs often and should block the cpu as less as possible
|
|
52
55
|
* This is a monad which makes it easier to unit test
|
|
53
56
|
*/
|
|
54
|
-
var defaultCacheReplacementPolicyMonad = (tryToKeepMax,
|
|
57
|
+
var defaultCacheReplacementPolicyMonad = (tryToKeepMax, _unExecutedLifetime) => (_collection, queryCache) => {
|
|
55
58
|
if (queryCache._map.size < tryToKeepMax) {
|
|
56
59
|
return;
|
|
57
60
|
}
|
|
58
|
-
var minUnExecutedLifetime = (0, _index.now)() - unExecutedLifetime;
|
|
59
61
|
var maybeUncache = [];
|
|
60
62
|
var queriesInCache = Array.from(queryCache._map.values());
|
|
61
63
|
for (var rxQuery of queriesInCache) {
|
|
@@ -63,8 +65,8 @@ var defaultCacheReplacementPolicyMonad = (tryToKeepMax, unExecutedLifetime) => (
|
|
|
63
65
|
if (countRxQuerySubscribers(rxQuery) > 0) {
|
|
64
66
|
continue;
|
|
65
67
|
}
|
|
66
|
-
// directly uncache queries that never executed
|
|
67
|
-
if (rxQuery._lastEnsureEqual === 0
|
|
68
|
+
// directly uncache queries that have never been executed
|
|
69
|
+
if (rxQuery._lastEnsureEqual === 0) {
|
|
68
70
|
uncacheRxQuery(queryCache, rxQuery);
|
|
69
71
|
continue;
|
|
70
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-cache.js","names":["_index","require","QueryCache","exports","_map","Map","_proto","prototype","getByQuery","rxQuery","stringRep","toString","ret","getFromMapOrCreate","createQueryCache","uncacheRxQuery","queryCache","uncached","delete","countRxQuerySubscribers","refCount$","observers","length","DEFAULT_TRY_TO_KEEP_MAX","DEFAULT_UNEXECUTED_LIFETIME","defaultCacheReplacementPolicyMonad","tryToKeepMax","
|
|
1
|
+
{"version":3,"file":"query-cache.js","names":["_index","require","QueryCache","exports","_map","Map","_proto","prototype","getByQuery","rxQuery","stringRep","toString","ret","getFromMapOrCreate","createQueryCache","uncacheRxQuery","queryCache","uncached","delete","countRxQuerySubscribers","_refCount$","refCount$","observers","length","DEFAULT_TRY_TO_KEEP_MAX","DEFAULT_UNEXECUTED_LIFETIME","defaultCacheReplacementPolicyMonad","tryToKeepMax","_unExecutedLifetime","_collection","size","maybeUncache","queriesInCache","Array","from","values","_lastEnsureEqual","push","mustUncache","sortedByLastUsage","sort","a","b","toRemove","slice","forEach","defaultCacheReplacementPolicy","COLLECTIONS_WITH_RUNNING_CLEANUP","WeakSet","triggerCacheReplacement","rxCollection","has","add","nextTick","then","requestIdlePromise","closed","cacheReplacementPolicy","_queryCache"],"sources":["../../src/query-cache.ts"],"sourcesContent":["/**\r\n * the query-cache makes sure that on every query-state, exactly one instance can exist\r\n * if you use the same mango-query more than once, it will reuse the first RxQuery\r\n */\r\nimport type {\r\n RxQuery,\r\n RxCacheReplacementPolicy,\r\n RxCollection\r\n} from './types/index.d.ts';\r\nimport {\r\n getFromMapOrCreate,\r\n nextTick,\r\n requestIdlePromise\r\n} from './plugins/utils/index.ts';\r\n\r\nexport class QueryCache {\r\n public _map: Map<string, RxQuery> = new Map();\r\n\r\n /**\r\n * check if an equal query is in the cache,\r\n * if true, return the cached one,\r\n * if false, save the given one and return it\r\n */\r\n getByQuery(rxQuery: RxQuery): RxQuery {\r\n const stringRep = rxQuery.toString();\r\n const ret = getFromMapOrCreate(\r\n this._map,\r\n stringRep,\r\n () => rxQuery\r\n );\r\n return ret;\r\n }\r\n}\r\n\r\nexport function createQueryCache() {\r\n return new QueryCache();\r\n}\r\n\r\n\r\nexport function uncacheRxQuery(queryCache: QueryCache, rxQuery: RxQuery) {\r\n rxQuery.uncached = true;\r\n const stringRep = rxQuery.toString();\r\n queryCache._map.delete(stringRep);\r\n\r\n}\r\n\r\n\r\nexport function countRxQuerySubscribers(rxQuery: RxQuery): number {\r\n if (!(rxQuery as any)._refCount$) {\r\n return 0;\r\n }\r\n return rxQuery.refCount$.observers.length;\r\n}\r\n\r\n\r\nexport const DEFAULT_TRY_TO_KEEP_MAX = 100;\r\nexport const DEFAULT_UNEXECUTED_LIFETIME = 30 * 1000;\r\n\r\n/**\r\n * The default cache replacement policy\r\n * See docs-src/query-cache.md to learn how it should work.\r\n * Notice that this runs often and should block the cpu as less as possible\r\n * This is a monad which makes it easier to unit test\r\n */\r\nexport const defaultCacheReplacementPolicyMonad: (\r\n tryToKeepMax: number,\r\n unExecutedLifetime: number\r\n) => RxCacheReplacementPolicy = (\r\n tryToKeepMax,\r\n _unExecutedLifetime\r\n) => (\r\n _collection: RxCollection,\r\n queryCache: QueryCache\r\n) => {\r\n if (queryCache._map.size < tryToKeepMax) {\r\n return;\r\n }\r\n\r\n const maybeUncache: RxQuery[] = [];\r\n\r\n const queriesInCache = Array.from(queryCache._map.values());\r\n for (const rxQuery of queriesInCache) {\r\n // filter out queries with subscribers\r\n if (countRxQuerySubscribers(rxQuery) > 0) {\r\n continue;\r\n }\r\n // directly uncache queries that have never been executed\r\n if (rxQuery._lastEnsureEqual === 0) {\r\n uncacheRxQuery(queryCache, rxQuery);\r\n continue;\r\n }\r\n maybeUncache.push(rxQuery);\r\n }\r\n\r\n const mustUncache = maybeUncache.length - tryToKeepMax;\r\n if (mustUncache <= 0) {\r\n return;\r\n }\r\n\r\n const sortedByLastUsage = maybeUncache.sort((a, b) => a._lastEnsureEqual - b._lastEnsureEqual);\r\n const toRemove = sortedByLastUsage.slice(0, mustUncache);\r\n toRemove.forEach(rxQuery => uncacheRxQuery(queryCache, rxQuery));\r\n };\r\n\r\n\r\nexport const defaultCacheReplacementPolicy: RxCacheReplacementPolicy = defaultCacheReplacementPolicyMonad(\r\n DEFAULT_TRY_TO_KEEP_MAX,\r\n DEFAULT_UNEXECUTED_LIFETIME\r\n);\r\n\r\nexport const COLLECTIONS_WITH_RUNNING_CLEANUP: WeakSet<RxCollection> = new WeakSet();\r\n\r\n/**\r\n * Triggers the cache replacement policy after waitTime has passed.\r\n * We do not run this directly because at exactly the time a query is created,\r\n * we need all CPU to minimize latency.\r\n * Also this should not be triggered multiple times when waitTime is still waiting.\r\n */\r\nexport function triggerCacheReplacement(\r\n rxCollection: RxCollection\r\n) {\r\n if (COLLECTIONS_WITH_RUNNING_CLEANUP.has(rxCollection)) {\r\n // already started\r\n return;\r\n }\r\n\r\n COLLECTIONS_WITH_RUNNING_CLEANUP.add(rxCollection);\r\n\r\n /**\r\n * Do not run directly to not reduce result latency of a new query\r\n */\r\n nextTick() // wait at least one tick\r\n .then(() => requestIdlePromise(200)) // and then wait for the CPU to be idle\r\n .then(() => {\r\n if (!rxCollection.closed) {\r\n rxCollection.cacheReplacementPolicy(rxCollection, rxCollection._queryCache);\r\n }\r\n COLLECTIONS_WITH_RUNNING_CLEANUP.delete(rxCollection);\r\n });\r\n}\r\n"],"mappings":";;;;;;;;;;;AASA,IAAAA,MAAA,GAAAC,OAAA;AATA;AACA;AACA;AACA;AAHA,IAeaC,UAAU,GAAAC,OAAA,CAAAD,UAAA;EAAA,SAAAA,WAAA;IAAA,KACZE,IAAI,GAAyB,IAAIC,GAAG,CAAC,CAAC;EAAA;EAAA,IAAAC,MAAA,GAAAJ,UAAA,CAAAK,SAAA;EAE7C;AACJ;AACA;AACA;AACA;EAJID,MAAA,CAKAE,UAAU,GAAV,SAAAA,UAAUA,CAACC,OAAgB,EAAW;IAClC,IAAMC,SAAS,GAAGD,OAAO,CAACE,QAAQ,CAAC,CAAC;IACpC,IAAMC,GAAG,GAAG,IAAAC,yBAAkB,EAC1B,IAAI,CAACT,IAAI,EACTM,SAAS,EACT,MAAMD,OACV,CAAC;IACD,OAAOG,GAAG;EACd,CAAC;EAAA,OAAAV,UAAA;AAAA;AAGE,SAASY,gBAAgBA,CAAA,EAAG;EAC/B,OAAO,IAAIZ,UAAU,CAAC,CAAC;AAC3B;AAGO,SAASa,cAAcA,CAACC,UAAsB,EAAEP,OAAgB,EAAE;EACrEA,OAAO,CAACQ,QAAQ,GAAG,IAAI;EACvB,IAAMP,SAAS,GAAGD,OAAO,CAACE,QAAQ,CAAC,CAAC;EACpCK,UAAU,CAACZ,IAAI,CAACc,MAAM,CAACR,SAAS,CAAC;AAErC;AAGO,SAASS,uBAAuBA,CAACV,OAAgB,EAAU;EAC9D,IAAI,CAAEA,OAAO,CAASW,UAAU,EAAE;IAC9B,OAAO,CAAC;EACZ;EACA,OAAOX,OAAO,CAACY,SAAS,CAACC,SAAS,CAACC,MAAM;AAC7C;AAGO,IAAMC,uBAAuB,GAAArB,OAAA,CAAAqB,uBAAA,GAAG,GAAG;AACnC,IAAMC,2BAA2B,GAAAtB,OAAA,CAAAsB,2BAAA,GAAG,EAAE,GAAG,IAAI;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,kCAGgB,GAAGA,CAC5BC,YAAY,EACZC,mBAAmB,KAClB,CACDC,WAAyB,EACzBb,UAAsB,KACrB;EACO,IAAIA,UAAU,CAACZ,IAAI,CAAC0B,IAAI,GAAGH,YAAY,EAAE;IACrC;EACJ;EAEA,IAAMI,YAAuB,GAAG,EAAE;EAElC,IAAMC,cAAc,GAAGC,KAAK,CAACC,IAAI,CAAClB,UAAU,CAACZ,IAAI,CAAC+B,MAAM,CAAC,CAAC,CAAC;EAC3D,KAAK,IAAM1B,OAAO,IAAIuB,cAAc,EAAE;IAClC;IACA,IAAIb,uBAAuB,CAACV,OAAO,CAAC,GAAG,CAAC,EAAE;MACtC;IACJ;IACA;IACA,IAAIA,OAAO,CAAC2B,gBAAgB,KAAK,CAAC,EAAE;MAChCrB,cAAc,CAACC,UAAU,EAAEP,OAAO,CAAC;MACnC;IACJ;IACAsB,YAAY,CAACM,IAAI,CAAC5B,OAAO,CAAC;EAC9B;EAEA,IAAM6B,WAAW,GAAGP,YAAY,CAACR,MAAM,GAAGI,YAAY;EACtD,IAAIW,WAAW,IAAI,CAAC,EAAE;IAClB;EACJ;EAEA,IAAMC,iBAAiB,GAAGR,YAAY,CAACS,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACL,gBAAgB,GAAGM,CAAC,CAACN,gBAAgB,CAAC;EAC9F,IAAMO,QAAQ,GAAGJ,iBAAiB,CAACK,KAAK,CAAC,CAAC,EAAEN,WAAW,CAAC;EACxDK,QAAQ,CAACE,OAAO,CAACpC,OAAO,IAAIM,cAAc,CAACC,UAAU,EAAEP,OAAO,CAAC,CAAC;AACpE,CAAC;AAACN,OAAA,CAAAuB,kCAAA,GAAAA,kCAAA;AAGH,IAAMoB,6BAAuD,GAAA3C,OAAA,CAAA2C,6BAAA,GAAGpB,kCAAkC,CACrGF,uBAAuB,EACvBC,2BACJ,CAAC;AAEM,IAAMsB,gCAAuD,GAAA5C,OAAA,CAAA4C,gCAAA,GAAG,IAAIC,OAAO,CAAC,CAAC;;AAEpF;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,uBAAuBA,CACnCC,YAA0B,EAC5B;EACE,IAAIH,gCAAgC,CAACI,GAAG,CAACD,YAAY,CAAC,EAAE;IACpD;IACA;EACJ;EAEAH,gCAAgC,CAACK,GAAG,CAACF,YAAY,CAAC;;EAElD;AACJ;AACA;EACI,IAAAG,eAAQ,EAAC,CAAC,CAAC;EAAA,CACNC,IAAI,CAAC,MAAM,IAAAC,yBAAkB,EAAC,GAAG,CAAC,CAAC,CAAC;EAAA,CACpCD,IAAI,CAAC,MAAM;IACR,IAAI,CAACJ,YAAY,CAACM,MAAM,EAAE;MACtBN,YAAY,CAACO,sBAAsB,CAACP,YAAY,EAAEA,YAAY,CAACQ,WAAW,CAAC;IAC/E;IACAX,gCAAgC,CAAC7B,MAAM,CAACgC,YAAY,CAAC;EACzD,CAAC,CAAC;AACV","ignoreList":[]}
|
|
@@ -272,7 +272,7 @@ function getMatcherQueryOpts(operator, operatorValue) {
|
|
|
272
272
|
inclusiveStart: false
|
|
273
273
|
};
|
|
274
274
|
default:
|
|
275
|
-
throw
|
|
275
|
+
throw (0, _rxError.newRxError)('SNH');
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
|
|
@@ -290,7 +290,7 @@ function rateQueryPlan(schema, query, queryPlan) {
|
|
|
290
290
|
var pointsPerMatchingKey = 10;
|
|
291
291
|
var nonMinKeyCount = (0, _index.countUntilNotMatching)(queryPlan.startKeys, keyValue => keyValue !== INDEX_MIN && keyValue !== INDEX_MAX);
|
|
292
292
|
addQuality(nonMinKeyCount * pointsPerMatchingKey);
|
|
293
|
-
var nonMaxKeyCount = (0, _index.countUntilNotMatching)(queryPlan.
|
|
293
|
+
var nonMaxKeyCount = (0, _index.countUntilNotMatching)(queryPlan.endKeys, keyValue => keyValue !== INDEX_MAX && keyValue !== INDEX_MIN);
|
|
294
294
|
addQuality(nonMaxKeyCount * pointsPerMatchingKey);
|
|
295
295
|
var equalKeyCount = (0, _index.countUntilNotMatching)(queryPlan.startKeys, (keyValue, idx) => {
|
|
296
296
|
if (keyValue === queryPlan.endKeys[idx]) {
|