@chipmobilesdk/rn-local-db 0.4.0 → 0.5.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/CHANGELOG.md +137 -0
- package/README.md +69 -8
- package/lib/commonjs/adapter/budgets.js +79 -0
- package/lib/commonjs/adapter/budgets.js.map +1 -0
- package/lib/commonjs/adapter/collection.js +236 -0
- package/lib/commonjs/adapter/collection.js.map +1 -0
- package/lib/commonjs/adapter/deletion.js +291 -0
- package/lib/commonjs/adapter/deletion.js.map +1 -0
- package/lib/commonjs/adapter/handle.js +259 -0
- package/lib/commonjs/adapter/handle.js.map +1 -0
- package/lib/commonjs/adapter/index.js +67 -0
- package/lib/commonjs/adapter/index.js.map +1 -0
- package/lib/commonjs/adapter/lifecycle.js +176 -0
- package/lib/commonjs/adapter/lifecycle.js.map +1 -0
- package/lib/commonjs/adapter/schema-sync.js +124 -0
- package/lib/commonjs/adapter/schema-sync.js.map +1 -0
- package/lib/commonjs/adapter/transaction.js +58 -0
- package/lib/commonjs/adapter/transaction.js.map +1 -0
- package/lib/commonjs/artifacts/availability.js +90 -0
- package/lib/commonjs/artifacts/availability.js.map +1 -0
- package/lib/commonjs/artifacts/cascade.js +80 -0
- package/lib/commonjs/artifacts/cascade.js.map +1 -0
- package/lib/commonjs/artifacts/paths.js +31 -0
- package/lib/commonjs/artifacts/paths.js.map +1 -0
- package/lib/commonjs/artifacts/reconcile.js +55 -0
- package/lib/commonjs/artifacts/reconcile.js.map +1 -0
- package/lib/commonjs/artifacts/store.js +300 -0
- package/lib/commonjs/artifacts/store.js.map +1 -0
- package/lib/commonjs/contract/adapter.js +6 -0
- package/lib/commonjs/contract/adapter.js.map +1 -0
- package/lib/commonjs/contract/attachment.js +2 -0
- package/lib/commonjs/contract/attachment.js.map +1 -0
- package/lib/commonjs/contract/backup.js +2 -0
- package/lib/commonjs/contract/backup.js.map +1 -0
- package/lib/commonjs/contract/config.js +31 -0
- package/lib/commonjs/contract/config.js.map +1 -0
- package/lib/commonjs/contract/encryption.js +6 -0
- package/lib/commonjs/contract/encryption.js.map +1 -0
- package/lib/commonjs/contract/errors.js +64 -0
- package/lib/commonjs/contract/errors.js.map +1 -0
- package/lib/commonjs/contract/migration.js +6 -0
- package/lib/commonjs/contract/migration.js.map +1 -0
- package/lib/commonjs/contract/query.js +6 -0
- package/lib/commonjs/contract/query.js.map +1 -0
- package/lib/commonjs/contract/record.js +6 -0
- package/lib/commonjs/contract/record.js.map +1 -0
- package/lib/commonjs/contract/schema.js +2 -0
- package/lib/commonjs/contract/schema.js.map +1 -0
- package/lib/commonjs/contract/scope.js +2 -0
- package/lib/commonjs/contract/scope.js.map +1 -0
- package/lib/commonjs/contract/transaction.js +6 -0
- package/lib/commonjs/contract/transaction.js.map +1 -0
- package/lib/commonjs/crypto/chunked-cipher.js +147 -0
- package/lib/commonjs/crypto/chunked-cipher.js.map +1 -0
- package/lib/commonjs/crypto/derive.js +61 -0
- package/lib/commonjs/crypto/derive.js.map +1 -0
- package/lib/commonjs/crypto/key-provider.js +70 -0
- package/lib/commonjs/crypto/key-provider.js.map +1 -0
- package/lib/commonjs/crypto/provider.js +54 -0
- package/lib/commonjs/crypto/provider.js.map +1 -0
- package/lib/commonjs/diagnostics/dev-log.js +127 -0
- package/lib/commonjs/diagnostics/dev-log.js.map +1 -0
- package/lib/commonjs/diagnostics/errors.js +57 -0
- package/lib/commonjs/diagnostics/errors.js.map +1 -0
- package/lib/commonjs/diagnostics/faults.js +54 -0
- package/lib/commonjs/diagnostics/faults.js.map +1 -0
- package/lib/commonjs/diagnostics/map-native.js +98 -0
- package/lib/commonjs/diagnostics/map-native.js.map +1 -0
- package/lib/commonjs/diagnostics/redact.js +110 -0
- package/lib/commonjs/diagnostics/redact.js.map +1 -0
- package/lib/commonjs/index.js +70 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/migration/executor.js +136 -0
- package/lib/commonjs/migration/executor.js.map +1 -0
- package/lib/commonjs/migration/ledger.js +64 -0
- package/lib/commonjs/migration/ledger.js.map +1 -0
- package/lib/commonjs/migration/validate-chain.js +76 -0
- package/lib/commonjs/migration/validate-chain.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/platform/backup-android-verify.js +76 -0
- package/lib/commonjs/platform/backup-android-verify.js.map +1 -0
- package/lib/commonjs/platform/backup-ios.js +50 -0
- package/lib/commonjs/platform/backup-ios.js.map +1 -0
- package/lib/commonjs/platform/bytes.js +158 -0
- package/lib/commonjs/platform/bytes.js.map +1 -0
- package/lib/commonjs/platform/fs.js +59 -0
- package/lib/commonjs/platform/fs.js.map +1 -0
- package/lib/commonjs/platform/location.js +129 -0
- package/lib/commonjs/platform/location.js.map +1 -0
- package/lib/commonjs/query/budgets.js +95 -0
- package/lib/commonjs/query/budgets.js.map +1 -0
- package/lib/commonjs/query/compare.js +97 -0
- package/lib/commonjs/query/compare.js.map +1 -0
- package/lib/commonjs/query/cursor.js +97 -0
- package/lib/commonjs/query/cursor.js.map +1 -0
- package/lib/commonjs/query/filter.js +82 -0
- package/lib/commonjs/query/filter.js.map +1 -0
- package/lib/commonjs/query/paginate.js +48 -0
- package/lib/commonjs/query/paginate.js.map +1 -0
- package/lib/commonjs/query/sort.js +61 -0
- package/lib/commonjs/query/sort.js.map +1 -0
- package/lib/commonjs/query/validate.js +180 -0
- package/lib/commonjs/query/validate.js.map +1 -0
- package/lib/commonjs/schema/declare.js +47 -0
- package/lib/commonjs/schema/declare.js.map +1 -0
- package/lib/commonjs/schema/validate-config.js +115 -0
- package/lib/commonjs/schema/validate-config.js.map +1 -0
- package/lib/commonjs/scope/hash.js +107 -0
- package/lib/commonjs/scope/hash.js.map +1 -0
- package/lib/commonjs/scope/normalize.js +73 -0
- package/lib/commonjs/scope/normalize.js.map +1 -0
- package/lib/commonjs/scope/validate.js +81 -0
- package/lib/commonjs/scope/validate.js.map +1 -0
- package/lib/commonjs/sqlite/adapter.js +31 -0
- package/lib/commonjs/sqlite/adapter.js.map +1 -0
- package/lib/commonjs/sqlite/batch.js +218 -0
- package/lib/commonjs/sqlite/batch.js.map +1 -0
- package/lib/commonjs/sqlite/catalog.js +81 -0
- package/lib/commonjs/sqlite/catalog.js.map +1 -0
- package/lib/commonjs/sqlite/connection.js +210 -0
- package/lib/commonjs/sqlite/connection.js.map +1 -0
- package/lib/commonjs/sqlite/index-coverage.js +42 -0
- package/lib/commonjs/sqlite/index-coverage.js.map +1 -0
- package/lib/commonjs/sqlite/native.js +54 -0
- package/lib/commonjs/sqlite/native.js.map +1 -0
- package/lib/commonjs/sqlite/row-codec.js +192 -0
- package/lib/commonjs/sqlite/row-codec.js.map +1 -0
- package/lib/commonjs/sqlite/sql-builder.js +253 -0
- package/lib/commonjs/sqlite/sql-builder.js.map +1 -0
- package/lib/commonjs/sqlite/statements.js +54 -0
- package/lib/commonjs/sqlite/statements.js.map +1 -0
- package/lib/commonjs/sqlite/transaction-queue.js +79 -0
- package/lib/commonjs/sqlite/transaction-queue.js.map +1 -0
- package/lib/commonjs/sqlite/transactions.js +33 -0
- package/lib/commonjs/sqlite/transactions.js.map +1 -0
- package/lib/commonjs/sqlite/values.js +31 -0
- package/lib/commonjs/sqlite/values.js.map +1 -0
- package/lib/commonjs/testing/conformance/attachments.js +180 -0
- package/lib/commonjs/testing/conformance/attachments.js.map +1 -0
- package/lib/commonjs/testing/conformance/encryption.js +187 -0
- package/lib/commonjs/testing/conformance/encryption.js.map +1 -0
- package/lib/commonjs/testing/conformance/index.js +103 -0
- package/lib/commonjs/testing/conformance/index.js.map +1 -0
- package/lib/commonjs/testing/conformance/lifecycle.js +134 -0
- package/lib/commonjs/testing/conformance/lifecycle.js.map +1 -0
- package/lib/commonjs/testing/conformance/migrations.js +167 -0
- package/lib/commonjs/testing/conformance/migrations.js.map +1 -0
- package/lib/commonjs/testing/conformance/queries.js +278 -0
- package/lib/commonjs/testing/conformance/queries.js.map +1 -0
- package/lib/commonjs/testing/conformance/records.js +224 -0
- package/lib/commonjs/testing/conformance/records.js.map +1 -0
- package/lib/commonjs/testing/conformance/scopes.js +107 -0
- package/lib/commonjs/testing/conformance/scopes.js.map +1 -0
- package/lib/commonjs/testing/conformance/transactions.js +228 -0
- package/lib/commonjs/testing/conformance/transactions.js.map +1 -0
- package/lib/commonjs/testing/faults.js +38 -0
- package/lib/commonjs/testing/faults.js.map +1 -0
- package/lib/commonjs/testing/index.js +59 -0
- package/lib/commonjs/testing/index.js.map +1 -0
- package/lib/commonjs/testing/memory-adapter/attachments.js +145 -0
- package/lib/commonjs/testing/memory-adapter/attachments.js.map +1 -0
- package/lib/commonjs/testing/memory-adapter/collection.js +224 -0
- package/lib/commonjs/testing/memory-adapter/collection.js.map +1 -0
- package/lib/commonjs/testing/memory-adapter/index.js +366 -0
- package/lib/commonjs/testing/memory-adapter/index.js.map +1 -0
- package/lib/commonjs/testing/memory-adapter/migrations.js +126 -0
- package/lib/commonjs/testing/memory-adapter/migrations.js.map +1 -0
- package/lib/commonjs/testing/memory-adapter/reset.js +49 -0
- package/lib/commonjs/testing/memory-adapter/reset.js.map +1 -0
- package/lib/commonjs/testing/memory-adapter/store.js +107 -0
- package/lib/commonjs/testing/memory-adapter/store.js.map +1 -0
- package/lib/module/adapter/budgets.js +51 -0
- package/lib/module/adapter/budgets.js.map +1 -0
- package/lib/module/adapter/collection.js +232 -0
- package/lib/module/adapter/collection.js.map +1 -0
- package/lib/module/adapter/deletion.js +280 -0
- package/lib/module/adapter/deletion.js.map +1 -0
- package/lib/module/adapter/handle.js +254 -0
- package/lib/module/adapter/handle.js.map +1 -0
- package/lib/module/adapter/index.js +59 -0
- package/lib/module/adapter/index.js.map +1 -0
- package/lib/module/adapter/lifecycle.js +172 -0
- package/lib/module/adapter/lifecycle.js.map +1 -0
- package/lib/module/adapter/schema-sync.js +121 -0
- package/lib/module/adapter/schema-sync.js.map +1 -0
- package/lib/module/adapter/transaction.js +54 -0
- package/lib/module/adapter/transaction.js.map +1 -0
- package/lib/module/artifacts/availability.js +86 -0
- package/lib/module/artifacts/availability.js.map +1 -0
- package/lib/module/artifacts/cascade.js +75 -0
- package/lib/module/artifacts/cascade.js.map +1 -0
- package/lib/module/artifacts/paths.js +26 -0
- package/lib/module/artifacts/paths.js.map +1 -0
- package/lib/module/artifacts/reconcile.js +51 -0
- package/lib/module/artifacts/reconcile.js.map +1 -0
- package/lib/module/artifacts/store.js +289 -0
- package/lib/module/artifacts/store.js.map +1 -0
- package/lib/module/contract/adapter.js +4 -0
- package/lib/module/contract/adapter.js.map +1 -0
- package/lib/module/contract/attachment.js +2 -0
- package/lib/module/contract/attachment.js.map +1 -0
- package/lib/module/contract/backup.js +2 -0
- package/lib/module/contract/backup.js.map +1 -0
- package/lib/module/contract/config.js +27 -0
- package/lib/module/contract/config.js.map +1 -0
- package/lib/module/contract/encryption.js +4 -0
- package/lib/module/contract/encryption.js.map +1 -0
- package/lib/module/contract/errors.js +60 -0
- package/lib/module/contract/errors.js.map +1 -0
- package/lib/module/contract/migration.js +4 -0
- package/lib/module/contract/migration.js.map +1 -0
- package/lib/module/contract/query.js +4 -0
- package/lib/module/contract/query.js.map +1 -0
- package/lib/module/contract/record.js +4 -0
- package/lib/module/contract/record.js.map +1 -0
- package/lib/module/contract/schema.js +2 -0
- package/lib/module/contract/schema.js.map +1 -0
- package/lib/module/contract/scope.js +2 -0
- package/lib/module/contract/scope.js.map +1 -0
- package/lib/module/contract/transaction.js +4 -0
- package/lib/module/contract/transaction.js.map +1 -0
- package/lib/module/crypto/chunked-cipher.js +134 -0
- package/lib/module/crypto/chunked-cipher.js.map +1 -0
- package/lib/module/crypto/derive.js +56 -0
- package/lib/module/crypto/derive.js.map +1 -0
- package/lib/module/crypto/key-provider.js +67 -0
- package/lib/module/crypto/key-provider.js.map +1 -0
- package/lib/module/crypto/provider.js +49 -0
- package/lib/module/crypto/provider.js.map +1 -0
- package/lib/module/diagnostics/dev-log.js +120 -0
- package/lib/module/diagnostics/dev-log.js.map +1 -0
- package/lib/module/diagnostics/errors.js +44 -0
- package/lib/module/diagnostics/errors.js.map +1 -0
- package/lib/module/diagnostics/faults.js +47 -0
- package/lib/module/diagnostics/faults.js.map +1 -0
- package/lib/module/diagnostics/map-native.js +93 -0
- package/lib/module/diagnostics/map-native.js.map +1 -0
- package/lib/module/diagnostics/redact.js +102 -0
- package/lib/module/diagnostics/redact.js.map +1 -0
- package/lib/module/index.js +28 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/migration/executor.js +132 -0
- package/lib/module/migration/executor.js.map +1 -0
- package/lib/module/migration/ledger.js +57 -0
- package/lib/module/migration/ledger.js.map +1 -0
- package/lib/module/migration/validate-chain.js +70 -0
- package/lib/module/migration/validate-chain.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/platform/backup-android-verify.js +69 -0
- package/lib/module/platform/backup-android-verify.js.map +1 -0
- package/lib/module/platform/backup-ios.js +44 -0
- package/lib/module/platform/backup-ios.js.map +1 -0
- package/lib/module/platform/bytes.js +148 -0
- package/lib/module/platform/bytes.js.map +1 -0
- package/lib/module/platform/fs.js +54 -0
- package/lib/module/platform/fs.js.map +1 -0
- package/lib/module/platform/location.js +120 -0
- package/lib/module/platform/location.js.map +1 -0
- package/lib/module/query/budgets.js +88 -0
- package/lib/module/query/budgets.js.map +1 -0
- package/lib/module/query/compare.js +90 -0
- package/lib/module/query/compare.js.map +1 -0
- package/lib/module/query/cursor.js +91 -0
- package/lib/module/query/cursor.js.map +1 -0
- package/lib/module/query/filter.js +78 -0
- package/lib/module/query/filter.js.map +1 -0
- package/lib/module/query/paginate.js +40 -0
- package/lib/module/query/paginate.js.map +1 -0
- package/lib/module/query/sort.js +53 -0
- package/lib/module/query/sort.js.map +1 -0
- package/lib/module/query/validate.js +173 -0
- package/lib/module/query/validate.js.map +1 -0
- package/lib/module/schema/declare.js +37 -0
- package/lib/module/schema/declare.js.map +1 -0
- package/lib/module/schema/validate-config.js +111 -0
- package/lib/module/schema/validate-config.js.map +1 -0
- package/lib/module/scope/hash.js +102 -0
- package/lib/module/scope/hash.js.map +1 -0
- package/lib/module/scope/normalize.js +67 -0
- package/lib/module/scope/normalize.js.map +1 -0
- package/lib/module/scope/validate.js +76 -0
- package/lib/module/scope/validate.js.map +1 -0
- package/lib/module/sqlite/adapter.js +27 -0
- package/lib/module/sqlite/adapter.js.map +1 -0
- package/lib/module/sqlite/batch.js +214 -0
- package/lib/module/sqlite/batch.js.map +1 -0
- package/lib/module/sqlite/catalog.js +72 -0
- package/lib/module/sqlite/catalog.js.map +1 -0
- package/lib/module/sqlite/connection.js +206 -0
- package/lib/module/sqlite/connection.js.map +1 -0
- package/lib/module/sqlite/index-coverage.js +38 -0
- package/lib/module/sqlite/index-coverage.js.map +1 -0
- package/lib/module/sqlite/native.js +48 -0
- package/lib/module/sqlite/native.js.map +1 -0
- package/lib/module/sqlite/row-codec.js +176 -0
- package/lib/module/sqlite/row-codec.js.map +1 -0
- package/lib/module/sqlite/sql-builder.js +247 -0
- package/lib/module/sqlite/sql-builder.js.map +1 -0
- package/lib/module/sqlite/statements.js +49 -0
- package/lib/module/sqlite/statements.js.map +1 -0
- package/lib/module/sqlite/transaction-queue.js +75 -0
- package/lib/module/sqlite/transaction-queue.js.map +1 -0
- package/lib/module/sqlite/transactions.js +29 -0
- package/lib/module/sqlite/transactions.js.map +1 -0
- package/lib/module/sqlite/values.js +24 -0
- package/lib/module/sqlite/values.js.map +1 -0
- package/lib/module/testing/conformance/attachments.js +176 -0
- package/lib/module/testing/conformance/attachments.js.map +1 -0
- package/lib/module/testing/conformance/encryption.js +183 -0
- package/lib/module/testing/conformance/encryption.js.map +1 -0
- package/lib/module/testing/conformance/index.js +97 -0
- package/lib/module/testing/conformance/index.js.map +1 -0
- package/lib/module/testing/conformance/lifecycle.js +130 -0
- package/lib/module/testing/conformance/lifecycle.js.map +1 -0
- package/lib/module/testing/conformance/migrations.js +163 -0
- package/lib/module/testing/conformance/migrations.js.map +1 -0
- package/lib/module/testing/conformance/queries.js +274 -0
- package/lib/module/testing/conformance/queries.js.map +1 -0
- package/lib/module/testing/conformance/records.js +220 -0
- package/lib/module/testing/conformance/records.js.map +1 -0
- package/lib/module/testing/conformance/scopes.js +103 -0
- package/lib/module/testing/conformance/scopes.js.map +1 -0
- package/lib/module/testing/conformance/transactions.js +224 -0
- package/lib/module/testing/conformance/transactions.js.map +1 -0
- package/lib/module/testing/faults.js +16 -0
- package/lib/module/testing/faults.js.map +1 -0
- package/lib/module/testing/index.js +16 -0
- package/lib/module/testing/index.js.map +1 -0
- package/lib/module/testing/memory-adapter/attachments.js +142 -0
- package/lib/module/testing/memory-adapter/attachments.js.map +1 -0
- package/lib/module/testing/memory-adapter/collection.js +220 -0
- package/lib/module/testing/memory-adapter/collection.js.map +1 -0
- package/lib/module/testing/memory-adapter/index.js +351 -0
- package/lib/module/testing/memory-adapter/index.js.map +1 -0
- package/lib/module/testing/memory-adapter/migrations.js +122 -0
- package/lib/module/testing/memory-adapter/migrations.js.map +1 -0
- package/lib/module/testing/memory-adapter/reset.js +44 -0
- package/lib/module/testing/memory-adapter/reset.js.map +1 -0
- package/lib/module/testing/memory-adapter/store.js +94 -0
- package/lib/module/testing/memory-adapter/store.js.map +1 -0
- package/lib/typescript/commonjs/adapter/budgets.d.ts +19 -0
- package/lib/typescript/commonjs/adapter/budgets.d.ts.map +1 -0
- package/lib/typescript/commonjs/adapter/collection.d.ts +25 -0
- package/lib/typescript/commonjs/adapter/collection.d.ts.map +1 -0
- package/lib/typescript/commonjs/adapter/deletion.d.ts +48 -0
- package/lib/typescript/commonjs/adapter/deletion.d.ts.map +1 -0
- package/lib/typescript/commonjs/adapter/handle.d.ts +30 -0
- package/lib/typescript/commonjs/adapter/handle.d.ts.map +1 -0
- package/lib/typescript/commonjs/adapter/index.d.ts +30 -0
- package/lib/typescript/commonjs/adapter/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/adapter/lifecycle.d.ts +25 -0
- package/lib/typescript/commonjs/adapter/lifecycle.d.ts.map +1 -0
- package/lib/typescript/commonjs/adapter/schema-sync.d.ts +19 -0
- package/lib/typescript/commonjs/adapter/schema-sync.d.ts.map +1 -0
- package/lib/typescript/commonjs/adapter/transaction.d.ts +32 -0
- package/lib/typescript/commonjs/adapter/transaction.d.ts.map +1 -0
- package/lib/typescript/commonjs/artifacts/availability.d.ts +19 -0
- package/lib/typescript/commonjs/artifacts/availability.d.ts.map +1 -0
- package/lib/typescript/commonjs/artifacts/cascade.d.ts +26 -0
- package/lib/typescript/commonjs/artifacts/cascade.d.ts.map +1 -0
- package/lib/typescript/commonjs/artifacts/paths.d.ts +16 -0
- package/lib/typescript/commonjs/artifacts/paths.d.ts.map +1 -0
- package/lib/typescript/commonjs/artifacts/reconcile.d.ts +23 -0
- package/lib/typescript/commonjs/artifacts/reconcile.d.ts.map +1 -0
- package/lib/typescript/commonjs/artifacts/store.d.ts +45 -0
- package/lib/typescript/commonjs/artifacts/store.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/adapter.d.ts +55 -0
- package/lib/typescript/commonjs/contract/adapter.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/attachment.d.ts +84 -0
- package/lib/typescript/commonjs/contract/attachment.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/backup.d.ts +26 -0
- package/lib/typescript/commonjs/contract/backup.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/config.d.ts +50 -0
- package/lib/typescript/commonjs/contract/config.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/encryption.d.ts +31 -0
- package/lib/typescript/commonjs/contract/encryption.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/errors.d.ts +50 -0
- package/lib/typescript/commonjs/contract/errors.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/migration.d.ts +37 -0
- package/lib/typescript/commonjs/contract/migration.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/query.d.ts +79 -0
- package/lib/typescript/commonjs/contract/query.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/record.d.ts +43 -0
- package/lib/typescript/commonjs/contract/record.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/schema.d.ts +33 -0
- package/lib/typescript/commonjs/contract/schema.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/scope.d.ts +33 -0
- package/lib/typescript/commonjs/contract/scope.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/transaction.d.ts +66 -0
- package/lib/typescript/commonjs/contract/transaction.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/chunked-cipher.d.ts +57 -0
- package/lib/typescript/commonjs/crypto/chunked-cipher.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/derive.d.ts +28 -0
- package/lib/typescript/commonjs/crypto/derive.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/key-provider.d.ts +30 -0
- package/lib/typescript/commonjs/crypto/key-provider.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/provider.d.ts +35 -0
- package/lib/typescript/commonjs/crypto/provider.d.ts.map +1 -0
- package/lib/typescript/commonjs/diagnostics/dev-log.d.ts +35 -0
- package/lib/typescript/commonjs/diagnostics/dev-log.d.ts.map +1 -0
- package/lib/typescript/commonjs/diagnostics/errors.d.ts +34 -0
- package/lib/typescript/commonjs/diagnostics/errors.d.ts.map +1 -0
- package/lib/typescript/commonjs/diagnostics/faults.d.ts +26 -0
- package/lib/typescript/commonjs/diagnostics/faults.d.ts.map +1 -0
- package/lib/typescript/commonjs/diagnostics/map-native.d.ts +31 -0
- package/lib/typescript/commonjs/diagnostics/map-native.d.ts.map +1 -0
- package/lib/typescript/commonjs/diagnostics/redact.d.ts +70 -0
- package/lib/typescript/commonjs/diagnostics/redact.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +30 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/migration/executor.d.ts +40 -0
- package/lib/typescript/commonjs/migration/executor.d.ts.map +1 -0
- package/lib/typescript/commonjs/migration/ledger.d.ts +34 -0
- package/lib/typescript/commonjs/migration/ledger.d.ts.map +1 -0
- package/lib/typescript/commonjs/migration/validate-chain.d.ts +20 -0
- package/lib/typescript/commonjs/migration/validate-chain.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/platform/backup-android-verify.d.ts +30 -0
- package/lib/typescript/commonjs/platform/backup-android-verify.d.ts.map +1 -0
- package/lib/typescript/commonjs/platform/backup-ios.d.ts +26 -0
- package/lib/typescript/commonjs/platform/backup-ios.d.ts.map +1 -0
- package/lib/typescript/commonjs/platform/bytes.d.ts +36 -0
- package/lib/typescript/commonjs/platform/bytes.d.ts.map +1 -0
- package/lib/typescript/commonjs/platform/fs.d.ts +47 -0
- package/lib/typescript/commonjs/platform/fs.d.ts.map +1 -0
- package/lib/typescript/commonjs/platform/location.d.ts +53 -0
- package/lib/typescript/commonjs/platform/location.d.ts.map +1 -0
- package/lib/typescript/commonjs/query/budgets.d.ts +23 -0
- package/lib/typescript/commonjs/query/budgets.d.ts.map +1 -0
- package/lib/typescript/commonjs/query/compare.d.ts +42 -0
- package/lib/typescript/commonjs/query/compare.d.ts.map +1 -0
- package/lib/typescript/commonjs/query/cursor.d.ts +27 -0
- package/lib/typescript/commonjs/query/cursor.d.ts.map +1 -0
- package/lib/typescript/commonjs/query/filter.d.ts +11 -0
- package/lib/typescript/commonjs/query/filter.d.ts.map +1 -0
- package/lib/typescript/commonjs/query/paginate.d.ts +15 -0
- package/lib/typescript/commonjs/query/paginate.d.ts.map +1 -0
- package/lib/typescript/commonjs/query/sort.d.ts +19 -0
- package/lib/typescript/commonjs/query/sort.d.ts.map +1 -0
- package/lib/typescript/commonjs/query/validate.d.ts +15 -0
- package/lib/typescript/commonjs/query/validate.d.ts.map +1 -0
- package/lib/typescript/commonjs/schema/declare.d.ts +20 -0
- package/lib/typescript/commonjs/schema/declare.d.ts.map +1 -0
- package/lib/typescript/commonjs/schema/validate-config.d.ts +11 -0
- package/lib/typescript/commonjs/schema/validate-config.d.ts.map +1 -0
- package/lib/typescript/commonjs/scope/hash.d.ts +24 -0
- package/lib/typescript/commonjs/scope/hash.d.ts.map +1 -0
- package/lib/typescript/commonjs/scope/normalize.d.ts +46 -0
- package/lib/typescript/commonjs/scope/normalize.d.ts.map +1 -0
- package/lib/typescript/commonjs/scope/validate.d.ts +15 -0
- package/lib/typescript/commonjs/scope/validate.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/adapter.d.ts +16 -0
- package/lib/typescript/commonjs/sqlite/adapter.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/batch.d.ts +25 -0
- package/lib/typescript/commonjs/sqlite/batch.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/catalog.d.ts +34 -0
- package/lib/typescript/commonjs/sqlite/catalog.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/connection.d.ts +58 -0
- package/lib/typescript/commonjs/sqlite/connection.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/index-coverage.d.ts +18 -0
- package/lib/typescript/commonjs/sqlite/index-coverage.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/native.d.ts +48 -0
- package/lib/typescript/commonjs/sqlite/native.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/row-codec.d.ts +69 -0
- package/lib/typescript/commonjs/sqlite/row-codec.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/sql-builder.d.ts +34 -0
- package/lib/typescript/commonjs/sqlite/sql-builder.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/statements.d.ts +26 -0
- package/lib/typescript/commonjs/sqlite/statements.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/transaction-queue.d.ts +31 -0
- package/lib/typescript/commonjs/sqlite/transaction-queue.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/transactions.d.ts +26 -0
- package/lib/typescript/commonjs/sqlite/transactions.d.ts.map +1 -0
- package/lib/typescript/commonjs/sqlite/values.d.ts +13 -0
- package/lib/typescript/commonjs/sqlite/values.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/attachments.d.ts +4 -0
- package/lib/typescript/commonjs/testing/conformance/attachments.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/encryption.d.ts +4 -0
- package/lib/typescript/commonjs/testing/conformance/encryption.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/index.d.ts +58 -0
- package/lib/typescript/commonjs/testing/conformance/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/lifecycle.d.ts +4 -0
- package/lib/typescript/commonjs/testing/conformance/lifecycle.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/migrations.d.ts +4 -0
- package/lib/typescript/commonjs/testing/conformance/migrations.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/queries.d.ts +4 -0
- package/lib/typescript/commonjs/testing/conformance/queries.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/records.d.ts +4 -0
- package/lib/typescript/commonjs/testing/conformance/records.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/scopes.d.ts +4 -0
- package/lib/typescript/commonjs/testing/conformance/scopes.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance/transactions.d.ts +4 -0
- package/lib/typescript/commonjs/testing/conformance/transactions.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/faults.d.ts +13 -0
- package/lib/typescript/commonjs/testing/faults.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/index.d.ts +13 -0
- package/lib/typescript/commonjs/testing/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/memory-adapter/attachments.d.ts +23 -0
- package/lib/typescript/commonjs/testing/memory-adapter/attachments.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/memory-adapter/collection.d.ts +19 -0
- package/lib/typescript/commonjs/testing/memory-adapter/collection.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/memory-adapter/index.d.ts +22 -0
- package/lib/typescript/commonjs/testing/memory-adapter/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/memory-adapter/migrations.d.ts +11 -0
- package/lib/typescript/commonjs/testing/memory-adapter/migrations.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/memory-adapter/reset.d.ts +23 -0
- package/lib/typescript/commonjs/testing/memory-adapter/reset.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/memory-adapter/store.d.ts +54 -0
- package/lib/typescript/commonjs/testing/memory-adapter/store.d.ts.map +1 -0
- package/lib/typescript/module/adapter/budgets.d.ts +19 -0
- package/lib/typescript/module/adapter/budgets.d.ts.map +1 -0
- package/lib/typescript/module/adapter/collection.d.ts +25 -0
- package/lib/typescript/module/adapter/collection.d.ts.map +1 -0
- package/lib/typescript/module/adapter/deletion.d.ts +48 -0
- package/lib/typescript/module/adapter/deletion.d.ts.map +1 -0
- package/lib/typescript/module/adapter/handle.d.ts +30 -0
- package/lib/typescript/module/adapter/handle.d.ts.map +1 -0
- package/lib/typescript/module/adapter/index.d.ts +30 -0
- package/lib/typescript/module/adapter/index.d.ts.map +1 -0
- package/lib/typescript/module/adapter/lifecycle.d.ts +25 -0
- package/lib/typescript/module/adapter/lifecycle.d.ts.map +1 -0
- package/lib/typescript/module/adapter/schema-sync.d.ts +19 -0
- package/lib/typescript/module/adapter/schema-sync.d.ts.map +1 -0
- package/lib/typescript/module/adapter/transaction.d.ts +32 -0
- package/lib/typescript/module/adapter/transaction.d.ts.map +1 -0
- package/lib/typescript/module/artifacts/availability.d.ts +19 -0
- package/lib/typescript/module/artifacts/availability.d.ts.map +1 -0
- package/lib/typescript/module/artifacts/cascade.d.ts +26 -0
- package/lib/typescript/module/artifacts/cascade.d.ts.map +1 -0
- package/lib/typescript/module/artifacts/paths.d.ts +16 -0
- package/lib/typescript/module/artifacts/paths.d.ts.map +1 -0
- package/lib/typescript/module/artifacts/reconcile.d.ts +23 -0
- package/lib/typescript/module/artifacts/reconcile.d.ts.map +1 -0
- package/lib/typescript/module/artifacts/store.d.ts +45 -0
- package/lib/typescript/module/artifacts/store.d.ts.map +1 -0
- package/lib/typescript/module/contract/adapter.d.ts +55 -0
- package/lib/typescript/module/contract/adapter.d.ts.map +1 -0
- package/lib/typescript/module/contract/attachment.d.ts +84 -0
- package/lib/typescript/module/contract/attachment.d.ts.map +1 -0
- package/lib/typescript/module/contract/backup.d.ts +26 -0
- package/lib/typescript/module/contract/backup.d.ts.map +1 -0
- package/lib/typescript/module/contract/config.d.ts +50 -0
- package/lib/typescript/module/contract/config.d.ts.map +1 -0
- package/lib/typescript/module/contract/encryption.d.ts +31 -0
- package/lib/typescript/module/contract/encryption.d.ts.map +1 -0
- package/lib/typescript/module/contract/errors.d.ts +50 -0
- package/lib/typescript/module/contract/errors.d.ts.map +1 -0
- package/lib/typescript/module/contract/migration.d.ts +37 -0
- package/lib/typescript/module/contract/migration.d.ts.map +1 -0
- package/lib/typescript/module/contract/query.d.ts +79 -0
- package/lib/typescript/module/contract/query.d.ts.map +1 -0
- package/lib/typescript/module/contract/record.d.ts +43 -0
- package/lib/typescript/module/contract/record.d.ts.map +1 -0
- package/lib/typescript/module/contract/schema.d.ts +33 -0
- package/lib/typescript/module/contract/schema.d.ts.map +1 -0
- package/lib/typescript/module/contract/scope.d.ts +33 -0
- package/lib/typescript/module/contract/scope.d.ts.map +1 -0
- package/lib/typescript/module/contract/transaction.d.ts +66 -0
- package/lib/typescript/module/contract/transaction.d.ts.map +1 -0
- package/lib/typescript/module/crypto/chunked-cipher.d.ts +57 -0
- package/lib/typescript/module/crypto/chunked-cipher.d.ts.map +1 -0
- package/lib/typescript/module/crypto/derive.d.ts +28 -0
- package/lib/typescript/module/crypto/derive.d.ts.map +1 -0
- package/lib/typescript/module/crypto/key-provider.d.ts +30 -0
- package/lib/typescript/module/crypto/key-provider.d.ts.map +1 -0
- package/lib/typescript/module/crypto/provider.d.ts +35 -0
- package/lib/typescript/module/crypto/provider.d.ts.map +1 -0
- package/lib/typescript/module/diagnostics/dev-log.d.ts +35 -0
- package/lib/typescript/module/diagnostics/dev-log.d.ts.map +1 -0
- package/lib/typescript/module/diagnostics/errors.d.ts +34 -0
- package/lib/typescript/module/diagnostics/errors.d.ts.map +1 -0
- package/lib/typescript/module/diagnostics/faults.d.ts +26 -0
- package/lib/typescript/module/diagnostics/faults.d.ts.map +1 -0
- package/lib/typescript/module/diagnostics/map-native.d.ts +31 -0
- package/lib/typescript/module/diagnostics/map-native.d.ts.map +1 -0
- package/lib/typescript/module/diagnostics/redact.d.ts +70 -0
- package/lib/typescript/module/diagnostics/redact.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +30 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/migration/executor.d.ts +40 -0
- package/lib/typescript/module/migration/executor.d.ts.map +1 -0
- package/lib/typescript/module/migration/ledger.d.ts +34 -0
- package/lib/typescript/module/migration/ledger.d.ts.map +1 -0
- package/lib/typescript/module/migration/validate-chain.d.ts +20 -0
- package/lib/typescript/module/migration/validate-chain.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/platform/backup-android-verify.d.ts +30 -0
- package/lib/typescript/module/platform/backup-android-verify.d.ts.map +1 -0
- package/lib/typescript/module/platform/backup-ios.d.ts +26 -0
- package/lib/typescript/module/platform/backup-ios.d.ts.map +1 -0
- package/lib/typescript/module/platform/bytes.d.ts +36 -0
- package/lib/typescript/module/platform/bytes.d.ts.map +1 -0
- package/lib/typescript/module/platform/fs.d.ts +47 -0
- package/lib/typescript/module/platform/fs.d.ts.map +1 -0
- package/lib/typescript/module/platform/location.d.ts +53 -0
- package/lib/typescript/module/platform/location.d.ts.map +1 -0
- package/lib/typescript/module/query/budgets.d.ts +23 -0
- package/lib/typescript/module/query/budgets.d.ts.map +1 -0
- package/lib/typescript/module/query/compare.d.ts +42 -0
- package/lib/typescript/module/query/compare.d.ts.map +1 -0
- package/lib/typescript/module/query/cursor.d.ts +27 -0
- package/lib/typescript/module/query/cursor.d.ts.map +1 -0
- package/lib/typescript/module/query/filter.d.ts +11 -0
- package/lib/typescript/module/query/filter.d.ts.map +1 -0
- package/lib/typescript/module/query/paginate.d.ts +15 -0
- package/lib/typescript/module/query/paginate.d.ts.map +1 -0
- package/lib/typescript/module/query/sort.d.ts +19 -0
- package/lib/typescript/module/query/sort.d.ts.map +1 -0
- package/lib/typescript/module/query/validate.d.ts +15 -0
- package/lib/typescript/module/query/validate.d.ts.map +1 -0
- package/lib/typescript/module/schema/declare.d.ts +20 -0
- package/lib/typescript/module/schema/declare.d.ts.map +1 -0
- package/lib/typescript/module/schema/validate-config.d.ts +11 -0
- package/lib/typescript/module/schema/validate-config.d.ts.map +1 -0
- package/lib/typescript/module/scope/hash.d.ts +24 -0
- package/lib/typescript/module/scope/hash.d.ts.map +1 -0
- package/lib/typescript/module/scope/normalize.d.ts +46 -0
- package/lib/typescript/module/scope/normalize.d.ts.map +1 -0
- package/lib/typescript/module/scope/validate.d.ts +15 -0
- package/lib/typescript/module/scope/validate.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/adapter.d.ts +16 -0
- package/lib/typescript/module/sqlite/adapter.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/batch.d.ts +25 -0
- package/lib/typescript/module/sqlite/batch.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/catalog.d.ts +34 -0
- package/lib/typescript/module/sqlite/catalog.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/connection.d.ts +58 -0
- package/lib/typescript/module/sqlite/connection.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/index-coverage.d.ts +18 -0
- package/lib/typescript/module/sqlite/index-coverage.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/native.d.ts +48 -0
- package/lib/typescript/module/sqlite/native.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/row-codec.d.ts +69 -0
- package/lib/typescript/module/sqlite/row-codec.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/sql-builder.d.ts +34 -0
- package/lib/typescript/module/sqlite/sql-builder.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/statements.d.ts +26 -0
- package/lib/typescript/module/sqlite/statements.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/transaction-queue.d.ts +31 -0
- package/lib/typescript/module/sqlite/transaction-queue.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/transactions.d.ts +26 -0
- package/lib/typescript/module/sqlite/transactions.d.ts.map +1 -0
- package/lib/typescript/module/sqlite/values.d.ts +13 -0
- package/lib/typescript/module/sqlite/values.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/attachments.d.ts +4 -0
- package/lib/typescript/module/testing/conformance/attachments.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/encryption.d.ts +4 -0
- package/lib/typescript/module/testing/conformance/encryption.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/index.d.ts +58 -0
- package/lib/typescript/module/testing/conformance/index.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/lifecycle.d.ts +4 -0
- package/lib/typescript/module/testing/conformance/lifecycle.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/migrations.d.ts +4 -0
- package/lib/typescript/module/testing/conformance/migrations.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/queries.d.ts +4 -0
- package/lib/typescript/module/testing/conformance/queries.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/records.d.ts +4 -0
- package/lib/typescript/module/testing/conformance/records.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/scopes.d.ts +4 -0
- package/lib/typescript/module/testing/conformance/scopes.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance/transactions.d.ts +4 -0
- package/lib/typescript/module/testing/conformance/transactions.d.ts.map +1 -0
- package/lib/typescript/module/testing/faults.d.ts +13 -0
- package/lib/typescript/module/testing/faults.d.ts.map +1 -0
- package/lib/typescript/module/testing/index.d.ts +13 -0
- package/lib/typescript/module/testing/index.d.ts.map +1 -0
- package/lib/typescript/module/testing/memory-adapter/attachments.d.ts +23 -0
- package/lib/typescript/module/testing/memory-adapter/attachments.d.ts.map +1 -0
- package/lib/typescript/module/testing/memory-adapter/collection.d.ts +19 -0
- package/lib/typescript/module/testing/memory-adapter/collection.d.ts.map +1 -0
- package/lib/typescript/module/testing/memory-adapter/index.d.ts +22 -0
- package/lib/typescript/module/testing/memory-adapter/index.d.ts.map +1 -0
- package/lib/typescript/module/testing/memory-adapter/migrations.d.ts +11 -0
- package/lib/typescript/module/testing/memory-adapter/migrations.d.ts.map +1 -0
- package/lib/typescript/module/testing/memory-adapter/reset.d.ts +23 -0
- package/lib/typescript/module/testing/memory-adapter/reset.d.ts.map +1 -0
- package/lib/typescript/module/testing/memory-adapter/store.d.ts +54 -0
- package/lib/typescript/module/testing/memory-adapter/store.d.ts.map +1 -0
- package/package.json +51 -16
- package/src/crypto/provider.ts +7 -3
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mapNativeError = mapNativeError;
|
|
7
|
+
exports.raiseNative = raiseNative;
|
|
8
|
+
var _errors = require("../contract/errors.js");
|
|
9
|
+
var _errors2 = require("./errors.js");
|
|
10
|
+
/**
|
|
11
|
+
* Native error to diagnostic code.
|
|
12
|
+
*
|
|
13
|
+
* The three failures FR-076 insists stay apart — a full disk, a filesystem
|
|
14
|
+
* the app cannot reach, and a corrupt database — arrive from SQLite and from
|
|
15
|
+
* the filesystem peer as ordinary errors with a string on them. Collapsing
|
|
16
|
+
* them into one write failure would be the easy thing and the wrong one: an
|
|
17
|
+
* app frees space for the first, retries after unlock for the second, and has
|
|
18
|
+
* to offer a reset for the third.
|
|
19
|
+
*
|
|
20
|
+
* Only the code is derived here. The message never travels — it is redacted
|
|
21
|
+
* at construction by `StorageError` (FR-079).
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
function textOf(error) {
|
|
25
|
+
if (error instanceof Error) {
|
|
26
|
+
return `${error.message} ${error.code ?? ''}`;
|
|
27
|
+
}
|
|
28
|
+
if (typeof error === 'string') {
|
|
29
|
+
return error;
|
|
30
|
+
}
|
|
31
|
+
return '';
|
|
32
|
+
}
|
|
33
|
+
const DISK_FULL = /SQLITE_FULL|database or disk is full|ENOSPC|no space left/i;
|
|
34
|
+
const NOT_A_DATABASE = /SQLITE_NOTADB|file is not a database|encrypted or is not a database/i;
|
|
35
|
+
const CORRUPT = /SQLITE_CORRUPT|database disk image is malformed|malformed database/i;
|
|
36
|
+
const CONFLICT = /UNIQUE constraint failed|PRIMARY KEY must be unique|SQLITE_CONSTRAINT_PRIMARYKEY/i;
|
|
37
|
+
const ACCESS = /SQLITE_CANTOPEN|SQLITE_READONLY|SQLITE_PERM|SQLITE_AUTH|EACCES|EPERM|EROFS|ENOENT|EISDIR/i;
|
|
38
|
+
const BUSY = /SQLITE_BUSY|SQLITE_LOCKED|database is locked/i;
|
|
39
|
+
function mapNativeError(error, context) {
|
|
40
|
+
const text = textOf(error);
|
|
41
|
+
if (DISK_FULL.test(text)) {
|
|
42
|
+
return _errors.DiagnosticCodes.DISK_FULL;
|
|
43
|
+
}
|
|
44
|
+
if (NOT_A_DATABASE.test(text)) {
|
|
45
|
+
// A wrong key and a corrupt file are indistinguishable from the engine's
|
|
46
|
+
// answer alone. Reporting corruption for a wrong key would push an app
|
|
47
|
+
// towards destroying recoverable data, so the encrypted case wins.
|
|
48
|
+
return context.encrypted ? _errors.DiagnosticCodes.KEY_INVALID : _errors.DiagnosticCodes.CORRUPTION;
|
|
49
|
+
}
|
|
50
|
+
if (CORRUPT.test(text)) {
|
|
51
|
+
return _errors.DiagnosticCodes.CORRUPTION;
|
|
52
|
+
}
|
|
53
|
+
if (CONFLICT.test(text)) {
|
|
54
|
+
return _errors.DiagnosticCodes.RECORD_CONFLICT;
|
|
55
|
+
}
|
|
56
|
+
if (ACCESS.test(text)) {
|
|
57
|
+
return _errors.DiagnosticCodes.STORAGE_ACCESS;
|
|
58
|
+
}
|
|
59
|
+
if (BUSY.test(text)) {
|
|
60
|
+
// Retryable, and distinct from a permanent write failure.
|
|
61
|
+
return context.operation === 'transaction' ? _errors.DiagnosticCodes.TRANSACTION_FAILED : _errors.DiagnosticCodes.WRITE_FAILED;
|
|
62
|
+
}
|
|
63
|
+
switch (context.operation) {
|
|
64
|
+
case 'open':
|
|
65
|
+
return _errors.DiagnosticCodes.OPEN_FAILED;
|
|
66
|
+
case 'read':
|
|
67
|
+
return _errors.DiagnosticCodes.STORAGE_ACCESS;
|
|
68
|
+
case 'transaction':
|
|
69
|
+
return _errors.DiagnosticCodes.TRANSACTION_FAILED;
|
|
70
|
+
case 'attachment':
|
|
71
|
+
return _errors.DiagnosticCodes.ATTACHMENT_WRITE_FAILED;
|
|
72
|
+
case 'delete':
|
|
73
|
+
case 'write':
|
|
74
|
+
default:
|
|
75
|
+
return _errors.DiagnosticCodes.WRITE_FAILED;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Re-raise a native failure as a typed one, preserving an error the package
|
|
81
|
+
* already classified rather than reclassifying it as a generic write failure.
|
|
82
|
+
*/
|
|
83
|
+
function raiseNative(error, context) {
|
|
84
|
+
if ((0, _errors2.isStorageError)(error)) {
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
(0, _errors2.raise)(mapNativeError(error, context), {
|
|
88
|
+
// The native message is deliberately not the error's message. It goes
|
|
89
|
+
// through `cause`, which redacts it — passing it here as well would be
|
|
90
|
+
// two chances to leak the same string for no extra information.
|
|
91
|
+
message: `native ${context.operation} failed`,
|
|
92
|
+
detail: {
|
|
93
|
+
operation: context.operation
|
|
94
|
+
},
|
|
95
|
+
cause: error
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=map-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","_errors2","textOf","error","Error","message","code","DISK_FULL","NOT_A_DATABASE","CORRUPT","CONFLICT","ACCESS","BUSY","mapNativeError","context","text","test","DiagnosticCodes","encrypted","KEY_INVALID","CORRUPTION","RECORD_CONFLICT","STORAGE_ACCESS","operation","TRANSACTION_FAILED","WRITE_FAILED","OPEN_FAILED","ATTACHMENT_WRITE_FAILED","raiseNative","isStorageError","raise","detail","cause"],"sourceRoot":"../../../src","sources":["diagnostics/map-native.ts"],"mappings":";;;;;;;AAcA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgBA,SAASE,MAAMA,CAACC,KAAc,EAAU;EACvC,IAAIA,KAAK,YAAYC,KAAK,EAAE;IAC3B,OAAO,GAAGD,KAAK,CAACE,OAAO,IAAKF,KAAK,CAAuBG,IAAI,IAAI,EAAE,EAAE;EACrE;EACA,IAAI,OAAOH,KAAK,KAAK,QAAQ,EAAE;IAC9B,OAAOA,KAAK;EACb;EACA,OAAO,EAAE;AACV;AAEA,MAAMI,SAAS,GAAG,4DAA4D;AAC9E,MAAMC,cAAc,GAAG,sEAAsE;AAC7F,MAAMC,OAAO,GAAG,qEAAqE;AACrF,MAAMC,QAAQ,GACb,mFAAmF;AACpF,MAAMC,MAAM,GACX,2FAA2F;AAC5F,MAAMC,IAAI,GAAG,+CAA+C;AAErD,SAASC,cAAcA,CAACV,KAAc,EAAEW,OAAsB,EAAkB;EACtF,MAAMC,IAAI,GAAGb,MAAM,CAACC,KAAK,CAAC;EAE1B,IAAII,SAAS,CAACS,IAAI,CAACD,IAAI,CAAC,EAAE;IACzB,OAAOE,uBAAe,CAACV,SAAS;EACjC;EACA,IAAIC,cAAc,CAACQ,IAAI,CAACD,IAAI,CAAC,EAAE;IAC9B;IACA;IACA;IACA,OAAOD,OAAO,CAACI,SAAS,GAAGD,uBAAe,CAACE,WAAW,GAAGF,uBAAe,CAACG,UAAU;EACpF;EACA,IAAIX,OAAO,CAACO,IAAI,CAACD,IAAI,CAAC,EAAE;IACvB,OAAOE,uBAAe,CAACG,UAAU;EAClC;EACA,IAAIV,QAAQ,CAACM,IAAI,CAACD,IAAI,CAAC,EAAE;IACxB,OAAOE,uBAAe,CAACI,eAAe;EACvC;EACA,IAAIV,MAAM,CAACK,IAAI,CAACD,IAAI,CAAC,EAAE;IACtB,OAAOE,uBAAe,CAACK,cAAc;EACtC;EACA,IAAIV,IAAI,CAACI,IAAI,CAACD,IAAI,CAAC,EAAE;IACpB;IACA,OAAOD,OAAO,CAACS,SAAS,KAAK,aAAa,GACvCN,uBAAe,CAACO,kBAAkB,GAClCP,uBAAe,CAACQ,YAAY;EAChC;EAEA,QAAQX,OAAO,CAACS,SAAS;IACxB,KAAK,MAAM;MACV,OAAON,uBAAe,CAACS,WAAW;IACnC,KAAK,MAAM;MACV,OAAOT,uBAAe,CAACK,cAAc;IACtC,KAAK,aAAa;MACjB,OAAOL,uBAAe,CAACO,kBAAkB;IAC1C,KAAK,YAAY;MAChB,OAAOP,uBAAe,CAACU,uBAAuB;IAC/C,KAAK,QAAQ;IACb,KAAK,OAAO;IACZ;MACC,OAAOV,uBAAe,CAACQ,YAAY;EACrC;AACD;;AAEA;AACA;AACA;AACA;AACO,SAASG,WAAWA,CAACzB,KAAc,EAAEW,OAAsB,EAAS;EAC1E,IAAI,IAAAe,uBAAc,EAAC1B,KAAK,CAAC,EAAE;IAC1B,MAAMA,KAAK;EACZ;EACA,IAAA2B,cAAK,EAACjB,cAAc,CAACV,KAAK,EAAEW,OAAO,CAAC,EAAE;IACrC;IACA;IACA;IACAT,OAAO,EAAE,UAAUS,OAAO,CAACS,SAAS,SAAS;IAC7CQ,MAAM,EAAE;MAAER,SAAS,EAAET,OAAO,CAACS;IAAU,CAAC;IACxCS,KAAK,EAAE7B;EACR,CAAC,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SAFE_DETAIL_KEYS = void 0;
|
|
7
|
+
exports.redactCause = redactCause;
|
|
8
|
+
exports.redactDetail = redactDetail;
|
|
9
|
+
exports.redactForeignText = redactForeignText;
|
|
10
|
+
exports.sanitizeAuthoredMessage = sanitizeAuthoredMessage;
|
|
11
|
+
exports.sanitizeIdentifier = sanitizeIdentifier;
|
|
12
|
+
var _rnCore = require("@chipmobilesdk/rn-core");
|
|
13
|
+
/**
|
|
14
|
+
* Redaction, applied at construction rather than at logging time.
|
|
15
|
+
*
|
|
16
|
+
* The distinction matters: an error object that never held a payload cannot
|
|
17
|
+
* leak one through a consumer's crash reporter, which is where these leaks
|
|
18
|
+
* actually happen in practice. Redacting on the way out of a logger would
|
|
19
|
+
* still leave the values sitting on the object for anything else to pick up
|
|
20
|
+
* (FR-079, FR-099).
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The allowlist IS the mechanism. Every key here has been reviewed as
|
|
25
|
+
* incapable of carrying user data: identifiers the app already knows, sizes,
|
|
26
|
+
* counts, and version numbers.
|
|
27
|
+
*
|
|
28
|
+
* A denylist was tried and removed. It rejected `recordId` because the name
|
|
29
|
+
* contains "record", which is the failure mode denylists always have — they
|
|
30
|
+
* guess from names. A closed allowlist cannot guess, and adding to it is a
|
|
31
|
+
* deliberate act with a reviewer attached.
|
|
32
|
+
*/
|
|
33
|
+
const SAFE_DETAIL_KEYS = exports.SAFE_DETAIL_KEYS = new Set(['code', 'collection', 'recordId', 'attachmentId', 'scopeKey', 'version', 'recordedVersion', 'failingVersion', 'outcome', 'operation', 'adapter', 'platform', 'sizeBytes', 'limitBytes', 'count', 'limit']);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Reduce foreign text to an identifier, or to nothing.
|
|
37
|
+
*
|
|
38
|
+
* "Foreign" means text this package did not author: a SQLite message, a
|
|
39
|
+
* filesystem error, an `Error` a consumer's own migration threw. Any of them
|
|
40
|
+
* can contain anything — SQLite quotes bound parameters back, and a migration
|
|
41
|
+
* that fails on a constraint routinely names the value that violated it.
|
|
42
|
+
*
|
|
43
|
+
* An earlier version of this tried to keep the readable part: the text before
|
|
44
|
+
* the first colon, if it "looked like a class of failure". That heuristic
|
|
45
|
+
* fails on the case that matters. `Patient reported chest pain` looks exactly
|
|
46
|
+
* like a class of failure — short, no punctuation, no digits — and is a
|
|
47
|
+
* medical record. There is no shape test that separates prose describing a
|
|
48
|
+
* failure from prose describing a person, so there is no version of the
|
|
49
|
+
* heuristic worth keeping.
|
|
50
|
+
*
|
|
51
|
+
* What survives is a leading `SQLITE_*` / `ENOENT`-style identifier, which is
|
|
52
|
+
* a closed vocabulary of engine and libc constants and cannot be a value.
|
|
53
|
+
* Everything else becomes `[redacted]`. A developer who needs more can
|
|
54
|
+
* reproduce with the development logger; a crash report cannot.
|
|
55
|
+
*/
|
|
56
|
+
function redactForeignText(text) {
|
|
57
|
+
return (0, _rnCore.leadingIdentifier)(text);
|
|
58
|
+
}
|
|
59
|
+
const MAX_AUTHORED_MESSAGE = 160;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* A message this package wrote itself.
|
|
63
|
+
*
|
|
64
|
+
* Every `raise()` call site passes a string literal, and the handful that
|
|
65
|
+
* interpolate do so with a value from a closed set — an operator name, a
|
|
66
|
+
* fault point, a sanitized identifier. `authored-messages.test.ts` enforces
|
|
67
|
+
* that mechanically against the source, so this is a checked property rather
|
|
68
|
+
* than a convention someone has to remember.
|
|
69
|
+
*
|
|
70
|
+
* So no filtering happens here: filtering a message the package wrote would
|
|
71
|
+
* destroy the only readable part of the error for no gain. Foreign text never
|
|
72
|
+
* reaches this function — it goes through `redactForeignText` above.
|
|
73
|
+
*/
|
|
74
|
+
function sanitizeAuthoredMessage(message) {
|
|
75
|
+
return message.split('\n')[0].trim().slice(0, MAX_AUTHORED_MESSAGE);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Reduce a consumer-supplied identifier to a bounded, punctuation-free token.
|
|
80
|
+
*
|
|
81
|
+
* A field name is worth naming — FR-034 exists so a typo is distinguishable
|
|
82
|
+
* from a deliberate choice, and "which field?" is the whole answer. But the
|
|
83
|
+
* name arrives from the consumer, so it is capped and stripped rather than
|
|
84
|
+
* trusted verbatim.
|
|
85
|
+
*/
|
|
86
|
+
function sanitizeIdentifier(identifier) {
|
|
87
|
+
const cleaned = identifier.replace(/\W/g, '').slice(0, 64);
|
|
88
|
+
return cleaned.length > 0 ? cleaned : _rnCore.REDACTED;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Keep only keys on the allowlist, and only primitive values. */
|
|
92
|
+
function redactDetail(detail) {
|
|
93
|
+
const safe = (0, _rnCore.pickAllowed)(detail, SAFE_DETAIL_KEYS);
|
|
94
|
+
return safe && Object.keys(safe).length > 0 ? safe : undefined;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Reduce an unknown thrown value to a message-shaped string, redacted. */
|
|
98
|
+
function redactCause(cause) {
|
|
99
|
+
if (cause === undefined || cause === null) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
if (cause instanceof Error) {
|
|
103
|
+
return redactForeignText(cause.message);
|
|
104
|
+
}
|
|
105
|
+
if (typeof cause === 'string') {
|
|
106
|
+
return redactForeignText(cause);
|
|
107
|
+
}
|
|
108
|
+
return _rnCore.REDACTED;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_rnCore","require","SAFE_DETAIL_KEYS","exports","Set","redactForeignText","text","leadingIdentifier","MAX_AUTHORED_MESSAGE","sanitizeAuthoredMessage","message","split","trim","slice","sanitizeIdentifier","identifier","cleaned","replace","length","REDACTED","redactDetail","detail","safe","pickAllowed","Object","keys","undefined","redactCause","cause","Error"],"sourceRoot":"../../../src","sources":["diagnostics/redact.ts"],"mappings":";;;;;;;;;;;AAUA,IAAAA,OAAA,GAAAC,OAAA;AAVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,IAAIE,GAAG,CAAC,CACvC,MAAM,EACN,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,OAAO,EACP,OAAO,CACP,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAACC,IAAY,EAAU;EACvD,OAAO,IAAAC,yBAAiB,EAACD,IAAI,CAAC;AAC/B;AAEA,MAAME,oBAAoB,GAAG,GAAG;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,uBAAuBA,CAACC,OAAe,EAAU;EAChE,OAAOA,OAAO,CAACC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAEC,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC,EAAEL,oBAAoB,CAAC;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,kBAAkBA,CAACC,UAAkB,EAAU;EAC9D,MAAMC,OAAO,GAAGD,UAAU,CAACE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACJ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;EAC1D,OAAOG,OAAO,CAACE,MAAM,GAAG,CAAC,GAAGF,OAAO,GAAGG,gBAAQ;AAC/C;;AAEA;AACO,SAASC,YAAYA,CAC3BC,MAA2C,EACa;EACxD,MAAMC,IAAI,GAAG,IAAAC,mBAAW,EAACF,MAAM,EAAEnB,gBAAgB,CAAC;EAClD,OAAOoB,IAAI,IAAIE,MAAM,CAACC,IAAI,CAACH,IAAI,CAAC,CAACJ,MAAM,GAAG,CAAC,GAAGI,IAAI,GAAGI,SAAS;AAC/D;;AAEA;AACO,SAASC,WAAWA,CAACC,KAAc,EAAsB;EAC/D,IAAIA,KAAK,KAAKF,SAAS,IAAIE,KAAK,KAAK,IAAI,EAAE;IAC1C,OAAOF,SAAS;EACjB;EACA,IAAIE,KAAK,YAAYC,KAAK,EAAE;IAC3B,OAAOxB,iBAAiB,CAACuB,KAAK,CAAClB,OAAO,CAAC;EACxC;EACA,IAAI,OAAOkB,KAAK,KAAK,QAAQ,EAAE;IAC9B,OAAOvB,iBAAiB,CAACuB,KAAK,CAAC;EAChC;EACA,OAAOT,gBAAQ;AAChB","ignoreList":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Budgets", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _config.Budgets;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "DiagnosticCodes", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _errors.DiagnosticCodes;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "StorageError", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _errors.StorageError;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "deleteDatabase", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _index.deleteDatabase;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "deleteScopeData", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _index.deleteScopeData;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "isCode", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _errors.isCode;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "isStorageError", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _errors.isStorageError;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "openDatabase", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _index.openDatabase;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "resetScope", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _index.resetScope;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "setDiagnosticLogger", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _devLog.setDiagnosticLogger;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
var _index = require("./adapter/index.js");
|
|
67
|
+
var _errors = require("./diagnostics/errors.js");
|
|
68
|
+
var _devLog = require("./diagnostics/dev-log.js");
|
|
69
|
+
var _config = require("./contract/config.js");
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_index","require","_errors","_devLog","_config"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.runMigrations = runMigrations;
|
|
7
|
+
var _errors = require("../contract/errors.js");
|
|
8
|
+
var _errors2 = require("../diagnostics/errors.js");
|
|
9
|
+
var _faults = require("../diagnostics/faults.js");
|
|
10
|
+
var _collection = require("../adapter/collection.js");
|
|
11
|
+
var _ledger = require("./ledger.js");
|
|
12
|
+
var _validateChain = require("./validate-chain.js");
|
|
13
|
+
/**
|
|
14
|
+
* The migration executor.
|
|
15
|
+
*
|
|
16
|
+
* Four rules, each of which exists because the alternative loses data:
|
|
17
|
+
*
|
|
18
|
+
* - **Ascending, and pending only.** A migration whose version is at or below
|
|
19
|
+
* the recorded one has already run against this scope (FR-047, FR-049).
|
|
20
|
+
* - **One transaction per migration.** A failure unwinds that migration and
|
|
21
|
+
* nothing else, so the recorded version and the data always agree.
|
|
22
|
+
* - **The recorded version moves only on success**, inside the same
|
|
23
|
+
* transaction as the migration's own writes. Writing it separately would
|
|
24
|
+
* leave a window where a crash records a migration that did not happen.
|
|
25
|
+
* - **A failure returns no handle** (FR-050). Half-migrated data behind a
|
|
26
|
+
* working handle is the failure this whole design exists to prevent, and it
|
|
27
|
+
* is worse than being unable to open at all: the app writes to it.
|
|
28
|
+
*
|
|
29
|
+
* A retry starts from the same version rather than skipping ahead (FR-051),
|
|
30
|
+
* which is what makes a transient failure — a locked keychain, a full disk
|
|
31
|
+
* mid-migration — recoverable on the next launch instead of permanent.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
function migrationContextFor(context, executor) {
|
|
35
|
+
return {
|
|
36
|
+
collection(name) {
|
|
37
|
+
return (0, _collection.createSqlCollection)({
|
|
38
|
+
executor: () => executor,
|
|
39
|
+
schema: context.schemaFor(name),
|
|
40
|
+
now: context.now,
|
|
41
|
+
// Inside a migration the handle does not exist yet, so there is
|
|
42
|
+
// no closed-handle or deleted-scope state to guard against.
|
|
43
|
+
assertUsable: () => {}
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
async abort() {
|
|
47
|
+
// A migration that wants to give up should throw; aborting the
|
|
48
|
+
// transaction from inside while the executor still believes it is
|
|
49
|
+
// running would record an outcome that never happened.
|
|
50
|
+
(0, _errors2.raise)(_errors.DiagnosticCodes.TRANSACTION_STATE, {
|
|
51
|
+
message: 'a migration cannot abort its own transaction'
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
async execute(sql, params) {
|
|
55
|
+
await executor.execute(sql, params);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async function runMigrations(context) {
|
|
60
|
+
const {
|
|
61
|
+
config,
|
|
62
|
+
connection
|
|
63
|
+
} = context;
|
|
64
|
+
(0, _validateChain.validateMigrationChain)(config);
|
|
65
|
+
// Skipped when the open already found its bookkeeping tables in place.
|
|
66
|
+
if (context.ledgerReady !== true) {
|
|
67
|
+
await (0, _ledger.ensureLedger)(connection);
|
|
68
|
+
}
|
|
69
|
+
const {
|
|
70
|
+
schema: recorded,
|
|
71
|
+
format
|
|
72
|
+
} = await (0, _ledger.readVersions)(connection);
|
|
73
|
+
if (format > _ledger.FORMAT_VERSION) {
|
|
74
|
+
// A file laid out by a newer release of this package. Reading it with
|
|
75
|
+
// older code is the same hazard as a schema downgrade, one layer down.
|
|
76
|
+
await context.closeOnFailure();
|
|
77
|
+
(0, _errors2.raise)(_errors.DiagnosticCodes.SCHEMA_DOWNGRADE, {
|
|
78
|
+
message: 'database was written by a newer version of this package',
|
|
79
|
+
detail: {
|
|
80
|
+
recordedVersion: format,
|
|
81
|
+
version: _ledger.FORMAT_VERSION
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (recorded > config.schemaVersion) {
|
|
86
|
+
// Opening anyway would mean newer data read by older code, which drops
|
|
87
|
+
// whatever the newer schema added — silently, and on write (FR-052).
|
|
88
|
+
await context.closeOnFailure();
|
|
89
|
+
(0, _errors2.raise)(_errors.DiagnosticCodes.SCHEMA_DOWNGRADE, {
|
|
90
|
+
message: 'recorded schema version is newer than the declared one',
|
|
91
|
+
detail: {
|
|
92
|
+
recordedVersion: recorded,
|
|
93
|
+
version: config.schemaVersion
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
let current = recorded;
|
|
98
|
+
for (const migration of (0, _validateChain.pendingMigrations)(config, recorded)) {
|
|
99
|
+
try {
|
|
100
|
+
await connection.transaction(async tx => {
|
|
101
|
+
(0, _faults.throwIfFaulted)('migration');
|
|
102
|
+
await migration.migrate(migrationContextFor(context, tx));
|
|
103
|
+
await (0, _ledger.writeSchemaVersion)(tx, migration.version);
|
|
104
|
+
await (0, _ledger.recordAttempt)(tx, {
|
|
105
|
+
version: migration.version,
|
|
106
|
+
attemptedAt: context.now(),
|
|
107
|
+
outcome: 'applied'
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
current = migration.version;
|
|
111
|
+
} catch (error) {
|
|
112
|
+
// Recorded outside the rolled-back transaction, or it would vanish
|
|
113
|
+
// with the migration it describes.
|
|
114
|
+
await (0, _ledger.recordAttempt)(connection, {
|
|
115
|
+
version: migration.version,
|
|
116
|
+
attemptedAt: context.now(),
|
|
117
|
+
outcome: 'failed',
|
|
118
|
+
failureCode: error.code ?? _errors.DiagnosticCodes.MIGRATION_FAILED
|
|
119
|
+
});
|
|
120
|
+
await context.closeOnFailure();
|
|
121
|
+
(0, _errors2.raise)(_errors.DiagnosticCodes.MIGRATION_FAILED, {
|
|
122
|
+
message: 'migration failed',
|
|
123
|
+
migration: {
|
|
124
|
+
// Unchanged: the next open retries from here rather than
|
|
125
|
+
// skipping the migration that failed.
|
|
126
|
+
recordedVersion: current,
|
|
127
|
+
failingVersion: migration.version,
|
|
128
|
+
outcome: 'failed'
|
|
129
|
+
},
|
|
130
|
+
cause: error
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return current;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","_errors2","_faults","_collection","_ledger","_validateChain","migrationContextFor","context","executor","collection","name","createSqlCollection","schema","schemaFor","now","assertUsable","abort","raise","DiagnosticCodes","TRANSACTION_STATE","message","execute","sql","params","runMigrations","config","connection","validateMigrationChain","ledgerReady","ensureLedger","recorded","format","readVersions","FORMAT_VERSION","closeOnFailure","SCHEMA_DOWNGRADE","detail","recordedVersion","version","schemaVersion","current","migration","pendingMigrations","transaction","tx","throwIfFaulted","migrate","writeSchemaVersion","recordAttempt","attemptedAt","outcome","error","failureCode","code","MIGRATION_FAILED","failingVersion","cause"],"sourceRoot":"../../../src","sources":["migration/executor.ts"],"mappings":";;;;;;AAsBA,IAAAA,OAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AAOA,IAAAK,cAAA,GAAAL,OAAA;AAtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAqCA,SAASM,mBAAmBA,CAACC,OAA4B,EAAEC,QAAkB,EAAoB;EAChG,OAAO;IACNC,UAAUA,CAA+BC,IAAY,EAAoB;MACxE,OAAO,IAAAC,+BAAmB,EAAI;QAC7BH,QAAQ,EAAEA,CAAA,KAAMA,QAAQ;QACxBI,MAAM,EAAEL,OAAO,CAACM,SAAS,CAACH,IAAI,CAAC;QAC/BI,GAAG,EAAEP,OAAO,CAACO,GAAG;QAChB;QACA;QACAC,YAAY,EAAEA,CAAA,KAAM,CAAC;MACtB,CAAC,CAAC;IACH,CAAC;IACD,MAAMC,KAAKA,CAAA,EAAkB;MAC5B;MACA;MACA;MACA,IAAAC,cAAK,EAACC,uBAAe,CAACC,iBAAiB,EAAE;QACxCC,OAAO,EAAE;MACV,CAAC,CAAC;IACH,CAAC;IACD,MAAMC,OAAOA,CAACC,GAAW,EAAEC,MAAuB,EAAiB;MAClE,MAAMf,QAAQ,CAACa,OAAO,CAACC,GAAG,EAAEC,MAAM,CAAC;IACpC;EACD,CAAC;AACF;AAEO,eAAeC,aAAaA,CAACjB,OAA4B,EAAmB;EAClF,MAAM;IAAEkB,MAAM;IAAEC;EAAW,CAAC,GAAGnB,OAAO;EACtC,IAAAoB,qCAAsB,EAACF,MAAM,CAAC;EAC9B;EACA,IAAIlB,OAAO,CAACqB,WAAW,KAAK,IAAI,EAAE;IACjC,MAAM,IAAAC,oBAAY,EAACH,UAAU,CAAC;EAC/B;EAEA,MAAM;IAAEd,MAAM,EAAEkB,QAAQ;IAAEC;EAAO,CAAC,GAAG,MAAM,IAAAC,oBAAY,EAACN,UAAU,CAAC;EAEnE,IAAIK,MAAM,GAAGE,sBAAc,EAAE;IAC5B;IACA;IACA,MAAM1B,OAAO,CAAC2B,cAAc,CAAC,CAAC;IAC9B,IAAAjB,cAAK,EAACC,uBAAe,CAACiB,gBAAgB,EAAE;MACvCf,OAAO,EAAE,yDAAyD;MAClEgB,MAAM,EAAE;QAAEC,eAAe,EAAEN,MAAM;QAAEO,OAAO,EAAEL;MAAe;IAC5D,CAAC,CAAC;EACH;EAEA,IAAIH,QAAQ,GAAGL,MAAM,CAACc,aAAa,EAAE;IACpC;IACA;IACA,MAAMhC,OAAO,CAAC2B,cAAc,CAAC,CAAC;IAC9B,IAAAjB,cAAK,EAACC,uBAAe,CAACiB,gBAAgB,EAAE;MACvCf,OAAO,EAAE,wDAAwD;MACjEgB,MAAM,EAAE;QAAEC,eAAe,EAAEP,QAAQ;QAAEQ,OAAO,EAAEb,MAAM,CAACc;MAAc;IACpE,CAAC,CAAC;EACH;EAEA,IAAIC,OAAO,GAAGV,QAAQ;EAEtB,KAAK,MAAMW,SAAS,IAAI,IAAAC,gCAAiB,EAACjB,MAAM,EAAEK,QAAQ,CAAC,EAAE;IAC5D,IAAI;MACH,MAAMJ,UAAU,CAACiB,WAAW,CAAC,MAAMC,EAAE,IAAI;QACxC,IAAAC,sBAAc,EAAC,WAAW,CAAC;QAC3B,MAAMJ,SAAS,CAACK,OAAO,CAACxC,mBAAmB,CAACC,OAAO,EAAEqC,EAAE,CAAC,CAAC;QACzD,MAAM,IAAAG,0BAAkB,EAACH,EAAE,EAAEH,SAAS,CAACH,OAAO,CAAC;QAC/C,MAAM,IAAAU,qBAAa,EAACJ,EAAE,EAAE;UACvBN,OAAO,EAAEG,SAAS,CAACH,OAAO;UAC1BW,WAAW,EAAE1C,OAAO,CAACO,GAAG,CAAC,CAAC;UAC1BoC,OAAO,EAAE;QACV,CAAC,CAAC;MACH,CAAC,CAAC;MACFV,OAAO,GAAGC,SAAS,CAACH,OAAO;IAC5B,CAAC,CAAC,OAAOa,KAAK,EAAE;MACf;MACA;MACA,MAAM,IAAAH,qBAAa,EAACtB,UAAU,EAAE;QAC/BY,OAAO,EAAEG,SAAS,CAACH,OAAO;QAC1BW,WAAW,EAAE1C,OAAO,CAACO,GAAG,CAAC,CAAC;QAC1BoC,OAAO,EAAE,QAAQ;QACjBE,WAAW,EAAGD,KAAK,CAAuBE,IAAI,IAAInC,uBAAe,CAACoC;MACnE,CAAC,CAAC;MACF,MAAM/C,OAAO,CAAC2B,cAAc,CAAC,CAAC;MAC9B,IAAAjB,cAAK,EAACC,uBAAe,CAACoC,gBAAgB,EAAE;QACvClC,OAAO,EAAE,kBAAkB;QAC3BqB,SAAS,EAAE;UACV;UACA;UACAJ,eAAe,EAAEG,OAAO;UACxBe,cAAc,EAAEd,SAAS,CAACH,OAAO;UACjCY,OAAO,EAAE;QACV,CAAC;QACDM,KAAK,EAAEL;MACR,CAAC,CAAC;IACH;EACD;EAEA,OAAOX,OAAO;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FORMAT_VERSION = void 0;
|
|
7
|
+
exports.ensureLedger = ensureLedger;
|
|
8
|
+
exports.readVersions = readVersions;
|
|
9
|
+
exports.recordAttempt = recordAttempt;
|
|
10
|
+
exports.writeSchemaVersion = writeSchemaVersion;
|
|
11
|
+
var _values = require("../sqlite/values.js");
|
|
12
|
+
/**
|
|
13
|
+
* The per-scope migration ledger.
|
|
14
|
+
*
|
|
15
|
+
* Per scope, not per database, and that is the whole reason FR-054 works: a
|
|
16
|
+
* scope created after a migration shipped starts at version 0 and is migrated
|
|
17
|
+
* on first open, rather than being assumed current because some other scope
|
|
18
|
+
* already ran the chain.
|
|
19
|
+
*
|
|
20
|
+
* The ledger records a **code**, never a message (FR-079). A migration that
|
|
21
|
+
* failed because a domain constraint was violated could otherwise write the
|
|
22
|
+
* offending value into a table that outlives the failure — a payload leak
|
|
23
|
+
* with a long half-life, sitting in a file the next crash report might carry.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/** Physical layout version, independent of the app's schema version. */
|
|
27
|
+
const FORMAT_VERSION = exports.FORMAT_VERSION = 1;
|
|
28
|
+
const CREATE_META = `CREATE TABLE IF NOT EXISTS _meta (
|
|
29
|
+
key TEXT PRIMARY KEY,
|
|
30
|
+
value TEXT NOT NULL
|
|
31
|
+
)`;
|
|
32
|
+
const CREATE_MIGRATIONS = `CREATE TABLE IF NOT EXISTS _migrations (
|
|
33
|
+
version INTEGER PRIMARY KEY,
|
|
34
|
+
attempted_at INTEGER NOT NULL,
|
|
35
|
+
outcome TEXT NOT NULL,
|
|
36
|
+
failure_code TEXT
|
|
37
|
+
)`;
|
|
38
|
+
async function ensureLedger(executor) {
|
|
39
|
+
await executor.execute(CREATE_META);
|
|
40
|
+
await executor.execute(CREATE_MIGRATIONS);
|
|
41
|
+
await executor.execute('INSERT INTO _meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO NOTHING', ['format_version', String(FORMAT_VERSION)]);
|
|
42
|
+
await executor.execute('INSERT INTO _meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO NOTHING', ['schema_version', '0']);
|
|
43
|
+
}
|
|
44
|
+
/** Both versions in one read: every open asks for them. */
|
|
45
|
+
async function readVersions(executor) {
|
|
46
|
+
const result = await executor.execute("SELECT key, value FROM _meta WHERE key IN ('schema_version', 'format_version')");
|
|
47
|
+
const values = new Map(result.rows.map(row => [(0, _values.text)(row.key), Number((0, _values.text)(row.value))]));
|
|
48
|
+
return {
|
|
49
|
+
schema: values.get('schema_version') ?? 0,
|
|
50
|
+
format: values.get('format_version') ?? FORMAT_VERSION
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async function writeSchemaVersion(executor, version) {
|
|
54
|
+
await executor.execute('INSERT INTO _meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value', ['schema_version', String(version)]);
|
|
55
|
+
}
|
|
56
|
+
async function recordAttempt(executor, entry) {
|
|
57
|
+
await executor.execute(`INSERT INTO _migrations (version, attempted_at, outcome, failure_code)
|
|
58
|
+
VALUES (?, ?, ?, ?)
|
|
59
|
+
ON CONFLICT(version) DO UPDATE SET
|
|
60
|
+
attempted_at = excluded.attempted_at,
|
|
61
|
+
outcome = excluded.outcome,
|
|
62
|
+
failure_code = excluded.failure_code`, [entry.version, entry.attemptedAt, entry.outcome, entry.failureCode ?? null]);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_values","require","FORMAT_VERSION","exports","CREATE_META","CREATE_MIGRATIONS","ensureLedger","executor","execute","String","readVersions","result","values","Map","rows","map","row","text","key","Number","value","schema","get","format","writeSchemaVersion","version","recordAttempt","entry","attemptedAt","outcome","failureCode"],"sourceRoot":"../../../src","sources":["migration/ledger.ts"],"mappings":";;;;;;;;;;AAgBA,IAAAA,OAAA,GAAAC,OAAA;AAhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACO,MAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,CAAC;AAE/B,MAAME,WAAW,GAAG;AACpB;AACA;AACA,EAAE;AAEF,MAAMC,iBAAiB,GAAG;AAC1B;AACA;AACA;AACA;AACA,EAAE;AAEK,eAAeC,YAAYA,CAACC,QAAkB,EAAiB;EACrE,MAAMA,QAAQ,CAACC,OAAO,CAACJ,WAAW,CAAC;EACnC,MAAMG,QAAQ,CAACC,OAAO,CAACH,iBAAiB,CAAC;EACzC,MAAME,QAAQ,CAACC,OAAO,CACrB,0EAA0E,EAC1E,CAAC,gBAAgB,EAAEC,MAAM,CAACP,cAAc,CAAC,CAC1C,CAAC;EACD,MAAMK,QAAQ,CAACC,OAAO,CACrB,0EAA0E,EAC1E,CAAC,gBAAgB,EAAE,GAAG,CACvB,CAAC;AACF;AASA;AACO,eAAeE,YAAYA,CAACH,QAAkB,EAA6B;EACjF,MAAMI,MAAM,GAAG,MAAMJ,QAAQ,CAACC,OAAO,CACpC,gFACD,CAAC;EACD,MAAMI,MAAM,GAAG,IAAIC,GAAG,CAACF,MAAM,CAACG,IAAI,CAACC,GAAG,CAACC,GAAG,IAAI,CAAC,IAAAC,YAAI,EAACD,GAAG,CAACE,GAAG,CAAC,EAAEC,MAAM,CAAC,IAAAF,YAAI,EAACD,GAAG,CAACI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACxF,OAAO;IACNC,MAAM,EAAET,MAAM,CAACU,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACzCC,MAAM,EAAEX,MAAM,CAACU,GAAG,CAAC,gBAAgB,CAAC,IAAIpB;EACzC,CAAC;AACF;AAEO,eAAesB,kBAAkBA,CAACjB,QAAkB,EAAEkB,OAAe,EAAiB;EAC5F,MAAMlB,QAAQ,CAACC,OAAO,CACrB,oGAAoG,EACpG,CAAC,gBAAgB,EAAEC,MAAM,CAACgB,OAAO,CAAC,CACnC,CAAC;AACF;AAEO,eAAeC,aAAaA,CAClCnB,QAAkB,EAClBoB,KAAgG,EAChF;EAChB,MAAMpB,QAAQ,CAACC,OAAO,CACrB;AACF;AACA;AACA;AACA;AACA,0CAA0C,EACxC,CAACmB,KAAK,CAACF,OAAO,EAAEE,KAAK,CAACC,WAAW,EAAED,KAAK,CAACE,OAAO,EAAEF,KAAK,CAACG,WAAW,IAAI,IAAI,CAC5E,CAAC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.orderedMigrations = orderedMigrations;
|
|
7
|
+
exports.pendingMigrations = pendingMigrations;
|
|
8
|
+
exports.validateMigrationChain = validateMigrationChain;
|
|
9
|
+
var _errors = require("../contract/errors.js");
|
|
10
|
+
var _errors2 = require("../diagnostics/errors.js");
|
|
11
|
+
/**
|
|
12
|
+
* Migration chain validation, run before any migration executes (FR-053).
|
|
13
|
+
*
|
|
14
|
+
* Validating first is what stops a half-run chain from being the thing that
|
|
15
|
+
* discovers the problem. A duplicate version, a gap, or a chain that does not
|
|
16
|
+
* reach the declared `schemaVersion` are all configuration errors the
|
|
17
|
+
* developer can fix; discovering them after migration 3 of 5 has already
|
|
18
|
+
* rewritten a user's data is not.
|
|
19
|
+
*
|
|
20
|
+
* A gap is refused rather than skipped over deliberately. A user upgrading
|
|
21
|
+
* from the version inside the gap has no path across it, and opening anyway
|
|
22
|
+
* would hand them a database the code believes is current and is not.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
function invalid(message, detail) {
|
|
26
|
+
(0, _errors2.raise)(_errors.DiagnosticCodes.MIGRATION_CONFIG_INVALID, {
|
|
27
|
+
message,
|
|
28
|
+
detail
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function validateMigrationChain(config) {
|
|
32
|
+
const migrations = config.migrations ?? [];
|
|
33
|
+
if (!Number.isInteger(config.schemaVersion) || config.schemaVersion < 1) {
|
|
34
|
+
invalid('schemaVersion must be a positive integer');
|
|
35
|
+
}
|
|
36
|
+
const versions = new Set();
|
|
37
|
+
for (const migration of migrations) {
|
|
38
|
+
if (!Number.isInteger(migration.version) || migration.version < 1) {
|
|
39
|
+
invalid('migration version must be a positive integer');
|
|
40
|
+
}
|
|
41
|
+
if (versions.has(migration.version)) {
|
|
42
|
+
invalid('duplicate migration version', {
|
|
43
|
+
version: migration.version
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
versions.add(migration.version);
|
|
47
|
+
if (typeof migration.migrate !== 'function') {
|
|
48
|
+
invalid('migration has no migrate function', {
|
|
49
|
+
version: migration.version
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (let version = 1; version <= config.schemaVersion; version += 1) {
|
|
54
|
+
if (!versions.has(version)) {
|
|
55
|
+
invalid('migration chain has a gap', {
|
|
56
|
+
version
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
for (const version of versions) {
|
|
61
|
+
if (version > config.schemaVersion) {
|
|
62
|
+
invalid('migration version exceeds the declared schemaVersion', {
|
|
63
|
+
version
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Ascending, because the order a consumer declared them in is not a contract. */
|
|
70
|
+
function orderedMigrations(config) {
|
|
71
|
+
return [...(config.migrations ?? [])].sort((a, b) => a.version - b.version);
|
|
72
|
+
}
|
|
73
|
+
function pendingMigrations(config, recordedVersion) {
|
|
74
|
+
return orderedMigrations(config).filter(migration => migration.version > recordedVersion);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=validate-chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","_errors2","invalid","message","detail","raise","DiagnosticCodes","MIGRATION_CONFIG_INVALID","validateMigrationChain","config","migrations","Number","isInteger","schemaVersion","versions","Set","migration","version","has","add","migrate","orderedMigrations","sort","a","b","pendingMigrations","recordedVersion","filter"],"sourceRoot":"../../../src","sources":["migration/validate-chain.ts"],"mappings":";;;;;;;;AAeA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,SAASE,OAAOA,CAACC,OAAe,EAAEC,MAAgC,EAAS;EAC1E,IAAAC,cAAK,EAACC,uBAAe,CAACC,wBAAwB,EAAE;IAAEJ,OAAO;IAAEC;EAAO,CAAC,CAAC;AACrE;AAEO,SAASI,sBAAsBA,CAACC,MAAsB,EAAQ;EACpE,MAAMC,UAAU,GAAGD,MAAM,CAACC,UAAU,IAAI,EAAE;EAE1C,IAAI,CAACC,MAAM,CAACC,SAAS,CAACH,MAAM,CAACI,aAAa,CAAC,IAAIJ,MAAM,CAACI,aAAa,GAAG,CAAC,EAAE;IACxEX,OAAO,CAAC,0CAA0C,CAAC;EACpD;EAEA,MAAMY,QAAQ,GAAG,IAAIC,GAAG,CAAS,CAAC;EAClC,KAAK,MAAMC,SAAS,IAAIN,UAAU,EAAE;IACnC,IAAI,CAACC,MAAM,CAACC,SAAS,CAACI,SAAS,CAACC,OAAO,CAAC,IAAID,SAAS,CAACC,OAAO,GAAG,CAAC,EAAE;MAClEf,OAAO,CAAC,8CAA8C,CAAC;IACxD;IACA,IAAIY,QAAQ,CAACI,GAAG,CAACF,SAAS,CAACC,OAAO,CAAC,EAAE;MACpCf,OAAO,CAAC,6BAA6B,EAAE;QAAEe,OAAO,EAAED,SAAS,CAACC;MAAQ,CAAC,CAAC;IACvE;IACAH,QAAQ,CAACK,GAAG,CAACH,SAAS,CAACC,OAAO,CAAC;IAC/B,IAAI,OAAOD,SAAS,CAACI,OAAO,KAAK,UAAU,EAAE;MAC5ClB,OAAO,CAAC,mCAAmC,EAAE;QAAEe,OAAO,EAAED,SAAS,CAACC;MAAQ,CAAC,CAAC;IAC7E;EACD;EAEA,KAAK,IAAIA,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIR,MAAM,CAACI,aAAa,EAAEI,OAAO,IAAI,CAAC,EAAE;IACpE,IAAI,CAACH,QAAQ,CAACI,GAAG,CAACD,OAAO,CAAC,EAAE;MAC3Bf,OAAO,CAAC,2BAA2B,EAAE;QAAEe;MAAQ,CAAC,CAAC;IAClD;EACD;EAEA,KAAK,MAAMA,OAAO,IAAIH,QAAQ,EAAE;IAC/B,IAAIG,OAAO,GAAGR,MAAM,CAACI,aAAa,EAAE;MACnCX,OAAO,CAAC,sDAAsD,EAAE;QAAEe;MAAQ,CAAC,CAAC;IAC7E;EACD;AACD;;AAEA;AACO,SAASI,iBAAiBA,CAACZ,MAAsB,EAAe;EACtE,OAAO,CAAC,IAAIA,MAAM,CAACC,UAAU,IAAI,EAAE,CAAC,CAAC,CAACY,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACN,OAAO,GAAGO,CAAC,CAACP,OAAO,CAAC;AAC5E;AAEO,SAASQ,iBAAiBA,CAAChB,MAAsB,EAAEiB,eAAuB,EAAe;EAC/F,OAAOL,iBAAiB,CAACZ,MAAM,CAAC,CAACkB,MAAM,CAACX,SAAS,IAAIA,SAAS,CAACC,OAAO,GAAGS,eAAe,CAAC;AAC1F","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|